ESP8266 อ่านค่าจาก SHT15 แล้วส่งไปแสดงผลบน Qt ด้วย UDP

22 Jun 2015 ESP8266 อ่านค่าจาก SHT15 แล้วส่งไปแสดงผลบน Qt ด้วย UDP

สำหรับบทความนี้จะเป็นการอ่านค่าอุณหภูมิและความชื้นจาก SHT15 แล้วส่งไปแสดงผลบน Qt ด้วย UDP Protocol หลาย ๆ ท่านคงจะเคยเห็นการส่งค่าไปเก็บบน Cloud หรือ เก็บลงฐานข้อมูลโดยใช้ Protocol ต่าง ๆ เช่น MQTT , HTTP ซึ่ง Stack อยู่บน TCP แต่บทความนี้เราจะใช้ UDP Protocol ในการส่งข้อมูลเพราะต้องการเน้นเรื่องความเร็วเป็นหลักครับ

ในคลิปอธิบายการทำงานต่าง ๆ ไว้แล้วนะครับ  แต่มีเทคนิคเพิ่มเล็กน้อยเกี่ยวกับการส่งข้อมูล  ถ้าเราเข้าใจเรื่องการเก็บข้อมูลใน Memory จะทำให้เข้าถึงข้อมูลได้ง่ายขึ้นครับ    จะเห็นว่าการส่งข้อมูลเราสามารถเขียนได้หลายแบบ  แต่วิธีที่ใช้คือการนำข้อมูลไปเก็บใน Buffer แล้วส่ง  ซึ่งเราจะใช้ memset และ memcpy เพื่อ Copy ค่าลง Buffer ครับ

memset(package,0,sizeof(package))  คือการ Clear ค่าใน Memory ให้กับตัวแปร package

memcpy(package,(char *)&temperature,4); คือการ  Copy ค่า Temperature จำนวน 4 byte  ไปใส่ใน package  ตำแหน่ง 0

memcpy(&package[4],(char *)&humidity,4); คือการ Copy ค่า Humidity จำนวน 4 byte  ไปใส่ package ตำแหน่งที่  4

จะเห็นว่าเมื่อเราใช้ memcpy แล้วในตัวแปร package จะมีค่า temperature และ humidity ตามที่เราต้องการ  สามารถใช้ฟังก์ชัน write ของ udp เพื่อส่งข้อมูลได้เลย

udp.write((char *)package, 8);    //  ส่งข้อมูลผ่านทาง UDP

ใครสนใจศึกษาเพิ่มเติมสามารถไปดู Code ตัวอย่างได้ที่ GitHub ครับ https://github.com/AppStackCC/AST-DW.miniESP-SHT15

กราฟใช้ QCustomPlot โหลดได้ที่  https://qcustomplot.com/

Comments

comments