Arduino กับไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์


11

อะไรคือความแตกต่างระหว่าง Arduino ไมโครโปรเซสเซอร์และไมโครคอนโทรลเลอร์? ฉันกำลังพยายามหาสิ่งที่ดีที่สุดในการใช้งานหน้าจอสัมผัสแบบต้านทานราคาถูก

คำตอบ:


21

ไมโครโปรเซสเซอร์:

โดยทั่วไปแล้วจะพบได้ในพีซีเดสก์ท็อปหรือแล็ปท็อปและมีซีพียูและหน่วยความจำภายนอกรวมถึง I / O บัสต่างๆเพื่อเชื่อมต่อกับโลกภายนอกเช่น SPI, I2C, UART, USB, LCD และอื่น ๆ ไมโครโปรเซสเซอร์จะมีผลึกภายนอกเพื่อให้นาฬิกา

ไมโครโปรเซสเซอร์ส่วนใหญ่ไม่มีหน่วยความจำแบบอ่านอย่างเดียวบนชิป มีชิปภายนอกอยู่บนเมนบอร์ดซึ่งมีรหัสการบู๊ตเริ่มต้นแทน บนพีซีที่ใช้ Intel เรียกว่าระบบอินพุต / เอาท์พุตพื้นฐาน (BIOS) และยังมีรูทีน I / O เพิ่มเติมจากรหัสบูตเริ่มต้น รหัสการบู๊ตเริ่มต้นจากการทดสอบด้วยตนเองเมื่อเปิดเครื่อง (POST) จากนั้นดูว่าจะโหลดตำแหน่งใดในขั้นตอนถัดไปของรหัสบูต - จากฮาร์ดไดรฟ์ซีดี (หรือในสมัยก่อน) ลงในฟลอปปี้ดิสก์ การบูตระดับที่สองนี้จะโหลดระบบปฏิบัติการ (อาจมีรหัสบูตสามระดับในบางระบบ)

ไมโครโปรเซสเซอร์บางตัว (โดยปกติจะเป็นเป้าหมายสำหรับสมาร์ทโฟนและแท็บเล็ตซึ่งมีตัวเลือกการบูต จำกัด ) มีหน่วยความจำแบบอ่านอย่างเดียวจำนวนเล็กน้อยที่มีรหัสบูตเริ่มต้น

ฉันอ้างถึงรหัสบูตเป็นแบบอ่านอย่างเดียว จริงๆแล้วในบางระบบก็สามารถอัพเดทได้ อย่างไรก็ตามเรื่องนี้ค่อนข้างเสี่ยง หากมีสิ่งผิดปกติระบบอาจไม่สามารถบู๊ตได้อีกต่อไป

แตกต่างจากไมโครคอนโทรลเลอร์ที่รันโปรแกรมจากหน่วยความจำแบบอ่านอย่างเดียวหลังจากบูตไมโครโปรเซสเซอร์โหลดโปรแกรมลงใน RAM ภายนอกและรันจากที่นั่น

ไมโครคอนโทรลเลอร์:

ในทางกลับกันเป็นชิปเดี่ยวแบบสแตนด์อโลนที่มี CPU, หน่วยความจำแบบอ่านอย่างเดียวในการจัดเก็บโปรแกรม, RAM เพื่อจัดเก็บตัวแปรที่ใช้ในการดำเนินการของโปรแกรมและ I / O บัสต่างๆเพื่อเชื่อมต่อกับโลกภายนอก เช่น SPI, I2C, UART และอื่น ๆ ด้วยตัวเองมันไม่สามารถรันโปรแกรมใด ๆ โดยไม่ได้ตั้งโปรแกรมผ่านอินเทอร์เฟซภายนอกกับพีซี ไมโครคอนโทรลเลอร์อาจต้องการคริสตัลภายนอกเพื่อจัดเตรียมนาฬิกาอย่างไรก็ตามบางตัวมีนาฬิกาภายใน

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

