มีการกระโดดครั้งใหญ่ระหว่างการทำต้นแบบบน Pi และใช้ไมโครคอนโทรลเลอร์หรือไม่?


25

คำถามนี้ถามในสิ่งอื่น ๆ ถ้ามีเส้นโค้งการเรียนรู้ขนาดใหญ่ระหว่างการใช้ Python บน Raspberry Pi เพื่อสร้างต้นแบบจุดสิ้นสุดและใช้ไมโครคอนโทรลเลอร์

เห็นได้ชัดว่ามีการปรับปรุงอย่างมากในการใช้พลังงาน (ที่ต้นทุนของการลดความเร็วของตัวประมวลผล) ดังนั้นจึงมีเหตุผลที่ดีที่จะใช้วิธีการ MCU สำหรับผลิตภัณฑ์ที่ต้องใช้พลังงานจากแบตเตอรี่

หนึ่งในเหตุผลที่เป็นไปได้ที่จะติดกับคอมพิวเตอร์บอร์ดเดียวซึ่งรัน Linux คือไม่มีซอฟต์แวร์ใหม่ที่จะเรียนรู้ (เหนือหลามหรือคล้ายกัน) สมมติว่าแอปพลิเคชันสามารถเขียนในภาษาระดับสูง (ที่ควรมีมาตรฐานมากมาย ห้องสมุด)

บนแพลตฟอร์มการพัฒนาแบบฝังตัวเลือกที่น่าจะเป็น C ++ (mbed หรือ arduino) หรือ micropython ความประทับใจของฉันคือสิ่งเหล่านี้ไม่ได้มีความแตกต่างอย่างมีนัยสำคัญหรือซับซ้อนกว่าการเขียนโค้ดเพื่อทำงานภายใต้ Linux แม้ว่าแพลตฟอร์มนั้นจะมีข้อได้เปรียบส่วนตัว ฉันพลาดอะไรที่เกี่ยวข้องกับนักพัฒนาซอฟต์แวร์หรือไม่?

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

คำตอบ:


12

การเพิ่มคำตอบและจุดที่ครอบคลุมของ George ในการสนับสนุนฮาร์ดแวร์ แม้ว่าฮาร์ดแวร์ที่ต้องการ (เช่นอีเธอร์เน็ต, WiFi, การ์ด SD) จะถูกเพิ่มเข้าไปในไมโครคอนโทรลเลอร์ / Arduino ผ่านเกราะป้องกันหรือบอร์ดต่อขยายที่คล้ายกันห้องสมุดที่ใช้งานพวกมันค่อนข้างเครียดกับหน่วยความจำขนาดเล็ก (เช่น ATMEGA328 (คอนโทรลเลอร์ Arduino ทั่วไป) มี FLASH ขนาด 32Kb และ RAM ขนาด 2Kb) โดยเฉพาะอย่างยิ่งเมื่อรวมคุณสมบัติหลายอย่าง (เครือข่าย, จอแสดงผล, การ์ด SD) ซึ่งอาจเป็นข้อ จำกัด ที่รุนแรง

ตัวอย่างจากโลก Arduino:

รองรับการ์ด SD และระบบไฟล์อย่างง่าย (FAT):

  • การ์ด SD (ไม่ทราบขนาดรหัส แต่ไม่น่าเป็นปัญหาใหญ่หากใช้ SPI ฮาร์ดแวร์) บัฟเฟอร์ RAM อย่างน้อย 512 ไบต์
  • Petit FAT FSต้องการ ~ 2..4 kB FLASH และ RAM ขนาด 44 ~ ไบต์

ใช้จอแสดงผลเมทริกซ์:

