Официальный сайт компании Arduino по адресу arduino.cc
GSM СМС-Сигнализация на Arduino с минимальным потреблением
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 24/03/2016 - 09:54
Цель: получать СМС при срабатывании пиродатчика.
Тумблером переводить сигнализацию в положение "Охрана".
Средства:
- Arduino UNO
- GSM Shield
- Arduino пиродатчики
код:
/* SMS Alarm This sketch, for the Arduino GSM shield, made for Arduino SMS-Alarm. Advantages: minimum power consumption - only for Pirodetector. Maximum time working from battery. (Battery charger included to schematic) Disadvantages: long time to send SMS - about 15 seconds. During this time you deactivate alarm with secret switch. How does it work: 1) дежурный режим:Arduino UNO + GSM is power OFF. Pirodetector is powered On. 2) When Alarm: When pirodetector set 1=5V (alarm) 3) Power ON: Arduino UNO+GSM is power on. 4) Self power On: Arduino UNO sets DPIN 5 = 1(5V). While DPIN 5 == 1(5V) Arduino UNO Power is on. 5) Check switch: If secret switch is on - no Alarm. +led On(DPIN 13,4) +Wait 30 seconds == time to set alarm to active mode and go out. +Switch power OFF. (DPIN 5 = 0(0V)) 6) If Switch OFF - Alarm Active mode. 7) sends an SMS message 8) wait 20 seconds( between SMS). +blink led ((DPIN 13,4)) +power OFF. How to use it: 1) Assemble schematic. Connect GSM shield to arduino Uno. Select switch on GSM Shield to "power from UNO board". connect lead acid 12V battery and power supply 15V(from notebook). 2) Change phone nomber to you own: (stored in array txtMsg[]) to phone number remoteNum[20]. 3) Test it 4) Enjoy 5) you can debug it on hyperterminal. created 18 Feb 2015 by Dmitri Sedorenko(skype: sidatel). mail: dmitron1036()mail.ru * */ // Include the GSM library #include <GSM.h> #define PINNUMBER "" // initialize the library instance GSM gsmAccess; GSM_SMS sms; void setup() { // initialize serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only }// while // Digital pins init // PIN 13 == output LED ON. indicates status pinMode(13,OUTPUT);//LED digitalWrite(13,LOW);//def value // PIN 4 == output LED ON. indicates status pinMode(4,OUTPUT);// digitalWrite(4,LOW);//def value // PIN 5 == output self-power on. pinMode(5,OUTPUT);// digitalWrite(5,HIGH);//def value - self power is on // PIN 6 == input internall pull-up. 1 == switch off == work enable. 0 = work disabled. pinMode(6,INPUT_PULLUP); // solder powerkey jumper // PIN 9 == output PWRKEY pinMode(9,OUTPUT); digitalWrite(9,LOW);//def value Serial.println("SMS Alarm started"); }// /setup void loop() { // blink to get how much time you need to turn alarm off digitalWrite(13,HIGH); digitalWrite(4,HIGH); delay(200); digitalWrite(13,LOW);//def value digitalWrite(4,LOW);//def value delay(2000);// time to switch alarm Off // Alarm logic // If Alarm-off switch is On - Alarm is not active // if(DPIN6 == 1) if(digitalRead(6) == HIGH){ // delay 1 min delay(20000);// time to go out // power off digitalWrite(5,LOW); }else // Else // Alarm active // send SMS { //reset gsm delay(100); digitalWrite(9,HIGH);//reset delay(1000); digitalWrite(9,LOW);//def value // connection state boolean notConnected = true; // Start GSM shield // If your SIM has PIN, pass it as a parameter of begin() in quotes while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) notConnected = false; else { Serial.println("Not connected"); delay(1000); } }// /while Serial.println("GSM initialized"); Serial.print("Enter a mobile number: "); char remoteNum[20] = "+79780146953"; // telephone number to send sms //readSerial(remoteNum); Serial.println("OK"); Serial.println(remoteNum); // sms text Serial.print("Now, enter SMS content: "); char txtMsg[200] = "Alert!!!"; //readSerial(txtMsg); Serial.println("SENDING"); Serial.println(); Serial.println("Message:"); Serial.println(txtMsg); // send the message //sms.beginSMS(remoteNum); sms.print(txtMsg); sms.endSMS(); Serial.println("\nCOMPLETE!\n"); //pinMode(13,OUTPUT); digitalWrite(13,HIGH);//def value digitalWrite(4,HIGH);//def value // stop // self power off delay(18000); digitalWrite(13,LOW);//def value digitalWrite(4,LOW);//def value delay(1000); digitalWrite(13,HIGH);//def value digitalWrite(4,HIGH);//def value digitalWrite(5,LOW); delay(1000); while(true){} }// /else }// /loop /* Read input serial */ int readSerial(char result[]) { int i = 0; while(1) { while (Serial.available() > 0) { char inChar = Serial.read(); if (inChar == '\n') { result[i] = '\0'; Serial.flush(); return 0; } if(inChar!='\r') { result[i] = inChar; i++; } } } }
Схема: http://uselect-el.ucoz.com/blogfiles/ZU_2_RU.pdf
фото:
много проводков, будет глючить..
Вопрос спорный....Допустим если паял инженер с 15-летним стажем то работать будет стабильно. Ну а если студент - то и заводская ППМ будет работать нестабильно.
Конечное лучше разводить плату.
Прекрасный проект
Только тема минимального потребления отсутствует. Где специальные меры в железе и в софте для снижения потребления?
никто не выпаивал светожиодов и тд - ДО ЛАМПОЧКИ тот режим микропотребления.
Будете удивляться, но я по такому пути как здесь прошел.
Мой вывод в итоге? Нужно ставить МОП ключ на всю часть кроме датчика движения, тогда реально мкропотребление пару десятков микроампер.
А то что на фото - будет милиамперы ржать и высадит батарею. Сами можетте посчитать как быстро.
питать можно(нужно!) от трех пальчиковых батареек.
Уважаемый Шорт Сиркуит, сделал как вы и рекомендуете - поставил ключ на всё кроме датчика движения.
Естесственно после такого появляется другая проблема - много хотелок которые хотелось бы реализовать но никак, потому как контроллер без питания.
потребление, сколько в режиме ожидания тревоги, какой ток, мерили?
ну и схема какая то мудренная, нельзя ее проще сделать, зачем стольео логики? А хотелки - то на обычную сигнализацию, здесь хотелка должна быть одна - длительное питание без 220в. (легко можно добиться 1 год на атарейках, и никаких дорогих аккумуляторов ставить не придется)
схема таймера на 4010 - выбрасывается, и задействуется еще одна нога ардуино + пишется таймер в скетч, сколько быть вклченным модулю. модуль сам себя будет выключать.
посмотрел еще раз схему - где там микропотребление, если логика жрет порядочно? Это схема расчитана на питание от 220В? нет? тогда зачем там стабилизаторы тока, которые сколько милиампер потребляют? Хотя да, это тоже можно считать минимальное потребление, но тогда уже проще перевести гсм модуль в режим ожидания, где 590й модуль может всего 3мА !!! потреблять, и никакой логики ставить не нужно для таймеров, и тревога придет быстрее намного и т.д. А то что вы сделали - обычно делают для батарейного питания для МИКРОПОТРЕБЛЕНИЯ тока от батарей. чтобы сигнализация автономно могла проработать например год на батарейках!
У вас получилось ни туда - ни сюда. вроде и ключ на всю схему, но вроде и таймера в логике стоят + стабилизатор тока, в итоге ток там тоже значительный. Вы сами пишите, что пришлось отказаться от хотелок. Тогда какой смысл в такой схеме? Отвечу - никакого смысла нет, даже если оставить гсм модуль сим800 в обычном режиме, то он всего навсего от батареи потреблять будет около 10мА - что сравнимо с потреблением вашей схемы!! Еще раз - нет смысла в вашей схеме. никакого.
Позвольте я вам объясню суть работы схемы:
http://uselect-el.ucoz.com/blogfiles/ZU_2_EN.pdf.
Логика на DD1 не относится к GSM сигнализации.
Её цель - пищать мне в ухо когда мимо кто-то идёт.
Потребляет - ничего, как и положено медленным КМОП схемам.
Логика работы GSM сигнализации такова:
1) Срабатывает пиродатчик 2, даёт 1 на выходе.
2) 1 подаётся на затвор транзистора - подаётся питание на модуль.
3) модуль просыпается - смотрит состояние переключателя блокирующего (запрещающего) сигнализацию. самозапитывает себя.
4) отправляет смс
5) делает паузу - выключает себе питание.
логика работы, видимо вы делали исключитеьно под себя. так как логика совершенно непрактичная.
Зачем пищать - непонятно. Да я и писал выше: нет в вашем случае смысла отключать питание ардуины. тогда могли бы и таймер на зумер не ставить, и срабатывало бы все быстро, и потребление было бы такое же как по вашей схеме. Но сделали то, что сделали.