[TH] _thread

บทความนี้เป็นเรื่องเกี่ยวกับการใช้คลาส _thread กับไมโครคอนโทรลเลอร์ ESP32 ซึ่งมีหน่วยประมวลผล 2 แกน (core) แต่อย่างไรก็ดีคลาสเธรดเป็นโมดูลที่เป็นส่วนย่อยจากโมดูล cython และขณะที่เขียนบทความยังไม่สมบูรณ์พร้อมใช้งาน โดยโครงสร้างของคลาสเป็นดังภาพที่ 1 และคลาสย่อย LockType เป็นดังภาพที่ 2

[TH] random

การสุ่มตัวเลขในภาษาไพธอนใช้คลาส random แต่ในระบบไมโครคอนโทรลเลอร์ไม่มีระบบที่สนับสนุนการสุ่มมากเหมือนในระบบคอมพิวเตอร์ทำให้ Micropython รองรับคำสั่งแตกต่างกันไปตามประเภทของชิพ โดยในบทความนี้กล่าวถึงการใช้ random กับไมโครคอนโทรลเลอร์ esp8266 และ esp32 ซึ่งมีคำสั่งให้ใช้งานเพียงสร้างตัวเลขสุ่ม และกำหนดค่า seed ของการสุ่มดังนี้

[TH] machine.RTC

บทความนี้นำรายละเอียดของคลาส machine.RTC ของ Micropython มาเรียนรู้กัน โดยหน้าที่หลักของคลาสนี้คือ ออกแบบมาเพื่อเป็น RTC (Real-Time Clock) หรือนาฬิกาฐานเวลาจริง ภายในไมโครคอนโทรลเลอร์สำหรับเก็บวันที่และเวลาจึงทำให้สะดวกมากขึ้นเมื่อใช้งานร่วมกับชิพ ESP8266 หรือ ESP32 เนื่องจากสามารถเข้าถึง NTP เพื่ออ่านวันที่และเวลาจากอินเทอร์เน็ตหลังจากนั้นนำค่ามาเก็บลง RTC ทำให้มีวันที่และเวลาที่ถูกต้องพร้อมทั้งไม่ต้องเข้าถึงอินเทอร์เน็ตบ่อย ๆ เพื่ออ่านค่าดังกล่าวอีกครั้ง ซึ่งประหยัดการใช้วงจร RTC ภายนอกอีกด้วย

[TH] esp/esp32 class

บทความนี้เป็นการเรียนรู้การใช้งานคลาส esp และ esp32 ที่เป็นคลาสสำหรับใช้งานเฉพาะกับไมโครคอนโทรลเลอร์ esp8266 และ esp32 เพื่อเข้าถึงคุณลักษณะเฉพาะ และความสามารถภายในของชิพทั้ง 2

[TH] machine.SPI

จากบทความเรื่อง machine.Pin ได้กล่าวถึงการใช้งานขาของไมโครคอนโทรลเลอร์เพื่อนำเข้าข้อมูลและส่งออกข้อมูลไปแล้ว และในบทความการสื่อสารผ่านบัส I2C ซึ่งใช้คลาส machine.I2C เพื่อสื่อสารระหว่างอุปกรณ์ ในคราวนี้มารู้จักคลาส machine.SPI ซึ่งเป็นการสื่อสารอีกรูปแบบหนึ่งที่ได้รับการยอมรับถึงความเร็วในการทำงาน และนิยมใช้กับจอแสดงผลกราฟิก (บทความของ esp8266/esp32) หรือช่องอ่าน SD-Card (บทความของ esp8266, esp32)

[TH] ESP32 machine.Timer