อีเธอร์เน็ตที่มีโปรโตคอลสแต็ก TCP / IP:

  • uIP : ข้อกำหนดของ RAM ในช่วงขนาดแพ็คเก็ตทั่วไป (> 1 kB) อย่างไรก็ตามคอนโทรลเลอร์อีเธอร์เน็ตแบบชิปเดียวมักจะมาพร้อมกับบัฟเฟอร์บนชิปที่สามารถเก็บเฟรมอีเทอร์เน็ตขนาดใหญ่ไว้ได้ไม่กี่ตัว

    มีความเป็นไปได้ที่จะรันการใช้งาน uIP ที่มี RAM น้อยกว่า 200 ไบต์ แต่การกำหนดค่าดังกล่าวจะให้ปริมาณงานที่ต่ำมากและจะอนุญาตให้มีการเชื่อมต่อพร้อมกันจำนวนน้อยเท่านั้น ( ที่มา )

  • IP stack พร้อมโปรโตคอล TCP และ UDP สำหรับ Arduino : หน่วยความจำภายนอกขั้นต่ำ 128 kB

  • IP ผ่านอินเตอร์เฟสแบบอนุกรม: SerialIP ~ 9 kB FLASH และRAM "พอ"

โดยรวมแล้วการเขียนโปรแกรมที่มีข้อ จำกัด เหล่านั้นต้องการแนวทางที่แตกต่างกันและต้องการการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับพื้นที่ของโปรแกรมและขนาดรหัส (FLASH) ข้อมูลรันไทม์ (RAM) และความเร็วในการเรียกใช้งาน คำตอบนี้มีเนื้อออกมาอย่างดี

คำถามที่ถามโดยเฉพาะเกี่ยวกับแพลตฟอร์ม mbed เป็นที่น่าสังเกตว่ามีคุณสมบัติที่เกี่ยวข้องกับ IoT มากที่สุดนั่นคือการเชื่อมต่อพร้อมการเข้ารหัสการรับรองความถูกต้องและการอนุญาต มันควรจะให้การสนับสนุนฮาร์ดแวร์ของ Bluetooth Low Energy และ IPv6 ผ่านเครือข่ายพื้นที่ส่วนบุคคลแบบไร้สายพลังงานต่ำ แม้ว่าคุณสมบัติการเชื่อมต่อเหล่านี้จะมีให้เฉพาะในบอร์ดการพัฒนาที่มีรายชื่อ> = 128 kB FLASH และ> = 16 kB RAM บอร์ด dev ขนาดเล็กในทางกลับกันรวมถึงระบบที่มีไมโครคอนโทรลเลอร์ขนาดเล็กเช่น ARM Cortex-M0 + Core พร้อมแฟลช 16KB, RAM 4KB (เช่นไม่มากไปกว่า Arduinos ขนาดกลาง) โดยไม่มีการเชื่อมต่อเฉพาะ


ข้อ จำกัด ของทรัพยากรเป็นช่องว่างที่ใหญ่ที่สุดในสมมติฐานของฉัน - ง่ายต่อการลืมคนส่วนใหญ่พัฒนาโดยไม่มีปัญหาเหล่านี้ส่วนใหญ่เวลา
Sean Houlihane

20

ขึ้นอยู่กับสิ่งที่คุณพยายามจะทำ

  1. ช่องว่างที่ใหญ่ที่สุดคือไมโครคอนโทรลเลอร์ที่คุณพูดถึง (เช่น Arduino) ไม่ได้รันระบบปฏิบัติการมัลติทาสก์เช่น Linux ซึ่งหมายความว่าหากแอปพลิเคชันของคุณขึ้นอยู่กับมัลติทาสกิ้งหรือมัลติเธรดนี่อาจยากกว่าหรือเป็นไปไม่ได้เลยที่จะรันบน Arduino

  2. ช่องว่างที่สองคือการสนับสนุนฮาร์ดแวร์ ตัวอย่างเช่น Raspberry Pi รองรับกล้อง, เสียง USB, อีเธอร์เน็ต, WiFi นอกกรอบ ไม่ได้รับการสนับสนุนโดยตรงจาก Arduino และในขณะที่คุณสามารถใช้ชิลด์ต่างๆ (เช่นโฮสต์ USB, อีเธอร์เน็ตหรือ WiFi) การใช้มันจะไม่ตรงไปตรงมาเหมือนกับการใช้เครือข่ายบน Raspberry Pi

  3. ช่องว่างที่สามคือทรัพยากรที่มีอยู่ ไมโครคอนโทรลเลอร์ส่วนใหญ่ไม่ได้เข้าใกล้แหล่งข้อมูลที่ Raspberry Pi มอบให้ ตัวอย่างเช่นแม้แต่ Raspberry Pi ตัวแรกยังเสนอ CPU ที่ทำงานที่ 700MHz พร้อม RAM ขนาด 256Mb และสามารถใช้กับพื้นที่เก็บข้อมูลขนาด 32Gb ได้ Arduino Uno ทั่วไปที่ใช้ ATMEGA328 ทำงานที่ 16MHz และมีที่เก็บข้อมูล 32Kb และ RAM 2Kb

