ฉันสามารถโปรแกรมสำหรับ Arduino โดยไม่ต้องมีบอร์ดจริงหรือไม่?


205

ฉันต้องการเริ่มต้นพัฒนาโครงการ Arduino พื้นฐานบางอย่าง แต่ฉันยังไม่ได้เป็นเจ้าของบอร์ด Arduino มีวิธีที่ฉันสามารถเขียนรหัสของฉันและเลียนแบบ / ทดสอบโดยใช้คอมพิวเตอร์เดสก์ท็อปดังนั้นหลังจากที่บอร์ดของฉันมาถึงฉันต้องอัปโหลดและเรียกใช้โครงการของฉันหรือไม่


1
ฉันสนใจด้วยคุณหาอันที่เล่นได้ดีกับArduino IDEหรือไม่? นั่นคือตรวจพบโดย IDE ราวกับว่ามันเป็นคณะกรรมการที่มีฟังก์ชั่นทั้งหมดของมัน
rraallvv

คำตอบ:


128

มีตัวจำลอง Arduino ทั้งหมดออกมาเสียแล้วมีให้เลือกมากมายและมีผลิตภัณฑ์ที่ต้องชำระด้วยเช่นกัน

  • codeblocksสภาพแวดล้อมการพัฒนา Arduino รวมถึงการจำลอง Arduino ฟรียังอยู่ภายใต้การพัฒนา แต่การทำงาน
  • Simuinoจำลองหมุด Arduino Uno และ Mega - ไม่ใช่ตัวจำลองสมจริงที่ดูสวย แต่ใช้งานได้
  • Python Arduino Arduino Simulatorเป็นอีกตัวเลือกหนึ่งที่เล่นได้ดีกับ IDE อย่างเป็นทางการ
  • Virtronics Simulator สำหรับ Arduinoดูมีแนวโน้ม แต่ฉันไม่เห็นว่าทำไมฉันต้องจ่าย $ 14.99 สำหรับมันเมื่อฉันสามารถซื้อ Arduino ตัวจริงหนึ่งตัวหรือมากกว่าสำหรับราคานั้น

Arduino จำลองอื่น ๆ อีกมากมายอยู่ที่นั่นถ้าคุณค้นหาและจะมีการประกาศตัวใหม่แม้กระทั่งคราวด์ฟันดิ้งตลอดเวลา


10
เป็นบันทึกเหล่านี้จะไม่เลียนแบบแต่จำลองที่แตกต่างที่สำคัญที่สุดคือว่ามันไม่ได้เรียกใช้รหัสบนเครื่องเสมือน AVR (เช่นสิ่งที่qemuไม่) แต่ผูกฟังก์ชั่น Arduino รหัสท้องถิ่น ดังนั้นโดยทั่วไปแล้วพวกเขาจะไม่สามารถเรียกใช้สิ่งดั้งเดิมของ AVR และพฤติกรรมการลงทะเบียน / จับเวลาจะไม่เหมือนกับฮาร์ดแวร์ AVR จริง ดูความแตกต่างที่อธิบายได้ดีในคำตอบนั้น มันคือแม้ว่าในทางทฤษฎีที่เป็นไปได้ที่จะเลียนแบบรหัส Arduino เนื่องจากมีqemu
zmo

5
คุณ "ไม่เห็นว่าทำไม [หนึ่ง] จะจ่าย $ 14.99 สำหรับมันเมื่อ [หนึ่ง] สามารถซื้อ Arduino Arduino หนึ่งอันหรือมากกว่าสำหรับราคานั้น" ฉันสามารถบอกคุณได้ว่าเพราะอะไร: เนื่องจากฮาร์ดแวร์ไม่มีตัวดีบักในตัวพร้อมคุณสมบัติที่จำลองได้
R. Martinho Fernandes

8
Arduino Simulatorป่องๆสนใจของฉัน แต่น่าเสียดายที่ดูเหมือนจะมีไฟล์ที่เกี่ยวข้องกับเรื่องนี้ในเว็บไซต์ SourceForge ฉันทำบางสิ่งหายไปหรือเลิกใช้แล้วตั้งแต่คุณเขียนคำตอบของคุณ?
Greenonline

ตามที่ระบุไว้ในความคิดเห็นข้างต้นไม่มีไฟล์ในเว็บไซต์ปลอม arduino จำลอง มีเว็บไซต์สำหรับมันหรือมีอีกตัวจำลองที่ทำงานได้ดีใน mac กับ IDE อย่างเป็นทางการ?
gordanvij

