[TH] Ticker Class : esp8266 Timer interrupt

บทความนี้กล่าวถึงการใช้ Ticker กับไมโครคอนโทรลเลอร์ ESP8266 เพื่อสร้างการขัดจังหวะจากสัญญาณนาฬิกา แทนการหน่วงเวลาด้วย delay() ทำให้ระยะเวลาที่ต้องเสียจากการวนรอบด้วย delay() ถูกใช้ไปทำอย่างอื่น และสร้างประสิทธิภาพต่อซอฟต์แวร์ที่พัฒนา

[TH] u8g2 Library

จากบทความการใช้ ESP8266 กับจอแสดงผลกราฟิกแบบ OLED ซึ่งเขียนด้วยภาษาไพธอนจะพบว่าการทำงานนั้นสะดวกรวดเร็วในระดับดี แต่เมื่อต้องใช้กับไมโครคอนโทรลเลอร์ตัวอื่นที่ไม่สามารถใช้ Micropython หรือ CircuitPython ได้นั้นจะต้องทำอย่างไร ซึ่งหนึ่งในหลายทางเลือกคือไลบรารี u8glib หรือ u8g2 (Universal 8 bit Graphics Library) ที่ออกแบบมาเพื่อทำงานกับกราฟิกแบบ 8 บิตแบบโมโนโครมทั้งผ่านการสื่อสารแบบ I2C หรือ SPI โดยบทความนี้ใช้อุปกรณ์ต่อเชื่อมกันดังภาพที่ 1 ด้วยการใช้ OLED แบบ I2C

ภาพที่ 1 การเชื่อมต่อ STM32F401CCU6 กับ OLED แบบ I2C

[TH] ESP Class

บทความนี้เป็นการเข้าไปดูรายละเอียดของไฟล์ ESP.h ของ esp8266 Arduino เพื่อศึกษาหน้าที่ฟังก์ชันต่าง ๆ ซึ่งมีประโยชน์มากต่อการเขียนโปรแกรมเพื่อควบคุมการทำงานของไมโครคอนโทรลเลอร์ตัวนี้ เช่น การทราบจำนวนหน่วยความจำที่เหลืออยู่ หรือขนาดหน่วยความจำใหญ่ที่สุดที่สามรถจองได้ ซึ่งใช้ในการกรณีที่ต้องการเขียนโปรแกรมที่ใช้หน่วยความจำแบบพลวัติ (Dynamic) เพื่อเก็บรายชื่อ AP ที่พบทั้งหมด เป็นต้น โดยการผู้เขียนโปรแกรมสามารถใช้คลาสนี้ได้โดยตรงจากวัตถุ ESP

[TH] ESP8266 WebServer

บทความนี้เป็นการทดลองทำให้ไมโครคอนโทรลเลอร์ esp8266 เป็นเครื่องให้บริการเว็บเพื่อแสดงผลค่าอุณหภูมิและความชื้นจากเซ็นเซอร์ DHT11 โดยใช้ไลบรารีของ Adafruit ดังภาพที่ 1 และเมื่อกำหนดให้ไมโครคอรโทรลเลอร์ทำงานในโหมด SoftAP เพื่อให้ลูกข่ายหรือผู้ใช้เชื่อมต่อ WiFi เข้ามาหลังจากนั้นใช้ Browser เข้าไปยัง IP หมายเลข 192.168.4.1 ซึ่งเป็นหมายเลขของ esp8266

ภาพที่ 1 ตัวอย่างการการต่ออุปกรณ์สำหรับบทความ

[TH] ESP-01s + Relay

บทความนี้เป็นการประยุกต์ใช้โมดูล ESP-01s เชื่อมต่อกับโมดูล ESP-01/01s Relay v4.0 ดังภาพที่ 1 เพื่อสั่งงานให้รีเลย์ทำงาน โดยตัวอย่างโปรแกรมเป็นการเปิดและปิดรีเลย์ผ่านทางเว็บบราวเซอร์ซึ่งได้กล่าวถึงไปบ้างแล้วในบทความ WebServer แต่เพิ่มเติมคือเรื่องการดัก URL สำหรับนำมาเป็นอาร์กิวเมนต์ของการทำงาน

ภาพที่ 1 ตัวอย่างการทดลองในบทความ ESP-01s + Relay

[TH] Arduino : ESP8266 GPIO

