Умный дом
- Войдите на сайт для отправки комментариев
Втр, 06/06/2017 - 02:01
Всем доброго времени стуок! Решил сделать что-то наподобие умного домаю. Цели следующие: 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"); } } } }
И вообще, будут ли рабоать желаемые функции с такой схемой и кодом??
Кто или что мешает попробовать самому? Разве это не проще, чем постить такие вопросы?
К тому же не известно что там за библиотеки Вы используете - их 100500 с такими названиями. На тех, что у меня есть работать, разумеется, не будет, хотя бы потому. что не компилируется.
Кто или что мешает попробовать самому? Разве это не проще, чем постить такие вопросы?
было бы просто, если бы на форуме не было Меня.
К тому же не известно что там за библиотеки Вы используете - их 100500 с такими названиями. На тех, что у меня есть работать, разумеется, не будет, хотя бы потому. что не компилируется.
https://github.com/amperka/gprs-shield
Вот ссылка на библиотеку.
Так Вы сами-то попробовали? Или думаете, что я за Вас это делать буду?
Так Вы сами-то попробовали? Или думаете, что я за Вас это делать буду?
Конечно. Как тут часто спрашивают - а для чего тогда форум? :)