Belaidė skelbimų lenta yra labai selektyvus šio projekto terminas, nes ji yra labai plati, o ne tik paprasta skelbimų lenta. Pirmiausia turėtume suprasti šio projekto tikslą, šioje sistemoje mes galime rodyti pranešimą ar pranešimą tam tikram ekrano įrenginiui, pvz., LCD, ir šį pranešimą galima lengvai nustatyti ar pakeisti iš bet kurios pasaulio vietos, tiesiog naudodamiesi jūsų SMS žinute. mobilusis telefonas. Kad ir kokį pranešimą norėtume rodyti, tiesiog išsiųskite to teksto SMS su tam tikru priešdėliu ir galūne.
Tai labai naudinga viešbučiuose, prekybos centruose, kolegijose, biuruose ir gali būti naudojama bet kur, net namuose. Kaip jūs galite nustatyti pranešimą, pavyzdžiui, „Netrukdyti“ prie savo viešbučio kambario vartų, galite nustatyti pranešimą prie namų durų laiptelio, kai esate išvykęs, ir, žinoma, jis naudojamas kaip skelbimų lenta mokyklose, kolegijose, kino salėse ir pan. taip, tai tiesiog nėra paprasta pranešimų lenta, šio projekto naudingumas yra tas, kad galite nustatyti ar pakeisti pranešimą ar pranešimą iš bet kur, tiesiog siųsdami SMS iš savo telefono. Taip pat galite patikrinti panašų projektą, bet kito tipo ekrane: „Arduino“ rezultatų suvestinė naudodama „Outdoor P10“ LED matricos ekraną.
Anksčiau namų apsaugai naudojome mobiliojo telefono SMS priemonę ir nuotoliniu būdu valdome buitinę techniką: PIR jutiklį ir GSM pagrįstą apsaugos sistemą ir GSM namų automatizavimą naudodami „Arduino“
A
Darbinis paaiškinimas:
Šiame projekte „ Arduino UNO “ naudojamas viso proceso valdymui, GSM modulis (SIM900A), kad gautų iš mobiliojo telefono ir LCD išsiųstą SMS / žinutę, kad būtų rodomas pranešimas.
SMS žinute galime išsiųsti pranešimą ar pranešimą, pvz., „# Circuit Digest *“, „#We Welcome Welcome *“. Čia pranešimo eilutėje naudojome prefiksą „#“. Šis priešdėlis naudojamas pranešimo ar pranešimo pradžiai identifikuoti. „*“ Naudojama kaip priesaga, nurodanti pranešimo ar pranešimo pabaigą.
Kai mes siunčiame SMS iš mobiliojo telefono į GSM modulį, GSM tą SMS gauna ir siunčia „Arduino“. Dabar „Arduino“ perskaitė šią SMS ir ištraukė pagrindinį pranešimo pranešimą iš gautos eilutės ir saugo kitoje eilutėje. Tada išsiųsdami ištrauktą pranešimą į 16x2 skystųjų kristalų ekraną naudodami atitinkamas komandas.
Tolesnis šios sistemos veikimas paaiškinamas toliau esančiame skyriuje „Kodo aprašymas“. Prieš pradedant programavimo informaciją, turėtume žinoti apie GSM modulį.
GSM modulis:
GSM modulis naudojamas daugelyje ryšio įrenginių, kurie yra pagrįsti GSM (pasauline mobiliojo ryšio sistema) technologija. Jis naudojamas sąveikauti su GSM tinklu naudojant kompiuterį. GSM modulis supranta tik AT komandas ir gali atitinkamai atsakyti. Pagrindinė komanda yra „AT“, jei GSM atsako gerai, ji veikia gerai, kitaip ji atsako „KLAIDA“. Yra įvairių AT komandų, tokių kaip ATA, kad atsilieptų į skambutį, ATD, kad surinktumėte skambutį, AT + CMGR, norėdami perskaityti pranešimą, AT + CMGS, kad išsiųstumėte sms ir tt), pvz., „AT + CMGS“. Mes galime naudoti GSM modulį naudodami šias komandas:
ATE0 skirtas aidui išjungti
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = „Mobilusis numeris“
>> Dabar mes galime parašyti savo žinutę
>> Parašęs žinutę
„Ctrl“ + Z siųsti pranešimo komandą (26 dešimtainiu kableliu).
ENTER = 0x0d HEX
SIM900 yra visiškai keturdažnį GSM / GPRS modulis, kuris suteikia GSM / GPRS 850/900/1800 / 1900MHz našumą skambučių, SMS žinučių ir duomenų perdavimo su mažu energijos suvartojimu.
Grandinės aprašymas:
Belaidžių pranešimų lentos jungtys naudojant GSM ir „Arduino“ yra paprastos ir parodytos paveikslėlyje žemiau. Čia skystųjų kristalų ekranas (LCD) naudojamas rodyti „Pranešimą“ arba pranešimą, kuris mobiliuoju telefonu siunčiamas kaip SMS. LCD duomenų kaiščiai, būtent RS, EN, D4, D5, D6, D7, yra prijungti prie „Arduino“ skaitmeninių kaiščių numerių 7, 6, 5, 4, 3, 2. O GSM modulio Rx ir Tx kaiščiai yra tiesiogiai prijungti ties Tx ir Rx atitinkamai „Arduino“ kaištis. GSM modulis maitinamas naudojant 12 voltų adapterį.
Kodo aprašymas:
Programos kodas yra lengvai suprantamas; naujas dalykas yra GSN inicializavimo funkcija gsm_init (), kuri yra paaiškinta pabaigoje.
Pirmiausia į programą įtraukiame skystųjų kristalų ekranų (LCD) biblioteką, tada nustatome LCD ir kai kurių kintamųjų duomenis ir valdymo kaiščius.
# įtraukti
Po to serijinis ryšys pradedamas 9600 bps greičiu ir nurodo naudojamo kaiščio kryptį. Ir inicializuokite GSM modulį sąrankos cikle.
negaliojanti sąranka () {lcd.begin (16,2); Serijos pradžia (9600); pinMode (led, OUTPUT); „digitalWrite“ (vedamas, AUKŠTAS); lcd.print ("GSM inicijuojamas…"); gsm_init (); lcd.setCursor (0,0); lcd.print („Belaidis pranešimas“);
Norėdami gauti duomenis nuosekliai, mes naudojame dvi funkcijas, viena yra „Serial.available“, kuri tikrina, ar ateina nuoseklūs duomenys, ar ne, o kita yra „Serial.read“, skaitanti nuosekliai gaunamus duomenis.
void serialEvent () {while (Serial.available ()) {char ch = (char) Serial.read (); str = ch; if (ch == '*') {temp = 1; lcd.clear (); lcd.print („Gautas pranešimas“); vėlavimas (1000); }}}
Gavę duomenis nuosekliai, mes juos saugome eilutėje ir ši eilutė patikrinama, ar nėra „#“ ir „*“, kad surastumėte pranešimo ar pranešimo pradžią ir pabaigą. Tada galiausiai pranešimas išspausdinamas LCD, naudojant lcd.print:
void loop () {for (nepasirašytas int t = 0; t <60000; t ++) {serialEvent (); jei (temp == 1) {x = 0, k = 0, temp = 0; o (x
Čia svarbi GSM inicializavimo funkcija „gsm_init () “, kur pirmiausia GSM modulis tikrinamas, ar jis prijungtas, ar ne, siunčiant komandą „AT“ į GSM modulį. Jei atsakymas gautas gerai, reiškia, kad jis yra paruoštas. Sistema nuolat tikrina modulį, kol jis bus paruoštas arba kol bus gautas „Gerai“. Tada ECHO išjungiamas siunčiant komandą ATE0, kitaip GSM modulis atkartos visas komandas. Tada galiausiai tinklo prieinamumas patikrinamas per „AT + CPIN?“ komandą, jei įdėta kortelė yra SIM kortelė ir yra PIN kodas, ji pateikia atsakymą + CPIN: READY. Tai taip pat tikrinama pakartotinai, kol bus rastas tinklas. Tai gali aiškiai suprasti toliau pateiktas vaizdo įrašas.
negaliojantis gsm_init () {lcd.clear (); lcd.print ("Ieškoti modulio.."); loginis at_flag = 1; while (at_flag) {Serial.println ("AT"); while (Serial.available ()> 0) {if (Serial.find ("Gerai")) at_flag = 0; } vėlavimas (1000); }