บทความ Project Home Control ควบคุมเครื่องใช้ไฟฟ้าในบ้านด้วย Android

ตอนที่ 4. - โดย Tumrobot

ชุดคำสั่งงาน Output และ การสั่งตั้งเวลา ของ MCU

ในหัวข้อนี้จะกล่าวถึง Application ที่เป็น Android มากขึ้น เนื่องจากว่า Android App จะมีหน้าที่เป็นตัวส่งชุดคำสั่งงานทั้งหมดให้กับ กล่อง Home Control - Kit โดยคำสั่งทั้งหมดที่เขียนขึ้นไปใน Android App จะเป็นชุดคำสั่งข้อมูล String เพื่อที่จะสามารถเข้าใจหลักการทำงานได้ง่ายขึ้น ซึ่งในเวอร์ชั่น Kit นี้จะไม่มีการเข้ารหัสใดๆ ทั้งสิ้น

ข้อแนะนำ สำหรับผู้ที่เริ่มต้น เขียน App Android สามารถเข้าไปศึกษา ข้อมูลเพิ่มเติมได้จาก

http://www.thaicreate.com/mobile/android.html หรือ website อื่นๆ ที่มีการสอนการเขียนและพัฒนา App Android

ชุดคำสั่ง ทั้งหมด จะประกอบด้วย Header คือ "$XPORT แล้วตามด้วย Command ที่ต้องการส่ง และตามด้วยข้อมูล String ที่ต้องการเติมให้ครบ 120 ตำแหน่งทั้งนี้ก็เพราะว่าเราจะสามารถเขียนข้อมูลคำสั่งได้อย่างอิสระ โดยไม่ต้องกังวลเรื่องความยาวของชุดข้อมูลคำสั่งเนื่องจากว่าเรา buffer ข้อมูลไว้ 100 ตำแหน่งในตัว MCU

1. ชุดคำสั่งเปิด Output แต่ละ Channel

ชุดคำสั่งคือ "$XPORT=ONL1 + ********* ให้ครบ 120 ตำแหน่ง"

คำอธิบาย

$XPORT เป็น Header ให้กล่องรับรู้ว่ามีคำสั่งเข้ามาที่กล่องโดยไม่สนใจคำสั่งอื่นๆ เนื่องจากอาจจะเป็นสัญญาณข้อมูลรบกวนหรือข้อความเข้ามาโดยไม่ตั้งใจได้ ส่วน $ นั้นใช้เป็นจุดเริ่มต้นของ MCU ในการตรวจสอบการรับข้อมูลซึ่งจะอธิบายเพิ่มเติมในส่วนของ การทำงานรับคำสั่งของ MCU

ONL1 เป็นคำสั่งเปิด Relay CH 1

หากต้องการเปิด Relay ตัวอื่นๆ ก็สามารถเปลี่ยนหมายเลขของ Relay ไปจนครับ 6 CH

เมื่อสั่งงานสำเร็จตัวกล่อง Home Control - Kit จะส่งข้อความกลับเป็น "$SW=ON1" แสดงว่ากล่องทำงานได้ถูกต้องตามที่เราต้องการ

 

2. ชุดคำสั่งปิด Output แต่ละ Channel

ชุดคำสั่งคือ "$XPORT=OFL1 + ********* ให้ครบ 120 ตำแหน่ง"

OFL1 เป็นคำสั่งปิด Relay CH 1

เมื่อสั่งงานสำเร็จตัวกล่อง Home Control - Kit จะส่งข้อความกลับเป็น "$SW=OF1" แสดงว่ากล่องทำงานได้ถูกต้องตามที่เราต้องการ

 

3. ชุดคำสั่งตั้งเวลา Output แต่ละ Channel

คำสั่งตั้งเวลาทุกครับที่มีการสั่งให้กล่อง Home Control - Kit ทำงานจะมีการ Sync เวลาเข้าไปเขียนใน RTC ของระบบทุกครับเพื่อที่จะให้ระบบนาฬิกา ทำงานได้แม่นยำถูกต้องเนื่องจากว่า RTC นั้นมีความคลาดเคลื่อนในตัวเอง จึงจำเป็นต้อง Sync ใหม่ทุกรอบ

ชุดคำสั่ง SYNC RTC คือ "$XPORTSYNRTC + : ( ตัวแบ่งข้อมูล ) + วัน : เดือน : ปี : DOW* : ชั่วโมง : นาที : วินาที

( ซึ่งทุกๆ ข้อมูลต้องคั่นด้วยตัวแบ่งข้อมูลทุกครั้ง ) และ + ********* ให้ครบ 120 ตำแหน่ง"

DOW ก็คือ date of week ( Sunday = 0, Moday = 1, ...... Saturday = 7 )

จากนั้น หน่วงเวลาประมาณ 500 Ms แล้วจึงส่งคำสั่งตั้งเวลาให้กับกล่อง Home Control - Kit

