Умный дом

Kuza
Offline
Зарегистрирован: 05.06.2017

Всем доброго времени стуок! Решил сделать что-то наподобие умного домаю. Цели следующие: 1)Автоматическое включение уличного освещения. 2)Контроль за утечками воды(в случае утечкио тправить смс + перекрыть воду)  3)Контроль за уровнем воды в очистной станции(в случае переполнения отправить смс + возможность узнать о сотоянии станции отправкой смс)4)Расширение системы в будущем.  Для всего этого решил использовать arduino+gsm. Может быть есть какие-то рекомендации по схеме или коду?? И вообще, будут ли рабоать желаемые функции с такой схемой и кодом??Особенно волнует часть с отправкой и получением смс.

#include <GPRS_Shield_Arduino.h>
#include <sim900.h>
#include <SoftwareSerial.h>

#define LIGHTNESS_PIN A5//Пин, к которому подключен датчик освещенности
#define LIGHT_PIN 9//Пин, к которому подключено реле для уличного освещения
#define WATER_CONTROL_PIN 8//Пин, к которому подключен датчик утечки
#define CRANE_PIN  12//Пин, к которому подключено реле для крана
#define STATION_PIN 13//Пин, к которому подключен дачтик уровня воды
//Пины 2 и 3 используются для соединения gsm модуля с arduino
bool waterOut;//Переменная для фиксации утечки
bool waterMessageWasSend = false;//Переменная для фиксации отправки смс об утечке
bool waterWasOut = false;//Переменная для защиты от отключения крана
bool MuchWater = false;//Переменная для фиксации переполнения очистной станции
bool stationMessageWasSend = false;//Переменная для фиксации отправки смс о переполнении очистной станции
char phone[12];
char message[50];
char datatime[16];

SoftwareSerial mySerial(10, 11);
GPRS gprs(mySerial);


void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  while (!Serial) {}
  gprs.powerOn();
  while (!gprs.init())
  {
    delay(1000);
  }
  Serial.println("Connected!!!");
  pinMode(LIGHTNESS_PIN, INPUT);//Датчик освещенности
  pinMode(LIGHT_PIN, OUTPUT);//Реле для включения света
  pinMode(WATER_CONTROL_PIN, INPUT);//Фиксация утечки
  pinMode(CRANE_PIN, OUTPUT);//Реле для перекрытия водопровода
  pinMode(STATION_PIN,INPUT);//Датчик уровня воды в станции
}



void loop() {
  int lightness = analogRead(LIGHTNESS_PIN); //Считываем яркость
  Serial.print("Osveshonnost = ");
  Serial.println(lightness);
  if (lightness < 500) //Если темно..
  {
    digitalWrite(LIGHT_PIN, HIGH);//Включаем свет
  }
  else
  {
    digitalWrite(LIGHT_PIN, LOW); //Иначе выключаем свет
  }

  waterOut = digitalRead(WATER_CONTROL_PIN);//Считываем датчик утечки
  Serial.print("Utechka = ");
  Serial.println(waterOut);
  if (waterOut == true) waterWasOut = true;//Если утека есть, то она была(необходимо для того, чтобы кран не открылся после высыхания датчика)
  if (waterWasOut == true)//Если утечка есть или она была, то..
  {
    if (waterMessageWasSend == true)//Если смс об утечки было отправлено ранее, то..
    {
      digitalWrite(CRANE_PIN, HIGH);//Только удерживаем кран закрытым
    }
    else
    {
      gprs.sendSMS("+79999999999", "UTECHKA VODI");
      waterMessageWasSend = true;//Фиксируем отправку
      digitalWrite(CRANE_PIN, HIGH);//И удерживаем кран закрытым
    }
  }
  else
  {
    digitalWrite(CRANE_PIN, LOW);//Иначе(если утечки нет и не было) держим кран открытым
  }


  MuchWater = digitalRead(STATION_PIN);//Проверяем есть ли переполнение очистной станции
  Serial.print("Sostouanie stantcii ");
  Serial.println(MuchWater);
  if (MuchWater == true && stationMessageWasSend == false)//Если есть переполнение и смс о переполнеии НЕ отправлено то...

  {
    gprs.sendSMS("+79999999999", "PEREPOLNENIE STANTCII");
    stationMessageWasSend = true;//И фиксируем отправку смс
  }
  if (gprs.ifSMSNow())
  {
    gprs.readSMS(message, phone, datatime);
    if (phone == "+79999999999" && message == "Uroven vodi")
    {
      if (MuchWater == true)
      {
        gprs.sendSMS("+79999999999", "PEREPOLNENIE");
      }
      else
      {
        gprs.sendSMS("+79999999999", "NORMA");
      }
    }
  }
}





 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Kuza пишет:

И вообще, будут ли рабоать желаемые функции с такой схемой и кодом??

Кто или что мешает попробовать самому? Разве это не проще, чем постить такие вопросы?

К тому же не известно что там за библиотеки Вы используете - их 100500 с такими названиями. На тех, что у меня есть работать, разумеется, не будет, хотя бы потому. что не компилируется.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

ЕвгенийП пишет:

Кто или что мешает попробовать самому? Разве это не проще, чем постить такие вопросы?

было бы просто, если бы на форуме не было Меня.

Kuza
Offline
Зарегистрирован: 05.06.2017

ЕвгенийП пишет:

К тому же не известно что там за библиотеки Вы используете - их 100500 с такими названиями. На тех, что у меня есть работать, разумеется, не будет, хотя бы потому. что не компилируется.

https://github.com/amperka/gprs-shield
Вот ссылка на библиотеку.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так Вы сами-то попробовали? Или думаете, что я за Вас это делать буду?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ЕвгенийП пишет:

Так Вы сами-то попробовали? Или думаете, что я за Вас это делать буду?


Конечно. Как тут часто спрашивают - а для чего тогда форум? :)