- Zahtevane komponente:
- Delovna razlaga:
- Razlaga štirih lastnosti mobilnega telefona Raspberry Pi:
- Shema vezja in razlaga:
- Pojasnilo programiranja:
V tem projektu DIY bomo zgradili preprost mobilni telefon z uporabo Raspberry Pi, v katerem se modul GSM uporablja za klicanje ali sprejemanje klicev ter pošiljanje ali branje SMS-ov , poleg tega pa ima ta telefon Raspberry Pi mikrofon in zvočnik za pogovor o tem Telefon . Ta projekt bo služil tudi kot pravilno povezovanje modula GSM z Raspberry Pi z vso kodo, potrebno za upravljanje osnovnih funkcij katerega koli telefona. Prej smo z uporabo Arduina zgradili enako vrsto preprostega mobilnega telefona, preverite tukaj
Zahtevane komponente:
- Raspberry Pi 3 (kateri koli model)
- GSM modul
- 16x2 LCD
- 4x4 tipkovnica (uporabnik lahko uporablja membransko tipkovnico)
- 10k lonec
- Breadboard
- Priključitev žice za mostičke
- Napajanje
- Zvočnik
- MIC
- SIM kartica
- Zvočnik
- Vezje ojačevalnika zvoka (neobvezno)
Delovna razlaga:
V tem projektu Raspberry Pi za mobilne telefone smo uporabili modul GSM in Raspberry Pi 3 za nadzor celotnih funkcij sistema in povezovanje vseh komponent v tem sistemu. 4x4 alfanumerično tipkovnico se uporablja za sprejemanje vseh vrst surovin, kot so: Vpišite številko mobilnega telefona, sporočil tipa, klicanje, sprejemanje klicev, pošiljanje SMS, preberite SMS itd GSM modul SIM900A se uporablja za komunikacijo z omrežjem za klicanje in pošiljanje sporočil namen. Povezali smo tudi mikrofon in zvočnik za zvok glasovnih klicev in zvonjenja, LCD 16x2 pa se uporablja za prikaz sporočil, navodil in opozoril.
Alfanumerično je način za vnos številk in abeced z isto tipkovnico. Pri tej metodi smo tipkovnico 4x4 povezali z Raspberry Pi in napisali tudi kodo za sprejemanje abeced, preverite kodo v spodnjem razdelku Koda.
Delo s tem projektom je enostavno. Vse funkcije bodo izvedene z uporabo alfanumerične tipkovnice. Spodaj preverite celotno kodo in predstavitveni video, da pravilno razumete postopek. Tukaj bomo razložili vse štiri značilnosti spodnjih projektov.
Razlaga štirih lastnosti mobilnega telefona Raspberry Pi:
1. Pokličite:
Če želite poklicati s telefonom, ki temelji na Raspberry Pi, moramo pritisniti 'C' in nato vnesti mobilno številko, na katero želimo poklicati. Številko vnesete z alfanumerično tipkovnico. Po vnosu številke moramo ponovno pritisniti 'C'. Zdaj bo Raspberry Pi obdelal povezavo klica z vneseno številko z ukazom AT:
ATDxxxxxxxxxx;
2. Sprejem klica:
Sprejem klica je zelo enostaven. Ko nekdo kliče na vašo sistemsko številko SIM, ki je tam v modulu GSM, bo vaš sistem na LCD-prikazovalniku prikazal sporočilo »Dohodno…« z dohodnim številom klicateljev. Zdaj moramo samo pritisniti 'A', da se udeležimo tega razpisa. Ko pritisnemo 'A', bo Raspberry Pi poslal ukaz modulu GSM:
ATA
3. Pošlji SMS:
Ko želimo poslati SMS s pomočjo našega telefona, ki temelji na Raspberry Pi, moramo pritisniti 'D'. Zdaj bo sistem zahteval številko prejemnika, kar pomeni "komu" želimo poslati SMS. Po vnosu številke moramo ponovno pritisniti 'D' in zdaj LCD vpraša za sporočilo. Zdaj moramo vtipkati sporočilo, tako kot ga vnesemo v običajni mobilni telefon, s pomočjo tipkovnice, nato pa po vnosu sporočila za pošiljanje SMS znova pritisniti 'D'. Če želite poslati SMS, Raspberry Pi pošlje dani ukaz:
AT + CMGF = 1
In pošljite 26 na GSM, da pošljete SMS.
4. Prejemanje in branje sporočil SMS:
Ta funkcija je tudi preprosta. Pri tem bo GSM prejel SMS in ga shranil na kartico SIM. In Raspberry Pi neprekinjeno spremlja prejeto sporočilo SMS prek UART. Kadar koli se prikaže novo sporočilo, se na LCD-prikazovalniku prikaže besedilo »Novo sporočilo«, nato moramo samo pritisniti 'B', da preberemo SMS. Oznaka prejetega SMS je:
+ CMTI: “SM”, 6 Kjer 6 je mesto sporočila, kjer je shranjeno na kartici SIM.
Ko Raspberry Pi prejme to indikacijo »Prejeto SMS«, izvleče lokacijo shranjevanja SMS-a in pošlje ukaz GSM-u za branje prejetega SMS-a. In na LCD-prikazovalniku prikažite besedilo "Novo sporočilo".
AT + CMGR =
Zdaj GSM pošlje shranjeno sporočilo Raspberry Pi, nato pa Raspberry Pi izvleče glavni SMS in ga prikaže na LCD-prikazovalniku.
Opomba: Za mikrofon in zvočnik ni kodiranja.
Spodaj preverite celotno kodo in predstavitveni video, da pravilno razumete postopek.
Shema vezja in razlaga:
16-kratni zatiči LCD RS, EN, D4, D5, D6 in D7 so povezani z GPIO-številkami 18, 23, 24, 25, 8 in 7 Raspberry Pi. Priključek Rx in Tx modula GSM je neposredno povezan z zatičem Tx oziroma Rx Raspberry Pi (ozemljitev Raspberry Pi in GSM morata biti med seboj povezana) 4x4 tipkovnice Vrstni zatiči R1, R2, R3, R4 so neposredno povezani z GPIO številko 12,16, 20, 21 Raspberry Pi in zatičem stolpca tipkovnice C1, C2, C3, C4 so povezani s GPIO številko 26, 19, 13 in 6 Raspberry Pi. MIC je neposredno povezan z mikrofonom mic in mic- modula GSM, zvočnik pa je povezan s sp + in zatiči za modul GSM s pomočjo tega ojačevalnega vezja za ojačanje izhodnega zvoka. To vezje ojačevalnika zvoka ni obvezno in zvočnik lahko neposredno priključite na modul GSM brez tega ojačevalnika zvoka.
Pojasnilo programiranja:
Programiranje tega mobilnega telefona Raspberry Pi je malo zapleteno za začetnike. Tukaj za program uporabljamo jezik Python. Če ste začetnik Raspberry Pi, si oglejte naše prejšnje vadnice za Uvod v Raspberry Pi ter Namestitev in konfiguriranje Raspbian Jessie OS v Pi.
V tej kodi smo ustvarili def keypad (): funkcija za povezovanje preproste tipkovnice za vnos številk. In za vnos abeced smo ustvarili def alphaKeypad (): tako lahko isto tipkovnico uporabimo tudi za vnos abeced. Zdaj smo naredili to tipkovnico večfunkcijsko enako kot knjižnico tipkovnice Arduino. Z uporabo te tipkovnice lahko vnesemo znake in celo število z uporabo samo 10 tipk.
Tako kot če pritisnemo tipko 2 (abc2), bo prikazana "a" in če jo ponovno pritisnemo, bo zamenjala "a" na "b". Če ponovno pritisnemo trikrat, bo na istem mestu prikazana "c" v LCD. Če po pritisku na tipko počakamo nekaj časa, se kurzor samodejno premakne na naslednji položaj na LCD-prikazovalniku. Zdaj lahko vnesemo naslednji znak ali številko. Enak postopek velja za druge tipke.
tipkovnica def (): za j v območju (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 za i v območju (4): če je gpio.input (ROW) = = 0: ch = MATRIX vrne ch while (gpio.input (ROW) == 0): poda 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)……………….
Najprej smo v ta skript python vključili nekaj potrebnih knjižnic in definirali nožice za LCD, tipkovnico in druge komponente:
import RPi.GPIO as gpio import serial import time msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Zdaj je čas, da usmerimo nožice:
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 (gumb, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. izhod (m12, 0)
Nato inicializirajte serijsko komunikacijo, kot spodaj:
Serial = serial.Serial ("/ dev / ttyS0", baudrate = 9600, timeout = 2)
Zdaj moramo napisati nekaj funkcij za vožnjo LCD-ja. Funkcija def lcdcmd (ch): uporablja se za pošiljanje ukaza na LCD in def lcdwrite (ch): funkcija se uporablja za pošiljanje podatkov na LCD. Skupaj s temi funkcijami def lcdclear (): se uporablja za čiščenje LCD-ja, def setCursor (x, y): se uporablja za nastavitev položaja kazalca na LCD-ju in def lcdprint (Str): se uporablja za tiskanje niza na LCD-ju.
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), če ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) za i v območju (l): lcdwrite (ord (Str)) def setCursor (x, y): če je y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Po tem moramo napisati nekaj funkcij za pošiljanje SMS-ov, sprejemanje SMS-jev, klicanje in udeležbo na klicu.
Funkcija def call (): uporablja se za klicanje. In funkcija def receiveCall (podatki): se uporablja za prikaz dohodnega sporočila in številke na LCD-prikazovalniku. Končno def участиеCall (): se uporablja za udeležbo na klicu.
Funkcija def sendSMS (): uporablja se za pisanje in pošiljanje sporočila s pomočjo funkcije alphaKeypad () . In funkcija def receiveSMS (podatki): uporablja se za sprejemanje in pridobivanje lokacije SMS. Končno def readSMS (indeks): se uporablja za prikaz sporočila na LCD-ju.
Vse zgoraj navedene funkcije najdete v spodnji kodi.
Tako lahko s pomočjo modula GSM pretvorite Raspberry Pi v mobilni telefon. Preverite tudi ta pametni telefon Raspberry Pi Touch Screen.