- Reikalingi komponentai:
- Darbinis paaiškinimas:
- Paaiškinkite keturias „Raspberry Pi“ mobiliojo telefono savybes:
- Grandinės schema ir paaiškinimas:
- Programavimo paaiškinimas:
Šiame „pasidaryk pats“ projekte mes ketiname sukurti paprastą mobilųjį telefoną naudodami „Raspberry Pi“, kuriame GSM modulis naudojamas skambinti arba atsiliepti į skambutį ir siųsti ar skaityti SMS , taip pat šiame „Raspberry Pi“ telefone yra mikrofonas ir garsiakalbis, kad būtų galima kalbėti per tai Telefonas . Šis projektas taip pat bus tinkama „GSM“ modulio sąsaja su „Raspberry Pi“ su visu kodu, reikalingu bet kokioms pagrindinėms telefono funkcijoms valdyti. Anksčiau mes sukūrėme tą patį paprastą mobilųjį telefoną naudodami „Arduino“, patikrinkite čia
Reikalingi komponentai:
- Raspberry Pi 3 (bet koks modelis)
- GSM modulis
- 16x2 LCD ekranas
- 4x4 klaviatūra (vartotojas gali naudoti membraninę klaviatūrą)
- 10 tūkst. Puodo
- Bandomoji Lenta
- Jungiamojo laido sujungimas
- Maitinimo šaltinis
- Garsiakalbis
- MIC
- SIM kortelė
- Garsiakalbis
- Garso stiprintuvo grandinė (pasirinktinai)
Darbinis paaiškinimas:
Šiame „ Raspberry Pi“ mobiliųjų telefonų projekte mes naudojome GSM modulį ir „Raspberry Pi 3“, kad valdytume visos sistemos ypatybes ir sujungtume visus šios sistemos komponentus. 4x4 raidinę skaitmeninę klaviatūrą naudojamas atsižvelgiant visų rūšių sąnaudų, pavyzdžiui: Įveskite telefono numerį, tipo žinutes, skambinti, skambina, siųskite SMS, skaityti SMS tt GSM modulis SIM900A naudojamas bendrauti su tinklu skambinti ir pranešimų tikslas. Mes taip pat suderinome mikrofoną ir garsiakalbį, kad galėtume skambinti balsu ir skambėti, o 16x2 LCD ekranas naudojamas pranešimams, instrukcijoms ir įspėjimams rodyti.
Raidinis ir skaitmeninis yra metodas įvesti skaičius ir abėcėles naudojant tą pačią klaviatūrą. Šiuo metodu susiejome 4x4 klaviatūrą su „Raspberry Pi“ ir parašėme kodą abėcėlėms priimti, patikrinkite toliau pateiktą „ Kodas“ skyrių.
Šį projektą lengva atlikti. Visos funkcijos bus atliekamos naudojant raidinę ir skaitmeninę klaviatūrą. Norėdami tinkamai suprasti procesą, patikrinkite visą kodą ir demonstracinį vaizdo įrašą. Čia mes paaiškinsime visas keturias toliau nurodytų projektų ypatybes.
Paaiškinkite keturias „Raspberry Pi“ mobiliojo telefono savybes:
1. Skambinkite:
Norėdami paskambinti naudodamiesi „Raspberry Pi“ pagrindu veikiančiu telefonu, turime paspausti „C“ ir tada įvesti mobiliojo telefono numerį, kuriuo norime skambinti. Skaičius bus įvedamas naudojant raidinę ir skaitmeninę klaviatūrą. Įvedę skaičių, vėl turime paspausti „C“. Dabar „Raspberry Pi“ apdoros skambučio prijungimą prie įvesto numerio naudodama komandą AT:
ATDxxxxxxxxxx;
2. Gaukite skambutį:
Gauti skambutį yra labai lengva. Kai kas nors skambina jūsų sistemos SIM numeriu, esančiu GSM modulyje, jūsų sistema per LCD rodys pranešimą „Gaunamas…“ su įeinančiu skambinančiojo numeriu. Dabar mums tereikia paspausti „A“, kad galėtume dalyvauti šiame skambutyje. Kai paspausime „A“, „Raspberry Pi“ išsiųs nurodytą komandą į GSM modulį:
ATA
3. Siųsti SMS:
Kai norime siųsti SMS naudodami „ Raspberry Pi“ telefoną, turime paspausti „D“. Dabar sistema paprašys gavėjo numerio, reiškia „kam“ mes norime siųsti SMS. Įvedę numerį turime dar kartą paspausti „D“ ir dabar LCD prašo pranešimo. Dabar mums reikia įvesti pranešimą, kaip įvedame įprastame mobiliajame telefone, naudodamiesi klaviatūra, o tada, įvedę pranešimą, turime dar kartą paspausti „D“, kad galėtume siųsti SMS. Norėdami siųsti SMS, „Raspberry Pi“ siunčia nurodytą komandą:
AT + CMGF = 1
Ir išsiųskite 26 į GSM, kad galėtumėte siųsti SMS.
4. Gauti ir skaityti SMS:
Ši funkcija taip pat paprasta. Šiuo atveju GSM gaus SMS žinutes ir išsaugos jas SIM kortelėje. „Raspberry Pi“ nuolat stebi gautą SMS indikaciją per UART. Kai tik atsiras naujas pranešimas, skystųjų kristalų ekrane bus rodomas tekstas „Naujas pranešimas“, tada mums tereikia paspausti „B“, kad galėtume perskaityti SMS žinutę. Gauta SMS indikacija yra:
+ CMTI: „SM“, 6 Kur 6 yra pranešimo vieta, kurioje jis buvo saugomas SIM kortelėje.
Kai „Raspberry Pi“ gauna šią „SMS gautą“ indikaciją, ji ištraukia SMS saugojimo vietą ir siunčia komandą į GSM skaityti gautą SMS. Per LCD ekraną parodykite tekstą „Naujas pranešimas“.
AT + CMGR =
Dabar GSM siunčia saugomą pranešimą „Raspberry Pi“, o tada „Raspberry Pi“ ištraukia pagrindinį SMS ir rodo jį per LCD.
Pastaba: nėra MIC ir garsiakalbio kodavimo.
Norėdami tinkamai suprasti procesą, patikrinkite visą kodą ir demonstracinį vaizdo įrašą.
Grandinės schema ir paaiškinimas:
16x2 LCD kaiščiai RS, EN, D4, D5, D6 ir D7 yra sujungti su GPIO kaiščiais atitinkamai 18, 23, 24, 25, 8 ir 7 „Raspberry Pi“. „GSM“ modulio „Rx“ ir „Tx“ kaiščiai yra tiesiogiai prijungti prie „Raspberry Pi“ kaiščių Tx ir Rx (Raspberry Pi pagrindas ir GSM turi būti sujungti vienas su kitu). 4x4 klaviatūros R1, R2, R3, R4 eilučių kaiščiai yra tiesiogiai susieti su „Raspberry Pi“ GPIO kaiščių numeriais 12,16, 20, 21 ir C1, C2, C3, C4 klaviatūros stulpelio kaiščiu yra susieti su GPIO kaiščių numeriais 26, 19, Aviečių Pi 13 ir 6. MIC yra tiesiogiai prijungtas prie „GSM +“ modulio „mic +“ ir „mic-“, o garsiakalbis yra prijungtas prie „GSM +“ modulio „sp +“ ir „spins“, naudojant šią garso stiprintuvo grandinę, kad būtų sustiprintas išvesties garsas. Ši garso stiprintuvo grandinė yra neprivaloma ir jūs galite tiesiogiai prijungti garsiakalbį prie GSM modulio be šio garso stiprintuvo.
Programavimo paaiškinimas:
Šio „ Raspberry Pi“ mobiliojo telefono dalies programavimas yra šiek tiek sudėtingas pradedantiesiems. Programai čia naudojame Python kalbą. Jei esate „Raspberry Pi“ pradedantysis, turėtumėte patikrinti ankstesnes „Raspberry Pi“ darbo pradžios ir „Raspbian Jessie“ OS diegimo ir konfigūravimo „Pi“ instrukcijas.
Šiame kode mes sukūrėme def klaviatūrą (): funkciją, skirtą susieti paprastą klaviatūrą skaičiams įvesti. Norėdami įvesti abėcėles, mes sukūrėme def alphaKeypad (): kad tą pačią klaviatūrą būtų galima naudoti ir abėcėlėms įvesti. Dabar mes padarėme šią klaviatūrą daugiafunkcinę kaip „Arduino“ klaviatūros biblioteka. Naudodamiesi šia klaviatūra, mes galime įvesti simbolius ir sveikąjį skaičių naudodami tik 10 klavišų.
Panašiai kaip jei paspausime 2 klavišą (abc2), jis parodys „a“ ir, jei paspausime dar kartą, jis pakeis „a“ į „b“, o jei vėl paspausime tris kartus, tada toje pačioje vietoje bus rodomas „c“ skystųjų kristalų ekrane. Jei palauksime kurį laiką paspaudę mygtuką, žymeklis automatiškai pereis į kitą LCD ekrano vietą. Dabar galime įvesti kitą simbolį ar numerį. Ta pati procedūra taikoma ir kitiems raktams.
def klaviatūra (): j diapazone (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 i diapazone (4): jei gpio.input (ROW) = = 0: ch = MATRIX grąžina ch, o (gpio.input (ROW) == 0): perduoti gpio.output (COL, 1)
def alphaKeypad (): lcdclear () setCursor (x, y) lcdcmd (0x0f) msg = "" o 1: klavišas = 0 skaičius = 0 klavišas = klaviatūra () jei klavišas == '1': ind = 0 maxInd = 6 Raktas = '1' getChar (raktas, ind, maxInd)……………….
Visų pirma, šiame python scenarijuje mes įtraukėme keletą reikalingų bibliotekų ir apibrėžėme LCD, klaviatūros ir kitų komponentų kaiščius:
importuoti RPi.GPIO kaip gpio importuoti nuoseklų importo laiką msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Dabar atėjo laikas nukreipti kaiščius:
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 (mygtukas, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. išėjimas (m12, 0)
Tada pradėkite nuoseklųjį ryšį, kaip nurodyta toliau:
Serija = nuosekli. Serija ("/ dev / ttyS0", baudos greitis = 9600, skirtasis laikas = 2)
Dabar turime parašyti tam tikrą funkciją, kaip vairuoti LCD. Funkcija def lcdcmd (ch): naudojama komandai siųsti į LCD, o def lcdwrite (ch): funkcija naudojama duomenims siųsti į LCD. Kartu su šiomis funkcijomis def lcdclear (): naudojamas išvalyti skystųjų kristalų ekraną, def setCursor (x, y): naudojamas žymeklio padėčiai nustatyti LCD ekrane, o def lcdprint (Str): naudojamas eilutei spausdinti LCD.
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D6, 0) gpio.output (D7, 0) jei 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 (D6, 0) gpio.output (D7, 0) jei ch & 0x10 == 0x10: gpio.output (D4, 1), jei ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) i diapazone (l): lcdwrite (ord (Str)) def setKursorius (x, y): jei y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Po to turime parašyti kai kurias SMS siuntimo, SMS priėmimo, skambučio ir dalyvavimo skambučio funkcijas.
Funkcijos skambutis (): naudojamas skambinant. Funkcija def ReceiveCall (duomenys): naudojama rodant gaunamą pranešimą ir numerį LCD ekrane. Pagaliau def attendCall (): naudojamas dalyvauti skambutyje.
Funkcija def sendSMS (): naudojama pranešimui rašyti ir siųsti naudojant „ alphaKeypad“) funkciją. Funkcija def ReceiveSMS (duomenys): naudojama priimti ir gauti SMS vietą. Galiausiai def readSMS (rodyklė): naudojamas pranešimui rodyti LCD.
Visas aukščiau nurodytas funkcijas galite rasti žemiau pateiktame kode.
Taigi, tokiu būdu jūs galite konvertuoti savo „Raspberry Pi“ į mobilųjį telefoną naudodamiesi GSM moduliu. Taip pat patikrinkite šį „Raspberry Pi“ jutiklinio ekrano išmanųjį telefoną.