- วัสดุที่จำเป็น
 - ซอฟต์แวร์ที่ใช้
 - โมดูล GSM
 - การสื่อสารกับโมดูล GSM โดยใช้คำสั่ง AT
 - ATMega16 โมดูล GSM แผนภาพวงจรเชื่อมต่อ
 - การสร้างโครงการสำหรับ ATmega16 โดยใช้ CodeVision
 - รหัสและคำอธิบาย
 - สร้างโครงการ
 - อัปโหลดรหัสไปที่ Atmega16
 
โมดูล GSM น่าสนใจที่จะใช้โดยเฉพาะอย่างยิ่งเมื่อโครงการของเราต้องการการเข้าถึงระยะไกล โมดูลเหล่านี้สามารถดำเนินการทั้งหมดที่โทรศัพท์มือถือปกติของเราทำได้เช่นโทรออก / รับสายส่ง / รับ SMS เชื่อมต่ออินเทอร์เน็ตโดยใช้ GPRS เป็นต้นนอกจากนี้คุณยังสามารถเชื่อมต่อไมโครโฟนและลำโพงปกติเข้ากับโมดูลนี้และสนทนากับคุณ โทรศัพท์มือถือ สิ่งนี้จะเปิดประตูไปสู่โครงการสร้างสรรค์มากมายหากสามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์ได้ ดังนั้นในบทช่วยสอนนี้เราจะเรียนรู้วิธีที่เราสามารถ เชื่อมต่อโมดูล GSM (SIM900A) กับไมโครคอนโทรลเลอร์ AVR ATmega16 และจะแสดงให้เห็นโดยการส่งและรับข้อความโดยใช้โมดูล GSM
วัสดุที่จำเป็น
- Atmega16
 - โมดูล GSM (SIM900 หรืออื่น ๆ)
 - จอ LCD
 - กดปุ่ม
 - ตัวต้านทาน 10k โพเทนชิออมิเตอร์
 - การเชื่อมต่อสายไฟ
 - อะแดปเตอร์ 12V
 - โปรแกรมเมอร์ USBasp
 - สาย FRC 10 พิน
 
ซอฟต์แวร์ที่ใช้
เราจะใช้ซอฟต์แวร์CodeVisionAVRในการเขียนโค้ดและซอฟต์แวร์SinaProgสำหรับการอัปโหลดโค้ดของเราไปยัง Atmega16 โดยใช้โปรแกรมเมอร์ USBASP
คุณสามารถดาวน์โหลดโปรแกรมเหล่านี้ได้จากลิงค์ที่ให้มา:
CodeVisionAVR:
SinaProg:
ก่อนที่จะเข้าสู่แผนงานและรหัสเราเรียนรู้เกี่ยวกับโมดูล GSM และการทำงาน
โมดูล GSM
![]()
โมดูล GSM สามารถใช้งานได้แม้ไม่มีไมโครคอนโทรลเลอร์โดยใช้โหมดคำสั่ง AT ดังที่แสดงไว้ด้านบนโมดูล GSM มาพร้อมกับอะแดปเตอร์ USART ซึ่งสามารถเชื่อมต่อโดยตรงกับคอมพิวเตอร์โดยใช้โมดูล MAX232 หรือสามารถใช้พิน Tx และ Rx เพื่อเชื่อมต่อกับไมโครคอนโทรลเลอร์ คุณยังสามารถสังเกตเห็นหมุดอื่น ๆ เช่น MIC +, MIC-, SP +, SP- ฯลฯ ซึ่งสามารถเชื่อมต่อไมโครโฟนหรือลำโพงได้ โมดูลสามารถใช้พลังงานจากอะแดปเตอร์ 12V ผ่านแจ็คกระบอกสูบ DC ปกติ
ใส่ซิมการ์ดของคุณในช่องของโมดูลและเปิดเครื่องคุณจะสังเกตเห็นไฟ LED เปิด / ปิดเครื่อง ตอนนี้รอประมาณหนึ่งนาทีและคุณจะเห็นไฟ LED สีแดง (หรือสีอื่น ๆ) กะพริบทุกๆ 3 วินาที ซึ่งหมายความว่าโมดูลของคุณสามารถสร้างการเชื่อมต่อกับซิมการ์ดของคุณได้ ตอนนี้คุณสามารถดำเนินการเชื่อมต่อโมดูลของคุณกับโทรศัพท์หรือไมโครคอนโทรลเลอร์ได้
คุณสามารถสร้างโปรเจ็กต์เจ๋ง ๆ มากมายโดยใช้โมดูล GSM เช่น:
- บอร์ดประกาศไร้สายโดยใช้ GSM และ Arduino
 - เครื่องรับสายอัตโนมัติโดยใช้ Arduino และโมดูล GSM
 - ระบบอัตโนมัติในบ้านที่ใช้ GSM โดยใช้ Arduino
 - เซ็นเซอร์ PIR และระบบรักษาความปลอดภัยที่ใช้ GSM
 
