MQTT (Message Queue Telemetry Transport) เป็นโปรโตคอลสำหรับ Internet of Things โปรโตคอลนี้ใช้วิธีการเหมือนกับ Message Queue ปกติแต่พัฒนาให้รองรับงานด้าน Internet of Things นอกจากจะรอรับและอ่านค่าแล้ว ยังสามารถสั่งงานอุปกรณ์ที่ใช้ MQTT ได้ด้วย การใช้งานโปรโตคอลนี้ต้องจะต้องมีอุปกรณ์ที่ฝัง MQTT Broker มาเพื่อทำหน้าที่รับส่งข้อมูลไปยังอุปกรณ์อื่นที่ใช้ MQTT เหมือนกัน เนื่องจากไม่มีอุปกรณ์ที่เล่นกับ MQTT ได้ก็ต้องจำลองกันสักหน่อย

MQTT Broker มีหลายค่ายให้ใช้งาน เราเลือกใช้ของง่ายๆ กันก่อน คือ Mosquitto เจ้ายุงนี้เป็น OpenSource MQTT Broker สนับสนุน MQTT Broker v3.1/3.1.1 วิธีการติดตั้งก็ง่ายมาก ติดตั้งผ่าน PPA ได้เลยดังนี้

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

sudo apt-get update

sudo apt-get install mosquitto python-software-properties

เท่านี้ก็ใช้งานได้แล้ว อ้อเกือบลืม mosquitto ทำงานบน port 1883 ครับ ได้ Broker แล้วจะทดลองเล่นยังไง มี 2 ทางเลือกคือ ใช้ MQTT Client หรือเขียนโปรแกรมเชื่อมต่อ ทางเลือกที่ดีที่สุดคือใช้ Client ครับ :) ผมเลือก Client ที่คิดว่าน่าจะใช้ง่ายที่สุดคือ MQTT Spy ครับ ดาวน์โหลดมาแล้วเรียกใช้งาน เราจะได้หน้าตาแบบนี้ Continue reading

ครั้งที่แล้วพาเล่น Node-RED โดยดึงข้อมูลจาก Twitter แล้วสั่ง ReTweet ผ่าน Node-RED กันไปบ้างแล้ว ครั้งนี้จะมาลองเขียน REST API ง่ายๆ ผ่าน Node-RED กันบ้าง หากคุณยังไม่มี Node-RED ก็สามารถติดตั้งได้ตามวิธีการในครั้งที่แล้ว หรือใช้ Boilerplates Node-RED Starter ใน Bluemix ก็ได้ครับ เข้าไปที่ Node-RED กันได้เลย วาง block http input และ output debug เชื่อม block ให้เรียบร้อย เราจะรับค่าจาก http request แล้วส่งไปแสดงผลใน debug ที่หน้า web console ตั้งค่า http input ดังนี้

จากนั้นเปิด rest client มาลองทดสอบกัน เริ่มจากทดสอบ POST request ก่อน เราจะพบว่า Node-RED สร้าง REST Server ให้เราพร้อมสั่งให้รับค่าแบบ json ผ่าน POST request เท่านั้น

Continue reading

Ardublock เป็น Block Code ตัวนึงใช้งานเหมือนกับ Block Code ใน LEGO การเขียนโปรแกรมก็ง่ายมากๆ เพียงแค่ลาก block มาวางต่อกัน แล้วสั่งอัพโหลดโปรแกรมไปที่ Arduino ได้เลย Ardublock ยังสนับสนุนชุด break out ของค่ายต่างๆ ด้วย เช่น DFRobot, Adafruit, SeedStudio เป็นต้น ทำให้การเขียนโปรแกรมร่วมกับชุด break out เท่านั้นทำได้ง่ายมากขึ้น และที่สำคัญไม่ต้องกังวลว่า library ของอุปกรณ์จะไม่ครบ Ardublock ยังบอกลิงค์สำหรับดาวน์โหลด library เพิ่มเติมให้เราอีกด้วย มาลองเล่นกัน

