- วัสดุที่จำเป็น
- ซอฟต์แวร์ที่ใช้
- โมดูล 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
รหัสที่สมบูรณ์และวิดีโอสาธิต ได้รับด้านล่าง