ตรวจสอบโครงการที่เกี่ยวข้องกับ GSM ทั้งหมดได้ที่นี่
การสื่อสารกับโมดูล GSM โดยใช้คำสั่ง AT
อย่างที่คุณคาดเดาได้โมดูล GSM สามารถสื่อสารผ่านการสื่อสารแบบอนุกรมและเข้าใจได้เพียงภาษาเดียวเท่านั้นนั่นคือ“ คำสั่ง AT ” สิ่งที่คุณอาจต้องการบอกหรือถามไปยังโมดูล GSM ควรใช้คำสั่ง AT เท่านั้น ตัวอย่างเช่นหากคุณต้องการทราบว่าโมดูลของคุณทำงานอยู่หรือไม่ คุณควรถาม (ส่ง) คำสั่งเช่น“ AT” และโมดูลของคุณจะตอบว่า“ ตกลง”
คำสั่ง AT เหล่านี้อธิบายไว้อย่างดีในแผ่นข้อมูลและสามารถพบได้ที่นี่ในแผ่นข้อมูลอย่างเป็นทางการ ตกลง! ตกลง! เป็นแผ่นข้อมูล 271 หน้าและคุณอาจใช้เวลาหลายวันในการอ่าน ดังนั้นฉันจึงให้คำสั่ง AT ที่สำคัญที่สุดด้านล่างเพื่อให้คุณเริ่มใช้งานได้เร็ว ๆ นี้
| 
 ที่  | 
 ตอบตกลงเพื่อรับทราบ  | 
| 
 ที่ + CPIN?  | 
 ตรวจสอบคุณภาพสัญญาณ  | 
| 
 ที่ + COPS?  | 
 ค้นหาชื่อผู้ให้บริการ  | 
| 
 ATD96XXXXXXXX;  | 
 โทรไปยังหมายเลขเฉพาะลงท้ายด้วยอัฒภาค  | 
| 
 ที่ + CNUM  | 
 ค้นหาจำนวนซิมการ์ด (อาจใช้ไม่ได้กับบางซิม)  | 
| 
 ATA  | 
 รับสายเรียกเข้า  | 
| 
 ATH  | 
 วางสายเรียกเข้าปัจจุบัน  | 
| 
 ที่ + COLP  | 
 แสดงหมายเลขโทรเข้า  | 
| 
 AT + VTS = (หมายเลข)  | 
 ส่งหมายเลข DTMF คุณสามารถใช้หมายเลขใดก็ได้บนปุ่มกดบนมือถือของคุณสำหรับ (หมายเลข)  | 
| 
 ที่ + CMGR  | 
 AT + CMGR = 1 อ่านข้อความที่ตำแหน่งแรก  | 
| 
 ที่ + CMGD = 1  | 
 ลบข้อความที่ตำแหน่งแรก  | 
| 
 ที่ + CMGDA =” DEL ทั้งหมด”  | 
 ลบข้อความทั้งหมดออกจากซิม  | 
| 
 ที่ + CMGL = "ทั้งหมด"  | 
 อ่านข้อความทั้งหมดจากซิม  | 
| 
 ที่ + CMGF = 1  | 
 ตั้งค่าการกำหนดค่า SMS “ 1” ใช้สำหรับโหมดข้อความเท่านั้น  | 
| 
 ที่ + CMGS =“ +91 968837XXXX” > ข้อความ CircuitDigest
  | 
 ส่ง SMS ไปที่หมายเลขเฉพาะที่นี่ 968837XXXX เมื่อคุณเห็น“>” เริ่มป้อนข้อความ กด Ctrl + Z เพื่อส่งข้อความ  | 
| 
 ที่ + CGATT?  | 
 เพื่อตรวจสอบการเชื่อมต่ออินเทอร์เน็ตบนซิมการ์ด  | 
| 
 ที่ + CIPSHUT  | 
 ในการปิดการเชื่อมต่อ TCP หมายถึงการยกเลิกการเชื่อมต่ออินเทอร์เน็ตจากฟอร์ม  | 
| 
 AT + CSTT =“ APN”,” ชื่อผู้ใช้”,” ผ่าน”  | 
 เชื่อมต่อกับ GPRS ด้วยคีย์ APN และ Pass ของคุณ ได้จากผู้ให้บริการเครือข่าย  | 
| 
 ที่ + CIICR  | 
 ตรวจสอบว่าซิมการ์ดมีชุดข้อมูลหรือไม่  | 
| 
 ที่ + CIFSR  | 
 รับ IP ของเครือข่ายซิม  | 