ดังนั้นการใช้ Raspberry Pi จึงง่ายกว่ามากสำหรับนักพัฒนาที่มาจากพีซี ข้อได้เปรียบหลักของการใช้ไมโครคอนโทรลเลอร์คือ:

  • ค่าใช้จ่าย (โคลน Arduino Arduino จีนราคาน้อยกว่า $ 2 ชิ้นพร้อมจัดส่ง)
  • การใช้พลังงาน (ไมโครคอนโทรลเลอร์สามารถปรับให้เหมาะสมได้ดีสำหรับการใช้พลังงานต่ำ - สำคัญถ้าคุณต้องใช้แบตเตอรี่)
  • ความพร้อมใช้งานแบบเรียลไทม์คือความสามารถในการตอบสนองต่อการเปลี่ยนสัญญาณแบบเรียลไทม์
  • ขนาด (Arduino Mini นั้นแคบกว่า Raspberry Pi Zero สองเท่าและถ้าคุณไม่ต้องการพินมากขนาด ATTINY85 นั้นน้อยกว่าเพนนีและทำงานได้โดยไม่มีคริสตัล)

หากไม่มีสิ่งใดที่มีความสำคัญการใช้ Raspberry Pi จะทำให้เข้าใจได้ง่ายขึ้น


3
พลังงานแบตเตอรี่และไม่มีความต้องการทรัพยากรที่ยอดเยี่ยมเป็นตัวขับเคลื่อนสำหรับการใช้ mcu - ดังนั้นฉันคาดว่าหน่วยประมวลผล 10-100 MHz ก็เพียงพอแล้ว จุดที่ถูกต้องในการใช้อุปกรณ์ต่อพ่วงแม้ว่า SPI น่าจะเทียบเท่ากับ mcu ของ USB
Sean Houlihane

2
แค่มีรถบัสก็ไม่พอ พิจารณาใช้ WiFi บน Linux แอปของคุณไม่จำเป็นต้องมีความรู้เฉพาะเกี่ยวกับมันรหัสเดียวกันซึ่งทำงานกับอีเธอร์เน็ตจะทำงานกับอินเทอร์เฟซ WiFi นี่ไม่ใช่กรณีที่มีไมโครคอนโทรลเลอร์คุณจะต้องใช้ไลบรารีที่แตกต่างกันเรียนรู้วิธีใช้และเปลี่ยนรหัส
George Y.

1
ตกลงไม่ทราบว่าการใช้ห้องสมุดอื่นอาจเป็นอุปสรรคมาก
Sean Houlihane

2
หากคุณไม่ต้องการพินมากมายคุณสามารถรับ ATtiny4 ที่มีขนาดเท่าเมล็ดข้าว: P
Nick T

1
เห็นได้ชัดว่ามันไม่เล็กไปกว่า Attiny85 :) แต่คุณพูดถูกถ้าเราคิดที่ไม่ใช่แบบจุ่มแม้แต่ 85 ก็แค่ปลายนิ้ว
George Y.

9

ใช่มันเป็นการกระโดดครั้งใหญ่จากการเขียนโปรแกรมใน Python ไปจนถึงการเขียนโปรแกรมโดยใช้เครื่องมือภาษา C-based ทั่วไปบนไมโครคอนโทรลเลอร์ อันที่จริงแล้วในหลายกรณีคุณอาจจำเป็นต้องเขียนใบสมัครของคุณเป็นภาษาแอสเซมบลี

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

