รายการบทความ#

ตัวอย่างบทความที่ได้มีการเรียบเรียงและรวบรวมมาแชร์ไว้ ในเนื้อหาวิชาที่เกี่ยวข้องกับวิศวกรรมไฟฟ้าและคอมพิวเตอร์ ซึ่งเป็นผลจากการศึกษาเรียนรู้และปฏิบัติด้วยตนเองเป็นส่วนใหญ่ และบางส่วนได้จากประสบการณ์การสอนในอดีตของผู้เขียน หวังว่าจะมีประโยชน์ต่อผู้ที่สนใจและศึกษาเรียนรู้ครับ


▹ การเรียนรู้ไมโครคอนโทรลเลอร์และระบบสมองกลฝังตัวด้วย Arduino Hardware & Software#

หากสนใจการเรียนรู้การเขียนโปรแกรมสำหรับบอร์ดไมโครคอนโทรลเลอร์ (Microcontroller: MCU) เช่น ภาษา C/C++ ซึ่งเป็นพื้นฐานที่สำคัญสำหรับการพัฒนาระบบสมองกลฝังตัว (Embedded Systems Development) เราจะพบว่า มีตัวเลือกหลากหลายทั้งซอฟต์แวร์และฮาร์ดแวร์ และกล่าวได้ว่า Arduino เป็นหนึ่งในตัวเลือกที่น่าสนใจและเป็นตัวเลือกแรกสำหรับผู้เริ่มต้น → มีบทความที่เกี่ยวข้องดังนี้

  • Arduino Ecosystem: กล่าวถึงภาพรวมของ Arduino การพัฒนาจากอดีตมาถึงปัจจุบัน ซอฟต์แวร์และฮาร์ดแวร์ที่เกี่ยวข้องกับ Arduino เป็นต้น
  • CPU Chips on Arduino Boards: กล่าวถึง ตัวเลือกชิปในประเภทไมโครคอนโทรลเลอร์ (MCU) สำหรับบอร์ด Arduino หลายรุ่น
  • Single Board Computers (SBCs) with Arduino Support: คอมพิวเตอร์บอร์ดเดี่ยวที่รองรับการเขียนโปรแกรมด้วย Arduino
  • การเขียนโปรแกรมภาษา C: ตอนที่ 1 | 2 | 3
  • บอร์ด Arduino Nano: ความแตกต่างของบอร์ดจากต่างผู้ผลิตและการเลือกใช้งาน
  • การใช้งานซอฟต์แวร์ VS Code IDE + PlatformIO เพื่อเขียนโค้ด Arduino สำหรับบอร์ด เช่น Arduino Uno Rev.3 หรือ Nano v3.0
  • การใช้งาน Arduino CLI: การทำคำสั่งแบบ Command Line
  • ตัวอย่างการสร้าง C++ Class เพื่อใช้งานเป็นไลบรารีสำหรับ Arduino: RGB LED และ 4x4 Membrane Keypad
  • การกระเด้งของปุ่มกด (Switch Bouncing) การแก้ปัญหาและทดลองเขียนโค้ดด้วย Arduino (ATmega328P)
  • การใช้โมดูล 8-bit LED Bar เพื่อการฝึกเขียนโค้ด Arduino Sketch โดยใช้ Wokwi Simulator และใช้บอร์ด Arduino Nano และ ESP32
  • การสื่อสารด้วยบัส SPI และเขียนโปรแกรมด้วย Arduino
  • การใช้งานไมโครคอนโทรลเลอร์ ATtiny85 การเขียนโปรแกรม Arduino และจำลองการทำงานด้วย Wokwi AVR Simulator
  • ตัวอย่างการเขียนโค้ดภาษา C แบบ Bare-Metal และใช้งานซอฟต์แวร์ GCC AVR Toolchain / Arduino IDE สำหรับชิป AVR / ATmega328P: ตอนที่ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
  • Arduino LED Blink: ตัวอย่างการเขียนโค้ดที่ทำให้ LED กระพริบได้ด้วยวิธีที่แตกต่างกันหลายวิธี โดยใช้บอร์ด Uno / Nano
  • Arduino I/O Toggle: ตัวอย่างการเขียนโค้ดเพื่อสร้างและวัดสัญญาณแบบพัลส์ โดยใช้บอร์ด Uno / Nano
  • การใช้งาน Arduino TimerOne Library สำหรับบอร์ดไมโครคอนโทรลเลอร์ Arduino Uno / Nano
  • ตัวอย่างการเขียนโค้ดเพื่อวัดความถี่ของสัญญาณที่มีคาบโดยใช้บอร์ด Uno / Nano: Frequency Measurement with Arduino
  • การอ่านค่าจาก ADC เพื่อปรับความกว้างพัลส์ของสัญญาณ PWM: ADC Reading and PWM Output with Arduino: โดยใช้บอร์ด Uno / Nano และ ESP32
  • GCC AVR - Inline Assembly: ตัวอย่างการเขียนโค้ดและการจำลองการทำงานด้วย Wokwi AVR Simulator
  • ตัวเลือกในการดีบักโค้ดสำหรับชิปไมโครคอนโทรลเลอร์ AVR: AVR Debugging Tools
  • การใช้งานบอร์ด Arduino Due Rev.3 (ATSAM3x8e, 32-bit Arm Cortex-M3 CPU)
  • การใช้งานบอร์ด Arduino Uno R4 WiFi ในเบื้องต้น

