- Nepieciešamās sastāvdaļas:
- Darba skaidrojums:
- Paskaidrojot četras Raspberry Pi mobilā tālruņa funkcijas:
- Shēmas shēma un skaidrojums:
- Programmēšanas skaidrojums:
Šajā DIY projektā mēs izveidosim vienkāršu mobilo tālruni, izmantojot Raspberry Pi, kurā GSM modulis tiek izmantots, lai veiktu zvanu vai atbildētu uz to un nosūtītu vai lasītu īsziņu , kā arī šim Raspberry Pi tālrunim ir mikrofons un skaļrunis, lai runātu pa šo Tālrunis . Šis projekts kalpos arī kā pareiza GSM moduļa un Raspberry Pi saskarne ar visu kodu, kas nepieciešams jebkura tālruņa pamatfunkciju darbībai. Iepriekš mēs esam izveidojuši tāda paša veida vienkāršu mobilo tālruni, izmantojot Arduino, pārbaudiet šeit
Nepieciešamās sastāvdaļas:
- Aveņu Pi 3 (jebkurš modelis)
- GSM modulis
- 16x2 LCD
- 4x4 tastatūra (lietotājs var izmantot membrānas tastatūru)
- 10k katls
- Maizes dēlis
- Džempera savienojuma vads
- Enerģijas padeve
- Runātājs
- MIC
- SIM karti
- Runātājs
- Audio pastiprinātāja shēma (pēc izvēles)
Darba skaidrojums:
Šajā Raspberry Pi mobilā tālruņa projektā mēs izmantojām GSM moduli un Raspberry Pi 3, lai kontrolētu visas sistēmas funkcijas un sasaistītu visus šīs sistēmas komponentus. 4x4 burtciparu tastatūra tiek izmantots, lai veiktu visa veida izejmateriālus, piemēram: Ievadiet mobilā tālruņa numuru, ierakstiet ziņas, veiktu zvanu, saņemat zvanu, nosūtīt īsziņu, lasīt SMS uc GSM modulis SIM900A tiek izmantota, lai sazinātos ar tīkla zvana un ziņojumapmaiņas mērķim. Mēs arī esam saskarnes mikrofonu un skaļruni balss zvana un zvana skaņai, un 16x2 LCD tiek izmantots ziņojumu, instrukciju un brīdinājumu rādīšanai.
Burtciparu skaitļu un alfabētu ievadīšanas metode, izmantojot vienu un to pašu tastatūru. Šajā metodē mēs esam saskarnē 4x4 tastatūru ar Raspberry Pi un uzrakstītu kodu arī alfabētu pieņemšanai, pārbaudiet zemāk esošo sadaļu Kods.
Darbs ar šo projektu ir vienkāršs. Visas funkcijas tiks veiktas, izmantojot burtciparu tastatūru. Tālāk pārbaudiet pilnu kodu un demonstrācijas video, lai pareizi izprastu procesu. Šeit mēs izskaidrosim visas četras zemāk minēto projektu iezīmes.
Paskaidrojot četras Raspberry Pi mobilā tālruņa funkcijas:
1. Zvaniet:
Lai piezvanītu, izmantojot mūsu Raspberry Pi tālruni, mums jānospiež taustiņš “C” un pēc tam jāievada mobilais numurs, pa kuru mēs vēlamies zvanīt. Numurs tiks ievadīts, izmantojot burtciparu tastatūru. Pēc numura ievadīšanas mums atkal jāpiespiež 'C'. Tagad Raspberry Pi apstrādās zvana savienošanu ar ievadīto numuru, izmantojot AT komandu:
ATDxxxxxxxxxx;
2. Saņemt zvanu:
Zvana saņemšana ir ļoti vienkārša. Kad kāds zvana uz jūsu sistēmas SIM numuru, kas atrodas GSM modulī, jūsu sistēma LCD ekrānā parādīs ziņojumu “Ienākošais…” ar ienākošā zvanītāja numuru. Tagad mums vienkārši jānospiež A, lai apmeklētu šo zvanu. Kad mēs nospiedīsim 'A', Raspberry Pi nosūtīs doto komandu uz GSM moduli:
ATA
3. Sūtīt īsziņu:
Kad mēs vēlamies nosūtīt īsziņu, izmantojot mūsu Raspberry Pi bāzes tālruni, mums jānospiež 'D'. Tagad sistēma pieprasīs saņēmēja numuru, tas nozīmē "kam" mēs vēlamies nosūtīt īsziņu. Pēc numura ievadīšanas mums vēlreiz jānospiež "D", un tagad LCD lūdz ziņojumu. Tagad mums ir jāievada ziņojums, tāpat kā mēs ievadām parastajā mobilajā ierīcē, izmantojot tastatūru, un pēc ziņojuma ievadīšanas mums vēlreiz jānospiež "D", lai nosūtītu īsziņu. Lai nosūtītu īsziņu, Raspberry Pi nosūta norādīto komandu:
AT + CMGF = 1
Un nosūtiet 26 uz GSM, lai nosūtītu īsziņas.
4. SMS saņemšana un lasīšana:
Šī funkcija ir arī vienkārša. Šajā gadījumā GSM saņems īsziņas un saglabās tās SIM kartē. Un Raspberry Pi nepārtraukti uzrauga saņemto SMS indikāciju, izmantojot UART. Kad ir jauns ziņojums, LCD displejā tiks parādīts “Jauna ziņa” teksts, un mums vienkārši jānospiež B, lai lasītu īsziņu. SMS saņemto indikācija ir:
+ CMTI: “SM”, 6 Kur 6 ir ziņojuma vieta, kur tā glabājas SIM kartē.
Kad Raspberry Pi saņem šo “saņemto īsziņu”, tas izraksta SMS glabāšanas vietu un nosūta komandu GSM, lai lasītu saņemto īsziņu. LCD ekrānā parādiet tekstu “Jauns ziņojums”.
AT + CMGR =
Tagad GSM nosūta saglabāto ziņojumu Raspberry Pi un pēc tam Raspberry Pi izraksta galveno īsziņu un parāda to LCD.
Piezīme: MIC un Speaker nav kodēšanas.
Tālāk pārbaudiet pilnu kodu un demonstrācijas video, lai pareizi izprastu procesu.
Shēmas shēma un skaidrojums:
16x2 LCD tapas RS, EN, D4, D5, D6 un D7 ir savienotas ar Raspberry Pi GPIO tapām attiecīgi 18, 23, 24, 25, 8 un 7. GSM moduļa Rx un Tx tapa ir tieši savienota ar Raspberry Pi tapām attiecīgi Tx un Rx (Raspberry Pi zeme un GSM jāsavieno savā starpā). 4x4 tastatūras rindu tapas R1, R2, R3, R4 ir tieši saistītas ar Raspberry Pi GPIO tapu numuru 12,16, 20, 21 un tastatūras C1, C2, C3, C4 kolonnas tapas ir saistītas ar GPIO tapu numuru 26, 19, Aveņu Pi 13 un 6. MIC ir tieši pievienots GSM moduļa mikrofonam un mikrofonam, un skaļrunis ir savienots ar sp + un spraudēm GSM modulim, izmantojot šo audio pastiprinātāja shēmu, lai pastiprinātu izejas audio. Šī audio pastiprinātāja shēma nav obligāta, un jūs varat tieši savienot skaļruni ar GSM moduli bez šī audio pastiprinātāja.
Programmēšanas skaidrojums:
Šī Raspberry Pi mobilā tālruņa daļas programmēšana ir nedaudz sarežģīta iesācējiem. Mēs šeit Programmai izmantojam Python valodu. Ja esat iesācējs programmā Raspberry Pi, jums jāpārbauda mūsu iepriekšējās apmācības, lai sāktu darbu ar Raspberry Pi un instalētu un konfigurētu Raspbian Jessie OS Pi.
Šajā kodā mēs esam izveidojuši def tastatūru (): vienkāršās tastatūras saskarnes funkciju numuru ievadīšanai. Lai ievadītu alfabētus, mēs esam izveidojuši def alphaKeypad (): lai to pašu tastatūru varētu izmantot arī alfabētu ievadīšanai. Tagad mēs esam padarījuši šo tastatūru daudzfunkcionālu tāpat kā Arduino tastatūras bibliotēku. Izmantojot šo tastatūru, mēs varam ievadīt rakstzīmes un veselu skaitli, izmantojot tikai 10 taustiņus.
Tāpat kā tad, ja mēs nospiedīsim taustiņu 2 (abc2), tas parādīs "a" un, ja mēs to atkal nospiedīsim, tas aizstās "a" uz "b" un, ja mēs atkal nospiedīsim trīs reizes, tad tajā pašā vietā tiks parādīts "c" LCD ekrānā. Ja mēs gaidām kādu laiku pēc taustiņa nospiešanas, kursors automātiski pāriet uz nākamo LCD vietu. Tagad mēs varam ievadīt nākamo simbolu vai numuru. Tāda pati procedūra tiek piemērota arī citiem taustiņiem.
def tastatūra (): j diapazonā (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 i diapazonā (4): ja gpio.input (ROW) = = 0: ch = MATRIX atgriež ch, savukārt (gpio.input (ROW) == 0): nodot gpio.output (COL, 1)
def alphaKeypad (): lcdclear () setCursor (x, y) lcdcmd (0x0f) msg = "" savukārt 1: taustiņš = 0 skaits = 0 taustiņš = tastatūra () ja atslēga == '1': ind = 0 maxInd = 6 Key = '1' getChar (Key, ind, maxInd)……………….
Pirmkārt, šajā pitona skriptā mēs esam iekļāvuši dažas nepieciešamās bibliotēkas un definējuši LCD, tastatūras un citu komponentu tapas:
importēt RPi.GPIO kā gpio importēt sērijveida importēšanas laiku msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Tagad ir pienācis laiks dot tapām virzienu:
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 (poga, gpio.IN) gpio.output (vadīts, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. izeja (m12, 0)
Pēc tam inicializējiet sērijas komunikāciju, piemēram, zemāk:
Seriāls = sērijas. Seriāls ("/ dev / ttyS0", baudrate = 9600, taimauts = 2)
Tagad mums jāuzraksta kāda funkcija LCD vadīšanai. Funkcija def lcdcmd (ch): tiek izmantota komandas nosūtīšanai uz LCD un def lcdwrite (ch): funkcija tiek izmantota datu nosūtīšanai uz LCD. Kopā ar šīm funkcijām def lcdclear (): tiek izmantots, lai notīrītu LCD, def setCursor (x, y): tiek izmantots, lai iestatītu kursora pozīciju LCD ekrānā, un def lcdprint (Str): tiek izmantots virknes drukāšanai uz 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) ja 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) ja ch & 0x10 == 0x10: gpio.output (D4, 1), ja ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) i diapazonā (l): lcdwrite (ord (Str)) def set Kursors (x, y): ja y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Pēc tam mums ir jāuzraksta dažas īsziņu sūtīšanas, īsziņu saņemšanas, zvana veikšanas un zvana apmeklēšanas funkcijas.
Funkcijas def zvans (): tiek izmantots zvana veikšanai. Un funkcija def ReceiveCall (dati): tiek izmantota, lai parādītu ienākošo ziņojumu un numuru LCD. Visbeidzot def attendCall (): tiek izmantots, lai apmeklētu zvanu.
Funkcija def sendSMS (): tiek izmantota, lai rakstītu un nosūtītu ziņojumu ar funkcijas alphaKeypad () palīdzību . Un funkcija def ReceiveSMS (dati): tiek izmantota, lai saņemtu un izgūtu SMS atrašanās vietu. Visbeidzot, def readSMS (indekss): tiek izmantots, lai parādītu ziņojumu LCD.
Visas iepriekš minētās funkcijas varat atrast zemāk dotajā kodā.
Tātad šādi jūs varat pārveidot savu Raspberry Pi par mobilo tālruni, izmantojot GSM moduli. Pārbaudiet arī šo Raspberry Pi skārienekrāna viedtālruni.