วันเสาร์ที่ 14 มกราคม พ.ศ. 2560

ใช้ AppInventor สร้างแอปควบคุม GPIO ของ HM-10 Bluetooth LE ด้วย Android


  HM-10 Breakout board ส่วนใหญ่ที่จัดหามาจากผู้จำหน่ายในจีน จะมีเฟิร์มแวร์ที่ไม่สามารถใช้ความสามารถในส่วนของ GPIO ของ CC2541 ได้ (อันนี้ทดลองกับบอร์ดที่สั่งซื้อมา)


แสดงรุ่นที่มีเฟิร์มแวร์ HMSoft กับแบบอื่น

  เนื้อหาที่นำเสนอต่อจากนี้ ต้องใช้ HM-10 Bluetooth LE ที่ลงเฟิร์มแวร์ของ HMSoft แล้ว ซึ่งสามารถทตามขั้นตอนในบทความ iBeacon ด้วย HM10 BLE (Bluetooth Low Energy)

HM-10 ที่ไม่มี Breakout board แสดงตำแหน่ง GPIO ด้านขวามือ

  HM-10 มี GPIO0 - GPIO9, GPIOA, GPIOB สามารถนำมาใช้ได้เมื่อได้รับการกำหนด Mode 1 (AT+MODE1) และ Mode 2 (AT+MODE2) ซึ่งทั้งคู่เป็น Remote Control Mode

  เมื่อกำหนดให้เป็น Mode 1 ขา GPIO2-GPIO3 สามารถนำมาใช้เป็น OUTPUT ส่วน GPIO4 - GPIO9 ,GPIOA,GPIOB จะเป็น INPUT

  ใน Mode 2 ทุกขาคือ GPIO2 - GPIOB จะเป็น OUTPUT ทั้งหมด

  ในบทความนี้จะใช้ AT Command ที่เกี่ยวข้องกับ Mode 2 เท่านั้น

  คำสั่งที่สามารถใช้ได้ เมื่อเลือกใช้ AT+MODE2

  - AT+PIOx? อ่านสภาวะที่ GPIO ตำแหน่ง x โดยที่ x = 1 - 9,A,B
  - AT+PIOx เขียนค่าสภาวะที่ GPIO  ตำแหน่ง x โดยที่ x = 2 - 9,A

  คำสั่งที่เกี่ยวข้องกับ GPIO ยังมีอยู่อีก แต่จะยังไม่นำมาพูดถึงในตอนนี้

ดสอบการใช้ AT Command ปิด เปิด หลอด LED

- ให้ต่อ LED กับ PIO ที่ต้องการ ทดลองใช้ PIO3 และ PIO6 ให้ต่อขา Anode กับขา PIO และต่อขา Cathode ผ่านรีซิสเตอร์ค่า 330 โอห์ม - 1K กับกราวด์
- ต่อ Tx Rx ผ่าน USB to Serial เพื่อรับส่งคำสั่ง
- เปิดโปรแกรมอ่านข้อมูลพอร์ทซีเรียล (Serial Monitor ของ Arduino IDE ก็ใช้ได้)
- เลือกหมายเลขพอร์ท ตั้งค่า 9600 และ No line ending
- ล้างค่าเดิมที่กำหนดไว้                                         AT+RESET
- กำหนดให้ HM-10 ใช้โหมด 2                              AT+MODE2

- ทดลองคำสั่งให้หลอด LED ที่ PIO3 ติด             AT+PIO31 
- และทำให้หลอด LED ที่ PIO3 ดับ                       AT+PIO30  
- ทดสอบกับ PIO6 ด้วยเช่นกัน

* ทุกคำสั่งต้องตามด้วย Enter
* ถ้าเคยตั้งค่าให้ HM-10 ให้ทำงานอย่างหนึ่งอย่างใดแล้ว เช่น iBeacon จะเห็นว่าบอร์ดจะไม่ตอบสนองกับคำสั่งที่ป้อนเข้าไป ให้ทำการพิมพ์ตัวอักษรใดๆ ก็ได้มากกว่า 80 ตัวอักษร แล้วก็เคาะ Enter ครั้งหนึ่ง จากนั้นทดสอบพิมพ์ AT ตามด้วย Enter จนตอบสนอง OK+WAKE หรือ OK ทำซ้ำๆจนกว่าจะได้

นำคำสั่งมาวางในส่วนของ AppInventor

- ติดตั้ง BLE extension  โหลดไฟล์  เป็นไฟล์ที่ปรับปรุงแก้ปัญหาตอนนำไปติดตั้งแล้วโปรแกรมไม่ทำงาน เนื่องจาก BLUETOOTH_ADMIN ไม่ได้ถูกขออนุมัติ ซึ่งอาการปัญหานี้จะไม่พบตอนทดสอบกับ AI Companion
- สร้างและวางคอมโพเน้นท์ตามที่แสดงในภาพ ชื่อที่ใช้ให้เปรียบเทียบดูจาก Block จะไม่ได้บอกรายละเอียด ให้เรียกใช้งาน Bluetooth LE ด้วย



- เปิด Block และวางคอมโพเน้ท์

     ส่วนแรกในการสแกนหาอุปกรณ์, เลือกอุปกรณ์พร้อมทำการเชื่อมต่อ และการตัดการเชื่อมต่อ
     ส่วนที่สอง ทำการส่งคำสั่งเปิด-ปิดหลอด LED
     รหัสในช่อง service_uuid คือ 
0000ffe0-0000-1000-8000-00805f9b34fb
     รหัสในช่อง characteristic_uuid คือ
0000ffe1-0000-1000-8000-00805f9b34fb

     รหัสทั้งสองตัวจำเป็นในการอ่านเขียนข้อมูล และใช้ได้เฉพาะกับ HM-10 ถ้าใช้ตัวอื่นต้องหาข้อมูลเพิ่มเติม
     ส่วนที่สาม นำค่าที่ส่งกลับมา มาทำการเปลี่ยนสี (Background Color) ของปุ่ม LED1 และ LED2 ที่ใช้แสดงแทนการเปิดปิดของหลอด

     ส่วนสุดท้าย เป็นการส่งคำสั่ง AT Command ไปที่ HM-10

    สามารถพิมพ์คำสั่งลงในช่อง txtCmd กดปุ่ม btnCmd การตอบสนองมาที่ช่อง Response

อยากให้ทดลองจับวางและเขียนข้อมูลต่างๆเอง จะได้เห็นว่าจะสร้างและแก้ปัญหาได้อย่างไร
แต่ถ้าไม่สะดวกจริงๆ ก็สามารถ import ไฟล์ NewLE.aia ไปใช้ทดลองได้







ไม่มีความคิดเห็น:

แสดงความคิดเห็น