▹ ไมโครคอนโทรลเลอร์ตระกูล Arm Cortex-M Series และซอฟต์แวร์ที่เกี่ยวข้อง#

ไมโครคอนโทรลเลอร์ที่ใช้ซีพียูเป็น 32-bit Arm Cortex-M ถือว่าเป็นตัวเลือกที่ได้รับความนิยม มีการใช้งานแพร่หลาย ดังนั้นความรู้เกี่ยวกับการใช้งานชิปตระกูลนี้ จึงเป็นพื้นฐานที่สำคัญ บอร์ดไมโครคอนโทรลเลอร์ที่แนะนำให้ลองใช้งาน ได้แก่ STM32 NUCLEO, Black Pill STM32F4 และ Raspberry Pi Pico เป็นต้น


▹ การใช้งานฮาร์ดแวร์และซอฟต์แวร์ของบริษัท Atmel / Microchip#

หากต้องการใช้ไมโครคอนโทรลเลอร์ของบริษัท Atmel / Microchip เช่น ตระกูล AVR, SAM, PIC แนะนำให้ลองใช้ซอฟต์แวร์ Microchip MPLAB-X IDE และมีบทความที่เกี่ยวข้องดังนี้

  • แนะนำการใช้งานซอฟต์แวร์ MPLAB-X IDE สำหรับ AVR (ATmega328P)
  • แนะนำการใช้งานซอฟต์แวร์ MPLAB Xpress Cloud IDE สำหรับการเขียนโค้ดภาษา C สำหรับชิป AVR (ATmega328P)
  • การนำเข้าไฟล์ Arduino Sketch สำหรับ MPLAB-X IDE สำหรับ AVR (ATmega328P)
  • แนะนำการใช้งานซอฟต์แวร์ MPLAB-X IDE + Harmony Framework v3 สาธิตการเขียนโค้ดสำหรับ ATSAMD21 (Arm Cortex-M0+)

▹ ระบบปฏิบัติการเวลาจริงสำหรับการเขียนโปรแกรมไมโครคอนโทรลเลอร์#

