[TH] เกม 15-Puzzle

บทความนี้เป็นตัวอย่างเกม 15-Puzzle โดยใช้บอร์ด ml4m ที่มีผลลัพธ์ของหน้าจอดังภาพที่ 1 ซึ่งเป็นเกมที่ทำให้ผู้เล่นได้ฝึกทักษะการคิดแบบมีกลยุทธ์มีการมองเกมล่วงหน้าเพื่อวางแผนการเลื่อนตัวเลข นอกจากนี้เกม 15-puzzle นอกจากอยู่ในรูปแบบของตัวเลขแล้วยังสามารถเปลี่ยนแปลงจากตัวเลขให้เป็นภาพ คือ เปลี่ยนเป็นภาพ 1 ภาพและแบ่งออกเป็น 16 ส่วน แล้วให้ผู้เล่นทำการเลื่อนภาพเพื่อต่อให้เหมือนกับต้นฉบับ นอกจากนี้ในตัวอย่างมีการใช้บัซเซอร์ในการสร้างเสียงบี๊บโดยใช้ DAC ขนาด 8 บิตของไมโครคอนโทรลเลอร์ esp32 พร้อมทั้งการเขียนโปรแกรมเลือกใช้ภาษาไพธอนบน MicroPython เช่นเคย

ภาพที่ 1 ตัวอย่างการสุ่มค่าในตาราง 4×4

[TH] ESP32-ML4M กับเกม Tic-Tac-Toe ภาคจบ

จากบทความเกม Tic-Tac-Toe หรือเกมโอเอ็กซ์ที่เล่นกับคอมพิวเตอร์ (esp32) ผ่านทางคอนโซลของโปรแกรมเทอร์มินอลซึ่งไม่สะดวก คราวนี้มาเรียนรู้การใช้วงจรต่อพ่วงของ esp32 ของบอร์ด ML4M (ภาพที่ 1) ว่ามีวงจร I/O อย่างไรบ้าง และตัวอย่างเกม Tic-Tac-Toe ที่เล่นผ่านอุปกรณ์เป็นอย่างไร ซึ่งในโค้ดมีการทำงานกับโมดูลจอยสติก และสวิตช์แบบสัมผัส

ภาพที่ 1 บอร์ด ml4m บอร์ดทดสอบเกม Tic-Tac-Toe

[TH] เกม Tic-Tac-Toe

บทความนี้เป็นเก็บตกตัวอย่างเกมโอเอ็กซ์หรือ Tic-Tac-Toe ที่ทางทีมเราใช้ในการสอนวิชาพัฒนาเกมด้วยภาษาต่าง ๆ ตามความเหมาะสมกับกลุ่มผู้เรียน แต่ส่วนใหญ่จะใช้ภาษาไพธอนในการนำสอนเนื่องจากอธิบายและเขียนไปด้วยได้สะดวกกว่าภาษาอื่น ประกอบกับอยากให้มองเห็นแนวทางการนำไปใช้กับแพลตฟอร์มอื่น ๆ บ้าง ทางพวกเราจึงนำตัวอย่างมาใช้กับ MicroPython ของบอร์ดที่เราตั้งชื่อกันว่า ml4m ซึ่งมีที่มาจากบอร์ดนี้ติดตั้ง TensorFlow Lite บน ESP32 แบบ ROM 4MB โดยบอร์ดมีหน้าตาดังภาพที่ 1

ภาพที่ 1 บอร์ด ml4m บอร์ดทดสอบเกม Tic-Tac-Toe

[TH] แสดงเวลาจาก NTP และ TimeLib ด้วย esp8266