| 
 AT + CIPSTART =“ TCP”,” SERVER IP”,” PORT”  | 
 ใช้เพื่อตั้งค่าการเชื่อมต่อ TCP IP  | 
| 
 ที่ + CIPSEND  | 
 คำสั่งนี้ใช้เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์  | 
ที่นี่เราจะใช้คำสั่งAT + CMGF และ AT + CMGSเพื่อส่งข้อความ
หากคุณใช้โมดูล GSM กับ Arduino ในขณะที่รับข้อความคุณสามารถใช้+ CMT:คำสั่งเพื่อดูหมายเลขโทรศัพท์มือถือและข้อความบนจอภาพแบบอนุกรม ข้อความมาในบรรทัดที่สองดังแสดงในภาพ

เราจะสแกนคำสั่ง + CMT: เพื่อตรวจสอบว่ามีข้อความหรือไม่
ATMega16 โมดูล GSM แผนภาพวงจรเชื่อมต่อ

การเชื่อมต่อจะเป็นดังนี้
- Tx และ Rx ของโมดูล GSM ถึง Rx (Pin14) และ Tx (Pin15) ของ Atmega16 ตามลำดับ
 - กดปุ่มไปที่ PD5 (Pin19) และ PD6 (Pin20)
 - การเชื่อมต่อ LCD:
 
- RS - PA 0
 - R / W - PA1
 - EN - PA2
 - D4 - PA4
 - D5 - PA5
 - D6 - PA6
 - D7 - PA7
 

การสร้างโครงการสำหรับ ATmega16 โดยใช้ CodeVision
หลังจากติดตั้งCodeVisionAVR และ SinaProgโปรแกรม, ทำตามขั้นตอนด้านล่างเพื่อสร้างโครงการและการเขียนรหัส:
อัปโหลดแล้ว
ขั้นตอนที่ 1. เปิด CodeVision คลิกที่ File -> New -> โครงการ กล่องโต้ตอบการยืนยันจะปรากฏขึ้น คลิกใช่

ขั้นตอนที่ 2 CodeWizard จะเปิดขึ้น คลิกที่ตัวเลือกแรกเช่น AT90 และคลิกตกลง

ขั้นตอนที่ 3: -เลือกชิปไมโครคอนโทรลเลอร์ของคุณที่นี่เราจะใช้ Atmega16L ดังที่แสดง

ขั้นตอนที่ 4: -คลิกที่USART เลือก ตัวรับ และ ตัว ส่ง โดยคลิกที่มัน ดังแสดงด้านล่าง:

ขั้นตอนที่ 5: -คลิกที่ ตัวอักษรและตัวเลขจอแอลซีดี และเลือกเปิดใช้การสนับสนุนจอแอลซีดีและตัวเลข

ขั้นตอนที่ 6: -คลิกที่ Program -> สร้าง, บันทึกและออก ตอนนี้งานของเราเสร็จไปแล้วกว่าครึ่ง

ขั้นตอนที่ 7: -สร้างโฟลเดอร์ใหม่บนเดสก์ท็อปเพื่อให้ไฟล์ของเรายังคงอยู่ในโฟลเดอร์ไม่เช่นนั้นเราจะกระจัดกระจายบนหน้าต่างเดสก์ท็อปทั้งหมด ตั้งชื่อโฟลเดอร์ของคุณตามที่คุณต้องการและฉันขอแนะนำให้ใช้ชื่อเดียวกันในการบันทึกไฟล์โปรแกรม
เราจะมีกล่องโต้ตอบสามกล่องต่อกันเพื่อบันทึกไฟล์

ทำเช่นเดียวกันกับอีกสองกล่องโต้ตอบซึ่งจะปรากฏขึ้นหลังจากที่คุณบันทึกรายการแรก
ตอนนี้พื้นที่ทำงานของคุณมีลักษณะเช่นนี้