แม้ว่าฉันจะมีประสบการณ์ระดับมืออาชีพมากกับตัวควบคุมไมโครและไมโครโปรเซสเซอร์ แต่ฉันก็ชอบที่จะใช้งานโครงการส่วนตัวของฉันโดยใช้ฮาร์ดแวร์ RPi กับ Arduinos บางอย่างสำหรับสิ่งสำคัญแบบเรียลไทม์ ฉันได้ขลุกอยู่กับ Beagle Bone Black และในบางวิธีมันสะดวกกว่าการใช้ RPi กับ Arduinos หนึ่งอันหรือมากกว่า


9

ใช่แตกต่างกันมาก

ความแตกต่างเป็นเหมือนกลางวันและกลางคืนทั้งที่เกี่ยวกับฮาร์ดแวร์และซอฟต์แวร์ ไม่มีการเปรียบเทียบที่ถูกต้องเลย

เมื่อใดที่จะใช้

ใช้ Arduino ถ้า ...

  • ข้อ จำกัด ด้านอวกาศทำให้ Pi เป็นไปไม่ได้
  • การใช้พลังงานของ Pi จะมากเกินไป
  • เงินเป็นปัญหา (โดยเฉพาะอย่างยิ่งถ้าคุณต้องการผู้ควบคุมแต่ละคนหรือหลายคนในโครงการของคุณแต่ละคนมีตรรกะที่ง่ายมากเท่านั้น)
  • คุณต้องการได้รับ nitty และ gritty และทำงานในระดับที่ต่ำกว่ามากเพื่อความสนุกสนานหรือเพื่อรับความรู้
  • คุณต้องการความเรียบง่ายมากและ / หรือกำหนดพฤติกรรมแบบเรียลไทม์ 100% และมีโอกาสเป็นศูนย์ที่บางสิ่งที่อยู่นอกเหนือการควบคุมของคุณจะฆ่าโปรแกรมของคุณ
  • คุณไม่จำเป็นต้องใช้อีเธอร์เน็ตฟังก์ชั่นโฮสต์ USB ที่ยาก (เช่นการเข้าถึงฮาร์ดไดรฟ์การใช้มันในฝั่งไคลเอ็นต์เช่นอุปกรณ์ HID นั้นใช้ได้) ส่วนใหญ่เหล่านี้สามารถติดตั้งกับ Arduino (verrry slooowly) แต่มีค่าใช้จ่ายสูงในแง่ของ RAM / EPROM และฟังก์ชั่น เนื่องจากไม่มีการทำงานหลายหน้าที่ยึดเอาเสียก่อนงานปลดบล็อกจึงค่อนข้างซับซ้อนอย่างรวดเร็ว
  • คุณสามารถใช้งาน Arduino การพัฒนาแบบเรียบง่าย IDE หรือขุดลึกลงไปอีกมาก (เช่นการสร้างโปรแกรมด้วยตัวเอง) และ - หากคุณไม่ต้องการอุปกรณ์อัปโหลดแบบ USB เช่น Pro Micro - ชุดพัฒนาที่ซื้อหรือผลิตเอง / เครื่องเขียน

ในกรณีอื่น ๆ ทั้งหมด Pi เป็นมิตรกับผู้ใช้อย่างมากมาย Pi เป็นเพียงคอมพิวเตอร์อีกเครื่องหนึ่ง (ช้า)

อย่าเข้าใจฉันผิด ฉันเป็นเจ้าของ Pi และใช้สำหรับบริการ Linux ต่างๆในเครือข่ายของฉัน ฉันมักจะเขียนโปรแกรม Arduinos (Pro Micros เป็นส่วนใหญ่) ฉันชอบพวกเขาเหมือนกัน แต่พวกเขามีสถานการณ์การใช้งานที่แตกต่างกันมาก

