วันพุธที่ 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


จากนั้นให้เราเปิดไปที่ 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 เขามาก่อนที่จะใช้งานดังนี้


และต้องทำการเพิ่ม function ที่ชื่อว่า init เข้าไปด้วย


Source code



Create Make Target

ขั้นตอนการสร้าง Make Target ให้คลิกที่ Tab Make Target ที่อยู่ทางด้วนขวามือ ให้มองหาชื่อที่เป็นชื่อเดียวกันกับชื่อโปรเจ็คทร่เราทำงานอยู่ แล้วทำการเพิ่ม Target ตามรูป



Make Target
  1. all คือสั่ง build source code
  2. clean คือสั่งล้าง output ที่ได้จากการ build
  3. flash คือสั่ง flash firmware
  4. rebuild สั่ง rebuild source code ใหม่
การใช้งาน Make Target ก็แค่ double click ที่คำสั่งแต่ล่ะคำสั่ง

ขอให้สนุกกับ Sming น่ะครับ






Donate

วันเสาร์ที่ 22 สิงหาคม พ.ศ. 2558

Sming Framework ตอนที่2(การกำหนดค่าต่าง ๆ ใน Eclipse)

การกำหนดค่าต่าง ๆ ใน Eclipse

ก่อนที่จะเริ่มเขียนโปรแกรมเราด้วย eclipse เรามาทำความรู้จักส่วนต่างและการกำหนดค่า
ของ IDE กันก่อน


จะแบ่งออกเป็น 3 ส่วนใหญ่ ๆ คือ
  1. ซ้ายมือสุดจะเรียกว่า Project Explorer เป็นส่วนที่แสดงรายการ Project ของเราที่ได้สร้างเอาไว้แล้ว
  2. ตรงกลาง ในส่วนนี้จะแบ่งออกเป็นอีกสองส่วน คือส่วนบน กับส่วนล่าง ส่วนบนจะเป็นพื้นที่ใช้สำหรับการเขียน Code ส่วนล่าง เป็นส่วนรายงานผลต่างไม่ว่าจะเป็น Error จากการ compile หรือรายงานผลที่ได้จากการ compile
  3. ขวามือสุด ที่จะใช้งานคือ 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 จนครบแล้วจะได้ดังรูป


มาถึงตอนนี้เราก็พร้อมที่จะเขียนโปรแกรมกันแล้ว





Donate

วันอาทิตย์ที่ 16 สิงหาคม พ.ศ. 2558

Sming Framework ตอนที่1(บทนำ)


Sming Framework คืออะไร?

Sming Framework คือ Framework ที่ใช้ในการพัฒนา WIFI Module ESP8266 ในรูปแบบของ Native โดยใช้ C++ เป็นภาษาหลักในการพัฒนา ซึ่งท่าผูพัฒนาได้เตรียบ object ต่างให้เราได้ใชงานอย่างสะดวก ตัวอย่างเช่น
  1. FtpServer
  2. HttpServer
  3. HttpRequest
  4. HttpResponse
  5. TemplateFileStream
  6. HttpClient
  7. MqttClient
  8. Timer
  9. WifiAccessPoint
  10. WifiStation
  11. JsonObject
  12. SpifFS
เครื่องมื่อที่ใช้ในการพัฒนา

ในการพัฒนา ESP8266 ด้วย Sming Framework นั้นจะใช้ Eclipse CDT (C++) ในการพัฒนา 


บทความในเรื่องนี้จะมีทั้งหมด 20 ตอน
  1. การกำหนดค่าต่าง ๆ ใน Eclipse
  2. Hello World (Blink)
  3. Basic Serial
  4. Serial Message Receive Callback
  5. Basic GPIO Input/Output
  6. WFI Station Mode
  7. WIFI AP Mode
  8. DHT22 Sensor reader
  9. i2c LiquidCrytal LCD
  10. OLED LCD
  11. HTTP Client ThingSpeak
  12. Ftp Server
  13. Basic bootstrap
  14. Basic JQuery
  15. Sample Web Page
  16. HTTP API for data reading/writeing
  17. Json Pparser
  18. Web control interface
  19. Introduction for MQTT
  20. MQTT Publish / Subscribe


กาติดตั่งเครื่องมือและ Framework

ในการติดตั่งเครื่องมือสามารถเข้าไปดูที่เว็ปของผู้พัฒนาได้ที่นี่ โดยจะสามารถใช้งานได้ 3 Plateform

  1. Windows
  2. Mac OS
  3. Linux

ในการติดตั้งแนะนำว่าให้ทำตามขั้นตอนอย่างเคร่งคัด รับรองว่าสามารถใช้งานได้แน่นอน

ตัวอย่างโปรเจ็คที่พัฒนาจาก Sming Framework











ครั้งนี้ก็ลองไปติดตั่งเครื่องมือกันให้เรียบร้อยคราวหน้าเราจะมาเริ่มต้นพัฒนา ESP8266 ด้วย Sming Framework สำหรับใครที่ติดตั่งแล้วมีปัญหาในการใช้งานก็ฝากคำถามไว้ได้เลยน่ะครับ




Donate

วันอังคารที่ 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 ให้เราเรียกใช้งานได้ข้อนข้างสะดวก เช่น
  • การจัดการเกี่ยวกับ 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)

การอ้างอิง GPIO ทางด้าน Hardware  กับ NodeMCU



ใน 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
ตัวอย่าง 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
ตัวอย่าง 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)



Donate

การใช้งาน MyPi ESP-DEV

MyPi ESP-DEV เป็น ESP8266 Development Board ที่ได้ทำงานต่อขาของ ESP8266 ออกมาให้พร้อมใช้งาน และมีวงจร regulator 3.3v มาให้บนบอร์ดเรียบร้อยโดยที่จ่ายไป 5-7 Volt DC



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





Donate

การใช้งาน 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)



ตัวอย่างการใช้งาน








Donate

วันพุธที่ 20 พฤษภาคม พ.ศ. 2558

เมื่อ NodeMCU Firmware มีปัญหา!

หลายๆ คนที่เล่น ESP8266 WIFI Module ในแบบ LUA Script บางครั้งอาจเจอปัญหาว่าอยู่ดีๆทำไม Upload Script ไม่ได้ หรืออยู่ดีๆ ทำไมใช่งานไม่ได้ซ่ะงั้น

เปิดขึ้นมาค้างไม่ยอม 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 ของเราก็กลัมมาใช้งานได้อีกครั้ง





Donate