เพื่อจุดประสงค์ของคุณคุณต้องการใช้ไมโครคอนโทรลเลอร์ไม่ใช่ไมโครโปรเซสเซอร์ ในการใช้ไมโครคอนโทรลเลอร์คุณจะต้องออกแบบบอร์ดของคุณเองหรือซื้อบอร์ดพัฒนาบางประเภท

Arduino:

เป็นบอร์ดเช่นนี้และมีไมโครคอนโทรลเลอร์โดยทั่วไปจะเป็น 8-bit AVR เช่น ATmega8, ATmega168, ATmega328, ATmega1280 และ ATmega2560 รวมถึงพาวเวอร์ซัพพลายคริสตัลและส่วนหัวของหญิงเพื่อเชื่อมต่อกับบอร์ดต่อพ่วงต่างๆ

แผงต่อพ่วงเหล่านี้เรียกว่าshieldsและถูกออกแบบให้วางซ้อนกันบน (ซึ่งมีหมุดตัวผู้ที่ด้านล่างของบอร์ดเพื่อเชื่อมต่อกับ Arduino เองหรือตัวป้องกันอื่น ๆ และหัวส่วนบนของหญิงเพื่อยอมรับหมุดตัวผู้ของ โล่ซ้อนกันอยู่ด้านบนของมัน)

ตัวอย่างโล่คือแผงควบคุมมอเตอร์แผง I / O ทั่วไปแผงรีเลย์แผงวงจรอีเธอร์เน็ตและ LCD โดยทั่วไปจะมีหน้าจอสัมผัส อย่างไรก็ตามฉันไม่รู้เกี่ยวกับหน้าจอสัมผัสแบบต้านทานใด ๆ ที่จะใช้สำหรับการตรวจจับ (ไม่มี LCD)

นอกเหนือจากฮาร์ดแวร์ที่อธิบายไว้ข้างต้น Arduino ยังมาพร้อมกับข้ามแพลตฟอร์มการพัฒนารวมสภาพแวดล้อม (IDE) เขียนใน Java มันถูกออกแบบมาเพื่อแนะนำการเขียนโปรแกรมให้กับศิลปินและผู้เริ่มต้นอื่น ๆ ได้มากพอ ๆ กับภาษาเบสิกเมื่อ 50 ปีก่อน โปรแกรมสำหรับ Arduino จะเรียกว่าเป็นร่าง

โปรแกรม Arduino เขียนด้วย C หรือ C ++ อย่างไรก็ตามรายละเอียดจำนวนมากถูกซ่อนไว้จากผู้ใช้: ต้องกำหนดฟังก์ชั่นเพียงสองตัว (เรียกโดยระบบ) เพื่อให้โปรแกรมที่วนซ้ำอย่างต่อเนื่อง (ซึ่งโดยปกติจะเป็นโปรแกรมฝังตัว)

setup(): a function run once at startup that performs initialization
loop(): a function called repeatedly until the board powers off

IDE มาพร้อมกับไลบรารีซอฟต์แวร์ที่ชื่อว่า "Wiring" ซึ่งสามารถใช้สำหรับการดำเนินการอินพุต / เอาต์พุตทั่วไป


ฉันไม่ได้ออกแบบฮาร์ดแวร์อีกต่อไปหลังจาก 25 ปีของการทำเช่นนั้น แต่ฉันไม่ได้ตระหนักถึงตัวประมวลผลใด ๆ สำหรับคอมพิวเตอร์เดสก์ท็อปที่มีหน่วยความจำแบบอ่านอย่างเดียว
Rob