ดาวน์โหลด Ardublock ได้ที่ http://sourceforge.net/projects/ardublock/ เมื่อได้ไฟล์ jar มาแล้ว ก็คัดลอกลงใน ไดเรทอรี tool ของ Arduino Sketch ส่วนใหญ่อยู่ในไดเรคทอรี document ตัวอย่าง

  • Mac, /Users/YOUR-USERNAME/Documents/Arduino/tools/ArduBlockTool/tool/ardublock-all.jar
  • Linux, /home/YOUR-USERNAME/sketchbook/tools/ArduBlockTool/tool/ardublock-all.jar
  • Windows, C:\Users\YOUR-USERNAME\Documents\Arduino\tools\ArduBlockTool\tool\ardublock-all.jar

การใช้งานก็เปิด Arduino Sketch ขึ้นมาปกติ แล้วเปิด Ardublock จากเมนู Tools > Ardublock ลองเขียนแบบ Block ดูบ้าง

กด Upload to Arduino ก็จะได้โค้ดมาพร้อม compile และ upload ไปยัง board ให้เลย

Ubuntu 14.04 มี Java 7 ติดตั้งมาให้ ซึ่งเป็น Open JDK 1.7 แต่หากต้องการติดตั้ง Java 8 จาก Oracle ต้องทำยังไง หลายท่านถามคำถามนี้เข้ามา ก็เลยถือโอกาสแนะนำวิธีการติดตั้ง Java 8 บน Ubuntu 14.04 วิธีการติดตั้งแบบง่ายที่สุด คือใช้ PPA ดังนี้

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer oracle-java8-set-default

เพื่อความแน่ใจ ตรวจสอบสักนิดว่าเป็น Java 8 หรือยังด้วยคำสั่ง

java -version

เนื่องจากติดลมจาก Internet of Things Foundation ของ IBM Bluemix ที่มี BoilerPlate ให้บริการ โดยจับเอา Node.js และ Node-RED ซึ่งเป็นโครงการ OpenSource อยู่แล้วมาให้บริการ ถ้าจะไปใช้ใน Bluemix เลยก็ง่าย สะดวก และรวดเร็วมาก แต่ต้องรู้พื้นฐานของ Node-RED กันก่อน ไม่อย่างนั้นไปใช้บน Bluemix มีหวังได้ งมจนหมดเวลาใช้งานแน่นอน กลับมา Back to Basic กันก่อนครับ Bluemix และ Cloud Service ต่างๆ ปล่อยมันไปก่อน Node-RED เป็นโครงการ OpenSource ช่วยให้คนที่พัฒนา Internet of Things ไม่ต้องเขียน API ฝั่ง server เอง เอาง่ายๆ ไม่ต้องรู้เรื่องเยอะก็ได้ ขอให้ใช้เครื่องมือแบบลางวางและตั้งค่าผ่าน Node-RED ให้ได้ก็พอ ซึ่ง Node-RED จะมีบริการหลังบ้านให้คุณได้ออกแบบ API ว่าจะรับค่ามาอย่างไร คำนวณ แปลงข้อมูล เก็บข้อมูล หรือสื่อสารกับบริการอื่น ได้อย่างไร เรียกได้ว่าสะดวกมากๆ

ขึ้นชื่อว่า Node การใช้งานก็ต้องมี Node.js ก่อน แล้วค่อยติดตั้ง node module เข้าไปเพิ่มแล้วจึงจะเริ่มใช้งานกันได้ สำรับการติดตั้ง Node.js บน Ubuntu 14.04 LTS ก็ง่ายๆ แค่นี้

sudo apt-get update

sudo apt-get install nodejs npm

จากนั้นก็ ใช้ git สั่ง clone repository ของโครงการ Node RED มาดังนี้

git clone https://github.com/node-red/node-red.git

Continue reading

