[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] 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 เป็นต้น

[TH] Arduino : DHT Sensor

บทความนี้เป็นการอธิบายการใช้งานไลบรารี DHT Sensor ของ Adafruit ที่รองรับกับทุกสถาปัตยกรรมที่ใช้กับ Arduino ได้ ทำให้สามารถประยุกต์การใช้งานเซ็นเซอร์ DHT ซึ่งใช้สำหรับอ่านค่าความชื้นและอุณหภูมิได้สะดวกและกับหลายแพลตฟอร์มได้ง่ายขึ้น โดยบทความนี้ได้ทดสอบกับ ESP32, ESP8266, Arduino UNO และ stm32f103c แล้วพบว่าสามารถใช้งานได้โดยไม่ต้องปรับแก้ไขโค้ดในส่วนของการทำงานหรือต้องเข้าไปแก้ไขรหัสต้นฉบับเพื่อให้ใช้งานได้กับแพลตฟอร์มที่ใช้งาน

ภาพที่ 1 dht22 Sensor กับ BluePill

[TH] Arduino : RTC DS1302

จากบทความการเขียนโปรแกรมภาษาไพธอนบน Micropython เพื่อใช้งาน RTC เบอร์ DS1302 ในคราวนี้เปลี่ยนภาษาการเขียนโปรแกรมเป็น C++ สำหรับ Arduino โดยใช้ไมโครคอนโทรลเลอร์ Cortex-M0 เบอร์ STM32F030F4P6 / esp8266 และ Arduino Mega เป็นตัวทำงานแทน ESP32 ดังภาพที่ 1, 2 และ 6 โดยรายงานการทำงานออกทางพอร์ต RS232 เพื่อแสดงวันและเวลาตามตัวอย่างผลลัพธ์ในภาพที่ 4

ภาพที่ 1 การทดลอง DS1302 กับ STM32F30F4_6

[TH] RTC PCF8583

จากบทความภาษาไพธอนสำหรับใช้งานบอร์ด pcf8583 ที่ทำหน้าที่เป็น RTC (Real-time clock) ทางทีมเราเลยนำโค้ดมาเขียนใหม่เพื่อใช้กับภาษา C++ ของ Arduino โดยทดสอบกับ esp8266, esp32 และ stm32