Безжичната табла е много селективен термин за този проект, тъй като има много широк обхват, а не просто обикновена табла. Първо трябва да разберем целта на този проект, в тази система можем да покажем съобщение или известие на някакво дисплейно устройство като LCD и това съобщение може лесно да бъде зададено или променено от всяка точка на света, само с помощта на SMS съоръжението на вашия мобилна слушалка. Каквото и известие да искаме да покажем, просто изпратете SMS на този текст, с някои префикс и суфикс.
Това е много полезно в хотели, молове, колежи, офиси и може да се използва навсякъде, дори у дома. Както можете да зададете съобщението като „Не безпокойте“ на портата на стаята на хотела си, можете да зададете съобщение на стъпалото на вратата на дома си, когато ви няма, и разбира се то се използва като табло за обяви в училища, колежи, кино зали и т.н. да, това не е просто дъска за съобщения, полезността на този проект е, че можете да зададете или промените съобщението или известието от всяко място, просто изпращайки SMS от телефона си. Можете също така да проверите подобен проект, но на различен тип дисплей: Arduino Scoreboard с помощта на външен P10 LED матричен дисплей.
Преди това използвахме SMS съоръжението на мобилния телефон за домашна сигурност и дистанционно управление на битовите уреди: PIR сензор и GSM базирана система за сигурност и GSM базирана домашна автоматизация с помощта на Arduino
U
Работно обяснение:
В този проект Arduino UNO се използва за контрол на целия процес, GSM модул (SIM900A) за получаване на SMS / съобщение, изпратено от мобилен телефон и LCD за показване на съобщението.
Можем да изпратим някакво съобщение или известие като „#Circuit Digest *“, „#We Welcome You *“ чрез SMS. Тук използвахме префикс в низа на съобщението, който е „#“. Този префикс се използва за идентифициране на началото на съобщението или известието. И '*' се използва като суфикс за обозначаване на края на съобщението или известието.
Когато изпращаме SMS от мобилен телефон към GSM модул, тогава GSM получава този SMS и го изпраща на Arduino. Сега Arduino чете този SMS и извлича основно съобщение от получения низ и съхранява в друг низ. И след това изпраща извлеченото съобщение до 16x2 LCD с помощта на подходящи команди.
По-нататъшната работа на тази система е обяснена в раздела „Описание на кода“ по-долу. Преди да влезем в подробности за програмиране, трябва да знаем за GSM модула.
GSM модул:
GSM модулът се използва в много комуникационни устройства, базирани на технологията GSM (Глобална система за мобилни комуникации). Използва се за взаимодействие с GSM мрежа с помощта на компютър. GSM модулът разбира само AT команди и може да реагира съответно. Най-основната команда е "AT", ако GSM отговори ОК, тогава работи добре, в противен случай отговаря с "ГРЕШКА". Има различни AT команди като ATA за отговор на повикване, ATD за набиране на повикване, AT + CMGR за четене на съобщението, AT + CMGS за изпращане на sms и т.н. AT командите трябва да бъдат последвани от Carriage return, т.е. \ r (0D в шестнадесетичен), като „AT + CMGS \ r“. Можем да използваме GSM модул, като използваме тези команди:
ATE0 За изключване на ехото
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Мобилен номер"
>> Сега можем да напишем нашето съобщение
>> След писане на съобщение
Ctrl + Z команда за изпращане на съобщение (26 в десетични знаци).
ENTER = 0x0d в HEX
В SIM900 е пълен Quad-бандов GSM / GPRS модул, който осигурява GSM / GPRS 850/900/1800 / 1900MHz производителност за пренос на глас, SMS и данни с ниска консумация на енергия.
Описание на веригата:
Връзките на безжичната табла за съобщения чрез GSM и Arduino са прости и показани на фигурата по-долу. Тук се използва течнокристален дисплей (LCD) за показване на „Известие“ или съобщение, което се изпраща чрез мобилния телефон като SMS. ПИН-овете за данни на LCD, а именно RS, EN, D4, D5, D6, D7, са свързани към цифров пин номер arduino 7, 6, 5, 4, 3, 2. А Rx и Tx щифтът на GSM модула е директно свързан при Tx и Rx щифт на Arduino съответно. А GSM модулът се захранва чрез 12-волтов адаптер.
Код Описание:
Кодът на програмата е лесно разбираем; новото тук е функцията за инициализация на GSN gsm_init (), което е обяснено в края.
В програмата на първо място включваме библиотека за дисплей с течни кристали (LCD) и след това дефинираме данни и контролни щифтове за LCD и някои променливи.
#include
След това серийната комуникация се инициализира при 9600 bps и дава посока на използвания щифт. И инициализирайте GSM модула в контура за настройка.
void setup () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); digitalWrite (led, HIGH); lcd.print ("Инициализиране на GSM…"); gsm_init (); lcd.setCursor (0,0); lcd.print ("Известие за безжична връзка");
За серийно получаване на данни използваме две функции, едната е Serial.available, която проверява дали серийни данни идват или не, а другата е Serial.read, която чете данните, които идват последователно.
void serialEvent () {while (Serial.available ()) {char ch = (char) Serial.read (); str = ch; ако (ch == '*') {temp = 1; lcd.clear (); lcd.print ("Съобщение получено"); забавяне (1000); }}}
След като получаваме данни последователно, ние ги съхраняваме в низ и този низ се проверява за '#' и '*', за да се открият началото и края на Известието или съобщението. След това накрая Известието се отпечатва на LCD с помощта на lcd.print:
void loop () {for (unsigned int t = 0; t <60000; t ++) {serialEvent (); ако (temp == 1) {x = 0, k = 0, temp = 0; докато (x
Тук е важна функцията за инициализация 'gsm_init () ' за GSM, където първо се проверява дали GSM модулът е свързан или не чрез изпращане на команда 'AT' към GSM модул. Ако е получен отговор ОК, означава, че е готов. Системата продължава да проверява за модула, докато не стане готов или докато не се получи 'OK'. След това ECHO се изключва чрез изпращане на командата ATE0, в противен случай GSM модулът ще повтори всички команди. След това накрая наличността на мрежата се проверява чрез „AT + CPIN?“ команда, ако поставената карта е SIM карта и има ПИН, тя дава отговор + CPIN: ГОТОВ. Това също се проверява многократно, докато мрежата бъде намерена. Това може да се разбере ясно от видеото по-долу.
void gsm_init () {lcd.clear (); lcd.print ("Намиране на модул.."); булева стойност at_flag = 1; докато (at_flag) {Serial.println ("AT"); докато (Serial.available ()> 0) {if (Serial.find ("OK")) at_flag = 0; } закъснение (1000); }