- Các thành phần bắt buộc:
- Giải thích làm việc:
- Giải thích bốn tính năng của điện thoại di động Raspberry Pi:
- Sơ đồ mạch và giải thích:
- Giải thích lập trình:
Trong dự án DIY này, chúng tôi sẽ chế tạo một Điện thoại di động đơn giản sử dụng Raspberry Pi, trong đó Mô-đun GSM được sử dụng để Thực hiện hoặc trả lời Cuộc gọi và gửi hoặc đọc SMS , và điện thoại Raspberry Pi này cũng có Mic và Loa để nói chuyện này Điện thoại . Dự án này cũng sẽ đóng vai trò như một giao diện thích hợp của Mô-đun GSM với Raspberry Pi, với tất cả các Mã cần thiết để vận hành bất kỳ chức năng cơ bản nào của Điện thoại. Trước đây, chúng tôi đã xây dựng cùng một loại Điện thoại Di động Đơn giản bằng Arduino, hãy kiểm tra tại đây
Các thành phần bắt buộc:
- Raspberry Pi 3 (bất kỳ kiểu máy nào)
- Mô-đun GSM
- LCD 16x2
- Bàn phím 4x4 (người dùng có thể sử dụng bàn phím màng)
- Hủ 10k
- Breadboard
- Kết nối dây jumper
- Nguồn cấp
- Loa
- MIC
- Thẻ SIM
- Loa
- Mạch Khuếch đại Âm thanh (Tùy chọn)
Giải thích làm việc:
Trong Dự án điện thoại di động Raspberry Pi này, chúng tôi đã sử dụng mô-đun GSM và Raspberry Pi 3 để điều khiển các tính năng của toàn bộ hệ thống và giao tiếp tất cả các thành phần trong hệ thống này. Một 4x4 chữ và số Bàn phím được sử dụng để tham gia tất cả các loại nguyên liệu đầu vào như: Nhập số điện thoại di động, tin nhắn loại, thực hiện cuộc gọi, nhận cuộc gọi, gửi tin nhắn SMS, đọc tin nhắn SMS, vv GSM module SIM900A được sử dụng để giao tiếp với mạng để gọi và nhắn tin mục đích. Chúng tôi cũng đã kết nối một MIC và một Loa cho cuộc gọi thoại và âm thanh đổ chuông và màn hình LCD 16x2 được sử dụng để hiển thị tin nhắn, hướng dẫn và cảnh báo.
Chữ và số là một phương pháp để nhập cả số và bảng chữ cái bằng cách sử dụng cùng một bàn phím. Trong phương pháp này, chúng tôi đã giao diện bàn phím 4x4 với Raspberry Pi và viết Mã để chấp nhận bảng chữ cái, hãy kiểm tra phần Mã trong Mã bên dưới.
Làm việc của dự án này là dễ dàng. Tất cả các tính năng sẽ được thực hiện bằng Sử dụng bàn phím chữ và số. Kiểm tra Mã đầy đủ và Video giới thiệu bên dưới để hiểu đúng quy trình. Ở đây chúng tôi sẽ giải thích tất cả bốn tính năng của các dự án dưới đây.
Giải thích bốn tính năng của điện thoại di động Raspberry Pi:
1. Gọi điện:
Để thực hiện cuộc gọi bằng Điện thoại dựa trên Raspberry Pi, chúng ta phải nhấn 'C' và sau đó cần nhập Số di động mà chúng ta muốn thực hiện cuộc gọi. Số sẽ được nhập bằng cách sử dụng bàn phím chữ và số. Sau khi nhập số, chúng ta một lần nữa cần nhấn 'C'. Bây giờ Raspberry Pi sẽ xử lý để kết nối cuộc gọi với số đã nhập bằng cách sử dụng lệnh AT:
ATDxxxxxxxxxx;
2. Nhận cuộc gọi:
Nhận cuộc gọi rất dễ dàng. Khi ai đó đang gọi đến số SIM hệ thống của bạn, có trong Mô-đun GSM, khi đó hệ thống của bạn sẽ hiển thị thông báo 'Đang đến…' trên màn hình LCD với số người gọi đến. Bây giờ chúng ta chỉ cần Nhấn 'A' để tham gia cuộc gọi này. Khi chúng tôi nhấn 'A', Raspberry Pi sẽ gửi lệnh nhất định đến Mô-đun GSM:
ATA
3. Gửi SMS:
Khi chúng ta muốn gửi SMS bằng Điện thoại dựa trên Raspberry Pi, thì chúng ta cần nhấn 'D'. Bây giờ Hệ thống sẽ yêu cầu Số người nhận, có nghĩa là 'ai' mà chúng tôi muốn gửi SMS. Sau khi nhập số, chúng ta cần nhấn lại 'D' và lúc này màn hình LCD sẽ yêu cầu thông báo. Bây giờ chúng ta cần nhập tin nhắn, giống như chúng ta nhập trên điện thoại di động thông thường, bằng cách sử dụng bàn phím và sau đó sau khi nhập tin nhắn, chúng ta cần nhấn lại 'D' để gửi SMS. Để gửi SMS Raspberry Pi gửi lệnh đã cho:
AT + CMGF = 1
Và gửi 26 đến GSM để gửi SMS.
4. Nhận và đọc SMS:
Tính năng này cũng đơn giản. Trong đó, GSM sẽ nhận tin nhắn SMS và lưu trữ nó trong thẻ SIM. Và Raspberry Pi liên tục theo dõi chỉ báo SMS nhận được qua UART. Mỗi khi có tin nhắn mới, màn hình LCD sẽ hiển thị dòng chữ “Tin nhắn mới” và khi đó chúng ta chỉ cần Nhấn 'B', để đọc SMS. Chỉ báo đã nhận SMS là:
+ CMTI: “SM”, 6 Trong đó 6 là vị trí tin nhắn được lưu trong thẻ SIM.
Khi Raspberry Pi nhận được chỉ báo 'SMS đã nhận' này thì nó sẽ trích xuất vị trí lưu trữ SMS và gửi lệnh tới GSM để đọc SMS đã nhận. Và hiển thị văn bản 'Tin nhắn mới' trên màn hình LCD.
AT + CMGR =
Bây giờ GSM sẽ gửi tin nhắn đã lưu trữ đến Raspberry Pi và sau đó Raspberry Pi trích xuất tin nhắn SMS chính và hiển thị nó trên màn hình LCD.
Lưu ý: Không có mã hóa cho MIC và Loa.
Kiểm tra Mã đầy đủ và Video giới thiệu bên dưới để hiểu đúng quy trình.
Sơ đồ mạch và giải thích:
Các chân LCD 16x2 RS, EN, D4, D5, D6 và D7 được kết nối với chân GPIO số 18, 23, 24, 25, 8 và 7 của Raspberry Pi tương ứng. Chân Rx và Tx của Module GSM được kết nối trực tiếp với chân Tx và Rx của Raspberry Pi tương ứng (Mặt đất của Raspberry Pi và GSM phải được kết nối với nhau). Bàn phím 4x4 Các chân hàng R1, R2, R3, R4 được liên kết trực tiếp với chân GPIO số 12,16, 20, 21 của Raspberry Pi và chân Cột của bàn phím C1, C2, C3, C4 được liên kết với chân GPIO số 26, 19, 13 và 6 của Raspberry Pi. MIC được kết nối trực tiếp với mic + và mic- của Mô-đun GSM và loa được kết nối tại chân sp + và chân cho Mô-đun GSM với sự trợ giúp của Mạch khuếch đại âm thanh này, để khuếch đại âm thanh đầu ra. Mạch Khuếch đại âm thanh này là tùy chọn và bạn có thể kết nối trực tiếp loa với mô-đun GSM mà không cần Bộ khuếch đại âm thanh này.
Giải thích lập trình:
Phần lập trình của Điện thoại di động Raspberry Pi này hơi phức tạp đối với người mới bắt đầu. Chúng tôi đang sử dụng ngôn ngữ Python ở đây cho Chương trình. Nếu bạn là người mới bắt đầu sử dụng Raspberry Pi, bạn nên xem các hướng dẫn trước đây của chúng tôi về Bắt đầu với Raspberry Pi và Cài đặt & cấu hình Hệ điều hành Raspbian Jessie trong Pi.
Trong đoạn mã này, chúng tôi đã tạo ra def keypad (): chức năng giao tiếp bàn phím đơn giản để nhập số. Và để nhập các bảng chữ cái, chúng tôi đã tạo def alphaKeypad (): để cũng có thể sử dụng cùng một bàn phím để nhập các bảng chữ cái. Bây giờ chúng tôi đã làm cho bàn phím này đa chức năng giống như thư viện bàn phím Arduino. Bằng cách sử dụng bàn phím này, chúng ta có thể nhập các ký tự và số nguyên bằng cách chỉ sử dụng 10 phím.
Giống như nếu chúng ta nhấn phím 2 (abc2), nó sẽ hiển thị 'a' và nếu chúng ta nhấn nó lần nữa thì nó sẽ thay thế 'a' thành 'b' và nếu một lần nữa chúng ta nhấn ba lần thì nó sẽ hiển thị 'c' ở cùng một vị trí trong màn hình LCD. Nếu chúng ta đợi một lúc sau khi nhấn phím, con trỏ sẽ tự động di chuyển đến vị trí tiếp theo trên màn hình LCD. Bây giờ chúng ta có thể nhập ký tự hoặc số tiếp theo. Quy trình tương tự cũng được áp dụng cho các khóa khác.
bàn phím def (): cho j trong phạm vi (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 cho tôi trong phạm vi (4): nếu gpio.input (ROW) = = 0: ch = MATRIX trả về ch while (gpio.input (ROW) == 0): truyền 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)………………..
Trước hết, trong tập lệnh python này, chúng tôi đã bao gồm một số thư viện bắt buộc và các chân được xác định cho LCD, bàn phím và các thành phần khác:
nhập RPi.GPIO dưới dạng gpio thời gian nhập nối tiếp msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Bây giờ là lúc đưa ra hướng cho các chân:
gpio.setwarnings (Sai) 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 (button, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. đầu ra (m12, 0)
Sau đó khởi tạo giao tiếp nối tiếp như bên dưới:
Serial = serial.Serial ("/ dev / ttyS0", baudrate = 9600, timeout = 2)
Bây giờ chúng ta cần viết một số chức năng cho LCD lái xe. Hàm def lcdcmd (ch): được sử dụng để gửi lệnh đến LCD và def lcdwrite (ch): hàm được sử dụng để gửi dữ liệu đến LCD. Cùng với các hàm này, def lcdclear (): dùng để xóa màn hình LCD, def setCursor (x, y): dùng để đặt vị trí con trỏ trên màn hình LCD và def lcdprint (Str): dùng để in chuỗi trên LCD.
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) if 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) if ch & 0x10 == 0x10: gpio.output (D4, 1) if 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)
Sau đó, chúng ta cần viết một số chức năng để gửi SMS, nhận SMS, thực hiện cuộc gọi và tham dự cuộc gọi.
Hàm def call (): được sử dụng để thực hiện cuộc gọi. Và hàm def getCall (data): dùng để hiển thị tin nhắn và số điện thoại đến trên LCD. Cuối cùng, def dựCall (): được sử dụng để tham gia cuộc gọi.
Hàm def sendSMS (): dùng để viết và gửi tin nhắn với sự trợ giúp của hàm alphaKeypad () . Và chức năng def getSMS (data): được sử dụng nhận và truy xuất vị trí của SMS. Cuối cùng là def readSMS (index): dùng để hiển thị thông báo trên LCD.
Bạn có thể tìm thấy tất cả các chức năng trên trong Mã dưới đây.
Vì vậy, đây là cách bạn có thể chuyển đổi Raspberry Pi của mình thành điện thoại di động với sự trợ giúp của mô-đun GSM. Cũng kiểm tra Điện thoại thông minh màn hình cảm ứng Raspberry Pi này.