คำถามของคุณเกี่ยวกับความยากลำบาก - มันสัมพันธ์กัน ครั้งเดียวที่ Arduino ยากสำหรับฉันยากที่จะแก้ไขปัญหาการจับเวลาโดยเฉพาะอย่างยิ่งถ้ารวมกับอุปกรณ์อิเล็กทรอนิกส์ที่น่าสงสัย (เช่นการรบกวน EM, สายยาวเกินไป ฯลฯ ) หากคุณมีความแน่วแน่ในภาษาที่คุณเลือก (เช่น C สำหรับ Arduino IDE) คุณควรแฮ็คไลบรารี่ที่คุณใช้งานอยู่ แต่ถึงกระนั้นก็มักจะมีความซับซ้อนมากขึ้นแล้ว Pi ที่คุณสามารถยกตัวอย่างเช่นใช้ภาษาสคริปต์ที่คุณเลือกสำหรับสิ่งที่ไม่ใช่ช่วงเวลาที่สำคัญ - ผู้ที่จะเสมอเป็นเรื่องง่ายมากขึ้นในการพัฒนาและการแก้ปัญหาใน


ฉันไม่ได้ถามว่าเป็นแพลตฟอร์มการพัฒนาที่ดีที่สุด - กรณีการใช้งานของฉันต้องใช้ mcu ส่วนใหญ่เป็นเพราะข้อ จำกัด ด้านพลังงาน ฉันเห็นคำถามไม่ชัดเจนเกินไปในประเด็นนี้
Sean Houlihane

เอาล่ะส่วนแรกของคำตอบก็พอแล้ว ฉันจะให้คนอื่นยืนเป็น "ภาคผนวก" ถ้าคุณชอบ
AnoE

7

ฉันเชื่อว่ามีบางจุดที่ยังไม่ได้ระบุอย่างชัดเจน

สภาพแวดล้อมการพัฒนานั้นแตกต่างอย่างสิ้นเชิง คุณสามารถพัฒนาซอฟต์แวร์ Pi บน Pi ได้ - คุณสามารถใช้ GUI ได้หากต้องการ มีเครื่องมือการดีบักขั้นสูงในตัวเช่นกัน - มีสิ่งที่น่ากลัวมากมายสำหรับระบบคอมพิวเตอร์ใด ๆ

ตัวควบคุมจะต้องได้รับการพัฒนา / เลียนแบบบนคอมพิวเตอร์แยกต่างหากจากนั้นส่งไปยังตัวควบคุมสำหรับการทดสอบขั้นสุดท้าย

Pi สามารถเรียกใช้แทบทุกภาษาที่คุณต้องการตั้งโปรแกรมด้วยโดยทั่วไปแล้วคอนโทรลเลอร์ขนาดเล็กจะมีหนึ่งหรือสองตัว

Pi สามารถใช้งานระบบปฏิบัติการได้ค่อนข้างน้อย (รวมถึง windows IoT และระบบพิเศษอื่น ๆ ) คอนโทรลเลอร์แบบฝังตัวมักจะไม่เรียกใช้ "ระบบปฏิบัติการ" เลย

ตราบใดที่รันไทม์ / ระบบปฏิบัติการไป - Pi ใช้เวลาสองสามวินาทีในการบูต - หากคุณต้องการทำอะไรบางอย่างในช่วงสองสามวินาทีแรกนั้น pi จะไม่ทำงานสำหรับคุณ นอกจากนี้หากคุณไปถึงขั้นตอนสุดโต่งเพื่อป้องกันการเขียนใด ๆ ไปยังที่เก็บข้อมูลใด ๆ คุณไม่ควรถอดพลังงานออกจริงๆคุณต้องทำการ "ปิดเครื่อง" และรอสักครู่ นี่อาจ จำกัด การใช้งานบางอย่างด้วย

อีกจุดหลังการปรับใช้ที่ฉันไม่ได้กล่าวถึง ฉันไม่แน่ใจว่าฉันจะมั่นใจได้อย่างไรว่าฉันได้รับ Pi อย่างถูกต้อง - ไม่มีหน่วยงานใดติดรหัสเล็ก ๆ น้อย ๆ ที่ไหนสักแห่งที่อนุญาตการเข้าถึงโดยไม่ได้รับอนุญาตภายใต้สถานการณ์บางอย่าง - โดยไม่ต้องลบมันออกจากเครือข่ายทั้งหมด . ไมโครคอนโทรลเลอร์นั้นค่อนข้างง่ายต่อการรักษาความปลอดภัยเนื่องจากคุณเขียนโค้ดเกือบทั้งหมดที่รันอยู่บนสิ่งนั้น

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