งานส่วนใหญ่ของเราเสร็จสมบูรณ์ด้วยความช่วยเหลือของวิซาร์ด ตอนนี้เราต้องเขียนโค้ดสำหรับ GSM เท่านั้น
รหัสและคำอธิบาย
ไฟล์ส่วนหัวทั้งหมดจะถูกแนบโดยอัตโนมัติหลังจากสร้างโครงการคุณต้องรวมไฟล์ส่วนหัว delay.h และประกาศตัวแปรทั้งหมด รหัสที่สมบูรณ์จะได้รับในตอนท้ายของบทช่วยสอนนี้
# รวม
ทำให้ฟังก์ชั่นที่จะได้รับข้อมูลจาก UDR ลงทะเบียน ฟังก์ชันนี้จะส่งกลับข้อมูลที่ได้รับ
ถ่านที่ไม่ได้ลงชื่อได้รับ _value (โมฆะ) { while (! (UCSRA & (1 <
มาถึง ในขณะที่ วงในการที่เราจะสร้างสอง ถ้า งบหนึ่งสำหรับการส่งข้อความและอื่น ๆ สำหรับการที่ได้รับ ปุ่มส่งเชื่อมต่อกับ PIND6 ของ ATmega และปุ่มรับข้อความด้วย PIND5
เมื่อกด PIND6 (ปุ่มส่ง)ก่อน หาก คำสั่งจะดำเนินการและคำสั่งทั้งหมดในการส่งข้อความจะดำเนินการทีละคำสั่ง
ในขณะที่ (1) { // lcd_clear (); lcd_putsf ("ส่ง -> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("รับ -> ก้น 2"); ถ้า (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("กำลังส่งข่าวสาร… "); สำหรับ (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); สำหรับ (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
หากได้รับข้อความปุ่มกด, ในขณะที่ (ข! = '+') ห่วงจะตรวจสอบว่าคำสั่ง CMT เป็นปัจจุบันหรือไม่ หากมีอยู่วินาที ในขณะที่ ลูปจะดำเนินการและไปที่บรรทัดที่สองของคำสั่งและพิมพ์ข้อความบน LCD ทีละรายการ
ในขณะที่ (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("การรับข่าวสาร… "); b = received_value (); ในขณะที่ (b! = '+') { b = received_value (); } b = received_value (); ถ้า (b == 'C') { b = received_value (); … ..
ลูปนี้นำโปรแกรมไปยังบรรทัดคำสั่งที่สองและเก็บข้อความไว้ในอาร์เรย์
ในขณะที่ (b! = 0x0a) { b = received_value (); } สำหรับ (b = 0; b <3; b ++) { c = received_value (); ข้อความ = c; } .. ..
สิ่งนี้ สำหรับการ วนซ้ำคือการแสดงข้อความบน LCD
สำหรับ (z = 0; z <3; z ++) { a = msg; lcd_putchar (ก); // พิมพ์ใน lcd delay_ms (10); }
โค้ดที่สมบูรณ์พร้อม Demo Videoได้รับด้านล่างตอนนี้เราต้องสร้างโครงการของเรา
สร้างโครงการ
คลิก ที่ ไอคอน สร้างโครงการ ตามที่แสดง

หลังจากสร้างโปรเจ็กต์ ไฟล์ HEX จะถูกสร้างขึ้นใน โฟลเดอร์ Debug-> Exe ซึ่งสามารถพบได้ในโฟลเดอร์ที่คุณทำไว้ก่อนหน้านี้เพื่อบันทึกโปรเจ็กต์ของคุณ เราจะใช้ไฟล์ HEX นี้เพื่อ อัปโหลดใน ATmega16 ใช้ซอฟต์แวร์
อัปโหลดรหัสไปที่ Atmega16
เชื่อมต่อวงจรของคุณตามแผนภาพที่กำหนดกับโปรแกรม Atmega16 ต่อสายเคเบิล FRC ด้านหนึ่งเข้ากับโปรแกรมเมอร์ USBASP และอีกด้านหนึ่งจะเชื่อมต่อกับหมุด SPI ของไมโครคอนโทรลเลอร์ตามที่อธิบายไว้ด้านล่าง:

- Pin1 ของขั้วต่อ FRC หญิง -> พิน 6, MOSI ของ Atmega16
 - Pin 2 เชื่อมต่อกับ Vcc ของ atmega16 เช่น Pin 10
 - Pin 5 เชื่อมต่อกับรีเซ็ตของ atmega16 เช่น Pin 9
 - Pin 7 เชื่อมต่อกับ SCK ของ atmega16 เช่น Pin 8
 - Pin 9 เชื่อมต่อกับ MISO ของ atmega16 เช่น Pin 7
 - Pin 8 เชื่อมต่อกับ GND ของ atmega16 เช่น Pin 11
 
เราจะอัปโหลดไฟล์ Hex ที่สร้างขึ้นด้านบนโดยใช้ Sinaprog ดังนั้นเปิดและเลือก Atmega16 จากเมนูแบบเลื่อนลงอุปกรณ์ เลือกไฟล์ HEX จากโฟลเดอร์ Debug-> Exe ดังที่แสดง

ตอนนี้คลิกที่โปรแกรมและรหัสของคุณจะถูกเบิร์นในไมโครคอนโทรลเลอร์ ATmega16
คุณทำเสร็จแล้วและไมโครคอนโทรลเลอร์ของคุณถูกตั้งโปรแกรมไว้ เพียงกดปุ่มเพื่อส่งและรับข้อความจากไมโครคอนโทรลเลอร์ GSM และ ATmega16
รหัสที่สมบูรณ์และวิดีโอสาธิต ได้รับด้านล่าง
