[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] ESP-01s

บทความนี้แนะนำโมดูล esp8266 ชื่อ ESP-01s ที่มีขาให้เชื่อมต่อ 8 ขา โดยอธิบายหน้าที่ของแต่ละขา การขยายวงจรเพื่อโปรแกรมชิพ (ตัวอย่างดังภาพที่ 1) การทำให้ชิพทำงาน และรวมถึงตัวอย่างการเขียนโปรแกรมเพื่อใช้งานโมดูลนี้ด้วย Arduino เพื่อให้เห็นภาพรวมในการพัฒนระบบซึ่งเป็นระบบที่ราคาน่ารักน่าสนใจระบบหนึ่ง

ภาพที่ 1 บอร์ดโปรแกรมชิพ ESP8266 ที่ใช้กับโมดูล ESP-01/ESP-01s

[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] How to finds the nth data from a list?

บทความนี้เรามาทำความเข้าใจและเขียนโปรแกรมเพื่อหาข้อมูลลำดับที่ n จากลิสต์ของข้อมูลด้วยภาษาไพธอน โดยทดสอบกับ Python และ Micropython กัน

[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 เพียงเส้นเดียวทำให้ประหยัดขาได้มากกว่า

[TH] I2C Bus/Wire.h

บทความนี้เป็นการอธิบายเมธอดต่าง ๆ ของ Wire.h ซึ่งเป็นคลาสสำหรับสื่อสารกับอุปกรณ์ผ่านบัสประเภท I2C ที่ใช้สายสัญญาณ 2 เส้นเรียกว่า SDA และ SCL สำหรับรับส่งข้อมูลระหว่างกัน ศึ่งพวกเรามีบทความเกี่ยวกับการสื่อสารประเภทนี้ค่อนข้างเยอะ และใช้เป็นบัสหลักในการพัฒนาอุปกรณ์ขึ้นมาเองแล้วเรียกใช้งานผ่านบัส เข่น บทความการใช้ esp8266 เชื่อมต่อกัย Arduino Uno หรือ การใช้ esp8266 กับ stm32f030f4p6 เป็นต้น