เนื่องจากซื้อ Arduino UNO กับ Wifi Shield ของ Tony Labs เอาไว้คิดว่าน่าจะได้เอามาทำอะไรสนุกๆ แต่ทิ้งไว้นานมากจนลืม พอนึกได้ก็ลองเล่นสักหน่อย จะได้อยู่ในกระแส Internet of Things (IoTs) บ้าง ฮาร์ดแวร์ประเภท Embedded และ Linux Embedded มีอยู่หลากหลายค่าย ที่เป็นที่นิยมก็ได้แก่ Arduino, Raspberry Pi, Beagle Board เป็นต้น การประยุกต์ใช้งานสามารถทำได้หลายอย่าง ต่อเซนเซอร์เพื่อรับค่า หรือควบคุมอุปกรณ์ต่างๆ ได้ ถ้าเป็น Linux Embedded ก็สามารถติดตั้งโปรแกรมใน SD Card ได้ หรือติดตั้ง server service ต่างๆ ก็ได้ เป็นคอมพิวเตอร์ตัวเล็กๆ ให้ใช้งานได้เลย แต่ต้องมี package ใน Repository ให้ติดตั้งนะครับ Linux Embedded ส่วนใหญ่จะใช้ CPU แบบ ARM ฉะนั้นจะติดตั้งอะไรก็ดูสักนิดว่ามี package สำหรับ CPU Architecture ที่เราใช้หรือเปล่า

แต่สำหรับ Arduino UNO ต้องเขียนโปรแกรมฝังเข้าไปอย่างเดียว อย่าหวังว่าจะ apt-get install apache php mysql อะไรเข้าไปได้ ต้องเขียน service เหล่านั้นขึ้นมาเอง…น่าสงสาร แต่ Arduino เป็น Open Embedded Board ใช้แนวคิดโดยเพิ่มคุณสมบัติใหม่ผ่าน Shield จึงทำให้มีคนทำ Shield เพื่อมาต่อกับ Arduino เยอะมากขึ้น ตัวอย่าง เช่น Wifi Sheild, Ethernet Shield, Data Logger Shield, GSM Shield เป็นต้น เรียกได้ว่าอยากได้อะไรก็ซื้อ Shield มาเสียบ นอกจาก Shield แล้วก็ยังมี Module แบบปกติที่ใช้งานกันทั่วไปอีกด้วย

มาดูอุปกรณ์กันก่อน ผมมี Arduino UNO และ Wifi Shield ของ Tony Labs อยู่ใช้ Chip TI CC3000 เหมือนกับของ Adafruit ดังนั้นการเขียนโค้ดใช้ Library CC3000 เหมือนกัน สำหรับท่านที่ใช้แบบ Wifi Breakout ก็ต้องต่อสายกันเยอะหน่อย

อุปกรณ์ที่ต้องมี ได้แก่

  • Arduino UNO
  • Wifi Shield หรือ Breakout
  • Bread Board
  • LED
  • Breadboarding Wire
  • R 220K

Wifi Breakout

Basic Wiring for Wifi Breakout

Wifi Shield ของ Adafruit

Wifi Shield ของ Tony Labs

Library ที่ต้องใช้

มาลงมือกันได้ สำหรับท่านที่ใช้ Breakout ต่อสายตามนี้

จากนั้นเขียนโค้ดใน Sketch ดังนี้

แก้ไขโค้ดในส่วน SSID และ Password ให้ถูกต้อง

#define WLAN_SSID "yourSSID"
#define WLAN_PASS "yourPassword"

จากนั้นสั่ง build แล้ว upload ไปยังบอร์ดได้เลย รอสักพักเปิด Serial Monitor ขึ้นมาเพื่อดูว่าได้ IP Address อะไร

จากนั้นเปิดเบราเซอร์ ลอง REST API ได้เลย เราเสียบ LED ไว้ที่ Digital Pin 7

เบราส์ไปที่ http://arduino.local/mode/7/o ตั้งค่า Digital Pin 7 ให้เป็น Mode Output

เบราส์ไปที่ http://arduino.local/digital/7/1 ตั้งค่า Digital Pin 7 ให้เป็น 1 สั่ง LED ติด

เบราส์ไปที่ http://arduino.local/digital/7/0 ตั้งค่า Digital Pin 7 ให้เป็น 0 สั่ง LED ดับ

อยากให้ทำงานแบบมีเงื่อนไขมากกว่านี้ก็เขียนเพิ่มในโค้ดได้ เมื่อมี REST API (แบบง่ายๆ) คุณก็สามารถเขียน Web Client, Mobile App เพื่อสั่งงาน Arduino ได้แล้ว อ้อเกือบลืม aREST รองรับทั้ง Wifi, Bluetooth LE, Serial และ Wireless ลองเอาไปประยุกต์ใช้ดูครับ

Comments are closed.