โมดูล GSMใช้ในอุปกรณ์สื่อสารหลายชนิดซึ่งใช้เทคโนโลยี GSM (Global System for Mobile Communications) ใช้เพื่อโต้ตอบกับเครือข่าย GSM โดยใช้คอมพิวเตอร์ โมดูล GSM เข้าใจเฉพาะคำสั่ง ATและสามารถตอบสนองได้ คำสั่งพื้นฐานที่สุดคือ“ AT” หาก GSM ตอบสนองตกลงแสดงว่าทำงานได้ดีไม่เช่นนั้นจะตอบสนองด้วย“ ERROR” มีคำสั่ง AT ต่างๆเช่น ATA สำหรับรับสาย ATD เพื่อโทรออก AT + CMGR เพื่ออ่านข้อความ AT + CMGS เพื่อส่ง sms เป็นต้นคำสั่ง AT ควรตามด้วย Carriage return เช่น \ r (0D ในเลขฐานสิบหก) เช่น“ AT + CMGS \ r” เราสามารถใช้โมดูล GSM โดยใช้คำสั่งเหล่านี้
การเชื่อมต่อ GSM กับ 8051
แทนที่จะใช้พีซีเราสามารถใช้ไมโครคอนโทรลเลอร์เพื่อโต้ตอบกับโมดูล GSM และ LCD เพื่อรับการตอบสนองจากโมดูล GSM ดังนั้นเราจะเชื่อมต่อ GSM กับไมโครคอนโทรลเลอร์ 8051 (AT89S52) มันง่ายมากที่จะเชื่อมต่อ GSM กับ 8051 เราเพียงแค่ต้องส่งคำสั่ง AT จากไมโครคอนโทรลเลอร์และรับการตอบสนองจาก GSM และแสดงบน LCD เราสามารถใช้พอร์ตอนุกรมของไมโครคอนโทรลเลอร์เพื่อสื่อสารกับ GSM หมายถึงการใช้ PIN 10 (RXD) และ 11 (TXD)
ก่อนอื่นเราต้องเชื่อมต่อ LCD กับ 8051 คุณสามารถเรียนรู้สิ่งนี้ได้จากที่นี่: การเชื่อมต่อ LCD กับไมโครคอนโทรลเลอร์ 8051 จากนั้นเราต้องเชื่อมต่อโมดูล GSM กับ 8051 ตอนนี้เราควรใส่ใจบ้าง ก่อนอื่นคุณต้องตรวจสอบว่าโมดูล GSM ของคุณสามารถทำงานที่ลอจิก TTL ได้หรือไม่หรือสามารถทำงานกับ RS232 เท่านั้น โดยทั่วไปหากโมดูลของคุณมีพิน RX และ TX (พร้อม GND) บนบอร์ดก็สามารถทำงานบนลอจิก TTL ได้ และหากไม่มีพิน RX, TX และมีเพียงพอร์ต RS232 (พอร์ตอนุกรมที่มี 9) คุณต้องใช้ MAX232 IC เพื่อเชื่อมต่อพอร์ตอนุกรมกับไมโครคอนโทรลเลอร์ โดยทั่วไปMAX232ใช้ในการแปลงข้อมูลอนุกรมเป็นลอจิก TTL เนื่องจากไมโครคอนโทรลเลอร์สามารถทำงานบนลอจิก TTL เท่านั้น แต่ถ้าโมดูล GSM มีหมุด RX, TX คุณไม่จำเป็นต้องใช้ MAX232 หรือตัวแปลงอนุกรมใด ๆ คุณสามารถเชื่อมต่อ RX ของ GSM เป็น TX (PIN 11) ของ 8051 และ TX ของ GSM กับ RX (PIN 10) ของ 8051 ในกรณีของเราฉันใช้โมดูล SIM900Aและมีพิน RX, TX ดังนั้นฉันจึงไม่ได้ใช้ MAX232
แผนภาพวงจรสำหรับการเชื่อมต่อ GSM กับไมโครคอนโทรลเลอร์ AT89S52แสดงไว้ในรูปด้านบน หลังจากการเชื่อมต่อเราต้องเขียนโปรแกรมเพื่อส่งคำสั่ง AT ไปยัง GSM และรับคำตอบบน LCD มีคำสั่ง AT มากมายตามที่อธิบายไว้ข้างต้น แต่ขอบเขตของบทความนี้เป็นเพียงการเชื่อมต่อ GSM กับ 8051 ดังนั้นเราจะส่งคำสั่ง“ AT” ตามด้วย“ \ r” (0D ในเลขฐานสิบหก) สิ่งนี้จะทำให้เราตอบว่า“ ตกลง” แต่คุณสามารถขยายโปรแกรมนี้เพื่อใช้สิ่งอำนวยความสะดวกทั้งหมดของ GSM
คำอธิบายรหัส
นอกเหนือจากฟังก์ชั่นทั้งหมดที่เกี่ยวข้องกับ LCD แล้วที่นี่เราได้ใช้ Serial port และ timer mode register (TMOD) คุณสามารถเรียนรู้เกี่ยวกับฟังก์ชัน LCD และรหัสอื่น ๆ ได้โดยไปที่ส่วนโครงการ 8051 ของเราที่นี่ฉันกำลังอธิบายเกี่ยวกับฟังก์ชันรหัสที่เกี่ยวข้องกับการสื่อสารแบบอนุกรม
GSM_init () ฟังก์ชัน:
ฟังก์ชันนี้ใช้เพื่อตั้งค่า Baudrate สำหรับไมโครคอนโทรลเลอร์ Baudrate ไม่ใช่อะไรนอกจาก Bits / วินาทีที่ส่งหรือรับ และเราต้องจับคู่ baudrate ของ 8051 กับ Baud rate ของโมดูล GSM เช่น 9600 เราได้ใช้ Timer 1 ในโหมด 2 (โหมดโหลดอัตโนมัติ 8 บิต) โดยตั้งค่า TMOD register เป็น 0X20 และไบต์ที่สูงกว่าของ Timer 1 (TH1) ถึง 0XFD เพื่อให้ได้อัตรารับส่งข้อมูลที่ 9600 นอกจากนี้ SCON register ยังใช้เพื่อตั้งค่าโหมดของการสื่อสารแบบอนุกรมเราได้ใช้ Mode1 (8-bit UART) โดยเปิดใช้งานการรับ
GSM_write ฟังก์ชัน:
SBUF (การลงทะเบียนฟังก์ชันพิเศษบัฟเฟอร์อนุกรม) ใช้สำหรับการสื่อสารแบบอนุกรมเมื่อใดก็ตามที่เราต้องการส่งไบต์ใด ๆ ไปยังอุปกรณ์อนุกรมเราใส่ไบต์นั้นในการลงทะเบียน SBUF เมื่อไบต์ที่สมบูรณ์ถูกส่งไปแล้วบิต TI จะถูกกำหนดโดยฮาร์ดแวร์ เราจำเป็นต้องรีเซ็ตเพื่อส่งไบต์ถัดไป เป็นแฟล็กที่ระบุว่าส่งไบต์สำเร็จแล้ว TI เป็นบิตที่สองของการลงทะเบียน SCON เราได้ส่ง“ AT” โดยใช้ฟังก์ชันนี้
ฟังก์ชัน GSM_read:
เช่นเดียวกับการส่งเมื่อใดก็ตามที่เราได้รับไบต์จากอุปกรณ์ภายนอกที่ใส่ไบต์ไว้ในการลงทะเบียน SBUF เราก็ต้องอ่านมัน และเมื่อใดก็ตามที่ได้รับไบต์ที่สมบูรณ์ RI บิตถูกกำหนดโดยฮาร์ดแวร์ เราจำเป็นต้องตั้งค่าใหม่เพื่อรับไบต์ถัดไป RI เป็นบิตแรกของการลงทะเบียน SCON เราได้อ่านคำตอบว่า“ ตกลง” โดยใช้ฟังก์ชันนี้