Jump to content
admin

Как СМСнуть обогревателю?

Recommended Posts

Winter is coming! Время запасаться пледами и чаем с печеньками. А чтобы было еще тепле, мы сделаем обогреватель, управляемый по СМС. Такой обогреватель будет греть не только тело, но и душу от того, что этот обогреватель мы собрали сами.

Ссылка на статью: http://cxem.net/arduino/arduino201.php

Автор статьи: http://cxem.net/profile/13500/

Share this post


Link to post
Share on other sites

А по-моему, это шаг в неизвестность. Куда вернуться? К теплому дому или догорающему костру? Наверное все зависит от состояния батареечного питания. Все-таки обогреватели относятся к приборам повышенной пожарной опасности. Доверяться, в данном случае, воле оператора и его службы СМС считаю слишком опрометчивым. Тут только личный контроль (и тот не всегда помогает).

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

Системы телеметрии находят все более широкое применение во многих отраслях на промышленных и коммунальных объектах. Требования, предъявляемые к условиям эксплуатации приборов телеметрии и, как следствие, источников питания для них, могут быть довольно жесткими. Fanso предоставляет широкую линейку продукции, рассчитанной на различные условия эксплуатации, что позволяет подобрать батарейку для каждого конкретного применения, в том числе и для устройств телеметрии.

Подробнее

Помогите создать на основе этого кода не много другое устройство: К ардуино подключены 2 датчика ds18b20 с них нужно выводить температуру на 1602 дисплей и по команде запрашивать температуру по смс, плюс управление нагрузкой с помощью смс. На данный момент получилось реализовать вывод температуры на дисплей и управление нагрузкой, вот в смс никак не полдучается оправить температуру((

#include <GPRS_Shield_Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 9
#define RELAY 8
#define PHONE_NUMBER "+79871526010" //Номер для отправки сообщений
//Описываем сообщения для отправки
#define HELLO_MESSAGE "Hello from GPRS Shield!"
#define READY_MESSAGE "I'm ready!"
#define DANGER_MESSAGE "Current temperature is bigger than 38C. Relay is off."
#define HEATERON "OK, heater is on."
#define HEATEROFF "OK, heater is off."
float tempC1;
float tempC2;
String helloText = "Hello from GPRS Shield!";
String tempText = "Tempreature is ";
String termValue = String(tempC1, tempC2);
String degree = " C.";
String heaterOn = "Heater is On.";
String heaterOff = "Heater is Off.";
String message_to_send;
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)

char char_message_to_send[60];
// текст сообщения
char message[160];
// номер, с которого пришло сообщение
char phone[16];
// дата отправки сообщения
char datetime[24];

bool stateRelay = false; //Состояние реле
GPRS gprs;
OneWire oneWire(ONE_WIRE_BUS);
 
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer, outsideThermometer;
void setup()
{
  pinMode(9, OUTPUT);
  digitalWrite(9, HIGH);    // Подаем High на пин 9
  delay(3000);              // на 3 секунды
  digitalWrite(9, LOW);     // и отпускаем в Low. 
  delay(5000);              // Ждём 5 секунд для старта шилда
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
 pinMode(RELAY, OUTPUT);
  digitalWrite(RELAY, LOW);
  // Start up the library
  sensors.begin();
  Serial.println("Start");
  //gprs.powerUpDown();
   
  while (!gprs.init()) 
   {
    delay(1000);
    Serial.println("Connecting");
   }
  if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); 
  if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); 
  sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);
  sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION);
  lcd.init();                      // initialize the lcd 
  lcd.init();
  lcd.backlight();
  }
void printTemperature()
{
  
  lcd.setCursor(0, 0);
  lcd.print("TempC1: ");
  lcd.println(tempC1);

  lcd.setCursor(0, 1);
  lcd.print("TempC2: ");
  lcd.println(tempC2);

}

void loop()
{
 //Ждем сообщения
     
    if (gprs.ifSMSNow()) 
   {
    gprs.readSMS(message, phone, datetime);
    Serial.println("Message");
    inc_sms(message);
   }
   //Получаем текущую температуру с термостата
    
   sensors.requestTemperatures();
   tempC1 = sensors.getTempC(insideThermometer);
   tempC2 = sensors.getTempC(outsideThermometer);
   printTemperature();
}
//Проверяем входящее SMS 
void inc_sms(char f_message[])
{
  if(strcmp(f_message, "State") == 0)
  {
    Serial.println("Calling for state function");
    state();
  }
  else if(strcmp(f_message, "HeaterOn") == 0)
  {
    digitalWrite(RELAY, HIGH);  
    stateRelay = true;
    gprs.sendSMS(PHONE_NUMBER, HEATERON);
  }
  else if(strcmp(f_message, "HeaterOff") == 0)
  {
    digitalWrite(RELAY, LOW);
    stateRelay = false;
    gprs.sendSMS(PHONE_NUMBER, HEATEROFF);
  }
  else
  {
    Serial.println("Error");
  }
} 
//Готовим и отправляем SMS со статусом
void state()
{
  if(stateRelay)
  {
    message_to_send = String(helloText + tempText + termValue + degree + heaterOn);
    message_to_send.toCharArray(char_message_to_send, 100);
    Serial.println("Sending");
    gprs.sendSMS(PHONE_NUMBER, char_message_to_send);
    Serial.println("Sent");
  }
  else if(!stateRelay)
  {
    message_to_send = String(helloText + tempText + termValue + degree + heaterOff);
    message_to_send.toCharArray(char_message_to_send, 100);
    Serial.println("Sending");
    gprs.sendSMS(PHONE_NUMBER, char_message_to_send);
    Serial.println("Sent");
  }
}

 

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • исправленная печатка и схема - здесь  
    • Отказал разговорный динамик. Заменил, оказалось зря, всё так-же осталось. Специалистов по близости нет. Одни предлагают выкинуть, другие перепрошить. Подскажите, что можно сделать?
    • скину свой касяк - исправленная печатка и схема - кто собирал -обратите внимание на шоттки в печатке и резистор в базе транзистора - его нужно добавить - извиняюсь) спешу вечно. все проверенно. автошим 494.lay6
    • Линейка, бесспорно, тоже нужна! Для плоскостных измерений, приносит удобство. А сверло, мечик или плашку линейкой уже не измерить. Тогда на помощь приходит штангенциркуль и таблица в помощь. Для хорошего мастера не помешает иметь и то и другое. Перелистывать страницы справочника - это тоже потеря времени. А так, глянул в таблицу и сразу получил ответ соответствия. И не надо считать деления на линейке. Это преимущество особенно ярко выражено, если величина перевода не кратная. Полезные таблицы, вообще желательно распечатать на принтере, наклеить на жёсткую картонку и магнитиком прихватить возле рабочего стола. Например: нужно реставрировать предохранитель, глянул в эту таблицу, и за считанные минуты запаял требуемый волосок калиброванного провода для данного тока. Помимо этой таблицы, желательно повесить и таблицу с ESR параметрами. Для ремонтника и не только она не будет лишней.
    • Для чего? Руки чесались? От трансформатора наводки, пробовали трансформатор вынести из коробки подальше от плат? Опередили
    • Попробуйте трансформатор питания повернуть или подальше от плат отодвинуть, это могут быть от него наводки.
  • Покупай!

×
×
  • Create New...