บทความนี้เป็นตัวอย่างการใช้ไลบรารี NTP และ TimeLib ของเฟรมเวิร์ก Arduino กับ ESP-01s (ดังภาพที่ 1) หรือ esp8266 เพื่อรายงานเวลาปัจจุบันผ่านทางเว็บที่ให้บริการโดยไมโครคอนโทรลเลอร์ esp8266 ซึ่งในตัวอย่างนี้มีการเรียกใช้ไลบรารี NTPClient และ TimeLib โดยต้องมีการเชื่อมต่อเข้ากับเครือข่ายอินเทอร์เน็ตในการอ่านวันที่และเวลาจากเครื่องให้บริการ NTP เช่น time.nist.gov เป็นต้น

ภาพที่ 1 โมดูล ESP-01s บนบอร์ด dCore-0 รุ่น 0.7

[TH] แถบแสดงค่าอุณหภูมิและความชื้น

บทความนี้เป็นตัวอย่างโปรแกรมสำหรับกรณีที่ต้องการแสดงแถบแสดงค่าอุณหภูมิและความชื้นดังภาพที่ 1 ด้วย MicroPython กับบอร์ด esp32 ที่ติดตั้ง OLED จะเขียนอย่างไร โดยอุปกรณ์ในการทดลองครั้งนี้ใช้ DHT22 เป็นอุปกรณ์วัดความชื้นและอุณหภูมิ โดยบอร์ดเชื่อมต่อกับบัส I2C เพื่อสื่อสารกับ OLED ผ่านทางขา GPIO4 และ GPIO5 สำหรับทำหน้าที่ SCL และ SDA ตามลำดับ พร้อมกันนี้ได้ต่อขาสัญญาณของ DHT22 เข้ากับขา GPIO15 เพื่อใช้สื่อสารกันระหว่างเซ็นเซอร์กับไมโครคอนโทรเลอร์

ภาพที่ 1 ตัวอย่างผลัพธ์ของการแสดงแถบแสดงค่าอุณหภูมิและความชื้น

[TH] List Class Application Node: Count the frequency from a random value.

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

ภาพที่ 1 การแสดงกราฟความถี่ของข้อมูล

[TH] DHT11 Web Report

บทความนี้เป็นการประยุกต์รวมการเขียนโปรแกรมภาษาไพธอนสำหรับ Micropython ที่ใช้กับ esp8266 หรือ esp32 ที่ต่อกับ DHT11 สำหรับเก็บค่าอุณหภูมิและความชื้น โดยรายงานผลอุณหภูมิ 10 รายการหลังสุดที่เก็บทุก 5 วินาทีให้เห็นดังภาพที่ 1

ภาพที่ 1 ตัวอย่างผลลัพธ์ของการแสดงผล

[TH] Queue Data Structure

บทความนี้แนะนำการใช้คลาส list ใน Micropython มาประยุกต์เป็นโครงสร้างข้อมูลคิวที่มีจำนวนสมาชิกจำกัด และทำงานตามหลักการ FIFO (First-In-First-Out) ซึ่งสามารถนำไปประยุกต์ใช้ได้หลากหลาย เช่น ใช้เป็นที่เก็บข้อมูลและเมื่อข้อมูลมีเต็มแล้วแต่ต้องการนำข้อมูลใหม่ใส่เข้าไป ดังนั้น จึงต้องนำข้อมูลเก่าอันดับที่ 1 ที่ใส่เข้ามาออกไป ซึ่งตรงกับหลักการของ FIFO เป็นต้น โดยตัวอย่างในบทความนี้ใช้บอร์ด dCore-miniML (ในภาพที่ 1) อ่านข้อมูลอุณหภูมิของชิพมาเก็บไว้ในโครงสร้างแบบคิวและแสดงผลออกมาในลักษณะของกราฟแท่ง และไมโครไพธอนที่นำมาใช้เป็นเฟิร์มแวร์รุ่น 1.16 (2021-06-23) สำหรับ ESP Module (SPIRAM)

ภาพที่ 1 ตัวอย่างการวาดกราฟด้วยข้อมูลที่เก็บในโครงสร้างข้อมูลแบบคิว

[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 (หน่วยความจำ) ของการเรียกใช้เหมือนการเรียกโปรเซสเพิ่ม