- ส่วนประกอบที่จำเป็น:
- คำอธิบายการทำงาน:
- อธิบายคุณสมบัติสี่ประการของโทรศัพท์มือถือ Raspberry Pi:
- แผนภาพวงจรและคำอธิบาย:
- คำอธิบายการเขียนโปรแกรม:
ในโครงการ DIY นี้เราจะไปสร้าง โทรศัพท์มือถือง่ายโดยใช้ราสเบอร์รี่ Piซึ่งในระบบ GSM โมดูลที่ใช้ในการสร้างหรือรับสายและส่งหรืออ่านข้อความ SMS , และโทรศัพท์ Raspberry Pi มีไมโครโฟนและลำโพงจะพูดคุยมากกว่านี้ โทรศัพท์. โครงการนี้จะทำหน้าที่ เชื่อมต่อโมดูล GSM กับ Raspberry Piอย่างเหมาะสมด้วยรหัสทั้งหมดที่จำเป็นในการใช้งานฟังก์ชันพื้นฐานของโทรศัพท์ ก่อนหน้านี้เราได้สร้าง Simple Mobile Phone ประเภทเดียวกันโดยใช้ Arduino ตรวจสอบที่นี่
ส่วนประกอบที่จำเป็น:
- Raspberry Pi 3 (ทุกรุ่น)
- โมดูล GSM
- 16x2 LCD
- ปุ่มกด 4x4 (ผู้ใช้อาจใช้ปุ่มกดแบบเมมเบรน)
- หม้อ 10k
- เขียงหั่นขนม
- การเชื่อมต่อสายจัมเปอร์
- แหล่งจ่ายไฟ
- ลำโพง
- ไมค์
- ซิมการ์ด
- ลำโพง
- วงจรขยายเสียง (อุปกรณ์เสริม)
คำอธิบายการทำงาน:
ใน โครงการโทรศัพท์มือถือ Raspberry Piนี้เราได้ใช้โมดูล GSM และ Raspberry Pi 3เพื่อควบคุมคุณสมบัติของระบบทั้งหมดและเชื่อมต่อส่วนประกอบทั้งหมดในระบบนี้ 4x4 ตัวเลขปุ่มกด จะใช้สำหรับการสละทุกชนิดของปัจจัยการผลิตเช่น: ป้อนหมายเลขโทรศัพท์มือถือข้อความชนิดโทรออกรับสาย, ส่ง SMS, อ่าน SMS ฯลฯ GSM โมดูล SIM900A ถูกนำมาใช้ในการสื่อสารกับเครือข่ายสำหรับการโทรและส่งข้อความ วัตถุประสงค์. นอกจากนี้เรายังได้เชื่อมต่อ MIC และลำโพงสำหรับการโทรด้วยเสียง และเสียงเรียกเข้าและ LCD 16x2 ใช้สำหรับแสดงข้อความคำแนะนำและการแจ้งเตือน
ตัวอักษรและตัวเลข เป็นวิธีการป้อนตัวเลขและตัวอักษรโดยใช้แป้นพิมพ์เดียวกัน ในวิธีนี้เราได้เชื่อมต่อปุ่มกด 4x4 กับ Raspberry Pi และเขียน Code สำหรับการยอมรับตัวอักษรด้วยตรวจสอบ Code ใน ส่วน Code ด้าน ล่าง
การทำงานของโครงการนี้เป็นเรื่องง่าย คุณสมบัติทั้งหมดจะดำเนินการโดยใช้แป้นพิมพ์ตัวอักษรและตัวเลข ตรวจสอบ โค้ดเต็มและวิดีโอสาธิต ด้านล่างเพื่อทำความเข้าใจกระบวนการอย่างถูกต้อง เราจะอธิบายคุณสมบัติทั้งสี่ของโครงการด้านล่างนี้
อธิบายคุณสมบัติสี่ประการของโทรศัพท์มือถือ Raspberry Pi:
1. โทร:
ในการโทรออกโดยใช้โทรศัพท์ที่ใช้ Raspberry Pi ของเราเราต้องกด 'C' จากนั้นต้องป้อนหมายเลขโทรศัพท์มือถือที่เราต้องการโทรออก หมายเลขจะถูกป้อนโดยใช้แป้นพิมพ์ตัวเลขและตัวอักษร หลังจากป้อนหมายเลขแล้วเราต้องกด 'C' อีกครั้ง ตอนนี้ Raspberry Pi จะดำเนินการเชื่อมต่อการโทรไปยังหมายเลขที่ป้อนโดยใช้คำสั่ง AT:
ATDxxxxxxxxxx;
2. รับสาย:
การรับสายเป็นเรื่องง่ายมาก เมื่อมีคนโทรเข้ามาที่หมายเลขซิมระบบของคุณซึ่งอยู่ในโมดูล GSM ระบบของคุณจะแสดงข้อความ 'ขาเข้า… ' บนหน้าจอ LCD พร้อมหมายเลขผู้โทรเข้า ตอนนี้เราต้องกด 'A' เพื่อเข้าร่วมสายนี้ เมื่อเรากด 'A' Raspberry Pi จะส่งคำสั่งไปยังโมดูล GSM:
ATA
3. ส่ง SMS:
เมื่อเราต้องการส่ง SMS โดยใช้โทรศัพท์ที่ใช้Raspberry Piเราต้องกด 'D' ตอนนี้ระบบจะถามหมายเลขผู้รับหมายถึง 'ถึงใคร' ที่เราต้องการส่ง SMS หลังจากป้อนหมายเลขแล้วเราต้องกด 'D' อีกครั้งและตอนนี้ LCD จะขอข้อความ ตอนนี้เราต้องพิมพ์ข้อความเหมือนที่เราป้อนในมือถือปกติโดยใช้ปุ่มกดจากนั้นหลังจากป้อนข้อความเราต้องกด 'D' อีกครั้งเพื่อส่ง SMS ในการส่ง SMS Raspberry Pi ส่งคำสั่งที่กำหนด:
ที่ + CMGF = 1
แล้วส่ง 26 ไปที่ GSM เพื่อส่ง SMS
4. รับและอ่าน SMS:
คุณสมบัตินี้ยังเรียบง่าย ในนี้ GSM จะรับ SMS และเก็บไว้ในซิมการ์ด และ Raspberry Pi จะตรวจสอบการบ่งชี้ SMS ที่ได้รับผ่าน UART อย่างต่อเนื่อง เมื่อใดก็ตามที่มีข้อความใหม่ LCD จะแสดงข้อความ "ข้อความใหม่" จากนั้นเราก็ต้องกด 'B' เพื่ออ่าน SMS สิ่งบ่งชี้ที่ได้รับ SMS คือ:
+ CMTI:“ SM”, 6 โดยที่ 6 คือตำแหน่งข้อความที่เก็บไว้ในซิมการ์ด
เมื่อ Raspberry Pi ได้รับนี้ 'SMS ที่ได้รับ' บ่งชี้แล้วมันสารสกัดจากสถานที่จัดเก็บ SMS และส่ง คำสั่งเพื่อ GSM อ่าน SMS ที่ได้รับ และแสดงข้อความ 'ข้อความใหม่' บนจอ LCD
ที่ + CMGR =
ตอนนี้ GSM ส่งข้อความที่เก็บไว้ไปยัง Raspberry Pi จากนั้น Raspberry Pi จะแยก SMS หลักและแสดงบน LCD
หมายเหตุ: ไม่มีการเข้ารหัสสำหรับ MIC และ Speaker
ตรวจสอบ โค้ดเต็มและวิดีโอสาธิต ด้านล่างเพื่อทำความเข้าใจกระบวนการอย่างถูกต้อง
แผนภาพวงจรและคำอธิบาย:
หมุด LCD 16x2 RS, EN, D4, D5, D6 และ D7 เชื่อมต่อกับขา GPIO หมายเลข 18, 23, 24, 25, 8 และ 7 ของ Raspberry Pi ตามลำดับ ขา Rx และ Tx ของโมดูล GSM เชื่อมต่อโดยตรงกับพิน Tx และ Rx ของ Raspberry Pi ตามลำดับ (กราวด์ Raspberry Pi และ GSM ต้องเชื่อมต่อกัน) ปุ่มกด 4x4 หมุดแถว R1, R2, R3, R4 เชื่อมโยงโดยตรงกับพิน GPIO หมายเลข 12,16, 20, 21 ของ Raspberry Pi และขาคอลัมน์ของปุ่มกด C1, C2, C3, C4 เชื่อมโยงกับพิน GPIO หมายเลข 26, 19, Raspberry Pi 13 และ 6 MIC เชื่อมต่อโดยตรงกับไมค์ + และไมค์ของโมดูล GSM และลำโพงเชื่อมต่อที่ sp + และ sp-pins สำหรับโมดูล GSM ด้วยความช่วยเหลือของวงจรขยายเสียงนี้เพื่อขยายเสียงเอาต์พุต วงจรขยายเสียงนี้เป็นอุปกรณ์เสริมและคุณสามารถเชื่อมต่อลำโพงกับโมดูล GSM ได้โดยตรงโดยไม่ต้องใช้เครื่องขยายเสียงนี้
คำอธิบายการเขียนโปรแกรม:
ส่วนการเขียนโปรแกรมของโทรศัพท์มือถือ Raspberry Piนี้มีความซับซ้อนเล็กน้อยสำหรับผู้เริ่มต้น เรากำลังใช้ ภาษา Python ที่นี่สำหรับโปรแกรม หากคุณเป็นมือใหม่ใน Raspberry Pi คุณควรตรวจสอบบทช่วยสอนก่อนหน้าของเราสำหรับการเริ่มต้นใช้งาน Raspberry Pi และการติดตั้งและกำหนดค่า Raspbian Jessie OS ใน Pi
ในรหัสนี้เราได้สร้าง def keypad (): ฟังก์ชั่นสำหรับเชื่อมต่อปุ่มกดธรรมดาสำหรับป้อนตัวเลข และสำหรับการป้อนตัวอักษรเราได้สร้าง def alphaKeypad (): เพื่อให้สามารถใช้ปุ่มกดเดียวกันเพื่อป้อนตัวอักษรได้เช่นกัน ตอนนี้เราได้ทำให้ปุ่มกดนี้ทำงานได้หลายอย่างเหมือนกับไลบรารีปุ่มกด Arduino ด้วยการใช้ปุ่มกดนี้เราสามารถป้อนอักขระและจำนวนเต็มได้โดยใช้ปุ่มเพียง 10 ปุ่ม
เช่นถ้าเรากดปุ่ม 2 (abc2) มันจะแสดง 'a' และถ้าเรากดอีกครั้งมันจะแทนที่ 'a' เป็น 'b' และถ้าเรากดอีกสามครั้งมันจะแสดง 'c' ที่เดิม ใน LCD หากเรารอสักครู่หลังจากกดปุ่มเคอร์เซอร์จะเลื่อนไปยังตำแหน่งถัดไปใน LCD โดยอัตโนมัติ ตอนนี้เราสามารถป้อนอักขระหรือตัวเลขถัดไปได้ ใช้ขั้นตอนเดียวกันสำหรับคีย์อื่น ๆ
ปุ่มกด def (): สำหรับ j ในช่วง (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 สำหรับ i ในช่วง (4): ถ้า gpio.input (ROW) = = 0: ch = MATRIX ส่งคืน ch ในขณะที่ (gpio.input (ROW) == 0): ผ่าน gpio.output (COL, 1)
def alphaKeypad (): lcdclear () setCursor (x, y) lcdcmd (0x0f) msg = "" ในขณะที่ 1: key = 0 count = 0 key = keypad () if key == '1': ind = 0 maxInd = 6 คีย์ = '1' getChar (คีย์, ind, maxInd)……………….
ก่อนอื่นในสคริปต์ python นี้เราได้รวมไลบรารีที่จำเป็นและพินที่กำหนดไว้สำหรับ LCD ปุ่มกดและส่วนประกอบอื่น ๆ:
import RPi.GPIO เป็น gpio import serial import time msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =…….. ปล…..
ตอนนี้ถึงเวลากำหนดทิศทางให้กับหมุด:
gpio.setwarnings (เท็จ) 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 (ปุ่ม, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio เอาท์พุท (m12, 0)
จากนั้นเริ่มต้นการสื่อสารแบบอนุกรมดังต่อไปนี้:
Serial = serial.Serial ("/ dev / ttyS0", baudrate = 9600, timeout = 2)
ตอนนี้เราต้องเขียนฟังก์ชันบางอย่างสำหรับการขับเคลื่อน LCD ฟังก์ชัน def lcdcmd (ch): ใช้สำหรับส่งคำสั่งไปยัง LCD และ def lcdwrite (ch): ฟังก์ชันใช้สำหรับส่งข้อมูลไปยัง LCD นอกเหนือจากฟังก์ชั่นเหล่านี้แล้ว def lcdclear (): ใช้เพื่อล้าง LCD, def setCursor (x, y): ใช้เพื่อกำหนดตำแหน่งเคอร์เซอร์ที่ LCD และ def lcdprint (Str): ใช้เพื่อพิมพ์สตริงบน LCD
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) ถ้า 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) ถ้า ch & 0x10 == 0x10: gpio.output (D4, 1) ถ้า ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) สำหรับ i ในช่วง (l): lcdwrite (ord (Str)) def setCursor (x, y): ถ้า y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (น)
หลังจากนี้เราต้องเขียนฟังก์ชั่นบางอย่างสำหรับการส่ง SMS รับ SMS โทรออกและเข้าร่วมสาย
ฟังก์ชัน def call (): ใช้สำหรับการโทร และฟังก์ชั่น def earnCall (ข้อมูล): ใช้เพื่อแสดงข้อความและหมายเลขขาเข้าบน LCD สุดท้าย def เข้าร่วมโทร (): ใช้เพื่อเข้าร่วมการโทร
ฟังก์ชั่น def sendsms (): จะใช้ในการเขียนและส่งข้อความด้วยความช่วยเหลือของ alphaKeypad () ฟังก์ชั่น และฟังก์ชัน def รับ SMS (ข้อมูล): ใช้รับและดึงข้อมูลตำแหน่งของ SMS สุดท้าย def readSMS (ดัชนี): ใช้เพื่อแสดงข้อความบน LCD
คุณสามารถค้นหาฟังก์ชั่นข้างต้นทั้งหมดใน Code ที่ระบุด้านล่าง
นี่คือวิธีที่คุณสามารถแปลง Raspberry Pi ของคุณเป็นโทรศัพท์มือถือด้วยความช่วยเหลือของโมดูล GSM ตรวจสอบสมาร์ทโฟนหน้าจอสัมผัส Raspberry Pi นี้ด้วย