@Rob คุณพูดถูกว่าพีซีตั้งโต๊ะทุกเครื่องที่ฉันรู้จักใช้ชิปบูทภายนอก แต่สถาปัตยกรรม OMAP3 ของ TI เป็นตัวอย่างของไมโครโปรเซสเซอร์ที่มี ROM สำหรับบูตภายใน จากคำอธิบายที่นี่กำลังบูท Linux บรรทัดแรกจะอ่านว่า "เมื่อเปิดเครื่องอุปกรณ์ OMAP3 จะทำการบูทจาก Boot ROM ภายในรหัสนี้ได้รับการแก้ไขในระหว่างกระบวนการผลิตและไม่สามารถเปลี่ยนแปลงได้ Boot ROM อ่านหมุดกำหนดค่าการบู๊ต (SW4) บน OMAP3 EVM) ซึ่งจะบอกให้ Boot ROM หาตำแหน่งที่จะค้นหา bootloader ภายนอกตัวแรก " ฉันอัพเดตคำตอบแล้ว
tcrosley

10

Arduino

Arduino เป็น PCB ที่มีไมโครคอนโทรลเลอร์ Atmel AVR และมักจะให้ชุดตัวเชื่อมต่อในรูปแบบมาตรฐาน โดยทั่วไปแล้วไมโครคอนโทรลเลอร์จะได้รับการโปรแกรมล่วงหน้าด้วยโปรแกรม "bootloader" ที่อนุญาตให้โหลดโปรแกรม (เรียกว่า "ภาพร่าง") ลงในไมโครคอนโทรลเลอร์ผ่านการเชื่อมต่อแบบอนุกรม TTY (หรืออนุกรมเสมือนผ่านการเชื่อมต่อ USB) จากพีซี

ไมโครโปรเซสเซอร์

ไมโครโปรเซสเซอร์คือ IC ที่มีหน่วยประมวลผลกลาง (CPU) เท่านั้น IC ไม่มี RAM, ROM หรืออุปกรณ์ต่อพ่วงอื่น ๆ IC อาจมีหน่วยความจำแคช แต่ไม่ได้ออกแบบมาให้ใช้งานได้หากไม่มีหน่วยความจำภายนอก

ไมโครโปรเซสเซอร์ไม่สามารถจัดเก็บโปรแกรมภายในและโดยทั่วไปแล้วจะโหลดซอฟต์แวร์เมื่อเปิดเครื่องซึ่งมักจะเกี่ยวข้องกับกระบวนการ "บูต" ที่ซับซ้อนหลายขั้นตอนซึ่ง "เฟิร์มแวร์" ถูกโหลดจาก ROM ภายนอกและในที่สุดระบบปฏิบัติการจะโหลดจากสื่อบันทึกอื่น ๆ )

โดยทั่วไปแล้วจะพบในคอมพิวเตอร์ส่วนบุคคล

ไมโครคอนโทรลเลอร์

ไมโครคอนโทรลเลอร์เป็น IC ที่ประกอบด้วย CPU รวมถึงจำนวนหรือ RAM, ROM และอุปกรณ์ต่อพ่วงอื่น ๆ ไมโครคอนโทรลเลอร์สามารถทำงานได้โดยไม่ต้องมีหน่วยความจำภายนอกหรือที่เก็บข้อมูล

โดยปกติแล้วไมโครคอนโทรลเลอร์จะถูกตั้งโปรแกรมไว้ก่อนที่จะถูกบัดกรีเข้ากับ PCB หรือตั้งโปรแกรมได้โดยใช้ตัวเชื่อมต่อ In-System-Programming (ISP หรือ ICSP) ผ่านอุปกรณ์ "โปรแกรมเมอร์" พิเศษที่ต่ออยู่กับคอมพิวเตอร์ส่วนบุคคล

ไมโครคอนโทรลเลอร์ทั่วไปนั้นเรียบง่ายกว่าและช้ากว่าไมโครโปรเซสเซอร์ทั่วไป แต่ฉันเชื่อว่าความแตกต่างส่วนใหญ่เป็นขนาดและแอปพลิเคชัน

ตัวอย่างเช่นพบได้ในเครื่องใช้ไฟฟ้าอย่างง่ายเช่นเครื่องซักผ้าธรรมดา


