Отже, після тривалого часу розкурювання тонкощів роботи з GSM модулем SIM900D анонсуємо перший робочий проект, який поєднує в собі охоронну систему з можливістю віддаленого контролю. Якщо коротко, то пристрій здатний відправляти інформують SMS в разі спрацювання датчика проникнення, робити дозвон для можливості аудіоконтролю приміщення, стежити за температурою і відправляти її смс-кою за запитом, а також управляти будь-небудь навантаженням по команді відправленої по смс.
Хто стежив за даною темою, той в курсі, що у мене GSM модуль і модуль управління ім - дві різні плати, з'єднані бутербродом (див. Плата з SIM900D і плата управління). На керуючої платі крім мікроконтролера ATmega32a варто модуль живлення, виконаний на перетворювачі LM2596. він живить схему постійною напругою 3,5 вольт. В принципі підійде будь-який інший джерело живлення, головне щоб він був здатний на короткий час витягнути до 2 ампер (саме таке споживання GSM-модуля в момент реєстрації).
В результаті вийшла схема підключення вийшла така (клікабельно):
Нумерація висновків мікроконтролера на схемі наведена для DIP корпусу, тому якщо повторюєте схему з використанням мк в корпусі TQFP будьте уважні, нумерація висновків у нього відрізняється. Тактується мікроконтролер від зовнішнього кварцу на 16 МГц.
Лінія Control йде від колектора транзистора Q2 висновку PortD.4 мікроконтролера додана для перестраховки і потрібна за тим щоб стежити включений модуль. Так як поріг виключення у SIM900 становить 3,2 вольта то навіть при незначній просідання напруги модуль автоматично вимкнеться, тоді як мікроконтролер продовжить працювати і виконувати програму (поріг скидання у ATmega32a 2,7 вольта). У робочому стані на цій лінії знаходиться низький рівень. Якщо мікроконтролер виявить що на цій лінії високий рівень, виконається функція повторного запуску GSM модуля.
А ось так це виглядає в роботі на даний момент.
Після остаточної обгонки програми, все це буде засунути в корпус, а роз'ємні з'єднання для надійності будуть запаяні.
На дисплей виводиться основна інформація про стан пристрою: назва оператора, якість сигналу зв'язку, значення температури з датчика 18b20, стан виходу навантаження і датчика проникнення, а так же час і дата.
Час і дата беруться від вбудованих в GSM модуль годин. Для їх роботи обов'язково наявність 3-х вольтової батарейки підключеної до висновку 15 (VRTC). Діод D1 рекомендується ставити з низьким падінням напруги, наприклад Шотткі. Годинника і дати робиться в ручну, команди були описані раніше тут
Дата виводиться на дисплей в тому форматі як виходить з модуля, тобто спочатку рік, потім місяць і дата. Тут поки нічого змінювати не став.
За вимір температури відповідає датчик DS18B20, він підключається до висновку PortD.3 мікроконтролера.
До PortD.6 можна підключити якусь навантаження і керувати нею за допомогою команд смс. У мене зараз висить світлодіод - D4 на схемі. Але нічого не заважає повісити сюди релюха або симистор і управляти чимось серйозніше.
Вихід датчика підключається до висновку PortD.7 мікроконтролера, на схемі, датчик умовно замінений на кнопку.
Замість датчика руху можна ставити будь-які інші засоби виявлення проникнення - датчики відкривання вікон і дверей, датчики розбиття скла, фотоелектричні датчики та ін. В загальному все на що здатна фантазія.
Для того щоб запобігти багаторазове відсилання попереджувальних смс в разі спрацювання датчика, в програму введено обмеження: після першого відправленого смс ставиться заборона на подальшу відправку. Щоб заново увімкнути надсилання повідомляючих повідомлень при спрацьовуванні датчика, необхідно відіслати на модуль смс з певною командою. Коли посилка смс заборонена на дисплей біля стану датчика, виведеться знак оклику.
А ось і список команд в смс які обробляє модуль. Для зручності і простоти комади цифрові, можливо в наступних версіях прошивки будуть більш осмислені імена команд :)
0 - Відключення навантаження (на виведення PortD.6 виставляється логічний 0)
1 - Включення навантаження (на виведення PortD.6 виставляється логічна 1)
4 - Запит температури. Значення температури буде відправлено нам в смс.
5 - дозвіл відсилати повідомлення в разі спрацювання датчика проникнення.
6 - Заборона на відправлення повідомляючих смс від датчика проникнення.
? - За цією командою модуль надішле нам смс, в якому знаходиться загальна інформація про пристрій, такі як значення з датчика температури, чи включена навантаження, стан на вході від датчика проникнення і дозволена відправка повідомляючих смс від нього. Наприклад, ось як може виглядати таке повідомлення: температура +24, навантаження виключена, на виході датчика руху 0, відправка смс в разі спрацювання заборонена.
Тепер як налаштувати щоб модуль відправляв sms саме на ваш номер. В архіві з програмою знаходимо основний файл програми, вона так і називається "програма" :) і знаходимо в ній константу:
Const Phonenumber = "+ 7908390хххх"
Програма як і завжди написана в Bascom-AVR, тому розібратися з алгоритмом роботи з GSM модулем досить просто. Успіхів!
створення схем
можливість симуляції
Швидке створення друкованих плат
Інтуїтивно зрозумілий інтерфейс
Намалюй свою схему прямо зараз!