- Vereiste componenten:
- Werkende uitleg:
- Vier kenmerken van Raspberry Pi mobiele telefoon uitleggen:
- Schakelschema en uitleg:
- Programmering Toelichting:
In dit doe-het-zelf-project gaan we een eenvoudige mobiele telefoon bouwen met behulp van Raspberry Pi, waarin een GSM-module wordt gebruikt om de oproep te doen of te beantwoorden en de sms te verzenden of te lezen , en ook deze Raspberry Pi-telefoon heeft een microfoon en luidspreker om hierover te praten Telefoon . Dit project zal ook dienen als een goede interface van de GSM-module met de Raspberry Pi, met alle code die nodig is om de basisfuncties van een telefoon te bedienen. Eerder hebben we dezelfde soort eenvoudige mobiele telefoon gebouwd met Arduino, kijk hier
Vereiste componenten:
- Raspberry Pi 3 (elk model)
- GSM-module
- 16x2 LCD
- 4x4 toetsenbord (gebruiker kan membraantoetsenbord gebruiken)
- 10k pot
- Breadboard
- Verbindingsdraad aansluiten
- Stroomvoorziening
- Spreker
- MIC
- Simkaart
- Spreker
- Audioversterkercircuit (optioneel)
Werkende uitleg:
In dit Raspberry Pi mobiele telefoonproject hebben we de GSM-module en Raspberry Pi 3 gebruikt om de functies van het hele systeem te besturen en alle componenten in dit systeem te koppelen. Een 4x4 alfanumeriek toetsenbord wordt gebruikt voor het opnemen van allerlei soorten invoer, zoals: voer het mobiele nummer in, typ berichten, plaats een oproep, ontvang een oproep, verstuur sms, lees sms etc. GSM-module SIM900A wordt gebruikt om te communiceren met het netwerk voor bellen en berichten verzenden doel. We hebben ook een microfoon en een luidspreker voor spraakoproep en belgeluid aangesloten en een 16x2 LCD-scherm wordt gebruikt voor het weergeven van berichten, instructies en waarschuwingen.
Alfanumeriek is een methode om cijfers en alfabetten beide in te voeren met hetzelfde toetsenbord. Bij deze methode hebben we een 4x4-toetsenbord gekoppeld aan Raspberry Pi en geschreven code voor het accepteren van alfabetten, bekijk de sectie Code in Code hieronder.
Het werken aan dit project is eenvoudig. Alle functies worden uitgevoerd met behulp van een alfanumeriek toetsenbord. Bekijk de volledige code en een demovideo hieronder om het proces goed te begrijpen. Hier gaan we alle vier de kenmerken van de onderstaande projecten uitleggen.
Vier kenmerken van Raspberry Pi mobiele telefoon uitleggen:
1. Bellen:
Om te bellen met behulp van onze Raspberry Pi-telefoon, moeten we op 'C' drukken en vervolgens het mobiele nummer invoeren waarop we willen bellen. Het nummer wordt ingevoerd met behulp van het alfanumerieke toetsenbord. Na het invoeren van het nummer moeten we opnieuw op 'C' drukken. Nu zal Raspberry Pi het proces voor het verbinden van de oproep met het ingevoerde nummer verwerken met behulp van het AT-commando:
ATDxxxxxxxxxx;
2. Een oproep ontvangen:
Een oproep ontvangen is heel eenvoudig. Wanneer iemand belt naar het SIM-nummer van uw systeem, dat aanwezig is in de GSM-module, dan zal uw systeem het bericht 'Inkomend…' weergeven op het LCD-scherm met het inkomende nummer van de beller. Nu hoeven we alleen maar op 'A' te drukken om dit gesprek bij te wonen. Wanneer we op 'A' drukken, stuurt Raspberry Pi het gegeven commando naar de GSM-module:
ATA
3. SMS verzenden:
Als we een sms willen verzenden met onze op Raspberry Pi gebaseerde telefoon, moeten we op 'D' drukken. Nu vraagt het systeem om het nummer van de ontvanger, wat betekent 'naar wie' we een sms willen sturen. Na het invoeren van het nummer moeten we opnieuw op 'D' drukken en nu vraagt het LCD om een bericht. Nu moeten we het bericht typen, zoals we invoeren in een normale mobiele telefoon, met behulp van het toetsenbord en na het invoeren van het bericht moeten we nogmaals op de 'D' drukken om een sms te verzenden. Om een sms te verzenden, verzendt Raspberry Pi het gegeven commando:
AT + CMGF = 1
En stuur 26 naar GSM om sms te verzenden.
4. SMS ontvangen en lezen:
Deze functie is ook eenvoudig. Hierbij ontvangt GSM SMS en slaat deze op de SIM-kaart op. En Raspberry Pi bewaakt continu de ontvangen SMS-indicatie via UART. Telkens wanneer er een nieuw bericht is, zal het LCD-scherm de tekst “Nieuw bericht” tonen en dan hoeven we alleen maar op 'B' te drukken om de SMS te lezen. SMS ontvangen indicatie is:
+ CMTI: "SM", 6 Waarbij 6 de berichtlocatie is waar deze is opgeslagen op de SIM-kaart.
Wanneer Raspberry Pi deze 'SMS ontvangen'-indicatie krijgt, extraheert het de sms-opslaglocatie en stuurt het een commando naar GSM om de ontvangen sms te lezen. En laat de tekst 'Nieuw bericht' op het LCD-scherm zien.
AT + CMGR =
Nu stuurt GSM een opgeslagen bericht naar de Raspberry Pi en haalt de Raspberry Pi de hoofd-sms uit en geeft deze weer op het LCD-scherm.
Opmerking: er is geen codering voor MIC en luidspreker.
Bekijk de volledige code en een demovideo hieronder om het proces goed te begrijpen.
Schakelschema en uitleg:
16x2 LCD-pinnen RS, EN, D4, D5, D6 en D7 zijn verbonden met respectievelijk GPIO-pincode 18, 23, 24, 25, 8 en 7 van Raspberry Pi. De Rx- en Tx-pin van de GSM-module is rechtstreeks verbonden met respectievelijk de Raspberry Pi-pin Tx en Rx (aarding van Raspberry Pi en GSM moeten met elkaar zijn verbonden). 4x4 toetsenbord Rijpennen R1, R2, R3, R4 zijn direct gekoppeld aan GPIO-pen nummer 12,16, 20, 21 van Raspberry Pi en Kolompen van toetsenbord C1, C2, C3, C4 zijn gekoppeld met GPIO-pen nummer 26, 19, 13 en 6 van Raspberry Pi. MIC is rechtstreeks verbonden met mic + en mic- van de GSM-module en de luidspreker is aangesloten op sp + en sp-pins voor de GSM-module met behulp van dit audioversterkercircuit om de outputaudio te versterken. Dit Audio Amplifier circuit is optioneel en u kunt de speaker direct aansluiten op de GSM module zonder deze Audio Amplifier.
Programmering Toelichting:
Het programmeren van een deel van deze Raspberry Pi mobiele telefoon is een beetje ingewikkeld voor beginners. We gebruiken hier Python-taal voor het programma. Als je een beginner bent in Raspberry Pi, moet je onze eerdere tutorials bekijken voor Aan de slag met Raspberry Pi en Raspbian Jessie OS installeren en configureren in Pi.
In deze code hebben we def keypad () gemaakt: functie voor het koppelen van een eenvoudig toetsenbord voor het invoeren van cijfers. En voor het invoeren van alfabetten hebben we def alphaKeypad () gemaakt: zodat hetzelfde toetsenbord ook kan worden gebruikt om de alfabetten in te voeren. Nu hebben we dit toetsenbord multi-functioneel gemaakt als de Arduino-toetsenbordbibliotheek. Door dit toetsenbord te gebruiken kunnen we karakters en gehele getallen invoeren door slechts 10 toetsen te gebruiken.
Alsof we op toets 2 (abc2) drukken, het toont 'a' en als we er nogmaals op drukken, vervangt het 'a' naar 'b' en als we nogmaals drie keer drukken, wordt op dezelfde plaats 'c' weergegeven in LCD. Als we enige tijd wachten nadat we op de toets hebben gedrukt, gaat de cursor automatisch naar de volgende positie op het LCD-scherm. Nu kunnen we het volgende teken of nummer invoeren. Dezelfde procedure wordt toegepast voor andere sleutels.
def keypad (): voor j in bereik (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 voor i in bereik (4): als gpio.input (ROW) = = 0: ch = MATRIX retourneer ch while (gpio.input (ROW) == 0): geef gpio.output door (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)……………….
Allereerst hebben we in dit python-script enkele vereiste bibliotheken en gedefinieerde pinnen voor LCD, toetsenbord en andere componenten opgenomen:
importeer RPi.GPIO als gpio importeer seriële importtijd msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Nu is het tijd om richting te geven aan de pinnen:
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 (knop, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. uitgang (m12, 0)
Initialiseer vervolgens seriële communicatie zoals hieronder:
Serial = serial.Serial ("/ dev / ttyS0", baudrate = 9600, time-out = 2)
Nu moeten we een functie schrijven voor het aansturen van LCD. Functie def lcdcmd (ch): wordt gebruikt voor het verzenden van opdrachten naar LCD en def lcdwrite (ch): functie wordt gebruikt voor het verzenden van gegevens naar LCD. Naast deze functies wordt def lcdclear (): gebruikt om het LCD-scherm leeg te maken , def setCursor (x, y): wordt gebruikt om de cursorpositie op het LCD-scherm in te stellen en def lcdprint (Str): wordt gebruikt om de tekenreeks op het LCD-scherm af te drukken.
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) als 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) als ch & 0x10 == 0x10: gpio.output (D4, 1) als ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) voor i in bereik (l): lcdwrite (ord (Str)) def set Cursor (x, y): if y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Hierna moeten we enkele functies schrijven voor het verzenden van sms-berichten, het ontvangen van sms-berichten, bellen en het bijwonen van de oproep.
Functie def call (): wordt gebruikt om te bellen. En functie def ontvangenCall (data): wordt gebruikt om het inkomende bericht en nummer op het LCD-scherm weer te geven. Eindelijk def attendCall (): wordt gebruikt om het gesprek bij te wonen.
Functie def sendSMS (): wordt gebruikt om het bericht te schrijven en te verzenden met behulp van de alphaKeypad () functie. En functie def ontvangstSMS (data): wordt gebruikt om de locatie van SMS te ontvangen en op te halen. Eindelijk def readSMS (index): wordt gebruikt om het bericht op het LCD-scherm weer te geven.
U kunt alle bovenstaande functies vinden in de onderstaande code.
Dit is dus hoe u uw Raspberry Pi met behulp van een GSM-module in een mobiele telefoon kunt veranderen. Bekijk ook deze Raspberry Pi Touch Screen Smart Phone.