ระบบปฏิบัติการเวลาจริง หรือ RTOS (Real-Time OS) เป็นประเภทหนึ่งของระบบปฏิบัติการ (OS) ถือว่าเป็นซอฟต์แวร์ที่มีความสำคัญสำหรับการพัฒนาระบบสมองกลฝังตัว-ไมโครคอนโทรลเลอร์ ดังนั้นความรู้และทักษะเกี่ยวกับการเขียนโปรแกรมแบบมัลติเธรด (Multi-Threading) หรือแบ่งการทำงานแบบหลายงาน จึงเป็นสิ่งสำคัญสำหรับนักพัฒนาในระดับมืออาชีพ → แนะนำให้ลองศึกษาจากบทความต่อไปนี้

  • สำหรับผู้ที่สนใจเรียนรู้และใช้งาน RTOS: แนวทางการเรียนรู้ RTOS
  • แนวทางการเรียนรู้ Arm Mbed OS for Arm Cortex-M Series MCUs ซึ่งเป็นซอฟแวร์ประเภท Open Source RTOS
  • ซอฟต์แวร์ที่เกี่ยวข้องกับการใช้งาน Mbed OS มีให้เลือกหลายแบบและนำมาใช้งานได้ฟรี ทั้งแบบ Online (Web App) และ Offline (Desktop App)
  • การเขียนโปรแกรมด้วย Arm Mbed Studio IDE + Mbed OS สำหรับบอร์ด Black Pill (STM32F4)
  • การเขียนโปรแกรมด้วย VS Code IDE + PlatformIO + Mbed OS สำหรับบอร์ด Black Pill (STM32F4)
  • ตัวอย่างการเขียนโค้ด Arm Mbed OS สำหรับบอร์ด STM32 (NUCLEO Boards) แบ่งเนื้อหาเป็นตอนที่ 1 | 2 | 3
  • แนวทางการเรียนรู้ ARM Mbed OS โดยใช้บอร์ด Raspberry Pi Pico
  • ตัวอย่างการเขียนโค้ดด้วย Arduino Mbed OS สำหรับบอร์ด RP2040 (Raspberry Pi Pico Board) แบ่งเนื้อหาเป็นตอนที่ 1 | 2 | 3 | 4 | 5
  • แนะนำการเขียนโค้ดสำหรับบอร์ด STM32F411CE BlackPill ด้วย STM32duino และ FreeRTOS
  • ตัวอย่างการเขียนโค้ดด้วย Arduino + FreeRTOS สำหรับชิป 8-bit AVR / ATmega (เช่น บอร์ด Uno, Nano, Mega2560) แบ่งเนื้อหาเป็นตอนที่ 1 | 2 | 3 | 4 | 5

▹ ไมโครคอนโทรลเลอร์สำหรับงาน IoT: ESP32 SoCs#

หากต้องการเลือกใช้ไมโครคอนโทรลเลอร์ที่ไม่ได้ใช้สถาปัตยกรรมของซีพียูตระกูล Arm ก็แนะนำให้ลองใช้ชิป ESP32 Series ของบริษัท Espressif ซึ่งมีจุดเด่นคือ สามารถเชื่อมต่อ Wi-Fi และ Bluetooth / BLE ได้


▹ ภาษาคอมพิวเตอร์ที่ไม่ใช่ C/C++ สำหรับไมโครคอนโทรลเลอร์#

ภาษา C/C++ เป็นภาษาคอมพิวเตอร์ที่สำคัญสำหรับการพัฒนาโปรแกรมสำหรับระบบสมองกลฝังตัว แต่ในปัจจุบัน Python ก็เป็นอีกหนึ่งภาษาที่ได้รับความนิยม และได้เริ่มมีการนำมาใช้งานสำหรับไมโครคอนโทรลเลอร์ → มีบทความที่เกี่ยวข้องต่อไปนี้

  • Python for Hardware Programming: การใข้งาน MicroPython และ CircuitPython ในเบื้องต้น
  • แนะนำการเขียนโค้ดสำหรับไมโครคอนโทรลเลอร์ด้วย MicroPython
  • การเขียนโปรแกรม MicroPython สำหรับบอร์ด BBC Micro:bit V2
  • การเขียนโปรแกรม MicroPython สำหรับบอร์ด Raspberry Pi Pico / Pico-W

▹ การใช้งานระบบปฏิบัติการ Linux และการเขียนโปรแกรมที่เกี่ยวข้อง#

ความรู้และทักษะทางด้านคอมพิวเตอร์ที่เกี่ยวข้องกับระบบปฏิบัติการ Linux และการเขียนโปรแกรมภาษา C/C++ ก็ถือว่าเป็นพื้นฐานที่สำคัญมาตั้งแต่อดีตจนถึงปัจจุบัน ในส่วนนี้มีบทความและหัวข้อมาแนะนำให้ลองศึกษาและปฏิบัติ

  • การใช้ GNU C/C++ Toolchain สำหรับการคอมไพล์โค้ดในเบื้องต้น
  • การใช้ซอฟต์แวร์ Geany เพื่อการเขียนโปรแกรมภาษา C/C++ (สำหรับ Linux / Ubuntu)
  • การใช้งาน VS Code IDE สำหรับ Remote Development (ใช้ Windows เป็น Local OS และ Linux / Ubuntu เป็น Remote OS)
  • การเขียนโปรแกรมภาษา C: ตอนที่ 1 | 2 | 3
  • การเขียนโค้ดภาษา C/C++ ให้ทำงานแบบ Multi-Threading ด้วยไลบรารี Pthreads สำหรับ Linux
  • MQTT และการใช้งานสำหรับ Linux: ตอนที่ 1 | 2 | 3 | 4 | 5
  • การติดตั้ง Zigbee2MQTT (สำหรับ Linux) และใช้งานในเบื้องต้น

