> For the complete documentation index, see [llms.txt](https://docs.aic-eec.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aic-eec.com/embedded-systems/introduction-to-esd/whys-esd.md).

# Why's ESD?

Embedded system design เป็นส่วนหนึ่งของ Cycle of development ซึ่งเป็นส่วนที่เราจะต้องทำก่อนเริ่มงานจริงๆ เพื่อแก้ปัญหาล่วงหน้าและลดค่าใช้จ่ายระหว่างช่วงกำลังพัตนาตัว Embedded system ที่เรากำลังจะทำ<br>

<figure><img src="https://www.qt.io/hs-fs/hubfs/Embedded%20Talk/Images/The%20Embedded%20Product%20Development%20Lifecycle.png?width=489&#x26;name=The%20Embedded%20Product%20Development%20Lifecycle.png" alt=""><figcaption><p>Building Embedded System Design &#x26; Software Development</p></figcaption></figure>

<br>

จากหัวข้อที่ผ่านมาจะเห็นได้ว่า Embedded นั้นมีอยู่แทบทุกที่ในทุกๆอุตสหากรรม แต่เนื่องจากความหลากหลายของตัว embedded เองทำให้ความซับซ้อนในการใช้งานสำหรับงานใดงานหนึ่งจำเป็นจะต้องได้รับการออกแบบก่อน ไม่เช่นนั้นแล้วระบบที่เราทำมาอาจเสียเวลาทำไปแล้วใช้งานไม่ครบฟังก์ชั่นที่ต้องการ หรืออาจทำงานไม่ได้เลยก็ได้ ดังนั้นขั้นตอนที่สำคัญที่สุดสำหรับ Embedded เลยคือการ design ระบบของมันนั่นเอง

ในส่วนต่อจากนี้จะเป็นส่วนแนะนำกระบวนการทำ Embedded system design ซึ่งจะอธิบายเป็นขั้นตอนต่างๆที่สำคัญและควรรู้&#x20;

### ขั้นตอนการทำ Embedded system design

ต่อไปนี้จะเป็นส่วนที่แสดงถึงการ Embedded system design เบื้องต้น โดยจะแบ่งเป็นส่วนหลักๆดังนี้

* Input (การนำข้อมูลเข้า)
* Process (การนำข้อมูลไปประมวลผล)
* Output (การส่งข้อมูลออก)

<figure><img src="https://paper-attachments.dropboxusercontent.com/s_E0ED2CB7AF67F830DA459C758AF6C43EE6FB618AE97FC3EF1DE9A9668AC9B778_1668685983583_image.png" alt=""><figcaption></figcaption></figure>

### **หลักการนำข้อมูลเข้า**

การนำข้อมูลเข้าหรือ Input นั้นหลักๆแล้วคือการทำ Interfacing หรือการตั้งค่าวิธีที่เราจะคุยกับอุปกรณ์นำเข้าข้อมูลต่างๆ เช่น กล้อง, เซนเซอร์ววัดอุณหภูมิ, เซนเซอร์วัดความดัน, เซนเซอร์วัดระยะ ซึ่งแต่ละตัวอย่างที่ยกมานั้นมีโปรโตคอล (วิธีการคุย) ของอุปกรณ์แตกต่างกัน หลักๆแล้วเราแบ่งการนำข้อมูลเข้าเป็น 2 แบบคือ

* มีสาย (wire) เช่น
  * RS485
  * UART
  * I2C
* ไร้สาย (wireless) เช่น
  * WIFI
  * Bluetooth
  * LoRA

ในส่วนนี้เราจะต้องดูว่ารูปแบบของเราเหมาะสำหรับการสื่อสารแบบไหน เช่น ถ้าโปรเจคของเราเป็น smart farm การสื่อสารแบบไร้สายจะเหมาะสมกว่าเพราะครอบคลุมได้บริเวณกว้าง หรือถ้า โปรเจคของเราเป็นสายพานอัจฉริยะเราอาจจะต้องใช้แบบมีสายเนื่องจากข้อมูลที่ส่งมีปริมาณมากและต้องการความรวดเร็วในการส่ง

### **หลักการนำข้อมูลไปประมวลผล**

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

* Data manipulation
* Decision making
* Output control

### **ส่งข้อมูลออก**

ส่วนสุดท้ายนี้จะเป็นส่วนที่ซับซ้อนที่สุดในการออกแบบเพราะในส่วนๆนี้จะไม่มีรูปแบบตายตัว การส่งข้อมูลออกนั้นทำได้หลายวิธีมากทั้งอยากให้ออกเป็น output ที่ไปควบคุมอุปกรณ์ตัวอื่น, output ที่อยู่ในรูปแบบของข้อความ, output ที่ออกมาเป็นตารางmatrix, output ที่ออกมาเป็นรูปภาพ ทำให้การจัดการรูปแบบการส่งออกข้อมูลนั้นมีความหลากหลายมาก แต่การดีไซน์ในส่วนนี้แม้จะหลากหลายแต่ก็มีมาตรฐานเช่นกันเช่น

* ไฟล์ภาพ
  * jpeg
  * png
  * gif
* ไฟล์วีดิโอ
  * mp4
  * mov
* ถ่ายทอดสัญญาณภาพสด
  * RTSP
  * H264,H265
* การควบคุมอุปกรณ์
  * ONVIF (profile A)
  * Modbus
