- Potrebni materiali:
- GSM modul Fly Scale SIM900:
- Glasovni modul ISD1820:
- Shema vezja in razlaga:
- Programiranje vašega Arduina:
- Delo:
V današnjem sodobnem svetu smo vsi odvisni od mobilnih telefonov kot našega primarnega načina brezžične komunikacije. Toda vsi smo se soočali s situacijami, v katerih morda ne bi mogli odgovoriti na klic, ti klici so lahko pomemben osebni klic ali poslovni klic, ki spreminja življenje in bi lahko to priložnost pravkar zamudili, saj na to niste mogli odgovoriti pokličite takrat.
Cilj tega projekta je rešiti to težavo z ustvarjanjem samodejnega telefonskega odzivnika z uporabo modulov Arduino in GSM. Ko boste naslednjič prestopili na novo telefonsko številko ali se odpravili na daljše romarsko potovanje ali uživali zaslužene počitnice, s tem aparatom posnemite svoj glas z navedbo razloga za odsotnost in naprava bo samodejno odgovorila na vse vaše klice. predvajan jim bo posneti glas. To lahko uporabite tudi za poslovne številke, da odgovorite na klice strank v času, ki ni urad. Sliši se zanimivo, kajne? Torej, zgradimo ga..
Potrebni materiali:
Projekt se morda sliši nekoliko zapleteno, vendar ga je res enostavno zgraditi, potrebujete le naslednje komponente
- Arduino Uno
- GSM modul - Flyscale SIM 900
- Glasovni modul ISD 1820
- 12V adapter za napajanje GSM modula
- 9V baterija za napajanje Arduina
- Priključne žice
Preden dejansko nadaljujemo s projektom, se seznanimo z modulom GSM in glasovnim modulom ISD 1820
GSM modul Fly Scale SIM900:
Moduli GSM so zanimivi za uporabo, zlasti kadar naš projekt zahteva oddaljeni dostop. Ti moduli lahko izvajajo vsa dejanja običajnega mobilnega telefona, na primer klicanje / prejemanje klica, pošiljanje / prejemanje SMS-ov, povezovanje z internetom prek GPRS-a itd. Na ta modul lahko priključite tudi običajni mikrofon in zvočnik ter se pogovorite na svojem mobilni klici. Tu je nekaj vadnic o njih z uporabo različnih mikrokrmilnikov:
- Klic in sporočilo z uporabo modula Arduino in GSM
- Klic in besedilo z uporabo Raspberry Pi in GSM modula
- GSM modul Povezava z mikrokrmilnikom PIC - Klicanje in sprejemanje klicev
Kot je prikazano na spodnji sliki, je modul GSM opremljen z adapterjem USART, ki ga je mogoče neposredno povezati z računalnikom z uporabo modula MAX232 ali pa je mogoče za povezavo z mikrokrmilnikom uporabiti Tx in Rx nožice. Opazite lahko tudi druge nožice, kot so MIC +, MIC-, SP +, SP- itd., Kamor je mogoče priključiti mikrofon ali zvočnik. Modul lahko napaja z 12V adapterjem z normalno DC sod vtičnico.
Vstavite kartico SIM v režo modula in jo vklopite, opazili boste, da sveti lučka za vklop. Zdaj počakajte kakšno minuto in videli boste, da rdeča (ali katera koli druga barva) LED utripa enkrat na 3 sekunde. To pomeni, da je vaš modul lahko vzpostavil povezavo z vašo kartico SIM. Zdaj lahko nadaljujete s povezovanjem modula s telefonom ali katerim koli mikrokrmilnikom.
Glasovni modul ISD1820:
Glasovni modul ISD 1820 je res prijeten modul, ki bi lahko popestril vaše projekte z glasovnimi obvestili. Ta modul lahko 10 sekund snema zvočni posnetek in ga po potrebi predvaja. Sam modul ima mikrofon in zvočnik (8 ohmov 0,5 vata) in bi moral izgledati nekako tako, kot je prikazano spodaj.
Modul deluje na + 5V in se lahko napaja z uporabo Berg palice na levi strani. Spodaj ima tudi tri gumbe, ki so Rec. gumb, PlayE. in PlayL.. Glas lahko posnamete s pritiskom na tipko Rec. in jo predvajajte s pomočjo gumba PlayE. PlayL bo predvajal glas, dokler držite gumb. Pri povezovanju z MCU lahko uporabimo zatiče na levi. Ti zatiči so sprejemljivi od 3V do 5V, zato jih lahko neposredno poganja Arduino / ESP8266. V našem projektu nadzorujemo zatič PLAYE s pomočjo zatiča D8 našega modula Arduino. Tako lahko predvajamo posneti glas, ko klic zazna in sprejme modul GSM.
Shema vezja in razlaga:
Popoln diagram vezja tega projekta samodejnega telefonskega odzivnika je naveden zgoraj. Kot vidite, so povezave res preproste. GSM modul napajamo z 12V 1A adapterjem, Arduino pa z 9V baterijo, ISD Voice modul napaja + 5V pin Arduino. Ker vemo, da lahko na naš glasovni modul posnamemo karkoli s pritiskom gumba rec in ta se bo predvajal ob pritisku na PE, ta zvok mora biti poslan na mikrofon modula GSM. Tako priključek zvočnika modula Voice priključimo na zatič mikrofona modula GSM.
Tu je modul Arduino in GSM povezan zaporedno, Tx zatič Arduina je priključen na zatič 9, Rx zatič pa priključen 10. To bo Arduinu pomagalo poslušati GSM modul. Ko klic prispe na modul GSM, ga bo Arduino poslušal in GSM modul pozval, da sprejme klic. Arduino poskrbi, da je klic aktiven, nato pa na glasovnem modulu predvaja posneto glasovno sporočilo tako, da se zatič 8 (povezan z PE glasovnega modula) dvigne visoko za 200 ms.
Programiranje vašega Arduina:
Iz zgornjega odstavka vemo, kakšna je vloga Arduina tukaj; zdaj si oglejmo kodo, ki počne enako. Popolna Arduino koda projekta je navedena na dnu te strani, še naprej tukaj sem polil kodo v majhnih džunke razložiti.
Preden nadaljujemo z nadaljnjo namestitvijo knjižnice GSM, prosimo kliknite to povezavo knjižnice Github GSM, da prenesete knjižnico, uporabljeno v tem projektu. Dobili boste datoteko zip, ki jo morate v knjižnico Arduino dodati s Sketch -> Include Librarey -> Add.Zip file .
Prve tri vrstice spodaj prikazane kode se uporabljajo za vključitev knjižnice v našo kodo. Uporabljamo serijsko knjižnico in žično knjižnico, ker za komunikacijo z modulom GSM ne uporabljamo privzetih zatičev Rx in Tx Arduina.
#include
Omogočamo serijsko komunikacijo na zatičih 9 in 10 z uporabo naslednje vrstice. To omogoča serijska knjižnica programske opreme, ki smo jo vključili zgoraj.
SoftwareSerial gprs (9,10); // TX, RX
Znotraj naše nastavitvene funkcije inicializiramo serijski monitor s hitrostjo 9600 baudov, GSM modul pa je inicializiran s 9600 baudrate. Zatič 8, ki sproži glas, je razglašen za izhodni zatič.
void setup () {Serial.begin (9600); // Serijski monitor deluje na 9600 baudrate za odpravljanje napak sim900_init (& gprs, 9600); // GSM modul deluje na 9600 baudrate pinMode (8, IZHOD); // pripnite, da vklopite Voice Serial.println ("Arduino - samodejni glasovni stroj"); }
Nato moramo ustvariti funkcijo, ki bo lahko brala in razumela, kaj GSM modul govori prek svojih serijskih vrat. Če za branje sporočila uporabimo preprosto zaporedno vrstico za branje, kot je »gprs.read ()«, jih dobimo v obliki decimalnih vrednosti ASCII, to za nas nima nobenega smisla.
Torej se naslednja funkcija uporablja za pretvorbo teh decimalnih vrednosti v nize z uporabo nizovnih predmetov in jih nato združi, da tvorijo niz. Končna vrednost niza je shranjena v spremenljivki Fdata , ki je tipa string in jo lahko uporabimo za primerjavo s poljubnimi vrednostmi niza.
void check_Incoming () {if (gprs.available ()) // Če GSM nekaj govori {Incomingch = gprs.read (); // Poslušajte in shranite v tej spremenljivki, če (Incomingch == 10 - Incomingch == 13) // Če piše presledek (10) ali Nova vrstica (13), pomeni, da je izpolnil eno besedo {Serial.println (podatki); Fdata = podatki; podatki = ""; } // Natisnite besedo in počistite spremenljivko, da začnete novo else {String newchar = String (char (Incomingch)); // pretvorimo char v niz z uporabo nizovnih predmetov data = data + newchar; // Po pretvorbi v niz izvedemo združevanje nizov}}}
Za razhroščevanje se uporabljajo naslednje vrstice, s katerimi lahko s serijskega monitorja Arduino v GSM pošljete poljubne ukaze AT in si ogledate tudi odgovore na serijskem monitorju.
if (Serial.available ()) {// Uporablja se za odpravljanje napak gprs.write (Serial.read ()); // Uporablja se za odpravljanje napak} // Uporablja se za odpravljanje napak
Kot že rečeno, mora Arduino preveriti, ali GSM modul sprejema klice. To lahko storite tako, da Arduino preveri, ali je “ RING ”, ker bo GSM modul v primeru klica izpisal RING v skladu s seznamom ukazov AT. Ko najde klic, počaka 5 sekund in pošlje ukaz “ ATA ” modulu GSM, zaradi česar bo modul GSM sprejel klic, po sprejemu pa bo odgovoril z “V redu”. Arduino spet čaka na potrditev » V redu « in nato v Pin 8 visoko za 200 ms predvaja posneti glas iz glasovnega modula.
if (Fdata == "RING") // Če v modulu GSM piše RING {delay (5000); // počakamo 5sec, da ustvarimo 3 zamik zvonjenja. gprs.write ("ATA \ r \ n"); // odgovor na klic Serial.println ("Placed Received"); // Uporablja se za odpravljanje napak med (Fdata! = "V redu") // Dokler klic ni bil uspešno sprejet {check_Incoming (); // preberite, kaj modem GSM govori Serial.println ("Predvajanje posnetega sporočila"); // Uporablja se za odpravljanje napak // Predvajaj obnovljeno zakasnitev glasovnega sporočila (500); digitalWrite (8, VISOKO); // Pojdi z veliko zakasnitvijo (200); // čakamo na 200 ms digitalWrite (8, LOW); // Pojdi nizko}
Delo:
Ko je vaša koda in strojna oprema pripravljena, je čas za zabavo. Vklopite oba modula in pritisnite gumb REC na modulu Voice in posnemite sporočilo. To sporočilo je lahko samo 10 sekund.
Zdaj programirajte svoj Arduino z uporabo spodnje kode in vstavite avtomobil SIM v modul GSM, počakajte vsaj 2 minuti, da lahko modul GSM vzpostavi povezavo z vašim ponudnikom omrežnih storitev. Ko končate, bi morali vsake 3 sekunde enkrat utripati rdeče LED, kar pomeni, da je vaša kartica SIM pripravljena na klicanje. Zdaj lahko poskusite poklicati to kartico SIM s katere koli številke in posneto sporočilo boste slišali po treh neprekinjenih zvonjenjih. Popolno delovanje projekta je prikazano v spodnjem videu.
Tadaaaaaa !!! Zdaj imate svoj samodejni odzivnik za glasovni klic in ga preprosto uporabite, če je to potrebno, ter z njim presenetite svoje prijatelje in družino.
Upam, da vam je bil projekt všeč in zgradite nekaj podobnega. Če ste imeli kakšne težave, jih objavite v oddelku za komentarje in vam bom pomagal.