- Nødvendige materialer:
- Flyskala SIM900 GSM-modul:
- ISD1820 Stemmemodul:
- Kredsløbsdiagram og forklaring:
- Programmering af din Arduino:
- Arbejder:
I nutidens moderne verden er vi alle afhængige af mobiltelefoner som vores primære middel til trådløs kommunikation. Men vi har alle haft situationer, hvor vi muligvis ikke kan besvare vores opkald, disse opkald kan være et vigtigt personligt opkald eller et livsændrende forretningsopkald, og du kunne lige have gået glip af denne mulighed, da du ikke var i stand til at besvare det kalde på det bestemte tidspunkt.
Dette projekt sigter mod at løse dette problem ved at oprette en automatisk telefonsvarer ved hjælp af Arduino og GSM-modulet. Næste gang du skifter til et nyt telefonnummer eller er ude på en lang pilgrimsrejse eller nyder en velfortjent ferie, skal du bare bruge denne maskine til at optage din stemme og angive årsagen til fravær, og alle dine opkald vil automatisk blive besvaret af denne maskine og din indspillet stemme vil blive spillet til dem. Dette kan også bruges til dine virksomhedsnumre til at besvare dine kunders opkald i ikke-kontortid. Lyder interessant, ikke? Så lad os bygge det..
Nødvendige materialer:
Projektet lyder måske lidt kompliceret, men det er virkelig nemt at bygge, du har bare brug for følgende komponenter
- Arduino Uno
- GSM-modul - Flyscale SIM 900
- ISD 1820 Voice Module
- 12V adapter til GSM-modul
- 9V batteri til Arduino
- Tilslutning af ledninger
Før vi rent faktisk går videre med projektet, lad os blive fortrolige med GSM-modulet og ISD 1820 Voice Module
Flyskala SIM900 GSM-modul:
GSM-moduler er fascinerende at bruge, især når vores projekt kræver fjernadgang. Disse moduler kan udføre alle handlinger, som vores normale mobiltelefon kunne udføre, som at foretage / modtage et opkald, sende / modtage en SMS, oprette forbindelse til internet ved hjælp af GPRS osv. Du kan også forbinde en normal mikrofon og højttaler til dette modul og tale på din mobilopkald. Her er nogle tutorials om dem ved hjælp af forskellige mikrokontroller:
- Opkald og besked ved hjælp af Arduino og GSM-modul
- Ring og sms ved hjælp af Raspberry Pi og GSM-modul
- GSM-modul Interfacing med PIC Microcontroller - Foretag og modtag opkald
Som vist på nedenstående billede leveres GSM-modulet med en USART-adapter, som kan forbindes direkte til computeren ved hjælp af et MAX232-modul, eller Tx- og Rx-stifter kan bruges til at forbinde det til en mikrocontroller. Du kan også bemærke de andre ben som MIC +, MIC-, SP +, SP- osv. Hvor en mikrofon eller en højttaler kan tilsluttes. Den Modulet kan blive drevet af en 12V adapter gennem en normal DC tønde stikket.
Indsæt dit SIM-kort i stikket på modulet, og tænd det, du skal bemærke, at en strøm-LED lyser. Vent nu et minut eller deromkring, og du skal se en rød (eller en hvilken som helst anden farve) LED blinker en gang i hvert 3. sekund. Dette betyder, at dit modul var i stand til at oprette forbindelse til dit SIM-kort. Nu kan du fortsætte med at forbinde dit modul med telefonen eller en hvilken som helst mikrokontroller.
ISD1820 Stemmemodul:
ISD 1820 Voice-modulet er virkelig et sejt modul, der kan krydre dine projekter med stemmemeddelelser. Dette modul er i stand til at optage et lydklip i 10 sekunder og derefter afspille det, når det er nødvendigt. Selve modulet leveres med en mikrofon og en højttaler (8 ohm 0,5 watt), og det skal se ud som dette vist nedenfor.
Den Modulet fungerer på + 5V og kan drives ved hjælp af berg pinde til venstre. Det har også tre knapper i bunden, som er Rec. knap, PlayE. knap og PlayL. knap hhv. Du kan optage din stemme ved at trykke på Rec. og afspil den ved hjælp af PlayE-knappen. PlayL afspiller stemmen, så længe du holder knappen nede. Ved grænseflade med en MCU kan vi bruge stifterne til venstre. Disse ben er 3V-5V tolerable og kan derfor drives direkte af Arduino / ESP8266. I vores projekt styrer vi PLAYE-stiften ved hjælp af D8-stiften i vores Arduino-modul. Så vi kan afspille den optagede stemme, når et opkald registreres og modtages af GSM-modulet.
Kredsløbsdiagram og forklaring:
Det komplette kredsløbsdiagram for dette automatiske telefonsvarers projekt er angivet ovenfor. Som du kan se er forbindelserne virkelig enkle. Vi driver GSM-modulet med en 12V 1A-adapter og Arduino med 9V batteri, ISD Voice-modulet drives af + 5V-stiften på Arduino. Som vi ved, kan vi optage noget på vores stemmemodul ved at trykke på rec-knappen, og dette afspilles, når der trykkes på PE, denne lyd skal sendes til mikrofonen i GSM-modulet. Så vi forbinder højttalerstiften på stemmemodulet til mikrofonstiften på GSM-modulet.
Her forbindes Arduino- og GSM-modulet serielt, Tx-stiften på Arduino er forbundet til pin 9, og Rx-stiften er forbundet pin 10. Dette hjælper Arduino med at lytte til GSM-modulet. Når et opkald ankommer til GSM-modulet, lytter Arduino til det og beder GSM-modulet om at besvare opkaldet. Arduino sørger for, at opkaldet er aktivt, og afspiller derefter den indspillede stemmemeddelelse på stemmemodulet ved at gøre pin 8 (Forbundet til PE i stemmemodulet) gå højt i 200 ms.
Programmering af din Arduino:
Vi ved fra ovenstående afsnit, hvad Arduinos rolle her er; lad os nu se på koden, der gør det samme. Den komplette Arduino-kode for projektet er vist i bunden af denne side, her har jeg spildt koden i små junks for at forklare den.
Inden vi går forud for yderligere installation af GSM-biblioteket, skal du klikke på dette Github GSM-biblioteklink for at downloade det bibliotek, der bruges i dette projekt. Du får en zip-fil, der skal føjes til dit Arduino-bibliotek ved Sketch -> Inkluder Librarey -> Tilføj.Zip-fil .
De første tre linjer i koden vist nedenfor bruges til at inkludere biblioteket i vores kode. Vi bruger det serielle bibliotek og ledningsbiblioteket, fordi vi ikke bruger standard Rx- og Tx-benene fra Arduino til at kommunikere med GSM-modulet.
#omfatte
Vi muliggør seriel kommunikation på ben 9 og 10 ved hjælp af følgende linje. Dette er muliggjort af det serielle softwarebibliotek, som vi inkluderede ovenfor.
Software Seriel gprs (9,10); // TX, RX
Inde i vores opsætningsfunktion initialiserer vi den serielle skærm ved 9600 baudrate, og GSM-modulet initialiseres også med 9600 Baudrate. Pin 8, der udløser stemmen, erklæres som output pin.
ugyldig opsætning () {Serial.begin (9600); // Seriel skærm fungerer på 9600 baudrate til fejlfinding sim900_init (& gprs, 9600); // GSM-modul fungerer på 9600 baudrate pinMode (8, OUTPUT); // pin for at aktivere Voice Serial.println ("Arduino - Automatic Voice Machine"); }
Derefter skal vi oprette en funktion, der kan læse og forstå, hvad GSM-modulet siger gennem sin serielle port. Hvis vi bruger en enkel serielæklinie som “gprs.read ()” til at læse beskeden, får vi dem i form af ASCII-decimalværdier, dette giver ingen mening for os.
Så følgende funktion bruges til at konvertere disse decimalværdier til strenge ved hjælp af strengobjekter og derefter sammenkæde dem for at danne en streng. Den endelige strengværdi er gemt i variablen Fdata , som er af typen streng og kan bruges til at sammenligne med alle strengværdier .
ugyldig check_Incoming () {if (gprs.available ()) // Hvis GSM siger noget {Incomingch = gprs.read (); // Lyt til det, og gem i denne variabel, hvis (Incomingch == 10 - Incomingch == 13) // Hvis det står mellemrum (10) eller Newline (13) betyder det, at det har udfyldt et ord {Serial.println (data); Fdata = data; data = ""; } // Udskriv ordet og ryd variablen for at starte nyt ellers {String newchar = String (char (Incomingch)); // konvertere char til streng ved hjælp af strengobjekter data = data + newchar; // Efter konvertering til streng skal du gøre strengkædekontakt}}}
De følgende linjer bruges til debugging, med disse debugger linjer kan du sende nogen AT-kommandoer fra den serielle skærm af Arduino til GSM og også se, hvad der er svar på den serielle skærm.
hvis (Serial.available ()) {// Bruges til fejlretning af gprs.write (Serial.read ()); // Brugt til fejlretning} // Brugt til fejlretning
Som tidligere sagt skal Arduino kontrollere, om GSM-modulet modtager opkald. Dette kan gøres ved at lade Arduino kontrollere " RING ", fordi GSM-modulet udsender RING i tilfælde af et opkald i henhold til AT-kommandolisten. Når den finder et opkald, venter den i 5 sekunder og sender kommandoen “ ATA ” til GSM-modulet, hvilket får GSM-modulet til at besvare opkaldet, og efter svaret svarer det med “OK”. Arduino venter igen på " OK " -bekræftelsen og drejer derefter pin 8 højt til 200 ms for at afspille den optagede stemme fra stemmemodulet.
hvis (Fdata == "RING") // Hvis GSM-modulet siger RING {forsinkelse (5000); // vent på 5 sek for at oprette 3 forsinkelser. gprs.write ("ATA \ r \ n"); // Besvar opkaldet Serial.println ("Placeret modtaget"); // Brugt til fejlretning, mens (Fdata! = "OK") // Indtil opkaldet blev besvaret {check_Incoming (); // Læs hvad GSM-modue siger Serial.println ("Afspiller optaget besked"); // Brugt til fejlretning // Afspil forsinkelsen på den genoprettede stemmemeddelelse (500); digitalWrite (8, HIGH); // Gå høj forsinkelse (200); // vent på 200 msek digitalWrite (8, LAV); // gå lavt}
Arbejder:
Når din kode og hardware er klar, er det tid til sjov. Tænd for begge moduler, og tryk på REC-knappen på Voice-modulet, og optag en besked. Denne meddelelse kan kun være 10 sekunder lang.
Programmer nu din Arduino ved hjælp af nedenstående kode og indsæt SIM-bilen i GSM-modulet, du skal vente i mindst 2 minutter nu, så GSM-modulet kan etablere forbindelse til din netværkstjenesteudbyder. Når du er færdig, skal du se en rød farve-LED blinke en gang for hvert 3. sekund, dette indikerer at dit SIM er klar til at tage opkald. Du kan nu prøve at ringe til dette SIM-kort fra ethvert nummer, og du skal høre den optagede besked efter tre sammenhængende ringetoner. Den komplette bearbejdning af projektet vises i videoen nedenfor.
Tadaaaaaa !!! Nu har du din egen automatiske telefonsvarer og bare gå videre og bruge den efter behov og forbløffe dine venner og familie med den.
Håber du nød projektet og opbygget noget lignende. Hvis du havde problemer, så send dem i kommentarsektionen, så hjælper jeg dig.