เผยความลับ ESP8266 SmartConfig ระดับ Network Layer ทำงานยังไง

หลายคนคงคุ้นเคยกันอย่างดีกับ feature SmartConfig ใน ESP8266 ที่เราสามารถตั้งค่าให้มันไปต่อกับ Wifi ตัวไหนก็ได้โดยไม่ต้องเขียนโค้ดเข้าไปใหม่ เพียงแค่เปิดโทรศัพท์มือถือขึ้นมา แล้วตั้งค่าผ่านโทรศัพท์มือถือได้เลย ไม่ต้องจัดการยุ่งยาก โดยโค้ดส่วนโทรศัพท์ก็มากมายอยู่บน Github ซึ่งเข้าไปดูโค้ดก็เป็นการส่งข้อมูลแบบ UDP ไม่ได้ยุ่งยากอะไร

แต่ด้วยความง่ายดายอันนี้ก็อาจจะทำให้หลายท่านสงสัยกัน(รวมถึงผมด้วย) ว่า เฮ้ย! แล้วมันทำงานได้ยังไงหล่ะ ข้อมูลจากโทรศัพท์มือถือจะส่งไปหาไอ้เจ้า ESP8266 ได้ยังไง ทั้งที่มันยังไม่ได้ต่อ wifi เลยสักอัน แล้วถ้ายิ่งเป็น wifi ที่เข้ารหัสเอาไว้ ยิ่งไปกันใหญ่ เพราะตอนนี้มันไม่รู้รหัสเลย มันจะรับเอาข้อมูลมาได้ยังไง … ก็นั่นหน่ะสิ ด้วยคำถามนี้จึงทำให้ผมก็กระวนกระวายใจอยากรู้คำตอบ ทำไม ทำไม ก็เลยไป research มาทำเป็นบทความวันนี้ซะเลย

โดยพื้นฐานของ wifi แล้วการส่งข้อมูลนั้นจะมี packet วิ่งอยู่มากมายเต็มไปหมด โดยปกติ access point แต่ละตัวจะมีการส่ง beacon packet อยู่เรื่อยๆตามตัวอย่าง พอเราแกะออกดูจะเห็นว่ามีรายละเอียดของการส่งข้อมูลแบบ IEEE 802.11 อยู่

blog-streetviewifi-beacon

ขอบคุณภาพจาก : http://blog.erratasec.com/2010/05/technical-details-of-street-view-wifi.html

จากรูปนี่เองเราจะเห็นว่าเราสามารถดึงเอา SSID ออกมาแสดงผลได้ เช่นเดียวกันกับ ESP8266 มันสามารถดึงเอา SSID ออกมาได้เช่นกัน … แต่ปัญหาต่อมาคือ ถ้าเรารู้แล้วว่ามี SSID มีกี่ตัว แล้วจะเลือกเชื่อมต่อกับอันไหนกันหล่ะ? การจะตอบคำถามนี้ได้เราต้องมาดูกันก่อนว่า packet ที่มันส่งไปมาในอากาศนี่เป็นยังไง

Continue Reading

KKMC Smart Plug : สมาร์ทปลั๊กควบคุมผ่านอินเตอร์เน็ต

เนื่องจากเทรนเรื่อง IoT ตอนนี้มาแรงมากๆ โดยเฉพาะ ESP8266 ทาง KKMC ก็อดใจไม่ได้ที่จะได้ลิ้มลองความสามารถของมันสักหน่อย โดยหยิบเอามาทำเป็นโปรเจคออกงานอีกสักชิ้น หลังจากที่ทำ โปรเจควัดอุณหภูมิแบบ DeepSleep ไป โดยในวันที่ 28 Nov 2015 จะมีงาน Jump Ignite ที่ Jump Space @KhonKaen ซึ่งเราต้องไปออกบูธด้วย เอาหล่ะว่ะ พึ่งเปิด Club มายังไม่ถึงเดือน ต้องเอาของออกไปโชว์ซะล่ะ ทำอะไรดีหว่า พอดีเหลือบไปเห็นปลั๊กไฟวางอยู่พอดี เดินไปหน่อยมี Relay 4 channel 5V วางอยู่อีก หุหุ นี่แหละ แกะออกมาทำ Smart Plug เลยล่ะกัน ควบคุมผ่าน Internet และเป็น App จากโทรศัพท์มือถือ โดยงานนี้เนื่องจากต้องการความเร็วในการทำมาก เลยเลือก Blynk มาเป็น framework ในการทำงานและใช้ Wifi Connector จาก CMMC เป็นตัวช่วยต่อ wifi และทำ Smart Config ว่าแล้วก็เริ่มเลยล่ะกัน

