Publish : 20 JANUARY 2023
หัวข้อในบทความนี้
- เตรียมอุปกรณ์
- ออกแบบการทำงาน
- ตัวส่งสัญญาณ
- ตัวรับสัญญาณ
- เขียนโปรแกรม
- โปรแกรมด้านตัวส่ง
- โปรแกรมด้านตัวรับ
- แนวทางการพัฒนาต่อยอด
หลังจาก 3 ปีที่แล้ว เราได้เขียนบทความ [Tutorial] การใช้งานโมดูลรับ-ส่งสัญญาณไร้สาย RF Wireless Transmitter & Receiver และด้วยเป็นบทความแรกของปีใหม่ ประกอบกับเมื่อสองเดือนก่อนทางร้านเรามีโปรเจคทำส่งลูกค้าไป (อาจจะออกเป็นสินค้าของทางร้านเอง หรือพรีออเดอร์สั่งผลิตเร็ว ๆ นี้) ทั้งหมดทั้งมวลนี้ ไหน ๆ ก็ไหน ๆ เอามาเขียนโปรเจคกันเลยดีกว่าละกันครับ
เตรียมอุปกรณ์
ในโปรเจคนี้ ต้องมีอุปกรณ์ ดังนี้
- บอร์ด Arduino (ตัวอย่างใช้ Arduino UNO) จำนวน 2 ตัว
- RF Transmitter and Receiver (ตัวอย่างใช้ 433MHz) จำนวน 1 ชุด
- DHT11 Digital Temperature and Humidity Sensor จำนวน 1 ตัว
- หน้าจอ 1602 I2C จำนวน 1 ตัว
- สายไฟสำหรับทดลอง หัวแบบ ผู้-เมีย
- (Optional) บอร์ดทดลอง
(หากใช้บอร์ดทดลอง ให้ใช้สายไฟสำหรับทดลอง หัวแบบ ผู้-ผู้)
โปรแกรมที่ใช้เขียนโค้ด คือ ArduinoIDE พร้อมลง Library RadioHead
ออกแบบการทำงาน
สำหรับโปรเจคนี้มีตัวส่งสัญญาณและตัวรับสัญญาณ การออกแบบการทำงานจึงต้องแยกออกแบบเป็นสองชุดเช่นกัน โดยจะออกแบบตามนี้
ตัวส่งสัญญาณ
ด้านตัวส่งสัญญาณจะทำงานง่าย ๆ โดยเริ่มตรวจวัดอุณหภูมิ จากนั้นจึงส่งสัญญาณผ่านคลื่นวิทยุไปหาตัวรับ แล้วจึงหน่วงเวลา 1 นาที ทำซ้ำแบบนี้ไปเรื่อย ๆ ไม่มีอะไรซับซ้อน
ตัวรับสัญญาณ
ตัวรับสัญญาณจะออกแบบให้คอยรับสัญญาณตลอดเวลา เมื่อมีสัญญาณเข้ามาก็จะทำการแสดงผลออกทางหน้าจอ

เขียนโปรแกรม
การเขียนโปรแกรมนั้นก็จะใช้พื้นฐานจากตัวอย่าง Simple ของ RadioHead Library มาดัดแปลงและเพิ่มเติมโค้ดของ DHT11 ลงไปในตัวส่ง และเพิ่มโค้ดสำหรับจอลงไปในด้านของตัวรับ ซึ่งข้อควรระวังในการเขียนโปรแกรมคือ RadioHead นี้รองรับการรับส่งข้อมูลแบบ char เท่านั้น เราต้องแปลงค่าจาก float ที่อ่านได้จาก DHT11 ให้เป็น String หรือ char ก่อนจึงจะสามารถส่งข้อมูลได้ ส่วนในด้านของตัวรับนั้นเราจะเอาค่าที่ได้ไปแสดงบนหน้าจอเท่านั้น ไม่ได้ไปใช้คำนวณอะไรเพิ่มเติม จึงนำ char เป็นข้อความไปแสดงได้เลยไม่ต้องแปลงกลับมาเป็น float
โปรแกรมด้านตัวส่ง
โปรแกรมด้านตัวรับ
แนวทางการพัฒนาต่อยอด
ในหัวข้อนี้เป็นหัวข้อที่ให้ทุกท่านไปคิดเป็นการบ้านละกันครับ โดยผู้เขียนจะทำการแนะให้บางส่วนและผู้อ่านก็ไปคิดต่อเติมเสริมแต่งกัน ลองผิดลองถูกฝึกประสบการณ์เขียนโค้ดดู
ทำให้ส่งค่าทั้งอุณหภูมิและความชื้น
โค้ดจริง ๆ ของโปรเจคนี้ที่เราทำให้ลูกค้าก็เป็นแบบนี้ครับ ตัวส่งจะส่งทั้งค่าอุณหภูมิและความชื้น ตัวรับก็จะแสดงทั้งสองค่า แต่หากเราส่งคนละรอบกัน จะเขียนโค้ดยังไงให้รู้ว่ารอบไหนค่าอะไร? ไม่มีทางรู้แน่ครับ แล้วจะทำไงหล่ะ? : แนะแนวคือตัวส่งนำค่าทั้งสองมารวมเป็น Message เดียว จากนั้นฝั่งตัวรับให้ Split ค่าออกมาว่าค่าตัวแรกเป็นอุณหภูมิ ค่าตัวหลังเป็นความชื้น
เปลี่ยนเป็นวัดค่าอย่างอื่น
อันนี้คงไม่ต้องแนะแนวนะครับ ง่ายมาก ตัดโค้ด DHT ออก เปลี่ยนเป็นโค้ด จบเกม
ใช้ส่งข้อความ
ไม่ต้องอ่านค่าจากเซ็นเซอร์ รับข้อความด้วยวิธีต่าง ๆ แล้วก็ส่งไปยังปลายทาง
สำหรับโปรเจคแรกของปี ก็ลองไปทำกันดูนะครับ ยังมีอะไรให้เล่นเพิ่มเติมอีกเยอะเลย ลองคิด ดัดแปลง เล่นกันดูนะครับ นั่นคือจุดประสงค์ของบทความชุดโปรเจคเลย วันนี้ขอตัดจบเพียงเท่านี้ เดือนหน้าจะเป็นโปรเจคอะไรคอยติดตามกันนะครับ สวัสดี
หากเห็นว่าบทความมีประโยชน์ต้องการสนับสนุนเป็นกำลังใจ เพียงแค่สนับสนุนค่ากาแฟให้เรานั่งเขียนบทความตามลิงค์ด้านล่าง