ชุดคำสั่งตั้งเวลา คือ "$XPORTSETSW + SWnumber + ":ON:" + ชั่วโมง :นาที + ":OFF:" + ชั่วโมง : นาที + Loop

และ + ********* ให้ครบ 120 ตำแหน่ง"

SWnumber คือ Channel ของ Output

Loop คือ กรณีที่เราต้องการให้ Output ทำงานซ้ำในแต่ละวัน ก็สั่ง Loop = 1 แต่ถ้าต้องการแค่ตั้งเวลาอย่างเดียวก็สั่ง Loop = 0

 

4. ชุดคำสั้่ง เคลียร์ระบบ

ชุดคำสั่งนี้ ทำเพื่อเคลียร์ระบบ ของ การรับข้อมูลบน MCU เนื่องจากว่า Buffer ที่เราเตรียมไว้บน MCU นั้นจะไม่ถูกเคลียร์จนกว่าเราจะเคลียร์ข้อมูลเองหรือมีคำสั่งใหม่เข้ามาเขียนทับ เราจึ่ง กำหนดให้เมื่อรับข้อมูลได้ตามที่กำหนดแล้ว ก็ไม่อนุญาตให้ Output ทำงานซ้ำอีก ไม่ว่า ข้อมูล data จะซ้ำหรือ ถูกเคลียร์ไปแล้ว

ชุดคำสั่งคือ "$XPORTOFFALL + ********* ให้ครบ 120 ตำแหน่ง"

 

ทั้งนี้ให้ศึกษา ข้อมูลเพิ่มเติมใน โปรแกรมบน Android ซึ่งสามารถ download ได้ ที่นี่

 

หลักการสั่งข้อมูลแบบ TCP/IP ผ่านทาง Socket

ปกติแล้วการส่งข้อมูลไปยังอุปกรณ์พวก Device Server นั้นจำเป็นต้องส่งข้อมูลผ่านทาง IP และ Socket ซึ่งปลายทางนั้นจะทำหน้าที่แปลงงานสัญญาณ Internet เป็น Serial สาเหตุที่เราต้องแปลงสัญญาณข้อมูลเป็น Serial นั้นก็เพราะว่า MCU ไม่รู้จักข้อมูลสัญญาณ TCP นั่นเอง เว้นแต่ MCU เบอร์ใหม่ๆ ที่รองรับ TCP Stack ก็จะสามารถ ต่อเข้ากับ Internet ได้โดยตรง อีกทางนึงเราสามารถ เชื่อมต่อ Internet เข้ากับ MCU ได้โดยใช้ ENC28J60 ของบริษัท Microchip

ข้อดี คือได้ระบบ MCU + Ethernet ที่ราคาถูก

ข้อเสีย คือระบบที่ได้ต้องเขียน Code ที่มี Stack ค่อนข้างซับซ้อนดัดแปลงแก้ไขต้องใช้ Knowhow ค่อนข้างสูง และการเขียนโปรแกรมควบคุมต้องใช้วิธี POST หรือ GET Medthod ซึ่งจะแตกต่างออกไปจากการส่งข้อมูล Data Command

   
  รูป ตัวอย่างการต่อใช้งาน ENC28J60  

 

ทดสอบส่งข้อมูลผ่าน TCP ไปยัง Home Control - Kit ด้วย Winsock (VB6 Application)

File VB Application สามารถ ดาวน์โหลดได้ ที่นี่

เริ่มต้น Application จะแสดงช่องสำหรับ กรอก IP และ Port เราสามารถใส่ IP ปลายทางของกล่อง Home Control - Kit ของเราได้ครับ

จากนั้นก็กด ปุ่ม Connect ตรงรูป จอคอม Connect

   

 

เมื่อทำการ Connect เรียบร้อยแล้วหน้า Application ก็จะขยายขึ้นและ ไฟสถานะ Connect ก็จะแสดงผล

หน้า Ping ip ก็จะแสดงผลการ Ping IP ของกล่องให้เราทราบด้วย

   

 

เมื่อเราปิด หน้าต่าง Ping IP เราก็จะสามารถสั่งควบคุม กล่อง Home Control - Kit ของเราได้เช่นกัน

   

File VB Sorce Code สามารถ ดาวน์โหลดได้ ที่นี่

ในกรณีที่เปิด VB App ขึ้นมาแล้ว Error นั่นก็คือเครื่องคอมพิวเตอร์ของท่านไม่มี file MSCOMM32.OCX หรือไฟล์ .OCX ตัวอื่นๆที่จำเป็นที่จะต้องใช้สำหรับ App ตัวนี้ดังนั้นให้ท่าน Download ไฟล์ OCX มาลงในเครื่องคอมพิวเตอร์ของท่านครับ

MSCOMM32.OCX ดาวน์โหลดได้จาก ที่นี่

หลังจากนั้นให้นำไปไว้ใน

C:/windows/system32 สำหรับ Window 32 bit

หรือ

C:/windows/SysWOW64

 

 

อ่านต่อ ตอนที่ 5