— อุปกรณ์

  1. ปลั๊กไฟที่มีสวิตส์
  2. ESP8266
  3. Relay Module (กี่ channel ขึ้นอยู่กับปลั๊กที่ใช้)
  4. ที่ชาร์ตแบตมือถือขนาดเล็ก

— การทำ

  1. แกะที่ชาร์จแบตเอาวงจรออกมาเพื่อเป็น Supply 5V ให้วงจร
  2. ต่อ ESP8266 เข้าไป
  3. ต่อสายไฟจาก Relay เข้าไปกับสวิตของปลั๊ก
  4. โปรแกรม ESP8266 จาก Github (โค้ดด้านล่าง)
  5. โหลด Blynk แล้วตั้งค่า Pin

IMG_20151127_195123 IMG_20151127_201128

กำลังแงะ + ต่ออุปกรณ์

IMG_20151127_220309

ภาพตอนสำเร็จพร้อมทดสอบ

IMG_20151128_154607 Screenshot_2015-11-28-15-45-36

ใช้งานจริงแล้ว หุหุ work ซะด้วย ใช้เวลาทำไม่ถึง 4 ชั่วโมงด้วยซ้ำก็มี Smart Plug ไว้ใช้งานล่ะ
Download : https://github.com/KhonKaenMakerClub/KKMC-Smart-Plug

ตต.

Khon Kaen Maker Club Training ตอน IoT ใครๆก็ทำได้

หลังจากที่เปิดคลับได้ไม่นาน ทาง KKMC เราก็เริ่มรู้สึกว่า เฮ้ยยย … เรามาจากต่างที่ ต่างอายุ ต่างสายความรู้ เก่งกันไปคนละด้าน คนนึงถนัดด้านนั้น อีกคนกลับถนัดด้านนี้ แต่โลกเป็นจริงเราต้องพบกับเทคโนโลยีใหม่ๆเสมอ และเทคโนโลยีเหล่านั้นมันก็มาเร็วซะเหลือเกิน เร็วชนิดที่ว่าวันต่อวันจนตามกันไม่ค่อยจะทัน และการที่เราจะเรียนรู้ทั้งหมดนั้นเป็นไปได้ยากอย่างยิ่ง ดังนั้น มันน่าจะจำเป็นนะที่เราจะแชร์ความรู้ให้เหล่าสมาชิกได้ฟังกัน อันนั้นอันนี้ทำยังไง เทรนด้านนี้มันไปถึงไหน เพื่อให้สมาชิกได้มีความรู้ความสามารถในหลายๆด้าน ก็น่าจะเป็นผลดี จึงเกิดเป็นการเทรนนิ่งครั้งนี้ขึ้นมา

โดยประเด็นที่เราได้หยิบยกกันขึ้นมาซึ่งได้จากการโหวตภายในกลุ่มคือ ESP8266 และ IoT ซึ่งแสดงให้เห็นว่า เทรนด้านนี้มาแรงจริงๆ ใครๆก็อยากจะเล่น (ว่าไปซะนั่น ฮ่าๆ) โดยการจัดอบรมนั้นแบ่งเป็น 2 ช่วงคือเช้ากับบ่าย โดยเนื้อหาตอนเช้านั้น จะเป็นการสอนพื้นฐานการใช้งาน ESP8266 (ก็นะจะไม่อธิบายมันก็กะไรอยู่) ซึ่งได้ข้อสรุปว่า ESP8266 เนี่ย ถูกกว่า Arduino แถมต่อ Wifi ได้ เร็วกว่า Arduino อีก(32Bit 80 & 160Mhz)  Memory ก็เยอะกว่า RAM ก็เยอะกว่า แล้วยังใช้ IDE ตัวเดียวกันกับ Arduino ได้อีก โอ้โห!!!อะไรจะขนาดนั้น และนี่จึงเป็นสาเหตุที่ทำให้มันกลายเป็นที่นิยมและกระแสขึ้นมา ซึ่งตอนเช้าก็ได้ทำการอ่านค่าจาก Sensor DHT11 ออกมาแสดงผลได้ผ่านทาง Serial Monitor ซึ่งติดขัดในเรื่อง library จากตัว esp8266 (library math) นิดหน่อย แต่ก็แก้ไขโดยการโหลดไฟล์มาทับได้ (ref: https://github.com/esp8266/Arduino/issues/612#issuecomment-129148582 เผื่อใครเจอปัญหาเดียวกัน)

ชนิดของ ESP Module (ภาพจาก http://www.ayarafun.com)

ชนิดของ ESP Module (ภาพจาก http://www.ayarafun.com)

Continue Reading