- Požadované komponenty:
- Pracovní vysvětlení:
- Vysvětlení čtyř funkcí mobilního telefonu Raspberry Pi:
- Schéma zapojení a vysvětlení:
- Vysvětlení programování:
V tomto DIY projektu budeme stavět jednoduchý mobilní telefon pomocí Raspberry Pi, ve kterém se GSM modul používá k uskutečňování nebo přijímání hovorů a odesílání nebo čtení SMS , a také tento telefon Raspberry Pi má mikrofon a reproduktor, aby o tom mohli mluvit Telefon . Tento projekt bude také sloužit jako řádné propojení GSM modulu s Raspberry Pi se vším kódem potřebným pro provoz základních funkcí libovolného telefonu. Dříve jsme pomocí Arduina vytvořili stejný druh jednoduchého mobilního telefonu, zkontrolujte zde
Požadované komponenty:
- Raspberry Pi 3 (jakýkoli model)
- GSM modul
- 16x2 LCD
- Klávesnice 4x4 (uživatel může používat membránovou klávesnici)
- 10k hrnec
- Nepájivá deska
- Připojení propojovacího vodiče
- Zdroj napájení
- mluvčí
- MIC
- SIM karta
- mluvčí
- Obvod audio zesilovače (volitelný)
Pracovní vysvětlení:
V tomto projektu mobilního telefonu Raspberry Pi jsme použili GSM modul a Raspberry Pi 3 pro ovládání funkcí celého systému a propojení všech komponent v tomto systému. 4x4 Alfanumerická klávesnice slouží k všechny druhy vstupů, jako jsou: Zadejte číslo mobilního telefonu, typ zprávy, volání, přijetí hovoru, posílat SMS, číst SMS atd. GSM modul SIM900A se používá ke komunikaci se sítí pro volání a posílání zpráv účel. Také jsme propojili mikrofon a reproduktor pro hlasové volání a vyzvánění a pro zobrazení zpráv, pokynů a výstrah se používá 16x2 LCD.
Alfanumerický je způsob zadávání čísel a abeced pomocí obou klávesnic. V této metodě jsme propojili klávesnici 4x4 s Raspberry Pi a psali jsme také kód pro přijímání abeced, zkontrolujte níže v části Kód v části Kód.
Práce na tomto projektu je snadná. Všechny funkce budou prováděny pomocí alfanumerické klávesnice. Zkontrolujte celý kód a ukázkové video níže, abyste správně porozuměli procesu. Zde vysvětlíme všechny čtyři funkce projektů níže.
Vysvětlení čtyř funkcí mobilního telefonu Raspberry Pi:
1. Uskutečněte hovor:
Chcete-li uskutečnit hovor pomocí našeho telefonu založeného na Raspberry Pi, musíme stisknout „C“ a poté zadat mobilní číslo, na které chceme uskutečnit hovor. Číslo bude zadáno pomocí alfanumerické klávesnice. Po zadání čísla musíme znovu stisknout „C“. Nyní Raspberry Pi zpracuje připojení hovoru k zadanému číslu pomocí příkazu AT:
ATDxxxxxxxxxx;
2. Přijměte hovor:
Příjem hovoru je velmi snadný. Když někdo volá na vaše systémové číslo SIM, které je tam v GSM modulu, pak váš systém zobrazí zprávu „Příchozí…“ na LCD s příchozím číslem volajícího. Nyní se stačí jen zúčastnit tohoto hovoru stisknutím klávesy „A“. Když stiskneme 'A', Raspberry Pi pošle daný příkaz do GSM modulu:
ATA
3. Odeslání SMS:
Pokud chceme poslat SMS pomocí našeho telefonu založeného na Raspberry Pi, musíme stisknout „D“. Nyní systém požádá o číslo příjemce, což znamená „komu“ chceme poslat SMS. Po zadání čísla musíme znovu stisknout „D“ a nyní se LCD zeptá na zprávu. Nyní musíme zadat zprávu, jako bychom ji zadali v normálním mobilním telefonu, pomocí klávesnice a poté po zadání zprávy musíme znovu odeslat SMS stisknutím klávesy „D“. Odeslání SMS Raspberry Pi odešle daný příkaz:
AT + CMGF = 1
A poslat 26 do GSM poslat SMS.
4. Příjem a čtení SMS:
Tato funkce je také jednoduchá. V tomto případě GSM přijme SMS a uloží je na SIM kartu. A Raspberry Pi nepřetržitě sleduje přijatou indikaci SMS přes UART. Kdykoli se objeví nová zpráva, na LCD displeji se zobrazí text „Nová zpráva“ a pak stačí stisknout „B“, abyste si přečetli SMS. Indikace přijaté SMS je:
+ CMTI: „SM“, 6 Kde 6 je umístění zprávy, kde je uloženo na SIM kartě.
Když Raspberry Pi dostane tuto indikaci „SMS přijata“, pak extrahuje místo pro uložení SMS a odešle příkaz do GSM, aby přečetl přijatou SMS. A na LCD zobrazte text „Nová zpráva“.
AT + CMGR =
Nyní GSM odesílá uložené zprávy na Raspberry Pi a poté Raspberry Pi extrahuje hlavní SMS a zobrazuje je na LCD.
Poznámka: Pro MIC a reproduktory neexistuje žádné kódování.
Zkontrolujte celý kód a ukázkové video níže, abyste správně porozuměli procesu.
Schéma zapojení a vysvětlení:
16x2 LCD piny RS, EN, D4, D5, D6 a D7 jsou spojeny s GPIO pinem číslo 18, 23, 24, 25, 8 a 7 Raspberry Pi. Pin Rx a Tx GSM modulu je přímo připojen k pinům Tx a Rx Raspberry Pi (uzemnění Raspberry Pi a GSM musí být vzájemně propojené). Klávesnice 4x4 Řádkové piny R1, R2, R3, R4 jsou přímo spojeny s GPIO pinem číslo 12,16, 20, 21 Raspberry Pi a Column pin klávesnice C1, C2, C3, C4 jsou propojeny s GPIO pinem číslo 26, 19, 13 a 6 Raspberry Pi. MIC je přímo připojen k mic + a mic- GSM modulu a reproduktor je připojen na sp + a spiny pro GSM modul pomocí tohoto obvodu audio zesilovače, aby se zesílil výstupní zvuk. Tento obvod audio zesilovače je volitelný a reproduktor můžete přímo připojit k modulu GSM bez tohoto audio zesilovače.
Vysvětlení programování:
Programovací část tohoto mobilního telefonu Raspberry Pi je pro začátečníky trochu složitá. Pro program používáme jazyk Python. Pokud jste v Raspberry Pi začátečník, měli byste si prohlédnout naše předchozí výukové programy Začínáme s Raspberry Pi a Instalace a konfigurace Raspbian Jessie OS v Pi.
V tomto kódu jsme vytvořili def keypad (): funkce pro propojení jednoduché klávesnice pro zadávání čísel. A pro zadávání abeced jsme vytvořili def alphaKeypad (): aby bylo možné použít stejnou klávesnici i pro zadávání abeced. Nyní jsme tuto klávesnici vylepšili tak, aby fungovala stejně jako knihovna klávesnic Arduino. Pomocí této klávesnice můžeme zadávat znaky a celé číslo pomocí pouze 10 kláves.
Stejně jako když stiskneme klávesu 2 (abc2), zobrazí se „a“ a pokud ji stiskneme znovu, nahradí „a“ až „b“ a pokud znovu stiskneme třikrát, zobrazí se „c“ na stejném místě na LCD. Pokud po stisknutí klávesy nějakou dobu počkáme, kurzor se automaticky přesune na další pozici na LCD. Nyní můžeme zadat další znak nebo číslo. Stejný postup se použije pro ostatní klíče.
def keypad (): for j in range (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 for i in range (4): if gpio.input (ROW) = = 0: ch = MATRIX návrat ch while (gpio.input (ROW) == 0): předat 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 Klíč = '1' getChar (klíč, ind, maxInd)……………….
Nejprve jsme do tohoto skriptu pythonu zahrnovali některé požadované knihovny a definované piny pro LCD, klávesnici a další komponenty:
import RPi.GPIO jako gpio import sériový čas importu msg = "" alpha = "1! @.,:?? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Nyní je čas dát směr pinům:
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 (tlačítko, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. výstup (m12, 0)
Pak inicializujte sériovou komunikaci, jak je uvedeno níže:
Serial = serial.Serial ("/ dev / ttyS0", přenosová rychlost = 9600, časový limit = 2)
Nyní musíme napsat nějakou funkci pro řízení LCD. Funkce def lcdcmd (ch): slouží k odeslání příkazu na LCD a def lcdwrite (ch): funkce se používá k odeslání dat na LCD. Spolu s těmito funkcemi se def lcdclear (): používá k vymazání LCD, def setCursor (x, y): slouží k nastavení pozice kurzoru na LCD a def lcdprint (Str): se používá k tisku řetězce na LCD.
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) pokud 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) pokud ch & 0x10 == 0x10: gpio.output (D4, 1) pokud ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) pro i v rozsahu (l): lcdwrite (ord (Str)) def setCursor (x, y): if y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Poté musíme napsat některé funkce pro odesílání SMS, příjem SMS, volání a účast na hovoru.
Function def call (): slouží k uskutečnění hovoru. A funkce def receiveCall (data): slouží k zobrazení příchozí zprávy a čísla na LCD. Nakonec def visitCall (): se používá k účasti na hovoru.
Funkce def sendSMS (): slouží k psaní a odesílání zprávy pomocí funkce alphaKeypad () . And function def receiveSMS (data): is used receive and retrieve the location of SMS. Nakonec def readSMS (index): slouží k zobrazení zprávy na LCD.
Všechny výše uvedené funkce najdete v níže uvedeném kódu.
Takto můžete pomocí modulu GSM převést svůj Raspberry Pi na mobilní telefon. Zkontrolujte také tento chytrý telefon s dotykovou obrazovkou Raspberry Pi.