4
Simuino แย่มากไม่เป็นมืออาชีพและไร้ประโยชน์ พวกเขาไม่มีเงื่อนงำวิธีการรหัส Arduino Simulator ไม่มีการเผยแพร่ CodeBlocks เป็น Windows เท่านั้น Simulator สำหรับ Arduino ไม่ใช่โอเพ่นซอร์ส
dhchdhd

81

ฉันชอบที่จะใช้circuits.io aka TinkerCADสำหรับเรื่องนี้

มันใช้ระบบคลาวด์และมีคุณสมบัติที่ดีรวมถึงการออกแบบ PCB และการทำงานร่วมกัน

IMO การจำลองและความสามารถของ Arduino นั้นน่าประทับใจและใช้งานง่าย


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

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

แม้ตัวเลือกของฉันจะเป็น 123d แต่เพียงบ่นของฉันเกี่ยวกับเว็บไซต์นี้คือพวกเขาไม่ได้เพิ่มส่วนประกอบใหม่ มันจะยอดเยี่ยมจริง ๆ ถ้าพวกเขาสามารถมีส่วนประกอบใหม่ในรายการของพวกเขา
KD

2
ส่วนห้องปฏิบัติการอิเล็กทรอนิกส์ของcircuits.ioเว็บไซต์ได้ย้ายไปtinkercad.comที่คุณสามารถค้นหาได้ภายใต้วงจร
SiggyF

1
ฉันแก้ไขแล้วและอัปเดตลิงก์
sa_leinad

40

มีตัวเลือกมากมายในโลกของเครื่องจำลองอิเล็กทรอนิกส์ แต่circuits.io aka TinkerCADน่าจะเป็นเครื่องที่มีประโยชน์ที่สุด

  • คุณสามารถเขียนวงจรของคุณบน breadboard เสมือนซึ่งดูเหมือนจริง
  • คุณสามารถรับชมไฟ LED กะพริบหรือกดปุ่มในระหว่างการจำลองแบบเรียลไทม์แทนที่จะดิ้นรนกับรูปคลื่นนามธรรม
  • คุณสามารถรวมอุปกรณ์ดิจิตอลเช่นตัวจับเวลา 555 ตัวหรือเปลี่ยนการลงทะเบียนด้วยส่วนประกอบอะนาล็อก (โต้ตอบ) เช่นตัวต้านทานและไฟ LED
  • คุณสามารถตั้งโปรแกรม Arduino และจำลองไมโครคอนโทรลเลอร์พร้อมกับวงจรแอนะล็อกของคุณรอบ ๆ
  • คุณสามารถดีบัก Arduino: เมื่อเครื่องจำลองถึงจุดพักการจำลองจะหยุดชั่วคราวและคุณสามารถตรวจสอบตัวแปรทุกอย่างในรหัสของคุณและแรงดันไฟฟ้าหรือกระแสในวงจรของคุณได้อย่างง่ายดาย
  • คุณสามารถใช้และสังเกตโปรโตคอลการสื่อสารที่แตกต่างกันเช่น UART, I2C และ SPI
  • คุณสามารถหยุดการจำลองชั่วคราวในช่วงกลางของลำดับ I2C โดยใส่เบรกพอยต์ในรหัสไดรเวอร์ (เช่นรูทีนบริการขัดจังหวะสำหรับเหตุการณ์ I2C)
  • นั่นฟรี!

ตัวอย่าง

นี่คือวงจรตัวอย่างที่มี IR Remote และหน้าจอ LCD

คำเตือน: เราเป็นผู้ผลิตวงจร 123D


1
มันเล่นกับArduino IDE ได้อย่างไร? แฟลชพร้อมใช้ดีบั๊กหรือไม่
rraallvv

14