▹ การใช้งานคอมพิวเตอร์บอร์ดเดี่ยว#

ปัจจุบันคอมพิวเตอร์บอร์ดเดี่ยว (Single-Board Computer: SBC) มีขนาดเล็ก ใช้กำลังไฟฟ้าไม่มาก มีตัวประมวลผลทั้ง 32 บิต หรือ 64 บิต ให้เลือกใช้ และมีหลายแกนอยู่ภายในชิป (Multi-Core) ดังนั้นจึงมีความสามารถมากกว่าไมโครคอนโทรลเลอร์ทั่วไป รองรับระบบปฏิบัติการ เช่น Linux และ Android เป็นต้น สามารถนำมาใช้งานได้ทั้งแบบตั้งโต๊ะ หรือเป็นเครื่องแม่ข่าย และงานทางด้านระบบสมองกลฝังตัว ดังนั้นความรู้และทักษะในการใช้งานฮาร์ดแวร์และซอฟต์แวร์สำหรับอุปกรณ์ประเภทนี้ ก็ถือว่าเป็นพื้นฐานที่สำคัญด้าน IoT


▹ การใช้งานโมดูลอิเล็กทรอนิกส์#

การประยุกต์ใช้งานไมโครคอนโทรลเลอร์ เกี่ยวข้องกับการใช้งานวงจรอิเล็กทรอนิกส์ ไอซี และโมดูลเซนเซอร์ประเภทต่าง ๆ รายการบทความต่อไปนี้นำเสนอการใช้งานโมดูลอิเล็กทรอนิกส์และเขียนโปรแกรมด้วย Arduino ในเบื้องต้น


▹ วงจรไฟฟ้าและอิเล็กทรอนิกส์#

