ป้ายประกาศแบบไร้สายเป็นคำที่เลือกใช้สำหรับโครงการนี้เนื่องจากมีขอบเขตที่กว้างมากแทนที่จะเป็นเพียงป้ายประกาศธรรมดา ก่อนอื่นเราควรเข้าใจวัตถุประสงค์ของโครงการนี้ในระบบนี้เราสามารถแสดงข้อความหรือประกาศไปยังอุปกรณ์แสดงผลบางอย่างเช่น LCD และข้อความนี้สามารถตั้งค่าหรือเปลี่ยนแปลงได้อย่างง่ายดายจากทุกที่ในโลกเพียงแค่ใช้สิ่งอำนวยความสะดวก SMSของคุณ โทรศัพท์มือถือ ไม่ว่าเราต้องการแสดงอะไรเพียงแค่ส่ง SMS ของข้อความนั้นพร้อมคำนำหน้าและคำต่อท้าย
สิ่งนี้มีประโยชน์มากในโรงแรมห้างสรรพสินค้าวิทยาลัยสำนักงานและสามารถใช้ได้ทุกที่แม้กระทั่งที่บ้าน เช่นเดียวกับที่คุณสามารถตั้งค่าข้อความเช่น“ ห้ามรบกวน” ที่ประตูห้องของโรงแรมคุณสามารถตั้งค่าข้อความที่ขั้นตอนประตูบ้านของคุณเมื่อคุณไม่อยู่และแน่นอนว่ามันถูกใช้เป็นป้ายประกาศในโรงเรียนวิทยาลัยห้องโถงโรงภาพยนตร์เป็นต้นและ ใช่มันไม่ใช่แค่กระดานข้อความธรรมดาประโยชน์ของโครงการนี้คือคุณสามารถตั้งค่าหรือเปลี่ยนแปลงข้อความหรือประกาศได้จากทุกที่เพียงแค่ส่ง SMS จากโทรศัพท์ของคุณ คุณยังสามารถตรวจสอบโปรเจ็กต์ที่คล้ายกัน แต่บนจอแสดงผลประเภทอื่น: Arduino Scoreboard โดยใช้ Outdoor P10 LED Matrix Display
ก่อนหน้านี้เราเคยใช้สิ่งอำนวยความสะดวก SMS ของโทรศัพท์มือถือเพื่อการรักษาความปลอดภัยภายในบ้านและควบคุมเครื่องใช้ภายในบ้านจากระยะไกล: PIR Sensor และ GSM Based Security System และ GSM Based Home Automation โดยใช้ Arduino
คำอธิบายการทำงาน:
ในโครงการนี้Arduino UNOใช้สำหรับควบคุมกระบวนการทั้งหมดโมดูล GSM (SIM900A)เพื่อรับ SMS / ข้อความที่ส่งจากโทรศัพท์มือถือและLCDเพื่อแสดงข้อความ
เราสามารถส่งข้อความหรือประกาศเช่น“ #Circuit Digest *”,“ # เรายินดีต้อนรับคุณ *” ผ่าน SMS ที่นี่เราได้ใช้คำนำหน้าในสตริงข้อความที่เป็น '#' คำนำหน้านี้ใช้เพื่อระบุจุดเริ่มต้นของข้อความหรือประกาศ และ '*' ใช้เป็นคำต่อท้ายเพื่อระบุจุดสิ้นสุดของข้อความหรือประกาศ
เมื่อเราส่ง SMS จากโทรศัพท์มือถือไปยังโมดูล GSM แล้ว GSM จะรับ SMS นั้นและส่งไปยัง Arduino ตอนนี้ Arduino อ่าน SMS นี้และแยกข้อความแจ้งเตือนหลักจากสตริงที่ได้รับและเก็บไว้ในสตริงอื่น จากนั้นส่งข้อความที่แยกแล้วไปยังจอ LCD 16x2 โดยใช้คำสั่งที่เหมาะสม
การทำงานเพิ่มเติมของระบบนี้มีอธิบายไว้ในส่วน 'คำอธิบายโค้ด' ด้านล่าง ก่อนที่เราจะลงรายละเอียดการเขียนโปรแกรมเราควรรู้เกี่ยวกับโมดูล GSM
โมดูล GSM:
โมดูล 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 โดยใช้คำสั่งเหล่านี้:
ATE0 สำหรับปิดเสียงสะท้อน
ที่ + CNMI = 2,2,0,0,0
ATD
ที่ + CMGF = 1
AT + CMGS =” หมายเลขโทรศัพท์มือถือ”
>> ตอนนี้เราสามารถเขียนข้อความของเราได้แล้ว
>> หลังจากเขียนข้อความ
Ctrl + Z ส่งคำสั่งข้อความ (26 ในทศนิยม)
ENTER = 0x0d ใน HEX
SIM900 ที่สมบูรณ์แบบ Quad-band GSM / GPRS โมดูล ที่มาพร้อมกับระบบ GSM / GPRS 850/900/1800 / 1900MHz ประสิทธิภาพสำหรับเสียง, SMS และข้อมูลด้วยการใช้พลังงานต่ำ
คำอธิบายวงจร:
การเชื่อมต่อWireless Notice Board โดยใช้ GSM และ Arduinoนั้นง่ายมากและแสดงในรูปด้านล่าง ที่นี่จอแสดงผลคริสตัลเหลว (LCD) ใช้สำหรับแสดง“ ประกาศ” หรือข้อความซึ่งส่งผ่านโทรศัพท์มือถือเป็น SMS พินข้อมูลของ LCD ได้แก่ RS, EN, D4, D5, D6, D7 เชื่อมต่อกับพินดิจิทัลของ arduino หมายเลข 7, 6, 5, 4, 3, 2 และขา Rx และ Tx ของโมดูล GSM เชื่อมต่อโดยตรงที่ Tx และ Rx พินของ Arduino ตามลำดับ และโมดูล GSM ใช้พลังงานจากอะแดปเตอร์ 12 โวลต์
คำอธิบายรหัส:
รหัสของโปรแกรมสามารถเข้าใจได้ง่าย สิ่งใหม่ที่นี่คือฟังก์ชันการเริ่มต้น GSN gsm_init () ซึ่งอธิบายไว้ในตอนท้าย
ในโปรแกรมก่อนอื่นเรารวมไลบรารีสำหรับจอแสดงผลคริสตัลเหลว (LCD) จากนั้นกำหนดข้อมูลและพินควบคุมสำหรับ LCD และตัวแปรบางตัว
# รวม
หลังจากนี้การสื่อสารแบบอนุกรมจะเริ่มต้นที่ 9600 bps และกำหนดทิศทางไปยังพินที่ใช้ และเริ่มต้นโมดูล GSM ในลูปการตั้งค่า
การตั้งค่าเป็นโมฆะ () {lcd.begin (16,2); Serial.begin (9600); PinMode (นำ, เอาท์พุท); digitalWrite (นำสูง); lcd.print ("การเริ่มต้นระบบ GSM… "); gsm_init (); lcd.setCursor (0,0); lcd.print ("ประกาศไร้สาย");
สำหรับการรับข้อมูลแบบอนุกรมเราใช้สองฟังก์ชั่นหนึ่งคือ Serial.available ซึ่งตรวจสอบข้อมูลอนุกรมว่ามาหรือไม่และอีกอันคือ Serial.read ซึ่งอ่านข้อมูลที่มาตามลำดับ
เป็นโมฆะ serialEvent () {while (Serial.available ()) {char ch = (char) Serial.read (); str = ch; ถ้า (ch == '*') {temp = 1; lcd.clear (); lcd.print ("ได้รับข้อความ"); ล่าช้า (1,000); }}}
หลังจากได้รับข้อมูลตามลำดับเราจะจัดเก็บข้อมูลไว้ในสตริงและมีการตรวจสอบสตริงนี้สำหรับ "#" และ "*" เพื่อค้นหาจุดเริ่มต้นและจุดสิ้นสุดของประกาศหรือข้อความ จากนั้นในที่สุดการแจ้งเตือนจะพิมพ์บน LCD โดยใช้ lcd.print
โมฆะ loop () {สำหรับ (int ไม่ได้ลงนาม t = 0; t <60000; t ++) {serialEvent (); ถ้า (temp == 1) {x = 0, k = 0, temp = 0; ในขณะที่ (x
ฟังก์ชันการเริ่มต้น 'gsm_init () ' สำหรับ GSM มีความสำคัญที่นี่โดยประการแรกโมดูล GSM จะถูกตรวจสอบว่าเชื่อมต่อหรือไม่โดยการส่งคำสั่ง 'AT' ไปยังโมดูล GSM หากได้รับคำตอบตกลงแสดงว่าพร้อมแล้ว ระบบจะตรวจสอบโมดูลจนกว่าจะพร้อมหรือจนกว่าจะได้รับ 'OK' จากนั้น ECHO จะปิดโดยส่งคำสั่ง ATE0 มิฉะนั้นโมดูล GSM จะสะท้อนคำสั่งทั้งหมด จากนั้นในที่สุดความพร้อมใช้งานของเครือข่ายจะถูกตรวจสอบผ่าน 'AT + CPIN?' คำสั่งหากใส่การ์ดเป็นซิมการ์ดและมี PIN อยู่จะให้การตอบกลับ + CPIN: READY นอกจากนี้ยังตรวจสอบซ้ำ ๆ จนกว่าจะพบเครือข่าย สิ่งนี้สามารถเข้าใจได้อย่างชัดเจนจากวิดีโอด้านล่าง
เป็นโมฆะ gsm_init () {lcd.clear (); lcd.print ("โมดูลการค้นหา.. "); บูลีน at_flag = 1; ในขณะที่ (at_flag) {Serial.println ("AT"); ในขณะที่ (Serial.available ()> 0) {ถ้า (Serial.find ("ตกลง")) at_flag = 0; } ล่าช้า (1,000); }