- Material som krävs:
- Flyskala SIM900 GSM-modul:
- ISD1820 röstmodul:
- Kretsschema och förklaring:
- Programmering av din Arduino:
- Arbetssätt:
I dagens moderna värld är vi alla beroende av mobiltelefoner som vårt främsta sätt för trådlös kommunikation. Men vi har alla ställts inför situationer där vi kanske inte kan svara på våra samtal, dessa samtal kan vara ett viktigt personligt samtal eller ett livsförändrande affärssamtal och du kunde bara ha missat den möjligheten eftersom du inte kunde svara på det ring vid den aktuella tiden.
Detta projekt syftar till att lösa detta problem genom att skapa en automatisk telefonsvarare med Arduino och GSM-modulen. Nästa gång du byter till ett nytt telefonnummer eller är ute efter en lång pilgrimsresa eller njuter av en välförtjänt semester använder du bara den här maskinen för att spela in din röst och ange orsaken till frånvaron och alla dina samtal kommer att besvaras automatiskt av den här maskinen och din inspelad röst spelas upp för dem. Detta kan också användas för dina företagsnummer för att svara på dina kunders samtal under icke-kontorstid. Låter intressant, eller hur? Så låt oss bygga det..
Material som krävs:
Projektet kan låta lite komplicerat men det är väldigt enkelt att bygga, du behöver bara följande komponenter
- Arduino Uno
- GSM-modul - Flyskala SIM 900
- ISD 1820 röstmodul
- 12V adapter för GSM-modul
- 9V batteri för att driva Arduino
- Anslutande ledningar
Innan vi faktiskt går vidare till projektet, låt oss bekanta oss med GSM-modulen och ISD 1820 Voice Module
Flyskala SIM900 GSM-modul:
GSM-moduler är fascinerande att använda, särskilt när vårt projekt kräver fjärråtkomst. Dessa moduler kan göra alla åtgärder som vår vanliga mobiltelefon kan göra, som att ringa / ta emot ett samtal, skicka / ta emot ett SMS, ansluta till internet med GPRS etc. Du kan också ansluta en vanlig mikrofon och högtalare till den här modulen och samtala på din mobilsamtal. Här är några handledning om dem med olika mikrokontroller:
- Samtal och meddelande med Arduino och GSM-modulen
- Ring och sms med Raspberry Pi och GSM-modulen
- GSM-modul Gränssnitt med PIC Microcontroller - Ringa och ta emot samtal
Som visas i bilden nedan kommer GSM-modulen med en USART-adapter som kan anslutas direkt till datorn med en MAX232-modul eller så kan Tx- och Rx-stiften användas för att ansluta den till en mikrokontroller. Du kan också märka de andra stiften som MIC +, MIC-, SP +, SP- etc där en mikrofon eller en högtalare kan anslutas. Den Modulen kan drivas med en 12V-adapter genom en normal DC fat jack.
Sätt i ditt SIM-kort i kortplatsen på modulen och slå på det, du bör märka att en strömlampa tänds. Vänta nu en minut eller så, och du bör se en röd (eller någon annan färg) LED blinkar en gång var tredje sekund. Det betyder att din modul kunde upprätta anslutning till ditt SIM-kort. Nu kan du fortsätta med att ansluta din modul till telefon eller vilken mikrokontroller som helst.
ISD1820 röstmodul:
ISD 1820 Voice-modulen är verkligen en cool modul som kan krydda dina projekt med röstmeddelanden. Denna modul kan spela in ett ljudklipp i 10 sekunder och sedan spela upp det vid behov. Modulen i sig kommer med en mikrofon och en högtalare (8 ohm 0,5 watt) och den ska se ut så här som visas nedan.
Den Modulen fungerar på + 5V och kan drivas med hjälp av Berg pinnar till vänster. Den har också tre knappar längst ner som är Rec. knappen, PlayE. och PlayL. knapp. Du kan spela in din röst genom att trycka på Rec. och spela upp den med PlayE-knappen. PlayL spelar rösten så länge du håller ned knappen. Vid gränssnitt med en MCU kan vi använda stiften till vänster. Dessa stift är 3V-5V tolererbara och kan därför drivas direkt av Arduino / ESP8266. I vårt projekt styr vi PLAYE-stiftet med D8-stiftet i vår Arduino-modul. Så att vi kan spela den inspelade rösten när ett samtal upptäcks och tas emot av GSM-modulen.
Kretsschema och förklaring:
Det fullständiga kretsschemat för detta automatiska röstsamtalsprojekt ges ovan. Som du kan se är anslutningarna väldigt enkla. Vi driver GSM-modulen med en 12V 1A-adapter och Arduino med 9V-batteri, ISD Voice-modulen drivs av + 5V-stiftet på Arduino. Som vi vet kan vi spela in vad som helst på vår röstmodul genom att trycka på rec-knappen och detta spelas när PE trycks ned, detta ljud måste skickas till mikrofonen på GSM-modulen. Så vi ansluter högtalarstiftet på röstmodulen till mikrofonstiftet på GSM-modulen.
Här ansluts Arduino- och GSM-modulen seriellt, Tx-stiftet på Arduino är anslutet till stift 9 och Rx-stiftet är anslutet stift 10. Detta hjälper Arduino att lyssna på GSM-modulen. När ett samtal anländer till GSM-modulen lyssnar Arduino på det och ber GSM-modulen att svara på samtalet. Arduino ser till att samtalet är aktivt och spelar sedan in det inspelade röstmeddelandet på röstmodulen genom att låta stift 8 (Ansluten till PE i röstmodulen) gå högt i 200 ms.
Programmering av din Arduino:
Vi vet från ovanstående avsnitt vilken roll Arduino har här; låt oss nu titta på koden som gör detsamma. Den fullständiga Arduino-koden för projektet ges längst ner på den här sidan, vidare här har jag spillt koden i små munkar för att förklara den.
Innan vi installerar GSM-biblioteket vidare, vänligen klicka på den här Github GSM-bibliotekslänken för att ladda ner biblioteket som används i detta projekt. Du får en zip-fil som måste läggas till i ditt Arduino-bibliotek med Sketch -> Inkludera Librarey -> Lägg till.Zip-fil .
De första tre raderna i koden som visas nedan används för att inkludera biblioteket i vår kod. Vi använder seriebiblioteket och trådbiblioteket eftersom vi inte använder standard Rx- och Tx-stiften på Arduino för att kommunicera med GSM-modulen.
#omfatta
Vi möjliggör seriell kommunikation på stift 9 och 10 med hjälp av följande rad. Detta möjliggörs av programvarans seriella bibliotek som vi inkluderade ovan.
Programvara Seriell GPRS (9,10); // TX, RX
Inuti vår installationsfunktion initialiserar vi den seriella bildskärmen med 9600 baudhastighet och GSM-modulen initialiseras också med 9600 Baudrate. Stiftet 8 som utlöser rösten deklareras som utgångsstift.
ogiltig installation () {Serial.begin (9600); // Seriell bildskärm fungerar på 9600 baudrate för felsökning sim900_init (& gprs, 9600); // GSM-modulen fungerar på 9600 baudrate pinMode (8, OUTPUT); // stift för att aktivera Voice Serial.println ("Arduino - Automatic Voice Machine"); }
Därefter måste vi skapa en funktion som kan läsa och förstå vad GSM-modulen säger genom sin seriella port. Om vi använder en enkel seriell läsrad som “gprs.read ()” för att läsa meddelandet får vi dem i form av ASCII-decimalvärden, det är ingen mening för oss.
Så följande funktion används för att konvertera dessa decimalvärden till strängar med hjälp av strängobjekt och sedan sammanfoga dem för att bilda en sträng. Det slutliga strängvärdet lagras i variabeln Fdata , som är av typsträng och kan användas för att jämföra med alla strängvärden.
ogiltig check_Inkommande () {if (gprs.available ()) // Om GSM säger något {Incomingch = gprs.read (); // Lyssna på det och lagra i denna variabel om (Incomingch == 10 - Incomingch == 13) // Om det står mellanslag (10) eller Newline (13) betyder det att det har slutfört ett ord {Serial.println (data); Fdata = data; data = ""; } // Skriv ut ordet och rensa variabeln för att börja färskt annat {String newchar = String (char (Incomingch)); // konvertera char till sträng med hjälp av strängobjekt data = data + newchar; // Efter att ha konverterat till sträng, gör strängkompatering}}}
De följande rader används för felsökning, med dessa debugger linjer kan du skicka några AT-kommandon från Serial skärm Arduino till GSM och även se vad som är svar på seriebildskärmen.
if (Serial.available ()) {// Används för felsökning av gprs.write (Serial.read ()); // Används för felsökning} // Används för felsökning
Som sagt tidigare måste Arduino kontrollera om GSM-modulen tar emot några samtal. Detta kan göras genom att låta Arduino kontrollera " RING " eftersom GSM-modulen matar ut RING i händelse av ett samtal enligt AT-kommandolistan. När den hittar ett samtal väntar den i 5 sekunder och skickar kommandot " ATA " till GSM-modulen. Detta kommer att få GSM-modulen att svara på samtalet och efter att ha svarat svarar den med "OK". Arduino väntar igen på ” OK ” -bekräftelsen och vrider sedan in Pin 8 högt i 200 ms för att spela den inspelade rösten från röstmodulen.
if (Fdata == "RING") // Om GSM-modulen säger RING {fördröjning (5000); // vänta på 5sek för att skapa 3 ringsignalfördröjning. gprs.write ("ATA \ r \ n"); // Besvara samtalet Serial.println ("Placerad mottagen"); // Används för felsökning medan (Fdata! = "OK") // Till dess att samtalet lyckades besvaras {check_Incoming (); // Läs vad GSM-modu säger Serial.println ("Spela inspelat meddelande"); // Används för felsökning // Spela upp den recored röstmeddelande fördröjning (500); digitalWrite (8, HÖG); // Go high delay (200); // vänta på 200 ms digitalWrite (8, LOW); // gå lågt}
Arbetssätt:
När din kod och hårdvara är redo är det dags för lite kul. Slå på båda modulerna och tryck på REC-knappen på röstmodulen och spela in ett meddelande. Det här meddelandet kan bara vara tio sekunder långt.
Programmera nu din Arduino med hjälp av nedanstående kod och sätt in SIM-bilen i GSM-modulen, du bör vänta i minst 2 minuter nu så att GSM-modulen kan upprätta anslutning till din nätverksleverantör. När du är klar bör du se en röd färg-LED blinka en gång var tredje sekund, detta indikerar att ditt SIM-kort är redo att ta samtal. Du kan nu försöka ringa till detta SIM-kort från vilket nummer som helst och du borde höra det inspelade meddelandet efter tre kontinuerliga ringsignaler. Hela arbetet med projektet visas i videon nedan.
Tadaaaaaa !!! Nu har du din egen automatiska telefonsvarare och fortsätt bara och använd den vid behov och förvåna dina vänner och familj med den.
Hoppas att du gillade projektet och byggt något liknande, om du hade några problem skicka dem i kommentarsektionen så hjälper jag dig.