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

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

Помогите создать на основе этого кода не много другое устройство: К ардуино подключены 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...

×
×
  • Create New...