บทความนี้กล่าวถึงการใช้ตัวฮาร์ดแวร์ตั้งเวลาหรือไทม์เมอร์ (Timer) ทั้ง 4 ของ ESP32 เพื่อใช้สำหรับการให้โปรแกรมทำงานเมื่อเป็นตามค่าเวลาที่กำหนดไว้ ความแตกต่างระหว่างการใช้ไทม์เมอร์กับการหน่วงเวลา time.sleep()/time.sleep_ms()/time.sleep_us() คือ การหน่วงเวลาคือการวนรอบเพื่อให้หน่วยประมวลผลเสียเวลาไปการวนรอบเพื่อให้ครบกับระยะเวลาที่กำหนด ขณะที่ไทม์เมอร์ใช้หลักการให้ฟังก์ชันทำงานทุกครั้งเมื่อถึงคาบเวลาที่กำหนดไว้ ดังนั้น ขณะที่ไทม์เมอร์ไม่ได้เรียกฟังก์ชันให้ทำงาน หน่วยประมวลผลมีเวลาเหลือหรือค่าว่างงาน (idle time) สำหรับประมวลผลอื่น ๆ ได้ และมีความแตกต่างกับการขัดจังหวะหรืออินเทอร์รัพต์ตรงที่เป็นการขัดจังหวะด้วยตัวตั้งเวลาแทนการขัดจังหวะจากสถานะของขาที่เชื่อมต่อกับวงจรภายนอก

[TH] RTC DS1302 and Micropython

บทความนี้อธิบายการเขียนโปรแกรมเพื่อใช้งาน DS1302 (ภาพที่ 1) ซึ่งเป็นไอซีที่ทำหน้าที่เป็น RTC (Real-Time Clock) อีกตัวหนึ่ง (ก่อนหน้านี้ได้เขียนถึง PCF8583 ด้วยภาษาไพธอนและ Arduino C++) และเป็นโมดูลที่นิยมใช้ในการเริ่มต้นศึกษาเนื่องจากเป็นโมดูลในชุดเรียนรู้ทั้งของ Arduino, IoT, 37-Sensors หรือ 45 Sensors เป็นต้น

ภาพที่ 1 ตัวอย่างการต่อใช้โมดูล ds1302

[TH] Arduino: JoyStick Shield

บทความนี้แนะนำการใช้ Game Pad/Joystick กับบอร์ด Arduino Uno หรือ Arduino Mega เนื่องจากเป็นโมดูลที่ออกแบบเป็น Shield ของบอร์ดทั้ง 2 เมื่อนำมาประกอบจะได้เกมแพดน่ารัก ๆ 1 ชิ้นดังภาพที่ 1 โดยในบทความอธิบายเพิ่มเติมเกี่ยวกับข้อมูลของการเชื่อมต่อระหว่างอุปกรณ์แต่ละชิ้นกับ GPIO พร้อมตัวอย่างการใช้งาน ซึ่งเนื้อหาเกี่ยวกับโมดูลจอยสติกอ่านได้จากบทความก่อนหน้านี้

ภาพที่ 1 Joystick Shield

[TH] Arduino: Joystick Module

บทความนี้เป็นการเขียนโปรแกรมเพื่อใช้งานโมดูลจอยสติก (Joystick) ดังภาพที่ 1 ซึ่งตัวโมดูลสามารถบอกข้อมูลการเคลื่อนที่ในแกน X การเคลื่อนที่ในแกน Y และสถานะการกดสวิทตช์ที่ตัวจอยสติก โดยตัวอย่างการใช้งานโมดูลนี้เป็นการใช้กับบอร์ด esp32 โดยใช้ภาษา C++ เพื่อเชื่อมต่อกับ GPIO ด้วยคำสั่งที่เคยกล่าวไปแล้วในบทความนี้

ภาพที่ 1 โมดูลจอยสติกกับ esp32

[TH] An Interrupt in MicroPython

บทความนี้อธิบายหลักการทำการขัดจังหวะหรืออินเทอร์รัพต์ (Interrupt) และการดักการเกิดการขัดจังหวะด้วย MicroPython โดยทดลองกับ ESP8266 และ ESP32 เพื่อเป็นแนวทางในการเขียนโปรแกรมตอบสนองการเกิดเหตุการณ์จากภายนอกโดยไม่ต้องรอให้งานที่ทำอยู่นั้นทำเสร็จก่อน

ภาพที่ 1 การทดลองตรวจจับระยะด้วยการดักการขัดจังหวะ