นอกเหนือจากความรู้เกี่ยวกับการเขียนโปรแกรมแล้ว ความรู้ทางไฟฟ้าและอิเล็กทรอนิกส์และทักษะที่เกี่ยวข้อง ก็มีความสำคัญเช่นกัน → มีบทความที่เกี่ยวข้องต่อไปนี้

  • การใช้งานบอร์ด Arduino ควบคู่กับการทดลองไฟฟ้าและอิเล็กทรอนิกส์: Using Arduino for Circuits & Electronics Labs
  • การต่อวงจรไฟฟ้าและอิเล็กทรอนิกส์พื้นฐานบนแผงต่อวงจร: Breadboards & Circuit Prototyping
  • การใช้งานมัลติมิเตอร์สำหรับการวัดปริมาณทางไฟฟ้าในเบื้องต้น: Multimeters
  • แนะนำซอฟต์แวร์: Autodesk Tinkercad Circuits
  • ซอฟต์แวร์สำหรับการวิเคราะห์และจำลองการทำงานของวงจรไฟฟ้า-อิเล็กทรอนิกส์: Circuits and Electronics Simulation Software
  • แนะนำการต่อวงจรเสมือนจริงร่วมกับบอร์ด Arduino Uno ด้วยซอฟต์แวร์ AUTODESK Tinkercad Circuits: Arduino & Circuit Virtual Prototyping
  • การฝึกต่อตัวต้านทานหลายตัวบนเบรดบอร์ดและวัดค่าความต้านทานรวม: Resistor-Only Circuit Lab
  • โครงข่ายของตัวต้านทานแบบ Binary Tree และ Ladder Structure และการหาค่าความต้านทานรวม: Resistor Network and Resistance Measurement
  • R-2R DAC Lab: การฝึกต่อวงจร บนเบรดบอร์ดร่วมกับบอร์ด Arduino Uno
  • Voltage Divider Lab: การฝึกต่อวงจรแบ่งแรงดันบนเบรดบอร์ดร่วมกับบอร์ด Arduino Uno
  • Voltage Measurement with Micro:bit: การวัดค่าความต้านทานด้วยบอร์ด Micro:bit และจำลองการทำงานด้วย AUTODESK Tinkercad
  • สิ่งที่ควรรู้เกี่ยวกับการใช้งาน "ออสซิลโลสโคป" (Oscilloscopes)
  • แนะนำการใช้งานออสซิลโลสโคป RIGOL DS1054Z ในเบื้องต้น
  • USB Logic Analyzer + PulseView: แนะนำการใช้งานเพื่อการบันทึกและวิเคราะห์สัญญาณดิจิทัล
  • RIGOL DS1054Z + PulseView: แนะนำการใช้งานเพื่อการบันทึกและวิเคราะห์สัญญาณแอนะล็อก-ดิจิทัล
  • การใช้งานออสซิลโลสโคปและการเขียนโปรแกรมเชื่อมต่อ: RIGOL DS1054Z
  • ตัวอย่างการใช้ซอฟต์แวร์เพื่อการวิเคราะห์วงจรไฟฟ้าพื้นฐาน (มีตัวอย่างการใช้ซอฟต์แวร์ EasyEDA การเขียนโค้ด MATLAB และ Python):
    • การวิเคราะห์และจำลองการทำงานของวงจรไฟฟ้ากระแสตรง: DC Circuit Analysis
    • การวิเคราะห์และจำลองการทำงานของวงจรไฟฟ้ากระแสสลับ: AC Circuit Analysis
    • การใช้วิธีโหนดและเมชเพื่อวิเคราะห์วงจรไฟฟ้าพื้นฐาน: Mesh and Nodal Circuit Analysis
    • การใช้แหล่งจ่ายไฟฟ้ากระแสตรงและวิเคราะห์วงจร: Constant DC Sources & Circuit Analysis
    • การวิเคราะห์วงจรไฟฟ้าพื้นฐานที่มี R, L, C: RLC Circuit Analysis
    • วงจรกรองความถี่แบบพาสซีฟสำหรับสัญญาณทางไฟฟ้า: Passive Filter Analysis
  • การทดลองหาค่าความจุของตัวเก็บประจุไฟฟ้าโดยใช้วงจร RC และบอร์ด Arduino Uno / Nano: Capacitance Measurement with Arduino
  • วิธีการวัดค่าของตัวเหนี่ยวนำหรือคอยล์โดยใช้วงจร RLC การวัดสัญญาณด้วยออสซิลโลสโคป: Inductance Measurement + Arduino Sketch Demo
  • ตัวอย่างวงจรอิเล็กทรอนิกส์: การสร้างสัญญาณพัลส์เมื่อกดปุ่มแล้วปล่อยโดยใช้ลอจิกเกตพื้นฐาน
  • ความรู้พื้นฐานเกี่ยวกับไอซีลอจิกมาตรฐาน: Standard Logic ICs
  • ความรู้พื้นฐานเกี่ยวกับไอซีลอจิกประเภทแลตช์: Latches
  • การสร้าวงจรตัวนับโดยใช้ฟลิปฟลอป JK-FF และการจำลองการทำงาน: 4-bit Ripple-Carry Counter
  • การใช้บอร์ด Arduino เลียนแบบการทำงานของวงจร Successive Approximation ADC
  • แนะนำการใช้งานเครื่องมือสร้างและวัดสัญญาณแบบพกพา ADALM2000 ในเบื้องต้น (สำหรับ Windows 10 / 11)

▹ การออกแบบวงจรดิจิทัลด้วย FPGA#

