- Wymagane komponenty:
- Objaśnienie robocze:
- Wyjaśnienie czterech funkcji telefonu komórkowego Raspberry Pi:
- Schemat obwodu i wyjaśnienie:
- Objaśnienie programowania:
W tym projekcie DIY zamierzamy zbudować prosty telefon komórkowy przy użyciu Raspberry Pi, w którym moduł GSM jest używany do wykonywania lub odbierania połączeń oraz wysyłania lub czytania SMS-ów , a także ten telefon Raspberry Pi ma mikrofon i głośnik do rozmowy Telefon . Projekt ten posłuży również jako właściwe połączenie Modułu GSM z Raspberry Pi, z całym kodem potrzebnym do obsługi podstawowych funkcji dowolnego telefonu. Wcześniej budowaliśmy ten sam rodzaj prostego telefonu komórkowego przy użyciu Arduino, sprawdź tutaj
Wymagane komponenty:
- Raspberry Pi 3 (dowolny model)
- Moduł GSM
- Wyświetlacz LCD 16x2
- Klawiatura 4x4 (użytkownik może użyć klawiatury membranowej)
- Pula 10k
- Płytka prototypowa
- Podłączanie przewodu połączeniowego
- Zasilacz
- Głośnik
- MIC
- Karta SIM
- Głośnik
- Obwód wzmacniacza audio (opcjonalnie)
Objaśnienie robocze:
W tym projekcie telefonu komórkowego Raspberry Pi użyliśmy modułu GSM i Raspberry Pi 3 do sterowania funkcjami całego systemu i połączenia wszystkich komponentów tego systemu. 4x4 alfanumeryczna klawiatura służy do wykonywania wszelkiego rodzaju surowców jak: Wprowadź numer telefonu, wiadomości typu, wykonać połączenie, odbierać połączenia, wysyłać SMS-y, czytać SMS itd. Moduł GSM SIM900A służy do komunikowania się z siecią za rozmowy i wiadomości cel, powód. Połączyliśmy również mikrofon i głośnik do połączeń głosowych i dzwonka, a wyświetlacz LCD 16x2 służy do wyświetlania komunikatów, instrukcji i alertów.
Alfanumeryczny to metoda wprowadzania liczb i alfabetów przy użyciu tej samej klawiatury. W tej metodzie połączyliśmy klawiaturę 4x4 z Raspberry Pi i napisaliśmy kod do akceptowania alfabetów, sprawdź kod w sekcji Kod poniżej.
Praca nad tym projektem jest łatwa. Wszystkie funkcje zostaną wykonane przy użyciu klawiatury alfanumerycznej. Sprawdź pełny kod i film demonstracyjny poniżej, aby właściwie zrozumieć proces. Tutaj wyjaśnimy wszystkie cztery cechy poniższych projektów.
Wyjaśnienie czterech funkcji telefonu komórkowego Raspberry Pi:
1. Zadzwoń:
Aby wykonać połączenie za pomocą naszego telefonu opartego na Raspberry Pi, musimy nacisnąć `` C '', a następnie wprowadzić numer telefonu komórkowego, na który chcemy wykonać połączenie. Numer zostanie wpisany przy pomocy klawiatury alfanumerycznej. Po wpisaniu numeru ponownie wciskamy „C”. Teraz Raspberry Pi będzie przetwarzać połączenie z wprowadzonym numerem za pomocą polecenia AT:
ATDxxxxxxxxxx;
2. Odbierz połączenie:
Odbieranie połączeń jest bardzo łatwe. Gdy ktoś dzwoni na numer karty SIM systemu, który znajduje się w module GSM, system wyświetli komunikat „Przychodzące…” na wyświetlaczu LCD z numerem dzwoniącego. Teraz musimy tylko nacisnąć „A”, aby wziąć udział w tej rozmowie. Kiedy wciśniemy 'A', Raspberry Pi wyśle polecenie do modułu GSM:
ATA
3. Wyślij SMS:
Kiedy chcemy wysłać SMS za pomocą naszego telefonu opartego na Raspberry Pi, musimy nacisnąć `` D ''. Teraz system zapyta o numer odbiorcy, czyli „do kogo” chcemy wysłać SMS. Po wpisaniu numeru ponownie wciskamy 'D' i teraz LCD zapyta o komunikat. Teraz musimy wpisać wiadomość, tak jak w zwykłym telefonie komórkowym, używając klawiatury, a następnie po wprowadzeniu wiadomości ponownie nacisnąć „D”, aby wysłać SMS. Aby wysłać SMS, Raspberry Pi wysyła polecenie:
AT + CMGF = 1
I wyślij 26 do GSM, aby wysłać SMS.
4. Odbieranie i odczytywanie wiadomości SMS:
Ta funkcja jest również prosta. W ten sposób GSM odbierze SMS-y i zapisze je na karcie SIM. A Raspberry Pi stale monitoruje odebrane wskazanie SMS przez UART. Zawsze, gdy pojawi się nowa wiadomość, na wyświetlaczu LCD pojawi się tekst „Nowa wiadomość”, a następnie wystarczy nacisnąć przycisk „B”, aby przeczytać wiadomość. Wskazanie odebrania wiadomości SMS to:
+ CMTI: „SM”, 6 Gdzie 6 to lokalizacja wiadomości, w której jest przechowywana na karcie SIM.
Kiedy Raspberry Pi otrzyma informację o odebraniu wiadomości SMS, wyodrębnia lokalizację przechowywania wiadomości SMS i wysyła polecenie do GSM, aby odczytać odebrany SMS. I pokaż tekst „Nowa wiadomość” na wyświetlaczu LCD.
AT + CMGR =
Teraz GSM wysyła przechowywaną wiadomość do Raspberry Pi, a następnie Raspberry Pi wyodrębnia główny SMS i wyświetla go na wyświetlaczu LCD.
Uwaga: nie ma kodowania dla mikrofonu i głośnika.
Sprawdź pełny kod i film demonstracyjny poniżej, aby właściwie zrozumieć proces.
Schemat obwodu i wyjaśnienie:
16x2 pinów LCD RS, EN, D4, D5, D6 i D7 są połączone odpowiednio z pinami GPIO 18, 23, 24, 25, 8 i 7 Raspberry Pi. Styki Rx i Tx modułu GSM są bezpośrednio podłączone do odpowiednio pinów Tx i Rx Raspberry Pi (uziemienie Raspberry Pi i GSM muszą być ze sobą połączone). Klawiatura 4x4 Piny R1, R2, R3, R4 są bezpośrednio połączone z pinami GPIO 12,16, 20, 21 Raspberry Pi, a pin kolumny klawiatury C1, C2, C3, C4 są połączone z pinami GPIO 26, 19, 13 i 6 Raspberry Pi. MIC jest bezpośrednio podłączony do mic + i mic- modułu GSM, a głośnik jest podłączony do pinów sp + i sp- modułu GSM za pomocą tego obwodu wzmacniacza audio, aby wzmocnić wyjściowy dźwięk. Ten obwód wzmacniacza audio jest opcjonalny i można bezpośrednio podłączyć głośnik do modułu GSM bez tego wzmacniacza audio.
Objaśnienie programowania:
Programowanie części tego telefonu komórkowego Raspberry Pi jest trochę skomplikowane dla początkujących. W programie używamy języka Python. Jeśli jesteś początkującym w Raspberry Pi, powinieneś zapoznać się z naszymi poprzednimi samouczkami dotyczącymi rozpoczęcia pracy z Raspberry Pi oraz instalowania i konfigurowania systemu operacyjnego Raspbian Jessie w Pi.
W tym kodzie utworzyliśmy def keypad (): funkcja umożliwiająca połączenie prostej klawiatury do wprowadzania numerów. A do wprowadzania alfabetów utworzyliśmy def alphaKeypad (): tak, że ta sama klawiatura może być również używana do wprowadzania alfabetów. Teraz sprawiliśmy, że ta klawiatura jest wielofunkcyjna, tak samo jak biblioteka klawiatur Arduino. Korzystając z tej klawiatury, możemy wprowadzać znaki i liczby całkowite za pomocą zaledwie 10 klawiszy.
Podobnie jak jeśli wciśniemy klawisz 2 (abc2), pokaże 'a' i jeśli wciśniemy go ponownie, to zamieni 'a' na 'b', a jeśli ponownie naciśniemy trzy razy, to pokaże 'c' w tym samym miejscu na wyświetlaczu LCD. Jeśli odczekamy jakiś czas po naciśnięciu klawisza, kursor automatycznie przejdzie do następnej pozycji na wyświetlaczu LCD. Teraz możemy wpisać następny znak lub liczbę. Ta sama procedura dotyczy innych kluczy.
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 return ch while (gpio.input (ROW) == 0): pass 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)……………….
Po pierwsze, w tym skrypcie Pythona zawarliśmy kilka wymaganych bibliotek i zdefiniowane piny dla LCD, klawiatury i innych komponentów:
import RPi.GPIO jako gpio import szeregowy czas importu msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Teraz czas nadać kierunek kołkom:
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 (przycisk, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. wyjście (m12, 0)
Następnie zainicjuj komunikację szeregową, jak poniżej:
Serial = serial.Serial ("/ dev / ttyS0", szybkość transmisji = 9600, limit czasu = 2)
Teraz musimy napisać jakąś funkcję do sterowania LCD. Funkcja def lcdcmd (ch): służy do wysyłania komend do LCD i def lcdwrite (ch): funkcja służy do wysyłania danych do LCD. Wraz z tymi funkcjami, def lcdclear (): służy do czyszczenia wyświetlacza LCD, def setCursor (x, y): służy do ustawiania pozycji kursora na LCD, a def lcdprint (Str): służy do drukowania napisów 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) jeśli 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) jeśli ch & 0x10 == 0x10: gpio.output (D4, 1) jeśli ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) for i in range (l): lcdwrite (ord (Str)) def setCursor (x, y): if y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Po tym musimy napisać kilka funkcji do wysyłania SMS-ów, odbierania SMS-ów, wykonywania połączeń i odbierania połączeń.
Funkcja def call (): służy do wykonywania wywołania. I funkcja def otrzymaszCall (dane): służy do wyświetlania przychodzącej wiadomości i numeru na wyświetlaczu LCD. Na koniec def attendCall (): służy do obsługi połączenia.
Funkcja def sendSMS (): służy do pisania i wysyłania wiadomości za pomocą funkcji alphaKeypad () . I funkcja def otrzymaszSMS (dane): służy do odbierania i pobierania lokalizacji wiadomości SMS. Wreszcie def readSMS (index): służy do wyświetlania wiadomości na LCD.
Wszystkie powyższe funkcje znajdziesz w kodzie podanym poniżej.
Tak więc możesz zamienić Raspberry Pi w telefon komórkowy za pomocą modułu GSM. Sprawdź również ten inteligentny telefon z ekranem dotykowym Raspberry Pi.