You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
269 lines
59 KiB
269 lines
59 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "9dd7f645ad1c6f20b72fee512987f772",
|
|
"translation_date": "2025-08-27T21:06:08+00:00",
|
|
"source_file": "1-getting-started/lessons/2-deeper-dive/README.md",
|
|
"language_code": "th"
|
|
}
|
|
-->
|
|
# เจาะลึก IoT
|
|
|
|

|
|
|
|
> สเก็ตโน้ตโดย [Nitya Narasimhan](https://github.com/nitya) คลิกที่ภาพเพื่อดูเวอร์ชันขนาดใหญ่
|
|
|
|
บทเรียนนี้เป็นส่วนหนึ่งของ [ซีรีส์ Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) จาก [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn) บทเรียนนี้ถูกสอนผ่านวิดีโอ 2 ตอน - บทเรียน 1 ชั่วโมง และชั่วโมงตอบคำถามที่เจาะลึกในส่วนต่าง ๆ ของบทเรียนและตอบคำถามเพิ่มเติม
|
|
|
|
[](https://youtu.be/t0SySWw3z9M)
|
|
|
|
[](https://youtu.be/tTZYf9EST1E)
|
|
|
|
> 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ
|
|
|
|
## แบบทดสอบก่อนเรียน
|
|
|
|
[แบบทดสอบก่อนเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/3)
|
|
|
|
## บทนำ
|
|
|
|
บทเรียนนี้จะเจาะลึกในบางแนวคิดที่ครอบคลุมในบทเรียนก่อนหน้า
|
|
|
|
ในบทเรียนนี้เราจะพูดถึง:
|
|
|
|
* [องค์ประกอบของแอปพลิเคชัน IoT](../../../../../1-getting-started/lessons/2-deeper-dive)
|
|
* [เจาะลึกไมโครคอนโทรลเลอร์](../../../../../1-getting-started/lessons/2-deeper-dive)
|
|
* [เจาะลึกคอมพิวเตอร์บอร์ดเดี่ยว](../../../../../1-getting-started/lessons/2-deeper-dive)
|
|
|
|
## องค์ประกอบของแอปพลิเคชัน IoT
|
|
|
|
องค์ประกอบสองส่วนของแอปพลิเคชัน IoT คือ *อินเทอร์เน็ต* และ *สิ่งของ* มาดูรายละเอียดของสององค์ประกอบนี้กัน
|
|
|
|
### สิ่งของ
|
|
|
|

|
|
|
|
**สิ่งของ** ใน IoT หมายถึงอุปกรณ์ที่สามารถโต้ตอบกับโลกทางกายภาพได้ อุปกรณ์เหล่านี้มักจะเป็นคอมพิวเตอร์ขนาดเล็ก ราคาถูก ทำงานด้วยความเร็วต่ำและใช้พลังงานต่ำ เช่น ไมโครคอนโทรลเลอร์ที่มี RAM เพียงไม่กี่กิโลไบต์ (เมื่อเทียบกับกิกะไบต์ใน PC) ทำงานที่ความเร็วเพียงไม่กี่ร้อยเมกะเฮิรตซ์ (เมื่อเทียบกับกิกะเฮิรตซ์ใน PC) แต่ใช้พลังงานน้อยมากจนสามารถทำงานได้เป็นสัปดาห์ เดือน หรือแม้กระทั่งปีด้วยแบตเตอรี่
|
|
|
|
อุปกรณ์เหล่านี้โต้ตอบกับโลกทางกายภาพโดยใช้เซ็นเซอร์เพื่อรวบรวมข้อมูลจากสิ่งแวดล้อม หรือควบคุมเอาต์พุตหรือแอคชูเอเตอร์เพื่อทำการเปลี่ยนแปลงทางกายภาพ ตัวอย่างทั่วไปคือเทอร์โมสตัทอัจฉริยะ - อุปกรณ์ที่มีเซ็นเซอร์วัดอุณหภูมิ วิธีการตั้งค่าอุณหภูมิที่ต้องการ เช่น ปุ่มหมุนหรือหน้าจอสัมผัส และการเชื่อมต่อกับระบบทำความร้อนหรือความเย็นที่สามารถเปิดหรือปิดได้เมื่ออุณหภูมิที่ตรวจพบอยู่นอกช่วงที่ต้องการ เซ็นเซอร์วัดอุณหภูมิจะตรวจจับว่าอุณหภูมิในห้องเย็นเกินไป และแอคชูเอเตอร์จะเปิดระบบทำความร้อน
|
|
|
|

|
|
|
|
มีอุปกรณ์ IoT หลากหลายประเภท ตั้งแต่ฮาร์ดแวร์เฉพาะที่ตรวจจับสิ่งหนึ่ง ไปจนถึงอุปกรณ์อเนกประสงค์ แม้กระทั่งสมาร์ทโฟนของคุณ! สมาร์ทโฟนสามารถใช้เซ็นเซอร์เพื่อตรวจจับโลกภายนอก และแอคชูเอเตอร์เพื่อโต้ตอบกับโลก - เช่น ใช้เซ็นเซอร์ GPS เพื่อระบุตำแหน่งของคุณ และลำโพงเพื่อให้คำแนะนำการนำทางไปยังจุดหมายปลายทาง
|
|
|
|
✅ ลองคิดถึงระบบอื่น ๆ รอบตัวคุณที่อ่านข้อมูลจากเซ็นเซอร์และใช้ข้อมูลนั้นในการตัดสินใจ ตัวอย่างหนึ่งคือเทอร์โมสตัทในเตาอบ คุณสามารถหาตัวอย่างเพิ่มเติมได้หรือไม่?
|
|
|
|
### อินเทอร์เน็ต
|
|
|
|
**อินเทอร์เน็ต** ในแอปพลิเคชัน IoT ประกอบด้วยแอปพลิเคชันที่อุปกรณ์ IoT สามารถเชื่อมต่อเพื่อส่งและรับข้อมูล รวมถึงแอปพลิเคชันอื่น ๆ ที่สามารถประมวลผลข้อมูลจากอุปกรณ์ IoT และช่วยตัดสินใจว่าจะส่งคำขอใดไปยังแอคชูเอเตอร์ของอุปกรณ์ IoT
|
|
|
|
การตั้งค่าทั่วไปคือการมีบริการคลาวด์บางประเภทที่อุปกรณ์ IoT เชื่อมต่อ และบริการคลาวด์นี้จัดการสิ่งต่าง ๆ เช่น ความปลอดภัย รวมถึงการรับข้อความจากอุปกรณ์ IoT และส่งข้อความกลับไปยังอุปกรณ์ บริการคลาวด์นี้จะเชื่อมต่อกับแอปพลิเคชันอื่น ๆ ที่สามารถประมวลผลหรือจัดเก็บข้อมูลเซ็นเซอร์ หรือใช้ข้อมูลเซ็นเซอร์ร่วมกับข้อมูลจากระบบอื่น ๆ เพื่อช่วยในการตัดสินใจ
|
|
|
|
อุปกรณ์ไม่ได้เชื่อมต่อกับอินเทอร์เน็ตโดยตรงเสมอไปผ่าน WiFi หรือการเชื่อมต่อแบบมีสาย บางอุปกรณ์ใช้เครือข่ายแบบเมชเพื่อสื่อสารกันผ่านเทคโนโลยี เช่น Bluetooth โดยเชื่อมต่อผ่านอุปกรณ์ฮับที่มีการเชื่อมต่ออินเทอร์เน็ต
|
|
|
|
ในตัวอย่างของเทอร์โมสตัทอัจฉริยะ เทอร์โมสตัทจะเชื่อมต่อผ่าน WiFi ในบ้านไปยังบริการคลาวด์ที่ทำงานในคลาวด์ มันจะส่งข้อมูลอุณหภูมิไปยังบริการคลาวด์นี้ และจากนั้นข้อมูลจะถูกเขียนลงในฐานข้อมูลบางประเภทเพื่อให้เจ้าของบ้านสามารถตรวจสอบอุณหภูมิปัจจุบันและที่ผ่านมาได้ผ่านแอปบนโทรศัพท์ บริการอื่นในคลาวด์จะทราบว่าเจ้าของบ้านต้องการอุณหภูมิเท่าใด และส่งข้อความกลับไปยังอุปกรณ์ IoT ผ่านบริการคลาวด์เพื่อบอกระบบทำความร้อนให้เปิดหรือปิด
|
|
|
|

|
|
|
|
เวอร์ชันที่ฉลาดกว่านี้สามารถใช้ AI ในคลาวด์ร่วมกับข้อมูลจากเซ็นเซอร์อื่น ๆ ที่เชื่อมต่อกับอุปกรณ์ IoT อื่น ๆ เช่น เซ็นเซอร์ตรวจจับการใช้งานห้อง รวมถึงข้อมูล เช่น สภาพอากาศ และแม้กระทั่งปฏิทินของคุณ เพื่อช่วยตัดสินใจว่าจะตั้งค่าอุณหภูมิอย่างไรในลักษณะอัจฉริยะ ตัวอย่างเช่น มันสามารถปิดระบบทำความร้อนหากอ่านจากปฏิทินว่าคุณกำลังไปพักร้อน หรือปิดระบบทำความร้อนในแต่ละห้องตามการใช้งานห้อง โดยเรียนรู้จากข้อมูลเพื่อให้แม่นยำมากขึ้นเรื่อย ๆ
|
|
|
|

|
|
|
|
✅ ข้อมูลอื่นใดที่สามารถช่วยทำให้เทอร์โมสตัทที่เชื่อมต่ออินเทอร์เน็ตฉลาดขึ้น?
|
|
|
|
### IoT บน Edge
|
|
|
|
แม้ว่า I ใน IoT หมายถึง Internet แต่อุปกรณ์เหล่านี้ไม่จำเป็นต้องเชื่อมต่อกับอินเทอร์เน็ต ในบางกรณี อุปกรณ์สามารถเชื่อมต่อกับอุปกรณ์ 'edge' - อุปกรณ์เกตเวย์ที่ทำงานบนเครือข่ายท้องถิ่นของคุณ ซึ่งหมายความว่าคุณสามารถประมวลผลข้อมูลโดยไม่ต้องส่งข้อมูลผ่านอินเทอร์เน็ต สิ่งนี้สามารถทำงานได้เร็วขึ้นเมื่อคุณมีข้อมูลจำนวนมากหรือการเชื่อมต่ออินเทอร์เน็ตช้า ช่วยให้คุณทำงานแบบออฟไลน์ในที่ที่การเชื่อมต่ออินเทอร์เน็ตเป็นไปไม่ได้ เช่น บนเรือ หรือในพื้นที่ภัยพิบัติเมื่อตอบสนองต่อวิกฤตด้านมนุษยธรรม และช่วยให้คุณเก็บข้อมูลเป็นส่วนตัว อุปกรณ์บางตัวจะมีโค้ดประมวลผลที่สร้างขึ้นโดยใช้เครื่องมือคลาวด์และทำงานในพื้นที่เพื่อรวบรวมและตอบสนองต่อข้อมูลโดยไม่ใช้การเชื่อมต่ออินเทอร์เน็ตในการตัดสินใจ
|
|
|
|
ตัวอย่างหนึ่งคืออุปกรณ์สมาร์ทโฮม เช่น Apple HomePod, Amazon Alexa หรือ Google Home ซึ่งจะฟังเสียงของคุณโดยใช้โมเดล AI ที่ฝึกในคลาวด์ แต่ทำงานในพื้นที่บนอุปกรณ์ อุปกรณ์เหล่านี้จะ 'ตื่น' เมื่อได้ยินคำหรือวลีที่กำหนด และส่งเสียงพูดของคุณผ่านอินเทอร์เน็ตเพื่อประมวลผลเท่านั้น อุปกรณ์จะหยุดส่งเสียงพูดเมื่อถึงจุดที่เหมาะสม เช่น เมื่อตรวจพบการหยุดพูด ทุกสิ่งที่คุณพูดก่อนปลุกอุปกรณ์ด้วยคำปลุก และทุกสิ่งที่คุณพูดหลังจากที่อุปกรณ์หยุดฟังจะไม่ถูกส่งผ่านอินเทอร์เน็ตไปยังผู้ให้บริการอุปกรณ์ และดังนั้นจะเป็นส่วนตัว
|
|
|
|
✅ ลองคิดถึงสถานการณ์อื่น ๆ ที่ความเป็นส่วนตัวมีความสำคัญ ดังนั้นการประมวลผลข้อมูลจะดีกว่าหากทำบน edge แทนที่จะทำในคลาวด์ เป็นคำใบ้ - ลองคิดถึงอุปกรณ์ IoT ที่มีกล้องหรืออุปกรณ์ถ่ายภาพอื่น ๆ
|
|
|
|
### ความปลอดภัยของ IoT
|
|
|
|
เมื่อมีการเชื่อมต่ออินเทอร์เน็ต ความปลอดภัยเป็นสิ่งสำคัญ มีคำพูดตลกที่ว่า 'S ใน IoT หมายถึง Security' - ซึ่งไม่มี 'S' ใน IoT หมายความว่ามันไม่ปลอดภัย
|
|
|
|
อุปกรณ์ IoT เชื่อมต่อกับบริการคลาวด์ และดังนั้นจึงมีความปลอดภัยเท่ากับบริการคลาวด์นั้น - หากบริการคลาวด์ของคุณอนุญาตให้อุปกรณ์ใด ๆ เชื่อมต่อได้ ข้อมูลที่เป็นอันตรายสามารถถูกส่ง หรือการโจมตีด้วยไวรัสสามารถเกิดขึ้นได้ สิ่งนี้สามารถมีผลกระทบในโลกจริงได้ เนื่องจากอุปกรณ์ IoT โต้ตอบและควบคุมอุปกรณ์อื่น ๆ ตัวอย่างเช่น [Stuxnet worm](https://wikipedia.org/wiki/Stuxnet) ได้ทำการปรับเปลี่ยนวาล์วในเครื่องหมุนเหวี่ยงเพื่อทำให้เกิดความเสียหาย แฮกเกอร์ยังได้ใช้ประโยชน์จาก [ความปลอดภัยที่ไม่ดีเพื่อเข้าถึงจอมอนิเตอร์เด็ก](https://www.npr.org/sections/thetwo-way/2018/06/05/617196788/s-c-mom-says-baby-monitor-was-hacked-experts-say-many-devices-are-vulnerable) และอุปกรณ์เฝ้าระวังในบ้านอื่น ๆ
|
|
|
|
> 💁 บางครั้งอุปกรณ์ IoT และอุปกรณ์ edge ทำงานบนเครือข่ายที่แยกออกจากอินเทอร์เน็ตโดยสิ้นเชิงเพื่อเก็บข้อมูลเป็นส่วนตัวและปลอดภัย สิ่งนี้เรียกว่า [air-gapping](https://wikipedia.org/wiki/Air_gap_(networking))
|
|
|
|
## เจาะลึกไมโครคอนโทรลเลอร์
|
|
|
|
ในบทเรียนก่อนหน้า เราได้แนะนำไมโครคอนโทรลเลอร์ ตอนนี้มาดูรายละเอียดเพิ่มเติมกัน
|
|
|
|
### CPU
|
|
|
|
CPU คือ 'สมอง' ของไมโครคอนโทรลเลอร์ เป็นตัวประมวลผลที่รันโค้ดของคุณและสามารถส่งข้อมูลไปยังและรับข้อมูลจากอุปกรณ์ที่เชื่อมต่อ CPU สามารถมีหนึ่งหรือหลายคอร์ - ซึ่งหมายถึง CPU หนึ่งหรือหลายตัวที่สามารถทำงานร่วมกันเพื่อรันโค้ดของคุณ
|
|
|
|
CPU อาศัยนาฬิกาเพื่อทำงานหลายล้านหรือพันล้านครั้งต่อวินาที แต่ละการทำงาน หรือรอบ จะซิงโครไนซ์การกระทำที่ CPU สามารถทำได้ ในแต่ละรอบ CPU สามารถดำเนินการคำสั่งจากโปรแกรม เช่น ดึงข้อมูลจากอุปกรณ์ภายนอกหรือทำการคำนวณทางคณิตศาสตร์ รอบที่สม่ำเสมอนี้ช่วยให้การกระทำทั้งหมดเสร็จสิ้นก่อนที่จะดำเนินการคำสั่งถัดไป
|
|
|
|
ยิ่งรอบนาฬิกาเร็วเท่าไร คำสั่งที่สามารถดำเนินการได้ในแต่ละวินาทีจะมากขึ้น และดังนั้น CPU จะเร็วขึ้น ความเร็วของ CPU วัดเป็น [Hertz (Hz)](https://wikipedia.org/wiki/Hertz) ซึ่งเป็นหน่วยมาตรฐานที่ 1 Hz หมายถึงหนึ่งรอบหรือการทำงานของนาฬิกาต่อวินาที
|
|
|
|
> 🎓 ความเร็วของ CPU มักจะระบุเป็น MHz หรือ GHz 1MHz คือ 1 ล้าน Hz 1GHz คือ 1 พันล้าน Hz
|
|
|
|
> 💁 CPU ดำเนินการโปรแกรมโดยใช้ [fetch-decode-execute cycle](https://wikipedia.org/wiki/Instruction_cycle) สำหรับทุกการทำงานของนาฬิกา CPU จะดึงคำสั่งถัดไปจากหน่วยความจำ ถอดรหัส แล้วดำเนินการ เช่น ใช้หน่วยตรรกะทางคณิตศาสตร์ (ALU) เพื่อบวกตัวเลข 2 ตัว การดำเนินการบางอย่างจะใช้เวลาหลายรอบในการทำงาน ดังนั้นรอบถัดไปจะทำงานในรอบถัดไปหลังจากคำสั่งเสร็จสิ้น
|
|
|
|

|
|
|
|
ไมโครคอนโทรลเลอร์มีความเร็วรอบนาฬิกาต่ำกว่าคอมพิวเตอร์เดสก์ท็อปหรือแล็ปท็อป หรือแม้กระทั่งสมาร์ทโฟนส่วนใหญ่ ตัวอย่างเช่น Wio Terminal มี CPU ที่ทำงานที่ 120MHz หรือ 120,000,000 รอบต่อวินาที
|
|
|
|
✅ คอมพิวเตอร์ PC หรือ Mac เฉลี่ยมี CPU ที่มีหลายคอร์ทำงานที่หลายกิกะเฮิรตซ์ ซึ่งหมายถึงรอบนาฬิกาหลายพันล้านครั้งต่อวินาที ลองค้นคว้าความเร็วรอบนาฬิกาของคอมพิวเตอร์ของคุณและเปรียบเทียบว่ามันเร็วกว่า Wio Terminal กี่เท่า
|
|
|
|
แต่ละรอบนาฬิกาจะใช้พลังงานและสร้างความร้อน ยิ่งรอบเร็วเท่าไร พลังงานที่ใช้และความร้อนที่สร้างจะมากขึ้น PC มีฮีตซิงค์และพัดลมเพื่อระบายความร้อน หากไม่มีสิ่งเหล่านี้ PC จะร้อนเกินไปและปิดตัวลงภายในไม่กี่วินาที ไมโครคอนโทรลเลอร์มักไม่มีสิ่งเหล่านี้เนื่องจากทำงานเย็นกว่ามากและดังนั้นจึงช้ากว่ามาก PC ใช้พลังงานจากไฟฟ้าหลักหรือแบตเตอรี่ขนาดใหญ่เป็นเวลาหลายชั่วโมง ไมโครคอนโทรลเลอร์สามารถทำงานได้เป็นวัน เดือน หรือแม้กระทั่งปีด้วยแบตเตอรี่ขนาดเล็ก ไมโครคอนโทรลเลอร์ยังสามารถมีคอร์ที่ทำงานด้วยความเร็วต่างกัน โดยเปลี่ยนไปใช้คอร์ที่ช้ากว่าเมื่อความต้องการ CPU ต่ำเพื่อลดการใช้พลังงาน
|
|
|
|
> 💁 PC และ Mac บางรุ่นกำลังนำการผสมผสานระหว่างคอร์ที่มีพลังงานสูงและคอร์ที่มีพลังงานต่ำมาใช้ โดยเปลี่ยนไปเพื่อประหยัดแบตเตอรี่ ตัวอย่างเช่น ชิป M1 ในแล็ปท็อป Apple รุ่นล่าสุดสามารถเปลี่ยนระหว่างคอร์ประสิทธิภาพ 4 คอร์และคอร์ประหยัดพลังงาน 4 คอร์เพื่อเพิ่มประสิทธิภาพแบตเตอรี่หรือความเร็วขึ้นอยู่กับงานที่กำลังดำเนินการ
|
|
|
|
✅ ลองค้นคว้า: อ่านเกี่ยวกับ CPU ใน [บทความ CPU บน Wikipedia](https://wikipedia.org/wiki/Central_processing_unit)
|
|
|
|
#### งาน
|
|
|
|
สำรวจ Wio Terminal
|
|
|
|
หากคุณกำลังใช้ Wio Terminal สำหรับ
|
|
> 🎓 หน่วยความจำโปรแกรมเก็บโค้ดของคุณและยังคงอยู่แม้ไม่มีพลังงาน
|
|
🎓 RAM ใช้สำหรับการทำงานของโปรแกรมและจะถูกรีเซ็ตเมื่อไม่มีพลังงาน
|
|
|
|
เช่นเดียวกับ CPU หน่วยความจำในไมโครคอนโทรลเลอร์มีขนาดเล็กกว่าคอมพิวเตอร์ PC หรือ Mac อย่างมาก คอมพิวเตอร์ PC ทั่วไปอาจมี RAM ขนาด 8 กิกะไบต์ (GB) หรือ 8,000,000,000 ไบต์ โดยแต่ละไบต์มีพื้นที่เพียงพอสำหรับเก็บตัวอักษรหนึ่งตัวหรือเลขตั้งแต่ 0-255 ในขณะที่ไมโครคอนโทรลเลอร์จะมี RAM เพียงกิโลไบต์ (KB) โดยกิโลไบต์เท่ากับ 1,000 ไบต์ Wio Terminal ที่กล่าวถึงข้างต้นมี RAM ขนาด 192KB หรือ 192,000 ไบต์ ซึ่งน้อยกว่าคอมพิวเตอร์ PC ทั่วไปถึง 40,000 เท่า!
|
|
|
|
แผนภาพด้านล่างแสดงความแตกต่างของขนาดระหว่าง 192KB และ 8GB - จุดเล็ก ๆ ตรงกลางแสดงถึง 192KB
|
|
|
|

|
|
|
|
พื้นที่เก็บโปรแกรมก็เล็กกว่าคอมพิวเตอร์ PC เช่นกัน คอมพิวเตอร์ PC ทั่วไปอาจมีฮาร์ดไดรฟ์ขนาด 500GB สำหรับเก็บโปรแกรม ในขณะที่ไมโครคอนโทรลเลอร์อาจมีพื้นที่เก็บข้อมูลเพียงกิโลไบต์หรืออาจจะไม่กี่เมกะไบต์ (MB) (1MB เท่ากับ 1,000KB หรือ 1,000,000 ไบต์) Wio Terminal มีพื้นที่เก็บโปรแกรมขนาด 4MB
|
|
|
|
✅ ลองค้นคว้าดู: คอมพิวเตอร์ที่คุณใช้ในการอ่านนี้มี RAM และพื้นที่เก็บข้อมูลเท่าไหร่? เปรียบเทียบกับไมโครคอนโทรลเลอร์ดูสิ
|
|
|
|
### Input/Output
|
|
|
|
ไมโครคอนโทรลเลอร์ต้องการการเชื่อมต่อ Input และ Output (I/O) เพื่ออ่านข้อมูลจากเซ็นเซอร์และส่งสัญญาณควบคุมไปยังแอคชูเอเตอร์ โดยปกติจะมีขา Input/Output อเนกประสงค์ (GPIO) จำนวนหนึ่ง ขาเหล่านี้สามารถกำหนดค่าในซอฟต์แวร์ให้เป็น Input (รับสัญญาณ) หรือ Output (ส่งสัญญาณ)
|
|
|
|
🧠⬅️ ขา Input ใช้สำหรับอ่านค่าจากเซ็นเซอร์
|
|
|
|
🧠➡️ ขา Output ส่งคำสั่งไปยังแอคชูเอเตอร์
|
|
|
|
✅ คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ในบทเรียนถัดไป
|
|
|
|
#### งานที่ต้องทำ
|
|
|
|
สำรวจ Wio Terminal
|
|
|
|
หากคุณใช้ Wio Terminal สำหรับบทเรียนนี้ ให้ค้นหาขา GPIO ดูส่วน *Pinout diagram* ใน [หน้าผลิตภัณฑ์ Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) เพื่อเรียนรู้ว่าขาไหนคืออะไร Wio Terminal มาพร้อมกับสติกเกอร์ที่คุณสามารถติดด้านหลังเพื่อแสดงหมายเลขขา ดังนั้นให้ติดสติกเกอร์นี้หากยังไม่ได้ทำ
|
|
|
|
### ขนาดทางกายภาพ
|
|
|
|
ไมโครคอนโทรลเลอร์มักมีขนาดเล็ก โดยที่เล็กที่สุด เช่น [Freescale Kinetis KL03 MCU มีขนาดเล็กพอที่จะใส่ในหลุมของลูกกอล์ฟ](https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/) ในขณะที่ CPU ในคอมพิวเตอร์ PC อาจมีขนาด 40mm x 40mm และยังไม่รวมฮีตซิงค์และพัดลมที่จำเป็นเพื่อให้ CPU ทำงานได้นานกว่าสองสามวินาทีโดยไม่ร้อนเกินไป ซึ่งมีขนาดใหญ่กว่าตัวไมโครคอนโทรลเลอร์อย่างมาก Wio Terminal Developer Kit ที่มีไมโครคอนโทรลเลอร์ เคส หน้าจอ และการเชื่อมต่อและส่วนประกอบต่าง ๆ มีขนาดไม่ใหญ่กว่าตัว CPU Intel i9 เปล่า ๆ และเล็กกว่ามากเมื่อรวมฮีตซิงค์และพัดลม!
|
|
|
|
| อุปกรณ์ | ขนาด |
|
|
| -------------------------------- | --------------------- |
|
|
| Freescale Kinetis KL03 | 1.6mm x 2mm x 1mm |
|
|
| Wio Terminal | 72mm x 57mm x 12mm |
|
|
| Intel i9 CPU, ฮีตซิงค์และพัดลม | 136mm x 145mm x 103mm |
|
|
|
|
### เฟรมเวิร์กและระบบปฏิบัติการ
|
|
|
|
เนื่องจากความเร็วและขนาดหน่วยความจำที่ต่ำ ไมโครคอนโทรลเลอร์จึงไม่ใช้ระบบปฏิบัติการ (OS) ในความหมายของคอมพิวเตอร์เดสก์ท็อป ระบบปฏิบัติการที่ทำให้คอมพิวเตอร์ของคุณทำงาน (Windows, Linux หรือ macOS) ต้องการหน่วยความจำและพลังการประมวลผลจำนวนมากเพื่อทำงานที่ไม่จำเป็นสำหรับไมโครคอนโทรลเลอร์ จำไว้ว่าไมโครคอนโทรลเลอร์มักถูกตั้งโปรแกรมให้ทำงานเฉพาะเจาะจงหนึ่งหรือหลายงาน ไม่เหมือนคอมพิวเตอร์ทั่วไปอย่าง PC หรือ Mac ที่ต้องรองรับอินเทอร์เฟซผู้ใช้ เล่นเพลงหรือภาพยนตร์ มีเครื่องมือสำหรับเขียนเอกสารหรือโค้ด เล่นเกม หรือท่องอินเทอร์เน็ต
|
|
|
|
การเขียนโปรแกรมไมโครคอนโทรลเลอร์โดยไม่มี OS คุณจำเป็นต้องมีเครื่องมือบางอย่างเพื่อสร้างโค้ดในรูปแบบที่ไมโครคอนโทรลเลอร์สามารถทำงานได้ โดยใช้ API ที่สามารถสื่อสารกับอุปกรณ์ต่อพ่วงได้ ไมโครคอนโทรลเลอร์แต่ละตัวมีความแตกต่างกัน ดังนั้นผู้ผลิตมักสนับสนุนเฟรมเวิร์กมาตรฐานที่ช่วยให้คุณทำตาม 'สูตร' มาตรฐานเพื่อสร้างโค้ดและให้มันทำงานบนไมโครคอนโทรลเลอร์ใด ๆ ที่รองรับเฟรมเวิร์กนั้น
|
|
|
|
คุณสามารถเขียนโปรแกรมไมโครคอนโทรลเลอร์โดยใช้ OS ซึ่งมักเรียกว่า real-time operating system (RTOS) เนื่องจากถูกออกแบบมาเพื่อจัดการการส่งข้อมูลไปและกลับจากอุปกรณ์ต่อพ่วงในเวลาจริง ระบบปฏิบัติการเหล่านี้มีน้ำหนักเบามากและมีฟีเจอร์เช่น:
|
|
|
|
* การทำงานแบบมัลติเธรด ช่วยให้โค้ดของคุณสามารถทำงานหลายบล็อกพร้อมกันได้ ไม่ว่าจะบนหลายคอร์หรือผลัดกันทำงานบนคอร์เดียว
|
|
* การเชื่อมต่อเครือข่ายเพื่อสื่อสารผ่านอินเทอร์เน็ตอย่างปลอดภัย
|
|
* ส่วนประกอบ GUI สำหรับสร้างอินเทอร์เฟซผู้ใช้ (UI) บนอุปกรณ์ที่มีหน้าจอ
|
|
|
|
✅ อ่านเพิ่มเติมเกี่ยวกับ RTOS ต่าง ๆ: [Azure RTOS](https://azure.microsoft.com/services/rtos/?WT.mc_id=academic-17441-jabenn), [FreeRTOS](https://www.freertos.org), [Zephyr](https://www.zephyrproject.org)
|
|
|
|
#### Arduino
|
|
|
|

|
|
|
|
[Arduino](https://www.arduino.cc) เป็นเฟรมเวิร์กไมโครคอนโทรลเลอร์ที่ได้รับความนิยมมากที่สุด โดยเฉพาะในหมู่นักเรียน ผู้ที่ชื่นชอบ และผู้สร้าง Arduino เป็นแพลตฟอร์มอิเล็กทรอนิกส์แบบโอเพ่นซอร์สที่รวมซอฟต์แวร์และฮาร์ดแวร์ คุณสามารถซื้อบอร์ดที่รองรับ Arduino จาก Arduino เองหรือจากผู้ผลิตรายอื่น แล้วเขียนโค้ดโดยใช้เฟรมเวิร์ก Arduino
|
|
|
|
บอร์ด Arduino เขียนโค้ดด้วยภาษา C หรือ C++ การใช้ C/C++ ช่วยให้โค้ดของคุณถูกคอมไพล์ให้มีขนาดเล็กและทำงานได้เร็ว ซึ่งเป็นสิ่งจำเป็นสำหรับอุปกรณ์ที่มีข้อจำกัดอย่างไมโครคอนโทรลเลอร์ แกนหลักของแอปพลิเคชัน Arduino เรียกว่า sketch และเป็นโค้ด C/C++ ที่มีฟังก์ชัน 2 ตัว - `setup` และ `loop` เมื่อบอร์ดเริ่มทำงาน โค้ดเฟรมเวิร์ก Arduino จะเรียกใช้ฟังก์ชัน `setup` หนึ่งครั้ง จากนั้นจะเรียกใช้ฟังก์ชัน `loop` ซ้ำ ๆ อย่างต่อเนื่องจนกว่าจะปิดพลังงาน
|
|
|
|
คุณจะเขียนโค้ดการตั้งค่าในฟังก์ชัน `setup` เช่น การเชื่อมต่อ WiFi และบริการคลาวด์ หรือการตั้งค่าขา Input และ Output โค้ดในฟังก์ชัน `loop` จะมีโค้ดประมวลผล เช่น การอ่านค่าจากเซ็นเซอร์และส่งค่าดังกล่าวไปยังคลาวด์ โดยปกติคุณจะเพิ่มการหน่วงเวลาในแต่ละ loop เช่น หากคุณต้องการส่งข้อมูลเซ็นเซอร์ทุก ๆ 10 วินาที คุณจะเพิ่มการหน่วงเวลา 10 วินาทีที่ท้าย loop เพื่อให้ไมโครคอนโทรลเลอร์พักการทำงาน ประหยัดพลังงาน แล้วเรียกใช้ loop อีกครั้งเมื่อครบ 10 วินาที
|
|
|
|

|
|
|
|
✅ สถาปัตยกรรมโปรแกรมนี้เรียกว่า *event loop* หรือ *message loop* แอปพลิเคชันหลายตัวใช้สิ่งนี้เบื้องหลัง และเป็นมาตรฐานสำหรับแอปพลิเคชันเดสก์ท็อปส่วนใหญ่ที่ทำงานบน OS เช่น Windows, macOS หรือ Linux ฟังก์ชัน `loop` จะฟังข้อความจากส่วนประกอบ UI เช่น ปุ่ม หรืออุปกรณ์อย่างคีย์บอร์ด และตอบสนองต่อข้อความเหล่านั้น คุณสามารถอ่านเพิ่มเติมใน [บทความเกี่ยวกับ event loop](https://wikipedia.org/wiki/Event_loop)
|
|
|
|
Arduino มีไลบรารีมาตรฐานสำหรับการโต้ตอบกับไมโครคอนโทรลเลอร์และขา I/O โดยมีการใช้งานที่แตกต่างกันภายใต้เพื่อให้ทำงานบนไมโครคอนโทรลเลอร์ที่แตกต่างกัน ตัวอย่างเช่น ฟังก์ชัน [`delay`](https://www.arduino.cc/reference/en/language/functions/time/delay/) จะหยุดโปรแกรมชั่วคราวในช่วงเวลาที่กำหนด ฟังก์ชัน [`digitalRead`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/) จะอ่านค่าของ `HIGH` หรือ `LOW` จากขาที่กำหนด โดยไม่คำนึงถึงบอร์ดที่โค้ดทำงาน ไลบรารีมาตรฐานเหล่านี้หมายความว่าโค้ด Arduino ที่เขียนสำหรับบอร์ดหนึ่งสามารถคอมไพล์ใหม่สำหรับบอร์ด Arduino อื่น ๆ และทำงานได้ โดยสมมติว่าขาเหมือนกันและบอร์ดรองรับฟีเจอร์เดียวกัน
|
|
|
|
มีระบบนิเวศของไลบรารี Arduino ของบุคคลที่สามจำนวนมากที่ช่วยให้คุณเพิ่มฟีเจอร์เพิ่มเติมในโปรเจกต์ Arduino ของคุณ เช่น การใช้เซ็นเซอร์และแอคชูเอเตอร์ หรือการเชื่อมต่อกับบริการ IoT บนคลาวด์
|
|
|
|
##### งานที่ต้องทำ
|
|
|
|
สำรวจ Wio Terminal
|
|
|
|
หากคุณใช้ Wio Terminal สำหรับบทเรียนนี้ ให้อ่านโค้ดที่คุณเขียนในบทเรียนที่แล้วอีกครั้ง ค้นหาฟังก์ชัน `setup` และ `loop` ตรวจสอบผลลัพธ์ที่ส่งออกทาง serial สำหรับฟังก์ชัน loop ที่ถูกเรียกซ้ำ ๆ ลองเพิ่มโค้ดในฟังก์ชัน `setup` เพื่อเขียนไปยัง serial port และสังเกตว่าโค้ดนี้ถูกเรียกเพียงครั้งเดียวในแต่ละครั้งที่คุณรีบูต ลองรีบูตอุปกรณ์ของคุณด้วยสวิตช์พลังงานด้านข้างเพื่อแสดงให้เห็นว่าฟังก์ชันนี้ถูกเรียกทุกครั้งที่อุปกรณ์รีบูต
|
|
|
|
## เจาะลึกคอมพิวเตอร์บอร์ดเดี่ยว
|
|
|
|
ในบทเรียนที่แล้ว เราได้แนะนำคอมพิวเตอร์บอร์ดเดี่ยว ตอนนี้เรามาเจาะลึกลงไปในเรื่องนี้กัน
|
|
|
|
### Raspberry Pi
|
|
|
|

|
|
|
|
[Raspberry Pi Foundation](https://www.raspberrypi.org) เป็นองค์กรการกุศลจากสหราชอาณาจักรที่ก่อตั้งขึ้นในปี 2009 เพื่อส่งเสริมการศึกษาด้านวิทยาการคอมพิวเตอร์ โดยเฉพาะในระดับโรงเรียน ในฐานะส่วนหนึ่งของภารกิจนี้ พวกเขาได้พัฒนาคอมพิวเตอร์บอร์ดเดี่ยวที่เรียกว่า Raspberry Pi Raspberry Pi ปัจจุบันมีให้เลือก 3 รุ่น - รุ่นขนาดเต็ม รุ่นเล็ก Pi Zero และ Compute Module ที่สามารถนำไปใช้ในอุปกรณ์ IoT สุดท้ายของคุณ
|
|
|
|

|
|
|
|
รุ่นล่าสุดของ Raspberry Pi ขนาดเต็มคือ Raspberry Pi 4B ซึ่งมี CPU แบบ quad-core (4 คอร์) ที่ทำงานที่ 1.5GHz RAM ขนาด 2, 4 หรือ 8GB กิกะบิตอีเธอร์เน็ต WiFi พอร์ต HDMI 2 พอร์ตที่รองรับหน้าจอ 4k พอร์ตเสียงและวิดีโอคอมโพสิต พอร์ต USB (USB 2.0 2 พอร์ต, USB 3.0 2 พอร์ต) ขา GPIO 40 ขา ตัวเชื่อมต่อกล้องสำหรับโมดูลกล้อง Raspberry Pi และช่องเสียบ SD card ทั้งหมดนี้อยู่บนบอร์ดที่มีขนาด 88mm x 58mm x 19.5mm และใช้พลังงานจากอะแดปเตอร์ USB-C 3A ราคาเริ่มต้นที่ 35 ดอลลาร์สหรัฐฯ ซึ่งถูกกว่าคอมพิวเตอร์ PC หรือ Mac มาก
|
|
|
|
> 💁 ยังมี Pi400 คอมพิวเตอร์แบบ all-in-one ที่มี Pi4 อยู่ในคีย์บอร์ด
|
|
|
|

|
|
|
|
Pi Zero มีขนาดเล็กกว่ามากและใช้พลังงานต่ำกว่า มี CPU แบบ single-core 1GHz RAM ขนาด 512MB WiFi (ในรุ่น Zero W) พอร์ต HDMI หนึ่งพอร์ต พอร์ต micro-USB หนึ่งพอร์ต ขา GPIO 40 ขา ตัวเชื่อมต่อกล้องสำหรับโมดูลกล้อง Raspberry Pi และช่องเสียบ SD card มีขนาด 65mm x 30mm x 5mm และใช้พลังงานน้อยมาก Zero มีราคา 5 ดอลลาร์สหรัฐฯ และรุ่น W ที่มี WiFi ราคา 10 ดอลลาร์สหรัฐฯ
|
|
|
|
> 🎓 CPU ในทั้งสองรุ่นนี้เป็นโปรเซสเซอร์ ARM ซึ่งแตกต่างจากโปรเซสเซอร์ Intel/AMD x86 หรือ x64 ที่คุณพบใน PC และ Mac ส่วนใหญ่ CPU เหล่านี้คล้ายกับ CPU ที่พบในไมโครคอนโทรลเลอร์บางตัว รวมถึงโทรศัพท์มือถือเกือบทั้งหมด Microsoft Surface X และ Apple Mac ที่ใช้ Apple Silicon รุ่นใหม่
|
|
|
|
Raspberry Pi ทุกรุ่นใช้ระบบปฏิบัติการ Debian Linux เวอร์ชันหนึ่งที่เรียกว่า Raspberry Pi OS ซึ่งมีให้เลือกทั้งเวอร์ชัน lite ที่ไม่มีเดสก์ท็อป ซึ่งเหมาะสำหรับโปรเจกต์ 'headless' ที่ไม่ต้องใช้หน้าจอ หรือเวอร์ชันเต็มที่มีเดสก์ท็อปเต็มรูปแบบ พร้อมเว็บเบราว์เซอร์ แอปพลิเคชันสำนักงาน เครื่องมือเขียนโค้ด และเกม เนื่องจาก OS เป็นเวอร์ชันของ Debian Linux คุณสามารถติดตั้งแอปพลิเคชันหรือเครื่องมือใด ๆ ที่ทำงานบน Debian และสร้างขึ้นสำหรับโปรเซสเซอร์ ARM ภายใน Pi
|
|
|
|
#### งานที่ต้องทำ
|
|
|
|
สำรวจ Raspberry Pi
|
|
|
|
หากคุณใช้ Raspberry Pi สำหรับบทเรียนนี้ ให้อ่านเกี่ยวกับส่วนประกอบฮาร์ดแวร์ต่าง ๆ บนบอร์ด
|
|
|
|
* คุณสามารถค้นหารายละเอียดเกี่ยวกับโปรเซสเซอร์ที่ใช้ใน [หน้าสารสนเทศฮาร์ดแวร์ Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/) อ่านเกี่ยวกับโปรเซสเซอร์ที่ใช้ใน Pi ที่คุณใช้งาน
|
|
* ค้นหาขา GPIO อ่านเพิ่มเติมเกี่ยวกับขาเหล่านี้ใน [เอกสาร GPIO ของ Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md) ใช้ [คู่มือการใช้งาน GPIO Pin](https://www.raspberrypi.org/documentation/usage/gpio/README.md) เพื่อระบุขาต่าง ๆ บน Pi ของคุณ
|
|
|
|
### การเขียนโปรแกรมคอมพิวเตอร์บอร์ดเดี่ยว
|
|
|
|
คอมพิวเตอร์บอร์ดเดี่ยวเป็นคอมพิวเตอร์เต็มรูปแบบที่ใช้ระบบปฏิบัติการเต็มรูปแบบ ซึ่งหมายความว่ามีภาษาการเขียนโปรแกรม เฟรมเวิร์ก และเครื่องมือมากมายที่คุณสามารถใช้ในการเขียนโค้ดได้ แตกต่างจากไมโครคอนโทรลเลอร์ที่ต้องพึ่งพาการสนับสนุนบอร์ดในเฟรมเวิร์กอย่าง Arduino ภาษาการเขียนโปรแกรมส่วนใหญ่มีไลบรารีที่สามารถเข้าถึงขา GPIO เพื่อส่งและรับข้อมูลจากเซ็นเซอร์และแอคชูเอเตอร์
|
|
|
|
✅ คุณคุ้นเคยกับภาษาการเขียนโปรแกรมอะไรบ้าง? ภาษานั้นรองรับบน Linux หรือไม่?
|
|
|
|
ภาษาการเขียนโปรแกรมที่นิยมที่สุดสำหรับการสร้างแอปพล
|
|
### การใช้คอมพิวเตอร์บอร์ดเดี่ยวในงาน IoT ระดับมืออาชีพ
|
|
|
|
คอมพิวเตอร์บอร์ดเดี่ยวถูกนำมาใช้ในงาน IoT ระดับมืออาชีพ ไม่ใช่แค่สำหรับชุดพัฒนาสำหรับนักพัฒนาเท่านั้น แต่ยังเป็นวิธีที่ทรงพลังในการควบคุมฮาร์ดแวร์และดำเนินงานที่ซับซ้อน เช่น การรันโมเดลการเรียนรู้ของเครื่อง ตัวอย่างเช่น [Raspberry Pi 4 compute module](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/) ซึ่งมีประสิทธิภาพเทียบเท่ากับ Raspberry Pi 4 แต่มีขนาดกะทัดรัดและราคาถูกกว่า โดยไม่มีพอร์ตส่วนใหญ่ ออกแบบมาเพื่อการติดตั้งในฮาร์ดแวร์ที่ปรับแต่งเอง
|
|
|
|
---
|
|
|
|
## 🚀 ความท้าทาย
|
|
|
|
ความท้าทายในบทเรียนที่ผ่านมา คือการลิสต์รายการอุปกรณ์ IoT ให้ได้มากที่สุดเท่าที่คุณจะหาได้ในบ้าน โรงเรียน หรือที่ทำงานของคุณ สำหรับอุปกรณ์แต่ละชิ้นในรายการนี้ คุณคิดว่าอุปกรณ์เหล่านั้นสร้างขึ้นจากไมโครคอนโทรลเลอร์หรือคอมพิวเตอร์บอร์ดเดี่ยว หรืออาจเป็นการผสมผสานของทั้งสองอย่าง?
|
|
|
|
## แบบทดสอบหลังบทเรียน
|
|
|
|
[แบบทดสอบหลังบทเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/4)
|
|
|
|
## ทบทวนและศึกษาด้วยตนเอง
|
|
|
|
* อ่าน [คู่มือเริ่มต้นใช้งาน Arduino](https://www.arduino.cc/en/Guide/Introduction) เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับแพลตฟอร์ม Arduino
|
|
* อ่าน [บทนำเกี่ยวกับ Raspberry Pi 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Raspberry Pi
|
|
* ศึกษาเพิ่มเติมเกี่ยวกับแนวคิดและคำย่อบางส่วนในบทความ [What the FAQ are CPUs, MPUs, MCUs, and GPUs ใน Electrical Engineering Journal](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/)
|
|
|
|
✅ ใช้คู่มือเหล่านี้ พร้อมกับข้อมูลค่าใช้จ่ายที่แสดงในลิงก์ใน [คู่มือฮาร์ดแวร์](../../../hardware.md) เพื่อช่วยตัดสินใจว่าคุณต้องการใช้แพลตฟอร์มฮาร์ดแวร์แบบใด หรือคุณต้องการใช้อุปกรณ์เสมือนแทน
|
|
|
|
## งานที่ได้รับมอบหมาย
|
|
|
|
[เปรียบเทียบและวิเคราะห์ความแตกต่างระหว่างไมโครคอนโทรลเลอร์และคอมพิวเตอร์บอร์ดเดี่ยว](assignment.md)
|
|
|
|
---
|
|
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาที่เป็นต้นฉบับควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |