цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Пример домашней автоматизации на Arduino с управлением нагрузками по GSM


Пример домашней автоматизации на Arduino с управлением нагрузками по GSM

Автор: Mike(admin) от 10-01-2022, 03:55

В данном проекте мы узнаем, как сделать простую систему домашней автоматизации с помощью модуля SIM800L и Arduino. В проекте также используется двухканальный модуль реле для коммутации двух нагрузок, таких как лампа и вентилятор. Вы можете реализовать такую систему для вашего дома без небольших усилий.


Пример домашней автоматизации на Arduino с управлением нагрузками по GSM

Схема подключения компонентов довольно проста и представлена на следующем изображении.


Пример домашней автоматизации на Arduino с управлением нагрузками по GSM. Схема

Код программы для Arduino следующий:



#include<SoftwareSerial.h> 
SoftwareSerial mySerial(10,11);  // (Rx,Tx  > Tx,Rx) 

char incomingByte; 
String inputString;
int relay1 = 2; // Выход для управления реле
int relay2 = 3; // Выход для управления реле

void setup() 
{
      pinMode(relay1, OUTPUT);
        pinMode(relay2, OUTPUT);
      digitalWrite(relay1, LOW); // Начальное состояние реле
       digitalWrite(relay2, LOW); // Начальное состояние реле
      Serial.begin(9600);
      mySerial.begin(9600); 

     while(!mySerial.available()){
        mySerial.println("AT");
        delay(1000); 
        Serial.println("Connecting...");
        }
      Serial.println("Connected!");  
      mySerial.println("AT+CMGF=1");  // Установите SMS в текстовый режим 
      delay(1000);  
      mySerial.println("AT+CNMI=1,2,0,0,0");  // Процедура для обработки вновь прибывших сообщений (имя команды в тексте: новые указания сообщения в TE) 
      delay(1000);
      mySerial.println("AT+CMGL=\"REC UNREAD\""); // Прочитать непрочитанные сообщения
     }

void loop()
{  
  if(mySerial.available()){
      delay(100);

      while(mySerial.available()){
        incomingByte = mySerial.read();
        inputString += incomingByte; 
        }

        delay(10);      

        Serial.println(inputString);
        inputString.toUpperCase(); // Прописные буквы полученного сообщения

        // ВКЛ и ВЫКЛ реле
        if (inputString.indexOf("LIGHT ON") > -1){
          digitalWrite(relay1, HIGH);
          }
         if (inputString.indexOf("LIGHT OFF") > -1){
          digitalWrite(relay1, LOW);
          }   
           if (inputString.indexOf("FAN ON") > -1){
          digitalWrite(relay2, HIGH);
          }
         if (inputString.indexOf("FAN OFF") > -1){
          digitalWrite(relay2, LOW);
          }     
            if (inputString.indexOf("ALL ON") > -1){
          digitalWrite(relay1, HIGH);
           digitalWrite(relay2, HIGH);
          }
         if (inputString.indexOf("ALL OFF") > -1){
          digitalWrite(relay1, LOW);
          digitalWrite(relay2, LOW);
          }    

        delay(50);

        // Удалить сообщения и сэкономить память
        if (inputString.indexOf("OK") == -1){
        mySerial.println("AT+CMGDA=\"DEL ALL\"");

        delay(1000);}

        inputString = "";
  }
}



© digitrode.ru


Теги: Arduino, SIM800L




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий
Цитата
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • Комментариев: 0
  • Публикаций: 0
^
Без обратной связи.