- Nödvändiga komponenter:
- Arbetsförklaring:
- Förklara fyra funktioner i Raspberry Pi mobiltelefon:
- Kretsschema och förklaring:
- Programmeringsförklaring:
I det här DIY-projektet ska vi bygga en enkel mobiltelefon med Raspberry Pi, där GSM-modulen används för att ringa eller svara på samtalet och skicka eller läsa SMS , och även denna Raspberry Pi-telefon har mikrofon och högtalare för att prata om detta Telefon . Detta projekt kommer också att fungera som ett korrekt gränssnitt mellan GSM-modulen och Raspberry Pi, med all kod som behövs för att hantera telefonens grundläggande funktioner. Tidigare har vi byggt samma typ av enkel mobiltelefon med Arduino, kolla här
Nödvändiga komponenter:
- Raspberry Pi 3 (vilken modell som helst)
- GSM-modul
- 16x2 LCD
- 4x4-knappsats (användaren kan använda membrantangentbordet)
- 10k kruka
- Bakbord
- Anslutande bygelkabel
- Strömförsörjning
- Högtalare
- MIC
- Simkort
- Högtalare
- Ljudförstärkarkrets (valfritt)
Arbetsförklaring:
I detta Raspberry Pi-mobilprojekt har vi använt GSM-modulen och Raspberry Pi 3 för att styra hela systemets funktioner och ansluta alla komponenter i detta system. En 4x4 alfanumerisk knappsats används för att ta alla typer av ingångar som: Ange mobilnummer, skriv meddelanden, ring ett samtal, ta emot ett samtal, skicka SMS, läs SMS etc. GSM-modul SIM900A används för att kommunicera med nätverket för samtal och meddelanden syfte. Vi har också anslutit en MIC och en högtalare för röstsamtal och ringsignal och en 16x2 LCD används för att visa meddelanden, instruktioner och varningar.
Alfanumeriskt är en metod för att ange siffror och alfabet båda med samma knappsats. I den här metoden har vi kopplat 4x4-tangentbordet till Raspberry Pi och skriven kod för att acceptera alfabet, kontrollera koden i kodavsnittet nedan.
Att arbeta med detta projekt är enkelt. Alla funktioner kommer att utföras med hjälp av alfanumerisk knappsats. Kontrollera hela koden och en demonstrationsvideo nedan för att förstå processen korrekt. Här kommer vi att förklara alla de fyra funktionerna i projekten nedan.
Förklara fyra funktioner i Raspberry Pi mobiltelefon:
1. Ring ett samtal:
För att ringa ett samtal med vår Raspberry Pi-baserade telefon måste vi trycka på 'C' och sedan behöva ange det mobilnummer som vi vill ringa på. Nummer matas in med hjälp av det alfanumeriska tangentbordet. Efter att ha angett numret måste vi igen trycka på 'C'. Nu kommer Raspberry Pi att behandla för att ansluta samtalet till det angivna numret med hjälp av AT-kommandot:
ATDxxxxxxxxxx;
2. Ta emot ett samtal:
Att ta emot ett samtal är väldigt enkelt. När någon ringer till ditt system-SIM-nummer, som finns i GSM-modulen, kommer ditt system att visa meddelandet "Inkommande…" över LCD-skärmen med inkommande nummer. Nu behöver vi bara trycka på 'A' för att delta i det här samtalet. När vi trycker på 'A' kommer Raspberry Pi att skicka ett kommando till GSM-modulen:
ATA
3. Skicka SMS:
När vi vill skicka ett SMS med vår Raspberry Pi-baserade telefon måste vi trycka på 'D'. Nu frågar systemet efter mottagarnummer, betyder "till vem" vi vill skicka SMS. Efter att ha angett numret måste vi trycka på 'D' igen och nu ber LCD om meddelande. Nu måste vi skriva meddelandet, som vi skriver in i normal mobil, med hjälp av knappsatsen och sedan efter att ha skrivit in meddelandet måste vi trycka på 'D' igen för att skicka SMS. För att skicka SMS skickar Raspberry Pi ett givet kommando:
AT + CMGF = 1
Och skicka 26 till GSM för att skicka SMS.
4. Ta emot och läs SMS:
Denna funktion är också enkel. I detta kommer GSM att ta emot SMS och lagra det på SIM-kortet. Och Raspberry Pi övervakar kontinuerligt den mottagna SMS-indikationen över UART. Närhelst det finns ett nytt meddelande visar LCD-texten "Nytt meddelande" och sedan behöver vi bara trycka på "B" för att läsa SMS. SMS mottagen indikation är:
+ CMTI: “SM”, 6 där 6 är meddelandeplatsen där den lagras på SIM-kortet.
När Raspberry Pi får denna 'SMS mottagen' indikation extraherar den SMS-lagringsplatsen och skickar kommando till GSM för att läsa det mottagna SMS. Och visa en "New Message" -text över LCD-skärmen.
AT + CMGR =
Nu skickar GSM lagrat meddelande till Raspberry Pi och sedan extraherar Raspberry Pi huvud-SMS och visar det över LCD-skärmen.
Obs! Det finns ingen kodning för MIC och högtalare.
Kontrollera hela koden och en demonstrationsvideo nedan för att förstå processen korrekt.
Kretsschema och förklaring:
16x2 LCD-stift RS, EN, D4, D5, D6 och D7 är anslutna med GPIO-stift nr 18, 23, 24, 25, 8 och 7 på Raspberry Pi. GSM-modulens Rx- och Tx-stift är direkt ansluten till Raspberry Pi's stift Tx respektive Rx (Ground of Raspberry Pi och GSM måste vara anslutna till varandra). 4x4-knappsats Radstift R1, R2, R3, R4 är direkt kopplade till GPIO-stiftnummer 12,16, 20, 21 på Raspberry Pi och kolumnstift på knappsats C1, C2, C3, C4 är kopplade till GPIO-stiftnummer 26, 19, 13 och 6 i Raspberry Pi. MIC är direkt ansluten till mic + och mic- på GSM-modulen och högtalaren är ansluten på sp + och spinn för GSM-modul med hjälp av denna Audio Amplifier Circuit, för att förstärka utgångsljudet. Denna ljudförstärkarkrets är valfri och du kan ansluta högtalaren direkt till GSM-modulen utan denna ljudförstärkare.
Programmeringsförklaring:
Programmering av en del av denna Raspberry Pi-mobiltelefon är lite komplex för nybörjare. Vi använder Pythonspråk här för programmet. Om du är nybörjare i Raspberry Pi, bör du kolla in våra tidigare handledning för att komma igång med Raspberry Pi och installera och konfigurera Raspbian Jessie OS i Pi.
I den här koden har vi skapat def-knappsats (): funktion för gränssnitt med enkel knappsats för att ange nummer. Och för att skriva in alfabet har vi skapat def alphaKeypad (): så att samma knappsats kan användas för att skriva in alfabet också. Nu har vi gjort denna knappsats multifunktionell samma som Arduino tangentbordsbibliotek. Genom att använda denna knappsats kan vi ange tecken och heltal med endast 10 tangenter.
Som om vi trycker på tangent 2 (abc2), kommer den att visa 'a' och om vi trycker på den igen kommer den att ersätta 'a' till 'b' och om vi igen trycker tre gånger så kommer den att visa 'c' på samma plats i LCD. Om vi väntar en stund efter att ha tryckt på tangenten flyttas markören automatiskt till nästa position i LCD-skärmen. Nu kan vi ange nästa tecken eller nummer. Samma procedur tillämpas för andra nycklar.
def knappsats (): för j i intervall (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 för i i intervall (4): om gpio.input (ROW) = = 0: ch = MATRIX returnera ch medan (gpio.input (ROW) == 0): passera gpio.output (COL, 1)
def alphaKeypad (): lcdclear () setCursor (x, y) lcdcmd (0x0f) msg = "" while 1: key = 0 count = 0 key = keypad () if key == '1': ind = 0 maxInd = 6 Key = '1' getChar (Key, ind, maxInd)……………….
Först och främst har vi i detta python-skript inkluderat några obligatoriska bibliotek och definierade stift för LCD, knappsats och andra komponenter:
importera RPi.GPIO som gpio importera seriell importtid msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Nu är det dags att ge riktning åt stiften:
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 (knapp, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. utgång (m12, 0)
Initiera sedan seriekommunikation som nedan:
Serial = serial.Serial ("/ dev / ttyS0", baudrate = 9600, timeout = 2)
Nu måste vi skriva någon funktion för att köra LCD. Funktion def lcdcmd (ch): används för att skicka kommando till LCD och def lcdwrite (ch): funktionen används för att skicka data till LCD. Tillsammans med dessa funktioner används def lcdclear (): för att rensa LCD, def setCursor (x, y): används för att ställa in markörposition vid LCD och def lcdprint (Str): används för att skriva ut sträng 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) if 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) if ch & 0x10 == 0x10: gpio.output (D4, 1) om ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) för i inom intervallet (l): lcdwrite (ord (Str)) def setCursor (x, y): if y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Efter detta behöver vi skriva några funktioner för att skicka SMS, ta emot SMS, ringa och delta i samtalet.
Funktion def samtal (): används för att ringa samtalet. Och funktionen def mottagningsanrop (data): används för att visa inkommande meddelande och nummer på LCD. Slutligen används def attendCall (): för att delta i samtalet.
Funktion def sendSMS (): används för att skriva och skicka meddelandet med hjälp av alphaKeypad () -funktionen. Och funktionen def mottag SMS (data): används ta emot och hämta platsen för SMS. Slutligen används def readSMS (index): för att visa meddelandet på LCD.
Du hittar alla ovanstående funktioner i koden nedan.
Så det här är hur du kan konvertera din Raspberry Pi till en mobiltelefon med hjälp av GSM-modulen. Kontrollera även den här Raspberry Pi-pekskärmssmarttelefonen.