ผลการเรียนรู้ (Learning Outcomes)
- อธิบายความหมาย microprocessor / microcontroller / embedded system และความต่าง
- อธิบายหลักการทำงานระบบฝังตัว (dedicated purpose, hidden computer, input→process→output)
- แยก open-loop vs closed-loop control พร้อมตัวอย่าง
- อธิบายภาพรวมกระบวนการพัฒนา (C → compile → machine code → download ลง flash)
- ระบุองค์ประกอบบอร์ด NUCLEO-F767ZI และเครื่องมือพัฒนา (CubeMX/CubeIDE)
§1.1 ระบบฝังตัวคืออะไร
ระบบฝังตัว (Embedded System) คืออุปกรณ์ที่มีคอมพิวเตอร์ซ่อนอยู่ข้างในเพื่อควบคุมการทำงาน แต่ไม่ได้ถูกสร้างมาเพื่อเป็นคอมพิวเตอร์ที่ใช้ประมวลผลงานทั่วไปอย่างเครื่องตั้งโต๊ะหรือโน้ตบุ๊ก.
ระบบฝังตัวมีลักษณะเด่น 3 อย่าง. หนึ่ง คือทำงานเฉพาะทาง (dedicated purpose) ออกแบบมาเพื่อทำงานหนึ่งอย่างให้ดี เช่น หม้อหุงข้าวก็หุงข้าว ไม่ได้เอาไว้เล่นเกม. สอง คืออยู่รอบตัวเราไปหมดแต่มองไม่เห็น (ubiquitous / invisible) เราใช้มันทุกวันโดยไม่รู้ตัว. สาม คือมีคอมพิวเตอร์ซ่อนอยู่ภายใน (hidden computer inside) ตัวประมวลผลถูกฝังไว้ในอุปกรณ์จนเรานึกไม่ถึง.
ลองเทียบของใช้รุ่นธรรมดากับรุ่นที่มีคอมพิวเตอร์ฝังตัว. รุ่นธรรมดาใช้กลไกล้วน ๆ เช่น สวิตช์เปิดปิด, timer แบบลานหมุน, หรือ thermostat แบบแผ่นโลหะงอตามอุณหภูมิ. รุ่นที่มีระบบฝังตัวทำได้มากกว่านั้นมาก เช่น ตั้งเวลาล่วงหน้า, มีเมนูให้เลือก, มีจอแสดงผล, และต่อกับแอปบนมือถือได้.
ตัวอย่างระบบฝังตัวในชีวิตจริง: กล่องควบคุมเครื่องยนต์รถยนต์ (ECU), นาฬิกาอัจฉริยะ (smart watch), เครื่องถ่ายเอกสาร, และตู้ขายของอัตโนมัติ (เช่น ตู้เต่าบิน หรือตู้กาแฟ ปตท.).
- เปิด/ปิด และเลือกโหมดพื้นฐาน
- ตั้งเวลาเริ่มทำงานล่วงหน้า (ไม่มีในรุ่นธรรมดา)
- เมนูโปรแกรมซักหลายแบบ (ไม่มีในรุ่นธรรมดา)
- จอแสดงสถานะ (ไม่มีในรุ่นธรรมดา)
- เชื่อมต่อแอปบนมือถือ (ไม่มีในรุ่นธรรมดา)
รุ่นฝังตัวมี MCU ซ่อนอยู่ภายใน (hidden computer) ทำให้มีฟังก์ชันเพิ่ม เช่น ตั้งเวลา เมนู จอ และต่อแอป.
§1.2 ประวัติระบบฝังตัว
จุดที่น่าสังเกตคือปี 1971 เกิดชิปสำคัญขึ้นพร้อมกันสองตัวที่คิดกันคนละแนวคิด: Intel 4004 ซึ่งเป็น microprocessor และ TI TMS1000 ซึ่งเป็น microcontroller. สองคำนี้ต่างกันอย่างไรจะอธิบายในหัวข้อถัดไป.
| ปี | เหตุการณ์ | ความสำคัญ |
|---|---|---|
| 1961 | Apollo Guidance Computer (Draper, MIT) | ระบบฝังตัวยุคแรก, รายแรกที่ใช้ IC |
| 1965 | Autonetics D-17B | embedded ผลิตจำนวนมากรายแรก (นำวิถีขีปนาวุธ) |
| 1968 | VW 1600 | ยานยนต์รายแรกฝัง embedded (EFI) |
| 1971 | TI TMS1000 | microcontroller ตัวแรก (4-bit, ROM+RAM, ~$2, ขาย 1974) |
| 1971 | Intel 4004 | microprocessor 4-bit (เครื่องคิดเลข) |
| 1972 | Intel 8080 | 8-bit |
| 1978 | Intel 8086 | 16-bit, เริ่ม x86 |
| 1987 | VxWorks (Wind River) | RTOS สำหรับ embedded ตัวแรก |
| 1996 | Windows Embedded CE | OS ฝังตัวจาก Microsoft |
| ปลาย 1990s | Embedded Linux | Linux สำหรับงานฝังตัว |
ระบบฝังตัวยุคแรก, รายแรกที่ใช้ IC
คลิกหมุดเพื่อดูรายละเอียด; ใช้ตัวกรองเพื่อแยก MP / MCU / milestone. สังเกตปี 1971 เกิดทั้ง 4004 และ TMS1000.
§1.3 Microprocessor vs Microcontroller
Microprocessor (ไมโครโปรเซสเซอร์ หรือ MP) คือชิปที่มีเฉพาะหน่วยประมวลผลกลาง (CPU) ซึ่งข้างในมี ALU สำหรับคิดเลข แต่ไม่มีหน่วยความจำและไม่มีพอร์ต I/O ในตัว. ถ้าจะใช้งานจริงจึงต้องต่อหน่วยความจำและชิป I/O ภายนอกเพิ่ม.
ตัวอย่างระบบที่ใช้ microprocessor คือบอร์ด RC2014 ซึ่งใช้ซีพียู Z80 แล้วต้องต่อชิปอื่นมาประกอบ ได้แก่ 62256 เป็น SRAM (หน่วยความจำชั่วคราว), 27C512 เป็น EPROM (เก็บโปรแกรม), และ MC68B50 เป็นชิป UART (สื่อสารอนุกรม). จะเห็นว่าต้องใช้หลายชิปมาต่อกันจึงจะทำงานได้.
Microcontroller (ไมโครคอนโทรลเลอร์ หรือ MCU) คือคอมพิวเตอร์ที่รวมทุกอย่างไว้ในชิปเดียว คือมีทั้งแกนประมวลผล (processor core), หน่วยความจำ (memory), และพอร์ต I/O อยู่ในชิปเดียวกัน. ตัวอย่างเช่น 8051, PIC, ARM7TDMI, ตระกูล Cortex, บอร์ด Arduino และ STM32.
การคิดเลขเกิดที่ ALU ซึ่งทำงานทางคณิตศาสตร์และตรรกะทีละคำสั่ง (instruction). ส่วนโปรแกรมก็คือลำดับของคำสั่งเหล่านี้ที่ CPU ทำตามทีละขั้น.
| หัวข้อ | Microprocessor | Microcontroller |
|---|---|---|
| ในชิป | CPU/ALU เท่านั้น | CPU+Memory+I/O |
| หน่วยความจำ | ต่อภายนอก | มีในตัว (Flash+RAM) |
| I/O | ต่อ IC เพิ่ม | มีในตัว (GPIO/ADC/UART) |
| จำนวน IC บนบอร์ด | หลายตัว | น้อย (ชิปเดียวพอ) |
| เหมาะกับ | งานประมวลผลทั่วไป | งานฝังตัวเฉพาะทาง |
| ตัวอย่าง | Z80, 4004/8086 | 8051, PIC, STM32, Arduino |
Microprocessor (RC2014 / Z80)
CPU 1 ตัว + ชิปภายนอก 3 ตัว บนบอร์ดเดียว
Microcontroller (STM32F767ZI)
CPU + Memory + I/O รวมในชิปเดียว ลดจำนวน IC บนบอร์ด
MP ต้องต่อชิปภายนอกหลายตัว; MCU รวมทุกส่วนไว้ในชิปเดียว. ลองสลับไฮไลต์ และ hover ที่บล็อกเพื่อดูรายละเอียด.
§1.4 Open Loop vs Closed Loop
ระบบควบคุมแบบ open loop (วงเปิด) คือระบบที่ไม่มี feedback หรือไม่มีการวัดค่าผลลัพธ์จริงกลับมาเทียบ. มันอาศัยการ calibrate (ตั้งเทียบ) เซนเซอร์ไว้ล่วงหน้า เช่น การคุมความเร็วมอเตอร์ DC ด้วยการจ่ายแรงดันตามที่คำนวณไว้. ข้อดีคือสร้างง่ายกว่า.
ระบบควบคุมแบบ closed loop (วงปิด) คือระบบที่ใช้เซนเซอร์วัดค่าจริง แล้วนำค่าที่วัดได้ (actual) มาเทียบกับค่าที่ต้องการ (setpoint) เพื่อปรับชดเชยให้เข้าเป้า เช่น การคุมอุณหภูมิเตาอบ. ข้อดีคือแม่นยำกว่า แต่ต้องใช้ MCU ที่แรงกว่าเพราะต้องคำนวณตลอดเวลา.
ลองนึกถึง Segway เป็นตัวอย่าง closed loop: เซนเซอร์ gyroscope แบบ MEMS วัดว่าตัวรถเอียงไปเท่าไร แล้ว MCU ก็สั่งมอเตอร์ให้ชดเชยเพื่อทรงตัวตลอดเวลา. ในสายงานนี้ เซนเซอร์ทำหน้าที่เป็น input ส่วนมอเตอร์ทำหน้าที่เป็น actuator หรือ output.
| หัวข้อ | Open | Closed |
|---|---|---|
| Feedback | ไม่มี | มี |
| เปรียบเทียบ | ไม่มี | setpoint vs actual |
| ตัวอย่าง | มอเตอร์ตามแรงดัน | อุณหภูมิเตาอบ |
| ความซับซ้อน | ง่ายกว่า | ซับซ้อนกว่า |
| ความแม่นยำ | น้อยกว่า | มากกว่า |
เลื่อน slider เพื่อเพิ่ม 'สิ่งรบกวน'. Closed loop ใช้ feedback จากเซนเซอร์ชดเชยให้กลับเข้าใกล้ setpoint; Open loop ไม่มี feedback จึงเบี่ยงเบนตามสิ่งรบกวน.
§1.5 กระบวนการพัฒนา
โปรแกรมเริ่มจากภาษาระดับสูง (high-level language) เช่น C หรือ C++ ซึ่งเราเขียนแบบ bare-metal (คุมฮาร์ดแวร์ตรง) หรือใช้ไลบรารี HAL ก็ได้. จากนั้นจะถูกแปลงเป็นขั้น ๆ ดังนี้.
ลำดับการแปลง: ภาษา C ถูก compile เป็น Assembly (ไฟล์ .s) → ถูก assemble เป็น machine code ในรูป binary หรือ object file → ถูก link รวมกันเป็นไฟล์ที่รันได้ (executable เช่น .bin/.hex/.elf) → แล้วจึง download ลงไปเก็บใน Flash ของชิป.
คำว่า bare-metal หมายถึงเขียนโปรแกรมคุมฮาร์ดแวร์ตรง ๆ โดยไม่มีระบบปฏิบัติการ (OS). ส่วน HAL (Hardware Abstraction Layer) คือไลบรารีของ ST ที่ห่อการเข้าถึง register ไว้ให้ใช้ง่ายขึ้น เช่นฟังก์ชัน HAL_GPIO_WritePin. และถ้างานซับซ้อนขึ้นก็อาจใช้ RTOS เช่น FreeRTOS, ThreadX หรือ mbedOS.
โค้ดภาษา C/C++ (ใช้ bare-metal หรือ HAL)
คลิกแต่ละสเตจเพื่อดูว่าได้ไฟล์อะไรและทำอะไร. บน CubeIDE กด Build = รัน compiler→assembler→linker ให้อัตโนมัติ.
§1.6 ประวัติ ARM
ในปี 1981 บริษัท Acorn ตระหนักว่าตัวเองสามารถออกแบบ microprocessor ขึ้นมาเองได้ จึงเริ่มทำชิปสถาปัตยกรรมแบบ RISC. ภายหลังแยกออกมาตั้งเป็นบริษัท Advanced RISC Machines หรือที่รู้จักกันในชื่อ ARM Holdings.
จุดเด่นของ ARM คือโมเดลธุรกิจที่ขาย IP (ลิขสิทธิ์การออกแบบ) ให้บริษัทอื่นเอาไปผลิตเอง โดย ARM ไม่ได้ขายคอมทั้งเครื่องและไม่ต้องมีโรงงานผลิตชิป (fab) ของตัวเอง.
ด้านความเป็นเจ้าของ: ปี 2016 SoftBank ซื้อ ARM ไปด้วยมูลค่าราว 31 พันล้านดอลลาร์. ต่อมาปี 2020 Nvidia เสนอซื้อด้วยมูลค่าราว 40 พันล้านดอลลาร์ แต่ดีลล่มและถูกยกเลิกไปในเดือนกุมภาพันธ์ 2022. แกน Cortex-M บนบอร์ดของเราก็คือ IP ของ ARM ที่ ST นำไปผลิตออกมาเป็นชิปตระกูล STM32.
§1.7 บอร์ด NUCLEO-F767ZI
ตัวบอร์ดใช้แกน ARM 32-bit Cortex-M7 ที่มีหน่วยคำนวณทศนิยม DPFPU ทำงานที่ความถี่ 216MHz. มีหน่วยความจำ Flash 2MB และ SRAM 512KB. บนบอร์ดมี user LED 3 ดวง, ปุ่มกด user และปุ่ม reset, header แบบ Arduino Uno V3 และ header แบบ ST morpho พร้อมตัวโปรแกรม/ดีบัก ST-LINK/V2-1 ในตัว.
ตัวชิป STM32F767ZI รองรับ GPIO ได้สูงสุด 168 เส้น (บางเส้นทนแรงดัน 5V ได้), มี ADC ขนาด 12-bit จำนวน 3 ตัว, DAC ขนาด 12-bit จำนวน 2 ตัว, timer สูงสุด 18 ตัว และช่องสื่อสารสูงสุด 28 ช่อง (รวม I2C, USART, SPI, USB).
เครื่องมือพัฒนาหลักมีสองตัว. STM32CubeMX ใช้ตั้งค่าขา/นาฬิกาด้วยกราฟิกแล้ว gen โค้ดเริ่มต้นให้. ส่วน STM32CubeIDE (หรือ Keil) เป็นชุดรวม editor, compiler, linker และ debugger ไว้ในที่เดียว.
hover/คลิก hotspot เพื่อดูชื่อและ pin. สลับแท็บเพื่อดูสเปกชิป STM32F767ZI.
ลำดับการสั่ง GPIO: เปิด clock พอร์ต → ตั้งโหมด pin → เขียนค่า. ถ้ายังไม่เปิด clock การเขียนจะไม่ทำงาน. SET=logic 1 (3.3V, ไฟติด), RESET=logic 0 (0V, ไฟดับ).
แบบฝึกหัด
12 ข้อ — แต่ละข้อมีชนิดและระดับความยากกำกับ กดปุ่ม "ดูเฉลย" เพื่อดูคำตอบและคำอธิบาย
- 1.ปรนัยง่าย
ข้อใดอธิบาย embedded system ได้ถูกต้องที่สุด
- 2.ปรนัยง่าย
ข้อใดคือความต่างหลักระหว่าง MCU กับ MP
- 3.ปรนัยกลาง
อุปกรณ์ใดจัดเป็น microprocessor ไม่ใช่ microcontroller
- 4.ปรนัยกลาง
ในปี 1971 เกิดเหตุการณ์สำคัญคู่ใดขึ้นพร้อมกัน
- 5.ถูก/ผิดง่าย
ระบบควบคุมแบบ closed-loop ใช้ feedback จากเซนเซอร์มาเทียบค่า setpoint กับค่าจริง
- 6.ถูก/ผิดกลาง
ระบบ open-loop มักให้ความแม่นยำสูงกว่า closed-loop
- 7.เติมคำง่าย
ในสายงาน input→process→output ของระบบฝังตัว: สวิตช์/เซนเซอร์ทำหน้าที่เป็น ____ ส่วน LED/มอเตอร์ทำหน้าที่เป็น ____
- 8.เติมคำกลาง
เติมขั้นตอนพัฒนา: C → ____ → machine code → ____ → download ลง Flash
- 9.ปรนัยกลาง
โมเดลธุรกิจของ ARM เป็นอย่างไร
- 10.ปรนัยง่าย
บอร์ด NUCLEO-F767ZI ใช้แกนประมวลผลใด
- 11.วิเคราะห์กลาง
ใน Lab02 กดปุ่ม B1 แล้ว LD1 ติด 1 วินาที จัดเป็นระบบ open loop หรือ closed loop เพราะอะไร
- 12.วิเคราะห์ยาก
ถ้าจะใช้ซีพียู Z80 ทำงานแบบ Lab01 แทน STM32 ต้องเพิ่มอะไรบ้าง และสะท้อนความต่าง MCU/MP อย่างไร