WRT ย่อหน้าสุดท้ายของคุณใช่เรียกว่าโลหะเปลือยและไม่กี่คนที่ทำมัน แต่ในทางเทคนิคมันเป็นไปได้ ... ยินดีต้อนรับสู่เว็บไซต์!
Ghanima

3

ความแตกต่างระหว่างการพัฒนาแอปพลิเคชันด้วย Pi อาจแตกต่างกันมากหรือคล้ายกับการพัฒนาแอปพลิเคชันด้วยไมโครคอนโทรลเลอร์เนื่องจากความแตกต่างของฮาร์ดแวร์และความแตกต่างของการพัฒนาซอฟต์แวร์

มีไมโครคอนโทรลเลอร์หลากหลายให้เลือกใช้ตั้งแต่โปรเซสเซอร์ 8 บิตถึง 64 บิตและมีที่ใดก็ได้ตั้งแต่ RAM ไม่กี่ K จนถึง RAM ไม่กี่กิกะไบต์ ไมโครคอนโทรลเลอร์ที่มีความสามารถมากขึ้นจะมอบประสบการณ์ที่เหมือน Pi ไมโครคอนโทรลเลอร์ที่มีความสามารถน้อยลงไม่ได้

และถึงแม้จะมี Pi ก็มีความแตกต่างอย่างมากระหว่างการพัฒนาสำหรับระบบปฏิบัติการ Windows 10 IoT กับการพัฒนาสำหรับ Raspian, Mate หรือระบบปฏิบัติการ Linux อื่น ๆ Windows 10 IoT ต้องการพีซีสำหรับการพัฒนาโดยใช้ toolchain ของ Visual Studio พร้อมดีบักเกอร์ระยะไกลที่กำหนดเป้าหมายสภาพแวดล้อม Universal Windows Programme (UWP) การพัฒนาสำหรับ Raspian หรือ Mate สามารถทำได้จริงบน Pi ด้วยเครื่องมือที่มีอยู่ใน Pi

ข้อ จำกัด Application Protocolถูกนำมาใช้สำหรับขนาดเล็กและอุปกรณ์ จำกัด ถูกนำมาใช้กับ Internet ของสภาพแวดล้อมของสิ่งต่าง ๆ เพื่อให้เข้าใจถึงความหลากหลายของฮาร์ดแวร์และซอฟต์แวร์ไมโครคอนโทรลเลอร์หน้านี้ในการนำโพรโทคอล CoAP มาใช้จะให้แนวคิดเกี่ยวกับสภาพแวดล้อมที่เป็นเป้าหมาย มันกล่าวถึงระบบปฏิบัติการ Contikiที่ฉันเคยได้ยินมาพร้อมกับ OS ที่รู้จักกันดีเช่น iOS, OSX และ Android ภาษาการเขียนโปรแกรมที่กล่าวถึงคือ Java, JavaScript, C, C #, Ruby, Go, Erlang, Rust และ Python

โซ่เครื่องมือที่ใช้สำหรับการพัฒนากับไมโครคอนโทรลเลอร์แตกต่างกันไปขึ้นอยู่กับผู้ผลิตรวมถึงทรัพยากรประเภทใดบ้างที่มีให้จากชุมชนการพัฒนาและการริเริ่มโอเพ่นซอร์ส ในบางกรณีคุณได้รับ cross assembler ในกรณีอื่น ๆ คุณจะได้รับ C cross compiler และในบางกรณีคุณจะได้โซ่เครื่องมือที่ดีพร้อมระฆังและนกหวีดและอีมูเลเตอร์และคล้ายกับ Visual Studio toolchain สำหรับ Windows 10 IoT

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