ในบทความนี้เป็นการเรียนรู้เรื่องของ GPIO (General Purpose I/O) หรือขาเชื่อมต่อกับอุปกรณ์ภายนอกของไมโครคอนโทรลเลอร์ด้วยภาษา C++ ของ Arduino โดยใช้ esp8266 เป็นชิพอ้างอิง ซึ่งสามารถนำไปประยุกต์ใช้กับ Arduino Uno, Arduino Mega หรือ STM32 ได้เช่นกัน ภายใต้บทความนี้อธิบายเรื่องของการกำหนดหน้าที่ของขา การนำสัญญาณออก และการนำสัญญาณเข้า

ภาพที่ 1 WeMos D1 กับ GPIO ที่ทำหน้าที่ต่าง ๆ

[TH] ESP8266WiFi

บทความนี้เป็นการเรียบเรียงข้อมูลที่เกี่ยวของกับคลาส ESP8266WiFi ซึ่งทำหน้าที่ด้านระบบ WiFi ของไมโครคอนโทรลเลอร์ ESP8266 โดยคลาสดังกล่าวนี้สามารถเข้าถึงผ่านทางวัตถุชื่อ WiFi ที่เป็นวัตถุที่ถถูกสร้างขึ้นสำหรับเข้าถึงโมดูลไร้สายของชิพ และต้องนำเข้าไฟล์ส่วนหัวชื่อ ESP8266WiFi.h

[TH] WiFiServer

หลังจากได้ศึกษาเรื่องของ ESP8266WiFi เพื่อควบคุมการทำงานของไมโครคอนโทรลเลอร์ให้เชื่อมต่อกับเครือข่ายไร้สายในแบบ STA และ SoftAP ไปแล้ว หลังจากนั้นได้เรียนรู้การใช้ WiFiClient เพื่อใช้ esp8266 เป็นโหนดลูกข่าย ในครั้งนี้เป็นเรื่องของ WiFiServer เพื่อให้ esp8266 ทำหน้าที่เป็นโหนดให้บริการหรือ Server โดยตัวอย่างในบทความนี้เป็นการสร้างระบบเครือข่ายภายในโดยใช้ esp8266 จำนวน 3 ตัวเพื่อทำหน้าที่เป็น SoftAP, Server และ Client ดังภาพที่ 1

[TH] WiFiClient

หลังจากได้กล่าวถึงคลาส ESP8266WiFi ไปในบทความก่อนหน้านี้ ครั้งนี้มาเรียนรู้เกี่ยวกับการใช้คลาส WiFiClient เพื่อเขียนโปรแกรมในฝั่งลูกข่ายที่เชื่อมโยงไปยังเครื่องให้บริการหรือ Server

[TH] SPI Bus

บทความนี้กล่าวถึงฟังก์ชันการใช้งานของบัส SPI ของเฟรมเวิร์ก Arduino เพื่อใช้กับ STM32F030F4P6, STM32F103C8, STM32F401, esp8266 และ esp32 ซึ่งการทำงานของบัสนี้ต้องการสายสัญญาณสำหรับสื่อสารระหว่างกันอย่างน้อย 3 เส้น คือ SCLK, MISO และ MOSI สำหรับทำหน้าที่ส่งสัญญาณนาฬิการะหว่างกันของผู้ส่งและผู้รับ ทำหน้าที่รับข้อมูลจากผู้ส่ง และใช้สำหรับส่งข้อมูลไปให้ผู้รับ

จากการใช้สายสัญญาณ 3 เส้นจะพบว่า สามารถส่งและรับข้อมูลพร้อมกันได้ ซึ่งแตกต่างกับการสื่อสารแบบบัส I2C ที่ใช้สาย SDA เพียงเส้นเดียวในการสื่อสาร ดังนั้น อาจจะกล่าวได้ว่า ด้วยความเร็วในการสื่อสารที่เท่ากัน บัสแบบ SPI จะรับและส่งข้อมูลได้โดยไม่ต้องรอสายสัญญาณว่าง ขณะที่ I2C จะต้องรอให้ว่างก่อน ด้วยหลักคิดนี้จึงทำให้ SPI รับ/ส่งข้อมูลได้รวดเร็วกว่า

นอกจากนี้ SPI ใช้วิธีการเลือกปลายทางที่ต้องการสื่อสารด้วยการสั่งให้ปลายทางรู้ด้วยการส่งสัญญาณไปที่ขา SS ของอุปกรณ์ปลายทาง ดังนั้น เมื่อเชื่อมต่อกับหลายอุปกรณ์จึงส่งผลให้ SPI ต้องการจำนวนขาในการทำงานที่มากกว่า ขณะที่ I2C ใช้การระบุคำแหย่งของอุปกรณ์ในการสื่อสารระหว่างกัน โดยยังคงใช้สาย SDA เพียงเส้นเดียวทำให้ประหยัดขาได้มากกว่า