- Nødvendige komponenter:
- Arbejdsforklaring:
- Forklaring af fire funktioner i Raspberry Pi mobiltelefon:
- Kredsløbsdiagram og forklaring:
- Programmeringsforklaring:
I dette DIY-projekt skal vi bygge en simpel mobiltelefon ved hjælp af Raspberry Pi, hvor GSM-modul bruges til at foretage eller besvare opkaldet og sende eller læse SMS'en , og også denne Raspberry Pi-telefon har mikrofon og højttaler til at tale om dette Telefon . Dette projekt vil også fungere som en korrekt grænseflade mellem GSM-modulet og Raspberry Pi med al den kode, der er nødvendig for at betjene telefonens grundlæggende funktioner. Tidligere har vi bygget samme slags Simple mobiltelefon ved hjælp af Arduino, se her
Nødvendige komponenter:
- Raspberry Pi 3 (enhver model)
- GSM-modul
- 16x2 LCD
- 4x4 tastatur (bruger kan bruge membrantastatur)
- 10 k gryde
- Brødbræt
- Tilslutning af jumper wire
- Strømforsyning
- Højttaler
- MIC
- SIM-kort
- Højttaler
- Audioforstærkerkreds (valgfri)
Arbejdsforklaring:
I dette Raspberry Pi-mobiltelefonprojekt har vi brugt GSM-modul og Raspberry Pi 3 til at kontrollere hele systems funktioner og grænseflade til alle komponenterne i dette system. Et 4x4 alfanumerisk tastatur bruges til at tage alle slags input som: Indtast mobilnummer, skriv meddelelser, foretag et opkald, modtag et opkald, send SMS, læs SMS osv. GSM-modul SIM900A bruges til at kommunikere med netværket til opkald og messaging formål. Vi har også tilsluttet en MIC og en højttaler til taleopkald og ringelyd, og en 16x2 LCD bruges til at vise meddelelser, instruktioner og alarmer.
Alfanumerisk er en metode til at indtaste tal og alfabeter ved hjælp af det samme tastatur. I denne metode har vi tilsluttet 4x4-tastaturet til Raspberry Pi og skrevet kode til også at acceptere alfabeter. Tjek koden i kodesektionen nedenfor.
Arbejdet med dette projekt er let. Alle funktionerne udføres ved hjælp af det alfanumeriske tastatur. Tjek den fulde kode og en demo-video nedenfor for at forstå processen korrekt. Her vil vi forklare alle de fire funktioner i projekterne nedenfor.
Forklaring af fire funktioner i Raspberry Pi mobiltelefon:
1. Foretag et opkald:
For at foretage et opkald ved hjælp af vores Raspberry Pi-baserede telefon skal vi trykke på 'C' og derefter skulle indtaste det mobilnummer, som vi vil foretage et opkald på. Nummer indtastes ved hjælp af det alfanumeriske tastatur. Efter indtastning af nummeret skal vi igen trykke på 'C'. Nu behandler Raspberry Pi for at forbinde opkaldet til det indtastede nummer ved hjælp af AT-kommandoen:
ATDxxxxxxxxxx;
2. Modtag et opkald:
Det er meget let at modtage et opkald. Når nogen ringer til dit system-SIM-nummer, som er der i GSM-modulet, vil dit system vise meddelelsen 'Indgående…' over LCD'et med det indgående opkaldsnummer. Nu skal vi bare trykke på 'A' for at deltage i dette opkald. Når vi trykker på 'A', sender Raspberry Pi den givne kommando til GSM-modulet:
VED EN
3. Send SMS:
Når vi vil sende en SMS ved hjælp af vores Raspberry Pi-baserede telefon, skal vi trykke på 'D'. Nu beder System om modtagernummer, betyder 'til hvem' vi vil sende SMS. Efter indtastning af nummeret skal vi igen trykke på 'D' og nu beder LCD om besked. Nu er vi nødt til at skrive beskeden, ligesom vi indtaster i normal mobil, ved hjælp af tastaturet, og efter at have indtastet beskeden, skal vi trykke på 'D' igen for at sende SMS. For at sende SMS sender Raspberry Pi den givne kommando:
AT + CMGF = 1
Og send 26 til GSM for at sende SMS.
4. Modtag og læs SMS:
Denne funktion er også enkel. I dette modtager GSM SMS og gemmer det på SIM-kortet. Og Raspberry Pi overvåger kontinuerligt den modtagne SMS-indikation via UART. Når der er en ny besked, viser LCD-teksten "Ny besked", og vi skal bare trykke på 'B' for at læse SMS'en. SMS modtaget indikation er:
+ CMTI: “SM”, 6 Hvor 6 er meddelelsesplacering, hvor den er gemt på SIM-kortet.
Når Raspberry Pi får denne 'SMS modtaget' indikation, udtrækker den SMS-lagringsplacering og sender kommando til GSM for at læse den modtagne SMS. Og vis en 'Ny besked'-tekst over LCD'et.
AT + CMGR =
Nu sender GSM lagret besked til Raspberry Pi og derefter Raspberry Pi udpakker hoved-SMS og viser den over LCD'et.
Bemærk: Der er ingen kodning for MIC og højttaler.
Tjek den fulde kode og en demo-video nedenfor for at forstå processen korrekt.
Kredsløbsdiagram og forklaring:
16x2 LCD-ben RS, EN, D4, D5, D6 og D7 er forbundet med GPIO-pin nummer 18, 23, 24, 25, 8 og 7 i henholdsvis Raspberry Pi. GSM-modulets Rx- og Tx-pin er direkte forbundet med henholdsvis Raspberry Pi's pin Tx og Rx (Ground of Raspberry Pi og GSM skal være forbundet med hinanden). 4x4-tastatur Rækkestifter R1, R2, R3, R4 er direkte forbundet med GPIO-pin nummer 12,16, 20, 21 i Raspberry Pi, og kolonnestift på tastatur C1, C2, C3, C4 er forbundet med GPIO pin-nummer 26, 19, 13 og 6 i Raspberry Pi. MIC er direkte forbundet til mic + og mic- af GSM-modulet, og højttaleren er forbundet med sp + og spidser til GSM Module ved hjælp af dette Audio Amplifier Circuit for at forstærke output-lyden. Dette lydforstærkerkredsløb er valgfrit, og du kan tilslutte højttaleren direkte til GSM-modulet uden denne lydforstærker.
Programmeringsforklaring:
Programmering af en del af denne Raspberry Pi-mobiltelefon er lidt kompleks for begyndere. Vi bruger Python-sprog her til programmet. Hvis du er nybegynder i Raspberry Pi, skal du tjekke vores tidligere vejledninger til Kom godt i gang med Raspberry Pi og installation og konfiguration af Raspbian Jessie OS i Pi.
I denne kode har vi oprettet def-tastatur (): funktion til grænseflade til simpelt tastatur til indtastning af tal. Og for at indtaste alfabeter har vi oprettet def alphaKeypad (): så det samme tastatur også kan bruges til at indtaste alfabeterne. Nu har vi gjort dette tastatur multifunktionelt det samme som Arduino tastaturbibliotek. Ved at bruge dette tastatur kan vi indtaste tegn og heltal ved kun at bruge 10 taster.
Ligesom hvis vi trykker på tast 2 (abc2), vil det vise 'a', og hvis vi trykker på det igen, vil det erstatte 'a' til 'b', og hvis vi igen trykker tre gange, vil det vise 'c' på samme sted i LCD. Hvis vi venter et stykke tid efter at have trykket på tasten, flytter markøren automatisk til næste position i LCD. Nu kan vi indtaste næste tegn eller nummer. Den samme procedure anvendes for andre nøgler.
def tastatur (): for j i rækkevidde (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 for i inden for rækkevidde (4): hvis gpio.input (ROW) = = 0: ch = MATRIX returnere ch mens (gpio.input (ROW) == 0): videregive gpio.output (COL, 1)
def alphaKeypad (): lcdclear () setCursor (x, y) lcdcmd (0x0f) msg = "" mens 1: key = 0 count = 0 key = keypad () if key == '1': ind = 0 maxInd = 6 Key = '1' getChar (Key, ind, maxInd)……………….
Først og fremmest har vi i dette python-script inkluderet nogle påkrævede biblioteker og definerede ben til LCD, tastatur og andre komponenter:
importer RPi.GPIO som gpio import af seriel importtid msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Nu er det tid til at give retning til benene:
gpio.setwarnings (False) gpio.setmode (gpio.BCM) gpio.setup (RS, gpio.OUT) gpio.setup (EN, gpio.OUT) gpio.setup (D4, gpio.OUT) gpio.setup (D5, gpio.OUT) gpio.setup (D6, gpio.OUT) gpio.setup (D7, gpio.OUT) gpio.setup (led, gpio.OUT) gpio.setup (buz, gpio.OUT) gpio.setup (m11, gpio.OUT) gpio.setup (m12, gpio.OUT) gpio.setup (knap, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. output (m12, 0)
Initialiser derefter seriel kommunikation som nedenfor:
Serial = serial.Serial ("/ dev / ttyS0", baudrate = 9600, timeout = 2)
Nu er vi nødt til at skrive en eller anden funktion til kørsel af LCD. Funktion def lcdcmd (ch): bruges til at sende kommando til LCD og def lcdwrite (ch): funktion bruges til at sende data til LCD. Sammen med disse funktioner bruges def lcdclear (): til at rydde LCD, def setCursor (x, y): bruges til at indstille markørposition ved LCD og def lcdprint (Str): bruges til at udskrive streng på LCD.
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) hvis ch & 0x10 == 0x10: gpio.output (D4, 1)………………
def lcdwrite (ch): gpio.output (RS, 1) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) hvis ch & 0x10 == 0x10: gpio.output (D4, 1) hvis ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) for i inden for rækkevidde (l): lcdwrite (ord (Str)) def set Markør (x, y): hvis y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Herefter skal vi skrive nogle funktioner til at sende SMS, modtage SMS, foretage et opkald og deltage i opkaldet.
Funktion def opkald (): bruges til at foretage opkaldet. Og funktionsdef ReceCall (data): bruges til at vise den indgående besked og nummer på LCD. Endelig def attendCall (): bruges til at deltage i opkaldet.
Funktion def sendSMS (): bruges til at skrive og sende meddelelsen ved hjælp af alphaKeypad () -funktionen. Og funktion def modtage SMS (data): bruges modtage og hente placeringen af SMS. Endelig def readSMS (indeks): bruges til at vise meddelelsen på LCD.
Du kan finde alle ovenstående funktioner i Koden angivet nedenfor.
Så dette er, hvordan du kan konvertere din Raspberry Pi til en mobiltelefon ved hjælp af GSM-modulet. Tjek også denne Raspberry Pi Touch Screen Smart Phone.