ความประทับใจของฉันคือว่าไมโครคอนโทรลเลอร์ส่วนใหญ่มีคอมไพเลอร์ C ข้ามแม้ว่าคอมไพเลอร์อาจรองรับมาตรฐานเก่าเช่น K&R หรือ C98 คอมไพเลอร์ C ข้ามมักจะมีคำหลักที่ไม่ได้มาตรฐานสำหรับคุณสมบัติเฉพาะไมโครโปรเซสเซอร์ตัวอย่างเช่นfarและnearคำหลักสำหรับพอยน์เตอร์ที่มีโปรเซสเซอร์ 8080 และ 8086 เก่าที่มีหน่วยความจำแบ่งกลุ่ม

นอกจากนี้ยังมีภาษาพิเศษที่ไมโครคอนโทรลเลอร์เป้าหมายเช่นการเขียนโปรแกรมภาษา FORTH ภาษาเหล่านี้มักจะมีการออกแบบเวลาทำงานที่กำหนดเป้าหมายโลหะเปลือยเพื่อให้ไม่มีระบบปฏิบัติการอื่นนอกจากเวลาใช้งานภาษา

ระบบปฏิบัติการอาจมีตั้งแต่ระบบไม่มีกระดูกไปจนถึงลินุกซ์เปลือยไปจนถึงระบบปฏิบัติการพิเศษเช่นfreeRTOSหรือ Windows Embedded หรือ Linux หรือ Microsoft Windows เห็นนี้MINIBIAN โครงการ SourceForge สำหรับราสเบอร์รี่ Pi ดู eBook นี้เช่นกันคือBaking Pi: การพัฒนาระบบปฏิบัติการซึ่งอธิบายการพัฒนาระบบปฏิบัติการพื้นฐานสำหรับ Raspberry Pi ในแอสเซมเบลอร์

บทความนี้จาก Visual Studio Magazine การเขียนโปรแกรม Internet of Things with Visual Studioให้ภาพรวมของอุปกรณ์ต่าง ๆ มากมายตามด้วยภาพรวมของการใช้ Visual Studio IDE สำหรับการพัฒนาสำหรับ Linux และ Windows

ปัจจุบันมีอุปกรณ์ไมโครคอนโทรลเลอร์ขนาดใหญ่ที่สามารถตั้งโปรแกรมและเชื่อมต่อเครือข่ายขนาดใหญ่ที่กำลังเติบโตและมีอยู่ในปัจจุบัน ในระดับที่ต่ำมากคุณจะมีอุปกรณ์ 16-32 บิตที่เรียบง่ายจากผู้ผลิตชิปดั้งเดิมอย่าง Texas Instruments (ฉันเล่นกับชุดพัฒนา SensorTag และสนุกมากทำให้ฉันคิดว่า Watch DevPack อาจเป็นชุดเครื่องมือการเรียนรู้ที่ยอดเยี่ยมเช่นกัน)

อุปกรณ์ไมโครคอนโทรลเลอร์ที่รู้จักกันดีบางตัว ได้แก่ Arduino, BeagleBoard และ Raspberry Pi สภาพแวดล้อมเหล่านี้ล้วนได้รับการสนับสนุนจากชุมชนอย่างกว้างขวางและพร้อมที่จะเสียบเข้ากับเซ็นเซอร์ภายนอกมอเตอร์เซอร์โวและสิ่งอื่น ๆ ที่คุณอาจจินตนาการเป็นจำนวนมาก Adafruit ซึ่งเป็นซุปเปอร์สโตร์แห่งการเรียนรู้ทางอิเล็กทรอนิกส์ที่ก่อตั้งโดย Limor "Ladyada" Fried ให้บริการอุปกรณ์ต่อพ่วงทุกประเภทสำหรับบอร์ดเหล่านี้พร้อมกับบอร์ดพัฒนาขนนกที่มีน้ำหนักเบา

...