เนื่องจากมีสมาชิกเพจ ThaiOpenSource ถามเรื่องดูอุณหภูมิของ CPU ว่ามีอุณหภูมิเท่าไร ผมก็เกือบตอบไปว่าเอา DS1820 ไปจับ ล้อเล่นน่ะครับ :P จริงๆ แล้ว CPU มี sensors มากับตัวมันเองอยู่แล้วซึ่งโดยปกติเอาไว้ควบคุมการทำงานของ Main Board เพืิ่อปรับความเร็วรอบของการหมุนของพัดลม และใช้งานอย่างอื่นที่เราอยากเอาไปใช้ โดยส่วนใหญ่จะต่อตรงกับระบบ Monitoring ต่างๆ กลับมาเรื่อง sensors กันต่อ วิธีการดูสามรถดูได้หลายวิธี วิธีง่ายที่สุดคือผ่าน lm_sensors ครับ ให้ลองดูใน cpuinfo ว่ารองรับ lm sensors หรือเปล่า ด้วยคำสั่ง

grep lm /proc/cpuinfo

หากมี flags ว่า lm ถือว่าใช้ได้ ติดตั้ง lm_sensors ต่อได้เลย ถ้าใช้ Debian/Ubuntu ติดตั้ง package lm_sensors ดังนี้

apt-get install lm-sensors

ถ้าใช้ RedHat/CentOS ติดตั้ง package lm_sensors ดังนี้

yum install lm_sensors

เมื่อติดตั้งได้แล้วก็มาลองดูกัน ใช้คำสั่ง

sensors

เราก็จะได้ค่าอุณหภูมิของ CPU ออกมาแล้ว :)

Bluemix เป็นบริการ Cloud Computing ของ IBM ซึ่งเน้นในด้าน Platform as a Service (PaaS) โดยใช้ Cloud Foundry ซึ่งเป็น OpenSource มาพัฒนาต่อและให้บริการ สำหรับท่านที่ใช้ Cloud Foundry มาก่อนก็ใช้งานเหมือนๆ กัน แต่ Bluemix สามารถใช้งานได้ทั้งในรูปแบบ cli ผ่าน Cloud Foundry Cli ปกติ และการทำงานผ่านหน้าเว็บไซต์ Bluemix โดยตรง platform ที่ให้บริการใน Bluemix มี 4 platform หลักคือ java, node.js, ruby on rails และ ruby sinatra นอกจากนี้จะเป็น service, add-on ซึ่งสามารถเพิ่มเข้ามาได้ในภายหลังได้ นอกจากนี้ยังมี boilerplates ที่รวมเอา runtime และ service เข้ามาให้บริการร่วมกันสร้างเป็นบริการเฉพาะทาง เช่น Internet of Things platform, Mobile Cloud, Node Cached Starter, Big Data และอื่นๆ อีกมากมาย

สำหรับการใช้งาน Bluemix ต้องสมัครสมาชิกก่อน สมัครได้ฟรีโดยไม่ต้องใช้บัตรเครดิต แต่ใช้งานได้ฟรี 30 วัน หากติดใจอยากให้งานต่อแนะนำให้ติดต่อเซล เพื่อขอเปิด Pay Account ครับ หากไม่คิดจะใช้งานต่อ แนะนำให้รีบเอาข้อมูลออกมาก่อนหมดระยะเวลาใช้งานฟรี 30 วัน ไม่อย่างนั้นจะไม่มีโอกาสเอาข้อมูลกลับมานะครับ อันนี้ประสบการณ์ตรง :P เอาล่ะ เมื่อสมัครสมาชิกกันแล้วก็เริ่มใช้งานกันได้ อย่างที่บอกคือ ถ้าเคยใช้ Cloud Foundry มาก่อนไม่ยอกเลยครับ ขั้นแรกไปดาวน์โหลด Cloud Foundry CLI กันก่อน เลือก Binary หรือ Installer ก็ได้ เลือกให้ตรงกับระบบปฏิบัติการที่คุณใช้นะครับ Continue reading