การออกแบบวงจรดิจิทัลโดยใช้ชิป FPGA (Field-Programmable Gate Array) ซึ่งผู้ใช้สามารถโปรแกรมฮาร์ดแวร์ได้ในเชิงลอจิก ถือว่าเป็นอีกหนึ่งตัวเลือกที่สำคัญสำหรับนักพัฒนาระบบสมองกลฝังตัว → บทความสำหรับการเรียนรู้ที่เกี่ยวข้องในหัวข้อนี้

  • หัวข้อในการเรียนรู้สำหรับการออกแบบวงจรลอจิก: Logic Design
  • แนวทางการเรียนรู้การออกแบบวงจรดิจิทัลด้วยชิป FPGA: Guidelines for Learning FPGA Design
  • การจำลองการทำงานของโค้ด VHDL ด้วย GHDL Simulator
  • การทดลองใช้งานซอฟต์แวร์ Intel FPGA Prime Lite Edition พร้อมตัวอย่างโค้ด VHDL / Verilog สาธิตการใช้บอร์ด Cyclone IV FPGA ในเบื้องต้น
  • แนะนำการใช้งานบอร์ด Terasic DE10 Lite (MAX 10 FPGA)
  • แนะนำการใช้งานบอร์ด QMTECH Cyclone 10 LP Starter Kit
  • การติดตั้งซอฟต์แวร์ AMD / Xilinx Vivado Design Suite: สำหรับ Ubuntu
  • การทดลองใช้งานบอร์ด Mojo v3 - Xilinx Spartan 6 FPGA (legacy): สำหรับ Ubuntu
  • แนะนำการใช้งานบอร์ด Sipeed Tang FPGA
  • การติดตั้งและใช้งานซอฟต์แวร์ Gowin IDE Standard Edition: สำหรับ Ubuntu และบอร์ด Sipeed Tang Nano (Gowin FPGA)
  • การใช้งานซอฟต์แวร์ Open Source FPGA Design Tools: สำหรับบอร์ด Sipeed Tang Nano (Gowin FPGA)
  • การใช้งานซอฟต์แวร์ Lattice Radiant สำหรับการออกแบบวงจรดิจิทัลด้วย Lattice iCE40 FPGA
  • การใช้งานซอฟต์แวร์ Open Source FPGA Design Tools สำหรับการออกแบบวงจรดิจิทัลด้วย Lattice iCE40 FPGA
  • การทดลองใช้งาน PicoRV32 CPU Core ในเบื้องต้น สำหรับบอร์ด Lattice iCE40 FPGA
  • แนะนำการใช้งานซอฟต์แวร์: Signal Tap Logic Analyzer
  • ตัวอย่างการออกแบบวงจรดิจิทัลสำหรับ FPGA ด้วยภาษา VHDL / Verilog
    • การใช้งานโมดูล AC Dimmer ปรับความสว่างของหลอดไฟ
    • การสร้างสัญญาณรูปไซน์ด้วยวิธี DDS (Direct Digital Synthesis) และการใช้วงจร R-2R DAC สร้างสัญญาณเอาต์พุต-แอนะล็อก
    • การใช้งานโมดูล MCP4725 I2C DAC เพื่อสร้างสัญญาณเอาต์พุต-แอนะล็อก
    • การใช้งานไอซีตัวต้านทานปรับค่าได้แบบดิจิทัล MCP41010
    • การใช้งานไอซีแปลงข้อมูลดิจิทัลให้เป็นสัญญาณแอนะล็อก MCP4921 SPI DAC
    • การอ่านค่าสัญญาณแอนะล็อกด้วยไอซี 12-bit SPI ADC
    • การสร้างสัญญาณสำหรับ VGA: 800x600 @72Hz
    • การใช้งานวงจร On-chip ADC Core / Intel FPGA IP (ทดลองใช้กับบอร์ด Terasic DE10-Lite FPGA)

ผู้ที่สนใจยังสามารถติดตามข่าวสารในอีกช่องทางหนึ่งผ่านทาง Facebook Page
→ "IoT Engineering Education" (https://fb.me/iot.kmutnb)


สัญญาอนุญาตการเผยแพร่#

เผยแพร่ภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์ (Creative Commons License): CC BY-SA 4.0

"อนุญาตให้ผู้อื่นสามารถนำผลงานไปใช้ ทำซ้ำ แจกจ่าย หรือดัดแปลงงานนั้นได้ แต่ผลงานที่ดัดแปลงนั้นจะต้องกำกับด้วยสัญญาอนุญาตเงื่อนไขเดียวกันกับต้นฉบับ เว้นแต่ว่าจะได้รับอนุญาตจากเจ้าของผลงานก่อน"

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.