อุปกรณ์ที่น่าสนใจที่สุดสำหรับนักพัฒนาที่คุ้นเคยกับ Microsoft .NET Framework และ Visual Studio อาจเป็นสภาพแวดล้อมที่รองรับ Windows 10 IoT Core เหล่านี้คืออุปกรณ์ที่ใช้ x86 และ ARM ที่รองรับแอพ Universal Windows Platform (UWP) ที่เขียนในหลากหลายภาษารวมถึง C #, Visual Basic, Python และ Node.js / JavaScript Windows 10 IoT core รองรับอุปกรณ์ต่าง ๆ รวมถึง Raspberry Pi, Arrow DragonBoard 410C, Intel Joule และ Compute Stick และ MinnowBoard นอกจากนี้ยังมีแพลตฟอร์มผลิตภัณฑ์ที่น่าสนใจเช่น Askey TurboMate E1 ที่สวมใส่ได้

ตัวอย่างเฉพาะของแอปพลิเคชันไมโครคอนโทรลเลอร์

นี่คือภาพของบอร์ดไมโครคอนโทรลเลอร์จากเครื่องชงกาแฟอัตโนมัติ สิ่งนี้ดูเหมือนจะเป็นองค์ประกอบมาตรฐานสำหรับเครื่องชงกาแฟอัตโนมัติที่ผลิตในประเทศจีน เว็บไซต์สำหรับผู้ผลิตนั้นจะถูกพิมพ์ลงบน PCB

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

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

ป้อนคำอธิบายรูปภาพที่นี่

ไมโครคอนโทรลเลอร์เป็นELAN Microelectronics Corp EM78P447NAM (แผ่นข้อมูล)ซึ่งเป็นไมโครคอนโทรลเลอร์ 8 บิต สถิติพื้นฐานบางอย่างแสดงให้เห็นว่าอุปกรณ์ขนาดเล็กและขนาดเล็กที่สุดนี้เป็นอย่างไร แต่ก็ใช้งานได้ตามวัตถุประสงค์ที่ต้องการ ความตั้งใจคือการพัฒนาซอฟต์แวร์ซึ่งจะดาวน์โหลดลงในการเขียนครั้งเดียว ROM เป็นส่วนหนึ่งของการผลิต

• การใช้พลังงานต่ำ:

* Less then 2.2 mA at 5V/4MHz

* Typically 35 µA, at 3V/32KHz

* Typically 2 µA, during sleep mode

• 4K × 13 บิตบนชิป ROM

•สามบิตการป้องกันเพื่อป้องกันการบุกรุกของรหัสหน่วยความจำ OTP

•การกำหนดค่าหนึ่งการลงทะเบียนเพื่อรองรับความต้องการของผู้ใช้

• 148 × 8 บิตสำหรับการลงทะเบียนชิป (SRAM, การลงทะเบียนเอนกประสงค์)


2
ฉันไม่คิดว่านี่เป็นคำถาม แน่นอนว่าผลิตภัณฑ์บางอย่างไม่ได้รับการบรรจุอย่างดี แต่นั่นก็เป็น SBC เช่นกัน
Sean Houlihane

1
@SeanHoulihane สิ่งที่ฉันพยายามทำกับคำตอบนี้คือการให้มุมมองของไมโครคอนโทรลเลอร์กับคำถามโดยเฉพาะว่ามีอุปกรณ์หลากหลายที่ตรงกับฉลากไมโครคอนโทรลเลอร์ มีแนว OS มากกว่า Linux และภาษาการเขียนโปรแกรมมากกว่างูหลามหรือ C
Richard Chambers

1
สำหรับฉันคุณแค่บอกว่าโลกของ MCU นั้นยุ่งเหยิง ซึ่งฉันรู้สึกว่าทำให้เข้าใจผิด
Sean Houlihane

1
@SeanHoulihane ฉันขอโทษที่ความประทับใจของคุณจากโพสต์ของฉันคือโลก MCU เป็นระเบียบ การตีความอีกอย่างหนึ่งก็คือโลก MCU เป็นหนึ่งในทางเลือกและโอกาสที่ยอดเยี่ยมมากมายอย่างไรก็ตามผู้อ่านนำอคติและอคติของตนเองมาบรรยาย
Richard Chambers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.