เมื่องาน OSSFestival 2014 ที่ผ่านมา มี workshop เกี่ยวกับ Arduino DIY ได้รับความสนใจมากจากหลายคนที่สนใจด้าน OpenSource Hardware ซึ่งโครงการอย่าง Arduino และ Raspberry Pi เป็นโครงการ OpenSource Hardware ที่ประสบความสำเร็จมาก เรียกได้ว่าใช้เครื่องมือทุกอย่างที่เป็น OpenSource ในการทำงานได้ ตั้งแต่การประกอบแบบ DIY,Arduino Bootloader สำหรับ Burn ลงในชิบ ATMEGA328, IDE ที่ใช้เขียนโปรแกรมและระบบปฏิบัติการที่ใช้งานได้ เรียกได้ว่าใช้งานเครื่องมือแบบ OpenSource ได้ในทุกกระบวนการเลยทีเดียว ดีจัง :) ใน workshop ได้แนวคิดหลายอย่าง ไม่ว่าจะเป็นบอลลูนติด Arduino ควบคุมด้วย Remote Control แบบ Infra Red หรือการใช้งาน Arduino DIY กับ RFID เป็นต้น เรียกได้ว่าทำได้หลายอย่างมากๆ

ในตอนแรกคิดว่าจะลองทำบอลลูนควบคุมด้วย Arduino แต่ต้องถอดใจก่อนเพราะไม่มีลูกโป่งและก๊าซฮีเลียม แนวคิดนี้ก็เลยขอพักไว้ก่อน ลองทำอะไรง่ายๆ ก่อนน่าจะดีกว่า อย่างเช่น Robot เอ่อ…ต้องเรียกรถ 2 ล้อน่าจะถูกกว่าเพราะมี 2 ล้อสำหรับควบคุมทิศทางและล้ออิสระอีก 2 ล้อเอาไว้พยุงตัวรถเท่านั้นเอง อุปกรณ์ที่ต้องใช้มีดังนี้ครับ

  • Robot Chassis Kit (Chassis + Motor + Wheel)
  • Arduino UNO
  • Motor Drive Shield (L298P)
  • Bluetooth Module HC-05
  • Battery ขนาด AA 6 ก้อน
  • Battery Box ขนาด AA 6 ก้อน

Continue reading

เขียนเรื่อง Arduino ไปหลายตอนก็เลยคิดว่าน่าจะเขียนเรื่อง Arduino Standalone บ้าง เพราะคงไม่มีใครเอาบอร์ด Arduino UNO ทั้งตัวเอาไปทำผลิตภัณฑ์ขายล่ะคับ ซึ่งคนทำผลิตภัณฑ์ก็ต้องออกแบบ PCB ที่มี ATMega + Regulator และวงจรที่ใช้งานมาด้วยในตัว ก็เลยน่าจะเขียนเรื่องนี้บ้าง จะได้เป็นจุดเริ่มต้นสำหรับท่านที่สนใจอยากทดลองหรืออยากเอาไปทำผลิตภัณฑ์ก็ได้เหมือนกัน ก่อนอื่นสิ่งที่ต้องมี

  • 1x ATMEGA328P-PU + Arduino UNO R3 Bootloader
  • 1x Crystal 16MHz
  • 2x 22pF capacitors
  • ถ่าน 3V หรือ Regulator 5.0-3.3V DC

อ้อและที่สำคัญผังขา ATMEGA328P อย่าลืมเอาไว้อ้างอิง :)
Continue reading

Genymotion เป็น Android Emulator ที่มาพร้อมกับ Android System Image และ AVD สำเร็จรูปมากกว่า 10 ตัว ช่วยให้นักพัฒนาไม่ต้องกังวลเรื่องการตั้งค่า AVD อีกต่อไป ที่สำคัญ Genymotion ทำงานเร็วกว่า Emulator ที่มากับ Android SDK มากๆ Genymotion มีเครื่องมือช่วยนักพัฒนาหลายอย่างทั้งการเชื่อมต่อกับ Webcam, GPS, Screencast และอีกมากมาย Genymotion สามารถดาวน์โหลดมาใช้งานได้ฟรี หรือเสียเงินเพื่อใช้งาน feature เสริมอื่นๆ ที่ต้องการได้ อย่าช้าสมัครสมาชิกแล้วดาวน์โหลดได้เลย

Continue reading