ระวังตัวจำลองไม่ให้สร้างสถานการณ์ในชีวิตจริง มีโพสต์มากมายในฟอรัม Arduino เกี่ยวกับปัญหาเกี่ยวกับรหัสหรืออุปกรณ์อิเล็กทรอนิกส์ซึ่งกลายเป็นสิ่งที่ละเอียดอ่อนเช่น:

  • ปัญหาเรื่องเวลา
  • สภาพการแข่งขัน (เหตุการณ์ที่เกี่ยวข้อง / ขึ้นอยู่กับไม่ได้เกิดขึ้นในลำดับเดียวกันเสมอไป)
  • ระดับแรงดันไฟฟ้าเช่น หมุดป้อนข้อมูลลอย
  • ขับมอเตอร์ที่ปล่อยแรงดัน Arduino เพียงพอที่จะรีเซ็ต
  • ไม่มีตัวเก็บประจุแยกตัว
  • หมุดอินพุตอยู่ในสถานะ "ไม่ได้กำหนด" (เช่น 2.5V บนพินที่ 2 หรือน้อยกว่า V คือ LOW และ 3V หรือมากกว่านั้นสูง)
  • ปัญหากับตัวจัดการขัดจังหวะเช่นตัวแปรที่ไม่ถูกประกาศว่ามีความผันผวน
  • เดือยแรงดันไฟฟ้าเนื่องจากไม่มีไดโอด flyback บนมอเตอร์
  • โปรเซสเซอร์รีเซ็ตอีกครั้งหนึ่งมากกว่า 10 LED จะเปิดเพราะดึงปัจจุบันเกินจำนวนฮาร์ดแวร์สามารถจัดหา
  • ตัวจัดการอินเตอร์รัปต์ใช้ 10 µS เพื่อประมวลผลอินเทอร์รัปต์เมื่อมีเพียง 9 µS เท่านั้น

โดยธรรมชาติของพวกเขาจำลองไม่สามารถทำซ้ำทั้งหมดนี้ แม้ว่าคุณจะทำได้คุณคิดว่าจะสลับตัวเลือก "แทรกสัญญาณรบกวนแบบสุ่มจากมอเตอร์" หรือไม่?


สำหรับการเตรียมพร้อมสำหรับบอร์ดที่จะมาถึงให้ดาวน์โหลด IDE และเริ่มเขียนโปรแกรม คุณสามารถติดตั้งไลบรารีเขียนโค้ดและปราศจากข้อผิดพลาดทางไวยากรณ์จัดระเบียบอย่างเรียบร้อยและพร้อมสำหรับวันสำคัญเมื่อฮาร์ดแวร์อยู่ในมือคุณ


ขอให้สนุกและสนุกไปกับการทดสอบกับ Arduino ของคุณ!


13

คุณสามารถใช้Yenka (ฟรีสำหรับใช้ในบ้าน) เพื่อจำลอง Arduino, PIX, PIXACE และบอร์ดอื่น ๆ ด้วย I / O แบบอะนาล็อกและอนุกรม มีส่วนประกอบและโครงการตัวอย่างจำนวนมาก

ภาพหน้าจอ:

การจำลอง Yenka Arduino


สามารถตั้งโปรแกรม debugged จากArduino IDE ได้หรือไม่
rraallvv

12

ใช่คุณสามารถลองใช้Proteus ISISเพื่อจำลองรหัสของคุณ ...

สำหรับการจำลอง Arduino อย่างเต็มรูปแบบมีโปรแกรมแชร์แวร์ที่เรียกว่าVBB (Virtual BreadBoard)ฉันก็ลองเหมือนกันและมันก็ดี

แก้ไข:คุณสามารถตรวจสอบรายละเอียดการสอนของฉันที่นี่เกี่ยวกับวิธีการจำลอง Proteus ISIS


9

ฉันเชื่อว่าเว็บไซต์นี้มีรายชื่อของตัวจำลองและตัวจำลองพร้อมกับราคาและความพร้อมใช้งาน

ปรับปรุง:

เนื่องจากผู้ใช้บางคนกล่าวถึงมีลิงก์ที่ใช้งานไม่ได้ในเว็บไซต์นั้นนี่คืออีมูเลเตอร์ที่ฉันพบ โปรดทราบว่าคำอธิบายบางอย่างอาจมาจากลิงก์ที่กล่าวถึง:

  • Emulino : เป็นซอฟต์แวร์ที่ใช้โอเพ่นซอร์ส linux ในการพัฒนาในช่วงต้นที่เลียนแบบ MCU เฉพาะของ Arduino

  • Emulare : เป็นโปรแกรมจำลองฮาร์ดแวร์ทั่วไป มันมีจุดมุ่งหมายเพื่อให้อินเทอร์เฟซส่วนกลางเพื่อสร้างแบบจำลองอิเล็กทรอนิกส์สำหรับการพัฒนาซอฟต์แวร์แบบฝังตัว ในปัจจุบัน emulare มุ่งเน้นไปที่สาย ATMega ของไมโครคอนโทรลเลอร์ (Arduino UNO มีตัวประมวลผล ATMega)

  • SimAVR : เป็นตัวจำลอง AVR ใหม่สำหรับ linux หรือแพลตฟอร์มใด ๆ ที่ใช้ avr-gcc เครื่องจำลองโหลดไฟล์ ELF โดยตรงและยังมีวิธีการระบุพารามิเตอร์การจำลองโดยตรงในรหัสจำลองโดยใช้ส่วน. self รองรับการจำลองโปรเซสเซอร์ ATMega จำนวนมากและได้รับการกล่าวถึงว่าเป็นเรื่องง่ายที่จะเพิ่มตัวประมวลผลใหม่

  • Amtel Studio : นี่ไม่ได้พูดถึงคำว่าอีมูเลชั่น แต่มันเป็น IDE ที่ซับซ้อนในการดีบักรหัสของคุณสำหรับหลาย ๆ แพลตฟอร์มโดยเฉพาะกับ Arduino Atmel Studio 7 นำเสนอโครงการที่สร้างขึ้นในสภาพแวดล้อมการพัฒนา Arduino เพียงคลิกเดียวได้อย่างราบรื่น ร่างของคุณรวมถึงห้องสมุดที่อ้างอิงจะถูกนำเข้าสู่ Studio 7 เป็นโครงการ C ++ เมื่อนำเข้าแล้วคุณสามารถใช้ความสามารถเต็มรูปแบบของ Studio 7 เพื่อปรับแต่งและดีบักการออกแบบของคุณ Atmel Studio 7 รองรับการดีบักเกอร์ฝังตัวที่ทรงพลังบนบอร์ด Arduino Zero สำหรับบอร์ด Arduino อื่น ๆ มีอะแดปเตอร์ป้องกันที่เปิดเผยตัวเชื่อมต่อการดีบักหรือเปลี่ยนเป็นหนึ่งในบอร์ด Xplained-Mini / PRO ที่มีอยู่มากมายเพื่อใช้ประโยชน์จากระบบนิเวศ Atmel HW อย่างเต็มที่

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


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

ฉันเห็นด้วยกับ @totymedli - หากลิงก์นั้นเสียคำตอบก็จะไร้ประโยชน์ โปรดสรุปอย่างน้อยผู้เลียนแบบที่กล่าวถึงและราคาปัจจุบัน คุณสามารถเริ่มต้นบรรทัดด้วยเครื่องหมายดอกจันเพื่อสร้างสัญลักษณ์แสดงหัวข้อย่อยหากเป็นไปได้
Nick Gammon

7

Virtualbreadboard มี VBB4Arduino รุ่นใหม่ 'Two Arduino's' ซึ่งประกอบไปด้วยเครื่องจำลอง Arduino ทั้ง JVM Arduino และชุดคำสั่ง AVR Instruction พร้อมด้วยตัวอย่างที่ครอบคลุมตัวอย่างการกระจาย Arduino ทั้งหมดและฮาร์ดแวร์ต่อพ่วงมากมาย - LCD, WS2812 Neo LEDS, มอเตอร์, เซอร์โว , Logic Analyzer และอีกมากมาย

http://www.virtualbreadboard.com

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียน Virtual Breadboard


6

ลองใช้Simulator สำหรับ Arduino - มันดีที่สุด แต่แล้วเราก็ลำเอียงเพราะเราเป็นส่วนหนึ่งของทีมพัฒนา ไม่ใช่ทุกคนที่ต้องการจ่ายเงิน $ 19.99 แม้ว่าผู้ใช้ Arduino เกือบ 5 พันรายจะมีช่วงไม่กี่ปีที่ผ่านมา มี Simulator ฟรีสำหรับ Arduino ซึ่งให้บริการฟรี 45 วันหรือ 100 ร่างสเก็ตช์และสูงสุด 200 บรรทัด ลองทำแบบนี้แล้วซื้อถ้าคุณสามารถจ่ายได้และ / หรือถ้ามันคุ้มค่า

หากมีบางสิ่งที่ไม่ถูกต้องหรือสามารถปรับปรุงได้โปรดแจ้งให้เราทราบ - คนอื่นทำและมีซึ่งเป็นสาเหตุที่ Simulator for Arduino สร้างขึ้นโดยความคิดของผู้ใช้และรายงานข้อผิดพลาด 99%

นอกจากนี้โปรแกรมอื่น ๆ ที่เราได้ลองซึ่งมีคุณภาพใกล้เคียงกันคือ Proteus แต่นี่เป็นสตูดิโอออกแบบ PCB เต็มรูปแบบและดูเหมือนว่าจะมีราคาแพงมาก - นั่นคือมากกว่า $ 20 และเราวางแผนที่จะเพิกเฉยต่อคำขอผู้ใช้ล่าสุดเพื่อเพิ่มราคาเป็น $ 200


5