2

"Arduino" เป็นสภาพแวดล้อมการพัฒนาซอฟต์แวร์และบอร์ดไมโครคอนโทรลเลอร์หลายตัวที่สภาพแวดล้อมซอฟต์แวร์สามารถพัฒนาโปรแกรมสำหรับ บอร์ดส่วนใหญ่ใช้ไมโครคอนโทรลเลอร์ Atmel AVR


2

Arduino เป็นแพลตฟอร์มที่ใช้ไมโครคอนโทรลเลอร์ (ATMEGA 328 สำหรับ UNO) โดยทั่วไปตัวควบคุมแบบไมโครเหมาะกว่าไมโครโพรเซสเซอร์กับทุกสิ่งที่ต้องการการตรวจจับอินพุต นั่นเป็นเพราะตัวควบคุมไมโครเช่น ATMEGA 328 มีตัวแปลงอนาล็อกเป็นดิจิตอล (ADC) เพื่อตรวจจับแรงดันไฟฟ้าและยังมีเอาต์พุต PWM เช่นเดียวกับดิจิตอล I / Os

ด้วย Arduino คุณยังมีระบบ Arduino Dev ซึ่งง่ายต่อการโปรแกรมสำหรับมือใหม่และมีชุมชนที่ดีสำหรับการสนับสนุนและห้องสมุด

หน้าจอสัมผัสแบบต้านทานจะทำงานเหมือนโพเทนชิโอมิเตอร์ หนึ่งสำหรับ x และหนึ่งสำหรับ y ดังนั้นคุณสามารถใส่สิ่งเหล่านั้นลงในอินพุตอะนาล็อก Arduino ดูที่นี่สำหรับรายละเอียด

อีกทางเลือกหนึ่งคือการแปลงเป็น SPI หรือ I2C ด้วยสิ่งนี้และอ่านด้วย Arduino

ฉันคิดว่า Arduino เป็นตัวเลือกที่ดี


@tcrosley หรือสมาชิกคนอื่น ๆ นาน .. แนะนำให้ผู้มีส่วนร่วมใหม่เช่นฉันในการหลีกเลี่ยงการลงคะแนนเช่นนี้หรือไม่? คำตอบของฉันถูกต้องตอบคำถามและให้รายละเอียดเพิ่มเติมเพื่อเชื่อมต่อกับหน้าจอสัมผัสแบบต้านทาน มันควรจะรวมอะไรอีกบ้าง?
akellyirl

3
อย่าลงคะแนนรุนแรงเกินไป ฉันคิดว่าประโยคแรกของคุณไม่ถูกต้องเล็กน้อย Arduino เป็นเหมือนแพลตฟอร์มที่ประกอบด้วยฮาร์ดแวร์และซอฟต์แวร์ และบอร์ด Arduino ไม่ได้เป็นไมโครคอนโทรลเลอร์ แต่เป็นบอร์ดที่ออกแบบรอบ ๆ ไมโครคอนโทรลเลอร์
Rev1.0

1
เหมือน Rev1.0 พูดว่า: "Arduino เป็นไมโครคอนโทรลเลอร์" ไม่เป็นความจริง Arduino เป็น SBC (คอมพิวเตอร์บอร์ดเดี่ยว)
flup

1

Arduino ประกอบด้วยไมโครคอนโทรลเลอร์ (ATmega328 บนเวอร์ชั่น UNO) ดังนั้น Arduino จึงเป็น PCB ที่มีหมุดของไมโครคอนโทรลเลอร์แยกออกได้อย่างดีคือ poweruply คริสตัลและ FTDI สำหรับการเชื่อมต่อ USB ด้วยเฟิร์มแวร์ออนบอร์ดเพื่อให้คุณสามารถตั้งโปรแกรมด้วย IDE ของตัวเองได้อย่างง่ายดาย นี่คือรายการเกี่ยวกับองค์ประกอบ arduino: http://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-uno-faq

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.