# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aic-eec.com/embedded-systems/introduction-to-esd/whys-esd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
