Bezvadu ziņojumu dēlis ir ļoti selektīvs termins šim projektam, jo tam ir ļoti plaša darbības joma, nevis tikai vienkārša ziņojumu dēlis. Vispirms mums vajadzētu saprast šī projekta mērķi, šajā sistēmā mēs varam parādīt ziņojumu vai paziņojumu kādai displeja ierīcei, piemēram, LCD, un šo ziņojumu var viegli iestatīt vai mainīt no jebkuras vietas pasaulē, vienkārši izmantojot jūsu SMS īsziņu. mobilais tālrunis. Lai kādu paziņojumu mēs vēlētos parādīt, vienkārši nosūtiet šī teksta īsziņu ar kādu prefiksu un sufiksu.
Tas ir ļoti noderīgi viesnīcās, tirdzniecības centros, koledžās, birojos un to var izmantot jebkur, pat mājās. Tāpat kā jūs varat iestatīt ziņojumu, piemēram, “Netraucēt” pie savas viesnīcas istabas vārtiem, var iestatīt ziņojumu pie jūsu mājas durvīm, kad esat prom, un, protams, to izmanto kā ziņojumu dēli skolās, koledžās, kinozālēs utt jā, tas vienkārši nav vienkāršs ziņojumu dēlis, šī projekta lietderība ir tāda, ka jūs varat iestatīt vai mainīt ziņojumu vai paziņojumu no jebkuras vietas, vienkārši sūtot SMS no sava tālruņa. Varat arī pārbaudīt līdzīgu projektu, bet uz cita veida displeja: Arduino rezultātu tablo, izmantojot Outdoor P10 LED matricas displeju.
Iepriekš mēs izmantojām mobilā tālruņa SMS iespēju mājas drošībai un sadzīves tehnikas vadīšanai attālināti: PIR sensoru un GSM balstītu drošības sistēmu un GSM balstītu mājas automatizāciju, izmantojot Arduino
A
Darba skaidrojums:
Šajā projektā Arduino UNO tiek izmantots visa procesa kontrolei, GSM modulis (SIM900A), lai saņemtu no mobilā tālruņa un LCD nosūtītu īsziņu / ziņojumu, lai parādītu ziņojumu.
Izmantojot SMS, mēs varam nosūtīt ziņojumu vai paziņojumu, piemēram, “#Circuit Digest *”, “#We Welcome You *”. Šeit ziņojuma virknē esam izmantojuši prefiksu, kas ir “#”. Šis prefikss tiek izmantots, lai identificētu ziņojuma vai paziņojuma sākumu. Un “*” tiek izmantots kā sufikss, lai norādītu ziņojuma vai paziņojuma beigas.
Kad mēs sūtām īsziņas no mobilā tālruņa uz GSM moduli, tad GSM saņem šo īsziņu un nosūta to Arduino. Tagad Arduino izlasīja šo īsziņu un izņēma galveno paziņojuma ziņojumu no saņemtās virknes un glabā citā virknē. Un pēc tam nosūta izvilkto ziņojumu uz 16x2 LCD, izmantojot atbilstošas komandas.
Turpmāka šīs sistēmas darbība ir paskaidrota zemāk esošajā sadaļā “Kodu apraksts”. Pirms iedziļināties programmēšanas detaļās, mums jāzina par GSM moduli.
GSM modulis:
GSM modulis tiek izmantots daudzās sakaru ierīcēs, kuru pamatā ir GSM (globālās mobilo sakaru sistēmas) tehnoloģija. To izmanto, lai mijiedarbotos ar GSM tīklu, izmantojot datoru. GSM modulis saprot tikai AT komandas un var atbilstoši reaģēt. Pamata komanda ir “AT”, ja GSM reaģē labi, tad tā darbojas labi, pretējā gadījumā tā atbild ar “ERROR”. Ir dažādas AT komandas, piemēram, ATA, lai atbildētu uz zvanu, ATD, lai izsauktu zvanu, AT + CMGR, lai lasītu ziņojumu, AT + CMGS, lai nosūtītu īsziņas, utt. AT komandām jāseko Carriage return, ti, \ r (0D ar sešstūri), piemēram, “AT + CMGS \ r”. Mēs varam izmantot GSM moduli, izmantojot šīs komandas:
ATE0 Atbalss izslēgšanai
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = “Mobilais numurs”
>> Tagad mēs varam uzrakstīt savu ziņojumu
>> Pēc ziņojuma uzrakstīšanas
Ctrl + Z nosūtīt ziņojumu komandu (26 aiz komata).
ENTER = 0x0d HEX
SIM900 ir pilnīgs Quad-band GSM / GPRS modulis, kas nodrošina GSM / GPRS 850/900/1800 / 1900MHz veiktspēju balss, SMS un datu ar zemu enerģijas patēriņu.
Ķēdes apraksts:
Bezvadu ziņojumu paneļa savienojumi, izmantojot GSM un Arduino, ir vienkārši un parādīti zemāk redzamajā attēlā. Šeit šķidro kristālu displeju (LCD) izmanto, lai parādītu “Paziņojumu” vai ziņojumu, kas mobilajā tālrunī tiek nosūtīts kā īsziņa. LCD datu spraudņi, proti, RS, EN, D4, D5, D6, D7, ir savienoti arduino digitālo tapu numuriem 7, 6, 5, 4, 3, 2. Un GSM moduļa Rx un Tx tapa ir tieši savienota ar Tx un Rx attiecīgi Arduino tapa. GSM modulis tiek darbināts, izmantojot 12 voltu adapteri.
Koda apraksts:
Programmas kods ir viegli saprotams; šeit jauna lieta ir GSN inicializācijas funkcija gsm_init (), kas tiek izskaidrota beigās.
Programmā vispirms mēs iekļaujam šķidro kristālu displeja bibliotēku (LCD) un pēc tam definējam LCD un dažu mainīgo datus un vadības tapas.
# iekļaut
Pēc tam sērijveida sakari tiek inicializēti ar ātrumu 9600 bps un dod virzienu lietotajai tapai. Un inicializējiet GSM moduli iestatīšanas ciklā.
void setup () {lcd.begin (16,2); Sērijas sākums (9600); pinMode (vadīts, OUTPUT); digitalWrite (vadīts, AUGSTS); lcd.print ("GSM inicializēšana…"); gsm_init (); lcd.setCursor (0,0); lcd.print ("Bezvadu paziņojums");
Datu sērijveida saņemšanai mēs izmantojam divas funkcijas, no kurām viena ir Serial.available, kas pārbauda visus nākamos sērijveida datus vai nē, bet otra ir Serial.read, kas nolasa datus, kas nāk sērijveidā.
void serialEvent () {while (Serial.available ()) {char ch = (char) Serial.read (); str = ch; ja (ch == '*') {temp = 1; lcd.clear (); lcd.print ("Ziņojums saņemts"); kavēšanās (1000); }}}
Pēc datu sērijveida saņemšanas mēs tos glabājam virknē, un šī virkne tiek pārbaudīta ar “#” un “*”, lai atrastu Paziņojuma vai ziņojuma sākumu un beigas. Tad beidzot paziņojums tiek izdrukāts uz LCD, izmantojot lcd.print:
void loop () {for (neparakstīts int t = 0; t <60000; t ++) {serialEvent (); ja (temp == 1) {x = 0, k = 0, temp = 0; kamēr (x
Šeit ir svarīga GSM inicializācijas funkcija 'gsm_init (), kur, pirmkārt, GSM modulis tiek pārbaudīts, vai tas ir savienots vai nav, nosūtot' AT 'komandu uz GSM moduli. Ja atbilde ir saņemta labi, tas nozīmē, ka tā ir gatava. Sistēma turpina pārbaudīt moduli, līdz tas kļūst gatavs vai kamēr nav saņemts “OK”. Tad ECHO tiek izslēgts, nosūtot komandu ATE0, pretējā gadījumā GSM modulis atbalsos visas komandas. Tad visbeidzot tīkla pieejamība tiek pārbaudīta, izmantojot “AT + CPIN?” komandu, ja ievietotā karte ir SIM karte un ir PIN, tā dod atbildi + CPIN: READY. To pārbauda arī atkārtoti, līdz tiek atrasts tīkls. To var skaidri saprast zemāk esošajā videoklipā.
void gsm_init () {lcd.clear (); lcd.print ("Moduļa atrašana.."); boolean at_flag = 1; while (at_flag) {Serial.println ("AT"); while (Seriālais.pieejams ()> 0) {if (Seriālais.atrod ("Labi")) at_flag = 0; } kavēšanās (1000); }