- Nødvendige materialer:
- Flyskala SIM900 GSM-modul:
- ISD1820 Stemmemodul:
- Kretsdiagram og forklaring:
- Programmering av Arduino:
- Jobber:
I dagens moderne verden er vi alle avhengige av mobiltelefoner som vårt primære middel for trådløs kommunikasjon. Men vi har alle møtt situasjoner der vi kanskje ikke kan svare på samtalene våre. Disse samtalene kan være en viktig personlig samtale eller en livsendrende forretningssamtale, og du kunne bare ha savnet den muligheten siden du ikke var i stand til å svare på det ring på akkurat det tidspunktet.
Dette prosjektet har som mål å løse dette problemet ved å lage en automatisk telefonsvarer ved hjelp av Arduino og GSM-modulen. Neste gang du bytter til et nytt telefonnummer eller er ute på en lang pilegrimsreise eller nyter en velfortjent ferie, kan du bare bruke denne maskinen til å ta opp stemmen din og oppgi årsaken til fravær, og alle samtalene dine blir automatisk besvart av denne maskinen og din innspilt stemme vil bli spilt for dem. Dette kan også brukes til forretningsnumrene dine for å svare på kundens samtaler i løpet av ikke-kontortid. Høres interessant ut, ikke sant? Så la oss bygge den..
Nødvendige materialer:
Prosjektet kan høres litt komplisert ut, men det er veldig enkelt å bygge, du trenger bare følgende komponenter
- Arduino Uno
- GSM-modul - Flyskala SIM 900
- ISD 1820 talemodul
- 12V adapter til GSM-modul
- 9V batteri for å drive Arduino
- Koble ledninger
Før vi går videre i prosjektet, la oss bli kjent med GSM-modulen og ISD 1820 Voice Module
Flyskala SIM900 GSM-modul:
GSM-moduler er fascinerende å bruke, spesielt når prosjektet vårt krever ekstern tilgang. Disse modulene kan utføre alle handlinger som vår vanlige mobiltelefon kan gjøre, som å ringe / motta et anrop, sende / motta en SMS, koble til internett ved hjelp av GPRS osv. Du kan også koble en vanlig mikrofon og høyttaler til denne modulen og snakke på mobilsamtaler. Her er noen veiledninger om dem ved hjelp av annen mikrokontroller:
- Ring og melding ved hjelp av Arduino og GSM-modulen
- Ring og tekst ved hjelp av Raspberry Pi og GSM-modulen
- GSM-modul Grensesnitt med PIC Microcontroller - Foreta og motta samtaler
Som vist på bildet nedenfor, kommer GSM-modulen med en USART-adapter som kan kobles direkte til datamaskinen direkte ved hjelp av en MAX232-modul, eller Tx- og Rx-pinnene kan brukes til å koble den til en mikrokontroller. Du kan også legge merke til de andre pinnene som MIC +, MIC-, SP +, SP- etc hvor en mikrofon eller en høyttaler kan kobles til. Den Modulen kan bli drevet av en 12 V adapter gjennom en normal like fat jekk.
Sett inn SIM-kortet i sporet på modulen og slå det på, du bør merke at en strøm-LED lyser. Vent nå et minutt eller så, og du skal se en rød (eller annen farge) LED blinker en gang hvert 3. sekund. Dette betyr at modulen din var i stand til å opprette forbindelse med SIM-kortet. Nå kan du fortsette med å koble deg til modulen med telefonen eller en hvilken som helst mikrokontroller.
ISD1820 Stemmemodul:
ISD 1820 Voice-modulen er virkelig en kul modul som kan krydre prosjektene dine med talemeldinger. Denne modulen er i stand til å ta opp et lydklipp i 10 sekunder og deretter spille det når det er nødvendig. Selve modulen kommer med en mikrofon og en høyttaler (8ohms 0,5 watt), og den skal se ut som dette vist nedenfor.
Den modul virker på + 5V og kan drives ved hjelp av berg pinner til venstre. Den har også tre knapper nederst som er Rec. knappen, PlayE. knappen og PlayL. knappen henholdsvis. Du kan spille inn stemmen din ved å trykke på Rec. og spill den med PlayE-knappen. PlayL vil spille stemmen så lenge du holder knappen. Når vi grensesnitt med en MCU, kan vi bruke pinnene til venstre. Disse pinnene er 3V-5V tolerable og kan derfor drives direkte av Arduino / ESP8266. I prosjektet vårt styrer vi PLAYE-pinnen ved hjelp av D8-pinnen på Arduino-modulen. Slik at vi kan spille av den innspilte stemmen når en samtale blir oppdaget og mottatt av GSM-modulen.
Kretsdiagram og forklaring:
Det komplette kretsskjemaet for dette prosjektet med automatisk telefonsvarer er gitt ovenfor. Som du ser er forbindelsene veldig enkle. Vi driver GSM-modulen med en 12V 1A-adapter og Arduino med 9V batteri, ISD Voice-modulen drives av + 5V-pinnen på Arduino. Som vi vet kan vi ta opp noe på stemmemodulen vår ved å trykke på rec-knappen, og denne spilles når PE trykkes, denne lyden må sendes til mikrofonen til GSM-modulen. Så vi kobler høyttalerpinnen til Voice-modulen til mikrofonpinnen på GSM-modulen.
Her kobles Arduino og GSM-modulen serielt, Tx-pinnen til Arduino er koblet til pinne 9 og Rx-pinnen er koblet pinne 10. Dette vil hjelpe Arduino til å lytte til GSM-modulen. Når en samtale kommer til GSM-modulen, vil Arduino høre på den og be GSM-modulen om å svare på samtalen. Arduino sørger for at samtalen er aktiv, og spiller deretter den innspilte talemeldingen på talemodulen ved å få pinnen 8 (Connected to PE of voice module) til å gå høyt i 200 ms.
Programmering av Arduino:
Vi vet fra avsnittet over hva som er Arduino's rolle her; la oss ta en titt på koden som gjør det samme. Den komplette Arduino-koden til prosjektet er gitt nederst på denne siden, videre her har jeg spilt koden i små klynger for å forklare den.
Før vi går foran en videre installasjon av GSM-biblioteket, vennligst klikk på denne Github GSM-bibliotekkoblingen for å laste ned biblioteket som brukes i dette prosjektet. Du får en zip-fil som må legges til Arduino-biblioteket ditt med Sketch -> Inkluder Librarey -> Legg til.Zip-fil .
De tre første linjene i koden vist nedenfor brukes til å inkludere biblioteket i koden vår. Vi bruker seriellbiblioteket og ledningsbiblioteket fordi vi ikke bruker standard Rx- og Tx-pinnene til Arduino til å kommunisere med GSM-modulen.
#inkludere
Vi aktiverer seriell kommunikasjon på pinne 9 og 10 ved hjelp av følgende linje. Dette er muliggjort av programvareseriebiblioteket som vi inkluderte ovenfor.
ProgramvareSerieprinsipper (9,10); // TX, RX
Inne i vår oppsettfunksjon initialiserer vi den serielle skjermen til 9600 baud rate, og GSM-modulen er også initialisert med 9600 Baudrate. Pinnen 8 som utløser stemmen blir erklært som utgangspinne.
ugyldig oppsett () {Serial.begin (9600); // Seriell skjerm fungerer på 9600 baudrate for feilsøking sim900_init (& gprs, 9600); // GSM-modul fungerer på 9600 baudrate pinMode (8, OUTPUT); // pin for å slå på Voice Serial.println ("Arduino - Automatic Voice Machine"); }
Deretter må vi lage en funksjon som kan lese og forstå hva GSM-modulen sier gjennom sin serielle port. Hvis vi bruker enkel seriell leselinje som “gprs.read ()” for å lese meldingen, får vi dem i form av ASCII desimalverdier, dette gir ingen mening for oss.
Så følgende funksjon brukes til å konvertere disse desimalverdiene til strenger ved å bruke strengobjekter og deretter sammenkoble dem for å danne en streng. Den endelige strengverdien er lagret i variabelen Fdata , som er av typen streng og kan brukes til å sammenligne med alle strengverdier .
void check_Incoming () {if (gprs.available ()) // Hvis GSM sier noe {Incomingch = gprs.read (); // Lytt til den og lagre i denne variabelen hvis (Incomingch == 10 - Incomingch == 13) // Hvis det står mellomrom (10) eller Newline (13) betyr det at den har fullført ett ord {Serial.println (data); Fdata = data; data = ""; } // Skriv ut ordet og tøm variabelen for å starte fersk ellers {String newchar = String (char (Incomingch)); // konvertere char til streng ved å bruke strengobjekter data = data + newchar; // Etter å ha konvertert til streng, gjør du streng sammenkobling}}}
De følgende linjer brukes for debugging, med disse debugger linjene kan du sende AT kommandoer fra serie skjermen på Arduino til GSM og også se hva som er svarene på serie skjermen.
hvis (Serial.available ()) {// Brukes til feilsøking av gprs.write (Serial.read ()); // Brukt for feilsøking} // Brukt for feilsøking
Som sagt tidligere, må Arduino sjekke om GSM-modulen mottar noen anrop. Dette kan gjøres ved å få Arduino til å sjekke om “ RING ” fordi GSM-modulen sender ut RING i tilfelle en samtale i henhold til AT-kommandolisten. Når den finner et anrop, vil den vente i 5 sekunder og sende kommandoen “ ATA ” til GSM-modulen. Dette vil få GSM-modulen til å svare på anropet og etter å ha svart vil den svare med “OK”. Arduino venter igjen på " OK " -bekreftelsen og slår deretter i Pin 8 høyt i 200 ms for å spille av den innspilte stemmen fra talemodulen.
hvis (Fdata == "RING") // Hvis GSM-modulen sier RING {forsinkelse (5000); // vent på 5sec for å opprette 3 forsinkelser. gprs.write ("ATA \ r \ n"); // Svar på samtalen Serial.println ("Plassert mottatt"); // Brukt til feilsøking mens (Fdata! = "OK") // Inntil samtalen ble besvart {check_Incoming (); // Les hva GSM-modue sier Serial.println ("Spille innspilt melding"); // Brukes til feilsøking // Spill forsinkelsen for den gjenopprettede talemeldingen (500); digitalWrite (8, HØY); // Go high delay (200); // vent på 200 msek digitalWrite (8, LAV); // Gå lavt}
Jobber:
Når koden og maskinvaren din er klar, er det tid for litt moro. Strøm begge modulene, og trykk på REC-knappen på Voice-modulen og ta opp en melding. Denne meldingen kan bare være 10 sekunder lang.
Nå programmerer du Arduino med koden nedenfor og setter inn SIM-bilen i GSM-modulen. Du bør vente i minst 2 minutter nå, slik at GSM-modulen kan opprette forbindelse med nettverkstjenesteleverandøren din. Når du er ferdig, bør du se en rødfarget LED blinker en gang hvert 3. sekund, dette indikerer at SIM-kortet ditt er klart til å ta samtaler. Du kan nå prøve å ringe til dette SIM-kortet fra hvilket som helst nummer, og du bør høre den innspilte meldingen etter tre sammenhengende ringer. Fullstendig bearbeiding av prosjektet er vist i videoen nedenfor.
Tadaaaaaa !!! Nå har du din egen automatiske telefonsvarer, og bare bruk den når det er nødvendig og forbløffe dine venner og familie med den.
Håper du likte prosjektet og bygget noe lignende. Hvis du hadde noen problemer, legg dem inn i kommentarseksjonen, så hjelper jeg deg.