วันพุธที่ 11 พฤศจิกายน พ.ศ. 2558
Smart-Io
การใช้งาน Smart-IO กับ cloudmaker
cloudmaker เป็นระบบ cloud application ที่มาพร้อมกับ UI ที่ทำให้เราสามารถใช้งานได้เลยไม่ต้องมานั่งพัฒนาในส่วนของการติดต่อกับผู้ใช่งานอีกซึ่งเป็นงานที่ไม่ถนัดของผู้ที่บางทางสาย hardware
คัวระบบพัฒนามาจาก NodeJS + MongoDB ที่มี MQTT Broker ทำงานอยู่เบื่องหลัง
วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2558
Sming Framework ตอนที่3 (Basic GPIO Input/Output)
ในตอนนีี้เราจะมาทำการสร้างโปรเจ็ค HelloWorld สำหรับชาว Hardware กันนั่นก็คือ ไฟกระพริบ หลังจากที่เราทำการสร้างโปรเจ็คใน Eclipse และ กำหนดค่าต่างๆ เรียบร้อยแล้วนั้นเราจะไดเโปเจ็คโล่ง ๆมาแบบนี้
Create source file
และต้องทำการเพิ่ม function ที่ชื่อว่า init เข้าไปด้วย
Create source file
จากนั้นให้เราเปิดไปที่ Sample ของ Sming Framework ในที่นี้จะยกตัวอย่าง Basic_Blink
ให้เรา copy 2 File กับอีก 1 Folder คืด Makefile, Makefile-user.mk, include ไปไว้ใน Project ของ Eclipse วิธีการง่าย ๆ คือ คลิกเลือกที่ 2 File กับ 1 Folder นั้นแล้วกด Ctrl+C แล้วไปคลิกเลือกที่ Root project ใน Eclipse จากนั้นกด Ctrl+V ก็จะได้ดังรูปด้านล่าง
จากนั้นให้ทำการเพิ่ม Folder ใน Project โดยให้คลิกขวาที่ Root project แล้วเลือกที่เมนู New -> Folder
กำหนดในช่อง Folder name เป็น app จากนั้นกดปุ่ม Finish
ต่อไปเราจะมาเพิ่ม source file ให้คลิกที่ Root project -> app แล้วเลือกที่เมนู New ->Source File
แล้วกำหนดชื่อในช่อง Source file เป็น application.cpp จากนั้นกดปุ่ม Finish
สิ่งที่เราได้จากขั้นตอนต่าง ๆ
หลังจากที่เราได้ main source file มาแล้วเราต้องทำการเพิ่ม include header เขามาก่อนที่จะใช้งานดังนี้
Source code
Create Make Target
ขั้นตอนการสร้าง Make Target ให้คลิกที่ Tab Make Target ที่อยู่ทางด้วนขวามือ ให้มองหาชื่อที่เป็นชื่อเดียวกันกับชื่อโปรเจ็คทร่เราทำงานอยู่ แล้วทำการเพิ่ม Target ตามรูป
Make Target
- all คือสั่ง build source code
- clean คือสั่งล้าง output ที่ได้จากการ build
- flash คือสั่ง flash firmware
- rebuild สั่ง rebuild source code ใหม่
การใช้งาน Make Target ก็แค่ double click ที่คำสั่งแต่ล่ะคำสั่ง
ขอให้สนุกกับ Sming น่ะครับ
วันเสาร์ที่ 22 สิงหาคม พ.ศ. 2558
Sming Framework ตอนที่2(การกำหนดค่าต่าง ๆ ใน Eclipse)
การกำหนดค่าต่าง ๆ ใน Eclipse
ก่อนที่จะเริ่มเขียนโปรแกรมเราด้วย eclipse เรามาทำความรู้จักส่วนต่างและการกำหนดค่า
ของ IDE กันก่อน
การสร้างโปรเจ็คใหม่
ที่เมนู File เลือก New -> C++ Project
ก่อนที่จะเริ่มเขียนโปรแกรมเราด้วย eclipse เรามาทำความรู้จักส่วนต่างและการกำหนดค่า
จะแบ่งออกเป็น 3 ส่วนใหญ่ ๆ คือ
- ซ้ายมือสุดจะเรียกว่า Project Explorer เป็นส่วนที่แสดงรายการ Project ของเราที่ได้สร้างเอาไว้แล้ว
- ตรงกลาง ในส่วนนี้จะแบ่งออกเป็นอีกสองส่วน คือส่วนบน กับส่วนล่าง ส่วนบนจะเป็นพื้นที่ใช้สำหรับการเขียน Code ส่วนล่าง เป็นส่วนรายงานผลต่างไม่ว่าจะเป็น Error จากการ compile หรือรายงานผลที่ได้จากการ compile
- ขวามือสุด ที่จะใช้งานคือ Tab Make Target จะเป็นชุดคำสั่งที่ใช้ในการอ้างอิงกับ Make File ด้วยคำสั่ง make
การสร้างโปรเจ็คใหม่
ที่เมนู File เลือก New -> C++ Project
จากนั้นจะเจอหน้าต่าง C++ Project ให้เลือกไปที่ Makefile project -> Empty Project ส่วนทางขวาในช่อง Toolchains ให้เลือกเป็น Cross GCC จากนั้นใส่ชื่อโปรเจ็คในช่อง Project name ด้านบน จากนั้นกดปุ่ม Finish
ที่ root project ให้คลิกขวา เลือก Properties จะเจอหน้าต่าง Propertied for xxx ให้เลือกที่ C/C++ General -> Paths and Symbols คลิกเลือกที่ Tab Include
คลิกที่ปุ่ม Add ขวามือสุดเพื่อทำการเพื่ม Include directories
จะเจอหน้าต่าง Add directory path ให้คลิกเลือกที่ Add to all languages แล้วคลิกที่ปุ่ม Variables จะเจอกับหน้าต่าง Select build variable เราจะมาเพิ่มในส่วนของ ESP_HOME
พิมพ์ที่ช่องด้านบน ESP จากนั้นจะได้ข้อมูลดังรูปแล้วคลิกเลือกที่ ESP_HOME
จากนั้นทำการเพิ่มอีกดังรูป
ต่อไปเราจะมาเพิ่มในส่วนของ SMING_HOME
จากนั้นกดปุ่ม Ok จากนั้นทำการเพิ่มอีกดังต่อไปนี้
เมื่อทำการเพิ่ม Include directories จนครบแล้วจะได้ดังรูป
มาถึงตอนนี้เราก็พร้อมที่จะเขียนโปรแกรมกันแล้ว
วันอาทิตย์ที่ 16 สิงหาคม พ.ศ. 2558
Sming Framework ตอนที่1(บทนำ)
Sming Framework คืออะไร?
Sming Framework คือ Framework ที่ใช้ในการพัฒนา WIFI Module ESP8266 ในรูปแบบของ Native โดยใช้ C++ เป็นภาษาหลักในการพัฒนา ซึ่งท่าผูพัฒนาได้เตรียบ object ต่างให้เราได้ใชงานอย่างสะดวก ตัวอย่างเช่น
- FtpServer
- HttpServer
- HttpRequest
- HttpResponse
- TemplateFileStream
- HttpClient
- MqttClient
- Timer
- WifiAccessPoint
- WifiStation
- JsonObject
- SpifFS
เครื่องมื่อที่ใช้ในการพัฒนา
ในการพัฒนา ESP8266 ด้วย Sming Framework นั้นจะใช้ Eclipse CDT (C++) ในการพัฒนา
บทความในเรื่องนี้จะมีทั้งหมด 20 ตอน
- การกำหนดค่าต่าง ๆ ใน Eclipse
- Hello World (Blink)
- Basic Serial
- Serial Message Receive Callback
- Basic GPIO Input/Output
- WFI Station Mode
- WIFI AP Mode
- DHT22 Sensor reader
- i2c LiquidCrytal LCD
- OLED LCD
- HTTP Client ThingSpeak
- Ftp Server
- Basic bootstrap
- Basic JQuery
- Sample Web Page
- HTTP API for data reading/writeing
- Json Pparser
- Web control interface
- Introduction for MQTT
- MQTT Publish / Subscribe
กาติดตั่งเครื่องมือและ Framework
ในการติดตั่งเครื่องมือสามารถเข้าไปดูที่เว็ปของผู้พัฒนาได้ที่นี่ โดยจะสามารถใช้งานได้ 3 Plateform
ในการติดตั้งแนะนำว่าให้ทำตามขั้นตอนอย่างเคร่งคัด รับรองว่าสามารถใช้งานได้แน่นอน
ตัวอย่างโปรเจ็คที่พัฒนาจาก Sming Framework
ครั้งนี้ก็ลองไปติดตั่งเครื่องมือกันให้เรียบร้อยคราวหน้าเราจะมาเริ่มต้นพัฒนา ESP8266 ด้วย Sming Framework สำหรับใครที่ติดตั่งแล้วมีปัญหาในการใช้งานก็ฝากคำถามไว้ได้เลยน่ะครับ
วันอังคารที่ 16 มิถุนายน พ.ศ. 2558
Basic LUA Script (ตอนที่ 1)
การพัฒนา Application ใน NodeMCU นั้นจะต้องใช้ภาษาโปรแกรมมิ่งที่ชื่อว่า LUA ซึ่ง LUA นั้นเป็นภาษา Script ที่มีการใช้งานอยู่ทั่วไปอยู่แล้วบน Plateform PC สามารถดูรายล่ะเอียดได้ ที่นี่ ทั้งนี้ NodeMCU เองมีรากฐานมาจาก eLua Project ซึ่งรองรับ MCU หลายค่ายอยู่เหมือนกัน
NodeMCU API
ในการพัฒนา Application บน NodeMCU ด้วย Lua Script นั้นข้อนข้างง่ายเพราะ NodeMCU นั้นได้มีการสร้าง API ให้เราเรียกใช้งานได้ข้อนข้างสะดวก เช่น
การอ้างอิง GPIO ทางด้าน Hardware กับ NodeMCU
NodeMCU API
ในการพัฒนา Application บน NodeMCU ด้วย Lua Script นั้นข้อนข้างง่ายเพราะ NodeMCU นั้นได้มีการสร้าง API ให้เราเรียกใช้งานได้ข้อนข้างสะดวก เช่น
- การจัดการเกี่ยวกับ Hardware เช่น การ Restart ตัว Hardware (node module)
- เรื่องของระบบ File (file module)
- การจัดการเกี่ยวกับ Wifi ทั้ง AP และ Station
- ใน NodeMCU ก็ยังมี timer ให้เราใช้งาน (timer module)
- GPIO (gpio module)
- PWM (pwm module)
- Network (net module)
- การใช้งาน MQTT (mqtt module)
- การทำงานกับ Json Data (cjson module)
- การใช้งาน OLED LCD i2c (u8g module)
ใน NodeMCU จะไม่ได้ใช้หมายเลข GPIO ของ Hardware ในใช้งานตรง ๆ แต่จะมี Table Mapping ใช้ในการอ้างอิงด้วย Index แทน เช่น Index 5 จะเท่ากับ GPIO14 ก่อนทำการทดลองให้ลองกลับไปอ่าน Setup NodeMCU ในการทำงานแบบ Interactive Mode
การใช้งาน GPIO ด้วย Lua Script
การใช้งาน GPIO ของ ESP8266 นั้นเราต้องกำหนด Direction ก่อนว่าเราต้องการใช้เป็น Input หรือ Output
gpio.mode()
Description
initialize pin to GPIO mode, set the pin in/out mode, internal pullup.
Syntax
gpio.mode(pin, mode, pullup)
Parameters
pin: 0~12, IO index
mode: gpio.OUTPUT or gpio.INPUT, or gpio.INT(interrupt mode) pullup: gpio.PULLUP or gpio.FLOAT, default: gpio.FLOAT
mode: gpio.OUTPUT or gpio.INPUT, or gpio.INT(interrupt mode) pullup: gpio.PULLUP or gpio.FLOAT, default: gpio.FLOAT
ตัวอย่าง Code การ Set Mode GPIO
gpio.read()
Description
read pin value.
Syntax
gpio.read(pin)
Parameters
pin: 0~12, IO index
Returns
number:0 - low, 1 - high
-- set gpio 0 as output.
gpio.mode(0, gpio.OUTPUT)
gpio.write()
Description
set pin value.
Syntax
gpio.write(pin)
Parameters
pin: 0~12, IO index
level: gpio.HIGH or gpio.LOW
level: gpio.HIGH or gpio.LOW
ตัวอย่าง Code การอ่านค่าสถานะ Input และ Output
-- read value of gpio 0.
gpio.read(0)
ตัวอย่าง Code การเขียนค่าสถานะ Output
-- set pin index 1 to GPIO mode, and set the pin to high.
pin=1
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, gpio.HIGH)
การใช้งาน MyPi ESP-DEV
MyPi ESP-DEV เป็น ESP8266 Development Board ที่ได้ทำงานต่อขาของ ESP8266 ออกมาให้พร้อมใช้งาน และมีวงจร regulator 3.3v มาให้บนบอร์ดเรียบร้อยโดยที่จ่ายไป 5-7 Volt DC
Pin 1 <-----> 3.3V
Pin 2 <-----> Data
MyPi ESP-DEV Pin Layout
ในบอร์ดก็ยังได้มี Port สำหรับการต่อ i2c และ DHT-11, 12 มาให้พร้อมไม่ต้องไปต่อสายภายนอกเพิ่มเติม
ช่องต่อ i2c สามารถต่อใช้งาน OLED LCD ได้เลยทำให้สะดวกเวลาในการ Develop
สำหรับการต่อสายเพื่อทำการ Upload File Script ให้เราต่อสายจาก USB To Serial ตรงๆ ได้เลยเพราะในวงจรได้ทำการสลับ RX กับ TX ไว้ให้แล้ว
USB To Serial ESP-DEV
RX <--------> RX
TX <--------> TX
GND <--------> GND
การต่อใช้งาน DHT11, 22 จะใช้ Connector ที่อยู่ทางด้านล่างของ ESP8266 โดยที่
Pin 1 <-----> 3.3V
Pin 2 <-----> Data
Pin 3 <-----> NC
Pin 4 <-----> GND
การต่อใช้งานจริงทั้ง OLED LCD กับ DHT22
การใช้งาน OLED LCD กับ NodeMCU
OLED (Organic Light Emitting Diodes) จอแสดงผล หน้าจอ 128x64 ขนาด 0.96" เชื่อมต่อแบบ i2c ใช้ไฟได้ทั้ง 3.3V หรือ 5V ให้จอสว่างแสดงผลมองเห็นได้อย่างชัดเจน และประหยัดไฟ สามารถวาดภาพกราฟฟิกส์เป็นรูปต่าง ๆ หรือทำเป็นเมนูตามแบบที่ต้องการได้
ใน NodeMCU ก็ไม่มีการเพิ่ม Module ที่ใช้งานมาให้เราแล้วนั่นคือ
u8g module
สำหรับตัวที่เราจะใช้นั้นใช้ Driver เบอร์ SSD1206 Interface แบบ i2c แต่ก่อนจะใช้งานได้ต้องมั่นใจได้ว่าเป็น NodeMCU Firmware Version ล่าสุดแล้วเพราะไม่งั้นจะใช้ u8g Module ไม่ได้ Firmware Version ล่าสุดสามารถ Download ได้ ที่นี่
Download Code ตัวอย่าง(Link อยู่ด้านล่าง) Upload Code โดยใช้โปรแกรม ESPlorer โดย Click ที่ปุ่ม Upload
หลังจากที่ Upload เสร็จแล้วให้กดปุ่ม Reload ที่อยู่ทางด้านขวา จะมีปุ่มเพิ่มขึ้นมาที่มีชื่อตามชื่อ File ตามที่เรา Upload ไป จากนั้นให้ click ขวาที่ปุ่มนั้น แล้วเลือก เมนู Compile xxx.lua จากนั้นจะได้ File xxx.lc เพิ่มขึ้นมา ทำการทดสอบโดย click ที่ปุ่ม xxx.lc
ในการใช้งานขั้นตอนแรกเราต้องทำการกำหนดค่าของ i2c ก่อน โดยที่ตัวแปร sda = 3 (GPIO0) scl = 4 (GPIO2)
ตัวอย่างการใช้งาน
วันพุธที่ 20 พฤษภาคม พ.ศ. 2558
เมื่อ NodeMCU Firmware มีปัญหา!
หลายๆ คนที่เล่น ESP8266 WIFI Module ในแบบ LUA Script บางครั้งอาจเจอปัญหาว่าอยู่ดีๆทำไม Upload Script ไม่ได้ หรืออยู่ดีๆ ทำไมใช่งานไม่ได้ซ่ะงั้น
เปิดขึ้นมาค้างไม่ยอม boot ค้างทำอะไรไม่ถูกไปต่อไม่ได้ซึ่งอาการแบบนี้บางทีแค่ Flash Firmware ใหม่อย่างเดียวก็ไม่หาย
ก่อนอื่นให้เราทำการล้าง flash ใหม่โดยใช้โปรแกรม ESP8266Flasher โดยทำการตั้งค่าดังนี้แล้วกดปุ่ม Flass ตามปรกติรอจนกว่าจะเสร็จ จากนั้นก็ทำการ Flash Firmware ตามประติ แตือย่าลืมเอา check ที่ address 0x40000, 0x7C000, 0x7E000 ออกก่อนด้วย
เปิดขึ้นมาค้างไม่ยอม boot ค้างทำอะไรไม่ถูกไปต่อไม่ได้ซึ่งอาการแบบนี้บางทีแค่ Flash Firmware ใหม่อย่างเดียวก็ไม่หาย
ซึ่งอาจจะมี file ขยะอยู่เลยทำให้ระบรวน
ก่อนอื่นให้เราทำการล้าง flash ใหม่โดยใช้โปรแกรม ESP8266Flasher โดยทำการตั้งค่าดังนี้แล้วกดปุ่ม Flass ตามปรกติรอจนกว่าจะเสร็จ จากนั้นก็ทำการ Flash Firmware ตามประติ แตือย่าลืมเอา check ที่ address 0x40000, 0x7C000, 0x7E000 ออกก่อนด้วย
หลังจาก Flash Firmware กดปุ่ม File List แล้วยังเจอ File ขยะแบบนี้อีก
ให้เราทำการ Format File System ก่อน โดยไปที่ Menu ESP -> Format ESP
กดปุ่ม File List ดูใหม่ File ขยะต้องหายไปสะอาดเอี่ยม
ทีนี้ ESP ของเราก็กลัมมาใช้งานได้อีกครั้ง
สมัครสมาชิก:
บทความ (Atom)