คุณสามารถใช้เครื่องมือจำลองของฉันได้ เหมาะอย่างยิ่งสำหรับการใช้งานแบบ PLC เช่นเดียวกับการใช้งานหลายภารกิจโดยการประเมินวัฏจักรของวัตถุคล้ายวงจรที่เชื่อมต่อกัน: ตัวจับเวลาเครื่องหมายมาร์กเกอร์แลตช์ภาพเคลื่อนไหวและรีจิสเตอร์ คุณสามารถใช้มันเพื่อจำลองระบบควบคุมของคุณได้เช่นกันจากตัวอย่างในการดาวน์โหลด มันมีความสามารถในการสร้างภาพเล็กน้อยสามารถวาดแผนภูมิเวลาและช่วยให้คุณเข้าถึงและแก้ไข cq บังคับให้ตัวแปรทั้งหมดในเวลาจริงในระหว่างการจำลองการทำงาน นอกจากนี้คุณสามารถหยุดเวลา เมื่อคุณพอใจกับพฤติกรรมการควบคุมของคุณแล้วมันจะสร้างรหัส C ที่จะอัปโหลดไปยัง Arduino ที่แท้จริง

https://pypi.python.org/pypi/SimPyLC


1

วิธีที่ฉันสามารถเขียนโค้ดและจำลอง / ทดสอบโดยใช้คอมพิวเตอร์เดสก์ท็อป

ถ้าคุณหมายถึงความสามารถในการ "ทดสอบหน่วย" โดยใช้เครื่องคอมพิวเตอร์เดสก์ทอปฉันสามารถให้ห้องสมุดที่ผมเขียนเรียกว่าarduino_ci

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

unittest(pin_history)
{
  GodmodeState* state = GODMODE();
  int myPin = 3;
  state->reset();            // pin will start LOW
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, LOW);
  digitalWrite(myPin, HIGH);
  digitalWrite(myPin, HIGH);

  // pin history is queued in case we want to analyze it later.
  // we expect 6 values in that queue.
  assertEqual(6, state->digitalPin[1].size());
  bool expected[6] = {LOW, HIGH, LOW, LOW, HIGH, HIGH};
  bool actual[6];

  // convert history queue into an array so we can verify it.
  // we expect to find 6 values: the 5 we set, plus the initial LOW
  // and this is where/how we assert that
  int numMoved = state->digitalPin[myPin].toArray(actual, 6);
  assertEqual(6, numMoved);

  // verify each element
  for (int i = 0; i < 6; ++i) {
    assertEqual(expected[i], actual[i]);
  }
}

ในทางปฏิบัติคุณอาจไม่เรียกใช้digitalWriteฟังก์ชันโดยตรง - คุณจะเรียกใช้ฟังก์ชันในไลบรารีของคุณจากนั้นตรวจสอบว่า "สถานะโลก" (แสดงโดยGODMODEโครงสร้างที่นี่) ตรงกับสิ่งที่คุณต้องการให้ห้องสมุดทำ


0

ใช่คุณทำได้และค่อนข้างง่าย มีการจำลองออนไลน์ยอดเยี่ยม (ฟรี) เรียกว่าเป็นTinkerCAD มันมีการจำลองเขียงหั่นขนมที่ยอดเยี่ยมที่มีชิ้นส่วนเช่นทรานซิสเตอร์ไฟ LED ไอซีและ Arduino คุณสามารถตั้งโปรแกรม Arduino และเรียกใช้ทั้งหมดในการจำลองสดที่มีอินพุตแบบอินเทอร์แอคทีฟ (ปุ่มกดสวิตช์ DIP ฯลฯ )


[แก้ไข: ข้อความต่อไปนี้อ้างถึงฟังก์ชั่นที่ถูกย้ายไปยังCircuits.ioคือEagle PCB ]

นั่นไม่ใช่ทั้งหมด. นอกจากนี้ยังรวมอยู่ในแผนผังแท็บแยกต่างหากสำหรับวงจรของคุณและอีกแท็บสำหรับการออกแบบ PCB ของวงจรเขียงหั่นขนมของคุณ! หรือคุณสามารถสร้างแผนผังจากศูนย์และสร้าง PCB ของคุณจากตรงนั้น

คุณสามารถออกแบบวงจรของคุณและคุณสามารถซื้อได้ คุณสามารถทำสิ่งนี้ได้ใน circuits.io และคุณไม่เสี่ยงที่จะทำให้ Arduino ยุ่งเหยิงของคุณ นอกจากนี้ยังมีตัวบ่งชี้การเตือนในการจำลอง (ตัวอย่างเช่นหากคุณไม่ได้ใช้ความต้านทานเพียงพอกับ LED หรือ IC)

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