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 ไปใช้ทดลองได้