[TH] Bare Metal Cortex-M Ep.4

บทความนี้กล่าวถึงการใช้งานพอร์ตสื่อสารอนุกรม UART ซึ่งนิยมใช้มานาน และสะดวกต่อการใช้งาน โดยใช้ขา PA9 และ PA10 ต่อเข้าเป็นขา Tx และ Rx ของไมโครคอนโทรลเลอร์ทั้ง cortex-M0/M3/M4 เชื่อมต่อกับขา Rx/Tx ของตัวแปลงระดับแรงดันสัญญาณสำหรับสื่อสารผ่านทางพอร์ต USB ซึ่งตัวอย่างโปรแกรมเป็นการประมวลผลในไมโครคอนโทรลเลอร์และนำออกผลลัพธ์ผ่านทางพอร์ตสื่อสารอนุกรมที่ใช้งานโปรแกรม moserial เป็นซอฟต์แวร์สื่อสารข้อมูลดังภาพที่ 1

ภาพที่ 1 ตัวอย่างผลลัพธ์จากการทำงานของโปรแกรมตัวอย่าง

[TH] Python multi-threaded programming

บทความนี้กล่าวถึงการเขียนโปรแกรมแบบหลายเธรดของภาษาไพธอน โดยเรียบเรียงจากเว็บไซต์ tutorialspoint.com (ทำให้บทความนี้เป็นเสมือนบันทึกช่วยจำ) ซึ่งการเรียกใช้หลายเธรดเปรียบเสมือนการเรียกใช้โปรแกรมที่แตกต่างกันหลายโปรแกรมพร้อมกันแต่มีประโยชน์ดังนี้

  • แต่ละเธรดสามารถใช้หน่วยความจำร่วมกันกับเธรดหลัก และสามารถสื่อสารระหว่างกันได้
  • เธรดเป็นโปรเซสที่มีขนาดเล็กเนื่องจากไม่สิ้นเปลือง over head (หน่วยความจำ) ของการเรียกใช้เหมือนการเรียกโปรเซสเพิ่ม

[TH] Ticker Class : esp8266 Timer interrupt

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

[TH] PyGlet

pyglet เป็นไลบรารีสำหรับภาษาไพธอนเพื่อสร้างหน้าต่าง และมัลติมีเดียข้ามแพล็ตฟอร์มบนระบบปฏิบัติการวินโดวส์ (Windows) แมคโอเอส (macOS) และลินุกซ์ (Linux) สำหรับใช้พัฒนาเกมหรือแอปพลิเคชันเกี่ยวกับวิชวลไลเซชัน ตัวไลบรารีรองรับการสร้างหน้าต่าง การเชื่อมประสานกับผู้ใช้ผ่านทางระบบการทำงานตามเหตุการณ์ รองรับกราฟิกส์ของโอเพนจีแอล (OpenGL) รองรับการโหลดภาพ/วีดิทัศน์ และเล่นเสียงเพลง/ดนตรี โดยบทความนี้กล่าวถึงการติดตั้งและใช้งาน pyglet บน Raspberry Pi 3 B+ และ Raspberry Pi 4 เป็นอุปกรณ์ทดสอบบทความ

ภาพที่ 1 ตัวอย่างจาก 1-6

[TH] u8g2 Library

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

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

[EN] ulab EP1 Getting Started

For ESP8266’s MicroPython to perform mathematical calculations like using Python’s numpy library, MicroPython with ulab must be installed. You can download firmware for ESP8266 HERE. For normal ESP32 and with additional PSRAM (SPIRAM).

This article is an introduction to ulab and an overview of the libraries within ulab for further application.

(Figure. 1 MicroPython+ulab firmware on RSP8266

[TH] ulab v3.0

จากบทความ ulab ก่อนหน้านี้จะพบว่า Micropython สามารถใช้งานคำสั่งเกี่ยวกับการประมวลผลชุดข้อมูลเหมือนกับใช้ใน Numpy ได้ผ่านทางไลบรารี ulab ซึ่งก่อนหน้านี้ทีมผู้เขียนใช้งานรุ่น 0.54.0 ซึ่งเก่ากว่ารุ่นปัจจุบัน คือ 3.0.1 ทำให้เกิดบทความนี้ขึ้นมา โดยบทความกล่าวถึงวิธีการสร้าง Micropython ที่ผนวกไลบรารี ulab เข้าไป และใช้งานกับ esp32 รุ่นที่มี SPIRAM

ภาพที่ 1 รายการโมดูลของ ulab

ulab3

จากภาพที่ 1 จะพบว่า โครงสร้างไลบรารีของ ulab เปลี่ยนแปลงไปจากเดิม ทำให้การเขียนโปรแกรมจากตัวอย่างก่อนหน้านี้ต้องมีการปรับเปลี่ยน ซึ่งภายใต้ ulab จะมีไลบรารีของ numpy และ scipy เข้ามา ซึ่งรายละเอียดของ numpy ที่รองรับเป็นดังนี้

[TH] ESP Class

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