Tôi có thể lập trình cho Arduino mà không cần có một bảng thực sự không?


205

Tôi muốn bắt đầu phát triển một số dự án Arduino cơ bản nhưng tôi chưa sở hữu một bảng Arduino. Có cách nào để tôi có thể viết mã của mình và mô phỏng / kiểm tra nó bằng máy tính để bàn không, sau khi bảng của tôi đến, tôi chỉ cần tải lên và chạy dự án của mình trên đó?


1
Tôi cũng quan tâm, bạn có tìm thấy cái nào chơi tốt với Arduino IDE không? đó là, được IDE phát hiện như thể nó là một bảng, với tất cả chức năng của nó.
rraallvv

Câu trả lời:


128

Có rất nhiều mô phỏng Arduino ngoài kia, nhiều sản phẩm miễn phí và một số sản phẩm phải trả tiền.

  • Các CodeBlocks môi trường phát triển Arduino bao gồm một mô phỏng Arduino miễn phí, vẫn đang được phát triển nhưng chức năng.
  • Simuino mô phỏng các chân Arduino Uno và Mega - không phải là một trình giả lập thực tế trông khá đẹp mắt, nhưng nó hoạt động.
  • Trình mô phỏng Arduino dựa trên Python là một tùy chọn khác, hoạt động tốt với IDE chính thức
  • Trình mô phỏng Virtronics cho Arduino có vẻ đầy hứa hẹn, nhưng tôi không hiểu tại sao tôi sẽ trả 14,99 đô la cho nó, khi tôi có thể mua một hoặc nhiều bản sao Arduino thực tế với giá đó

Nhiều trình giả lập Arduino khác đang ở ngoài đó nếu bạn tìm kiếm, và những cái mới đang được công bố, thậm chí là gây quỹ mọi lúc.


10
như một lưu ý, đó không phải là trình giả lập mà là trình giả lập , điểm khác biệt quan trọng nhất là nó không chạy mã trên máy ảo AVR (giống như những gì qemu làm), nhưng liên kết các chức năng Arduino với mã gốc. Vì vậy, về cơ bản, họ sẽ không thể chạy các công cụ AVR gốc và hành vi đăng ký / hẹn giờ sẽ không giống như trên phần cứng AVR thực. Xem sự khác biệt cũng được giải thích trong câu trả lời đó . Tuy nhiên, về mặt lý thuyết là có thể mô phỏng mã Arduino Do với qemu .
zmo

5
Bạn "không hiểu tại sao [một] sẽ trả 14,99 đô la cho nó, khi [một] có thể mua một hoặc nhiều bản sao Arduino thực tế với giá đó"? Tôi có thể cho bạn biết lý do: vì phần cứng không có trình gỡ lỗi tích hợp với các tính năng có thể được cung cấp bởi một trình giả lập.
R. Martinho Fernandes

8
Các Arduino Simulator khơi gợi sự quan tâm của tôi, nhưng tiếc là dường như không có các file liên quan đến nó trên trang web của SourceForge. Tôi đang thiếu một cái gì đó, hoặc nó đã trở nên phản đối kể từ khi bạn viết câu trả lời của bạn?
Greenonline

Như đã lưu ý trong nhận xét trên, không có tệp nào trong trang giả mạo nguồn giả lập arduino. Có một trang web cho nó hoặc có một trình giả lập khác hoạt động tốt trong mac, với IDE chính thức?
gordanvij

4
Simuino là khủng khiếp, không chuyên nghiệp và vô dụng. Họ không có manh mối làm thế nào để mã. Arduino Simulator không có bản phát hành. CodeBlocks chỉ dành cho Windows. Trình mô phỏng cho Arduino không phải là nguồn mở.
dhchdhd

81

Tôi thích sử dụng Circuit.io aka TinkerCAD cho việc này.

Nó dựa trên đám mây và có một số tính năng hay bao gồm thiết kế và cộng tác PCB.

IMO mô phỏng và khả năng của Arduino rất ấn tượng và trực quan.


3
Nó rất đẹp và sạch sẽ và chức năng cơ bản thực sự ấn tượng, dễ sử dụng và mạnh mẽ. Tuy nhiên, nhiều bộ phận thông thường (bao gồm LCD và cảm biến nhiệt độ) chưa được hỗ trợ. Tôi nghi ngờ bạn có thể thử nghiệm bất cứ điều gì nhưng thiết kế rất cơ bản ở giai đoạn này. Tôi hy vọng điều này sẽ trở nên tốt hơn theo thời gian.
Suma

Tôi đã thử nhanh và thấy nó rất ấn tượng cho một sản phẩm miễn phí. Tôi không biết những hạn chế của nó về mặt hiện thực mô phỏng, nhưng biên tập viên rất thân thiện và chỉ cần đặt một đèn led vào khe thích hợp được tạo tự động với mã pin chính xác và một vòng lặp nhấp nháy!
heltonbiker

ngay cả lựa chọn của tôi sẽ là 123d nhưng điều tôi phàn nàn duy nhất về trang này là họ không thêm các thành phần mới. Sẽ thật sự tuyệt vời nếu họ có thể có một số thành phần mới trong danh sách của mình
KD.

2
Các phòng thí nghiệm điện tử một phần của circuits.io trang web đã chuyển sang tinkercad.com , nơi bạn có thể tìm thấy nó dưới mạch .
SiggyF

1
Tôi đã chỉnh sửa nó và cập nhật các liên kết.
sa_leinad

40

Có rất nhiều tùy chọn tồn tại trong thế giới giả lập điện tử, nhưng Circuit.io hay còn gọi là TinkerCAD có lẽ là lựa chọn linh hoạt nhất hiện có.

  • Bạn có thể soạn mạch của mình trên một bảng mạch ảo trông giống như thật.
  • Bạn thực sự có thể xem đèn LED nhấp nháy hoặc nhấn nút trong quá trình mô phỏng thời gian thực thay vì phải vật lộn với các dạng sóng trừu tượng.
  • Bạn có thể kết hợp các thiết bị kỹ thuật số như bộ đếm thời gian 555 hoặc thanh ghi dịch chuyển với các thành phần tương tự (tương tác) như điện trở và đèn LED.
  • Bạn có thể lập trình một Arduino và mô phỏng vi điều khiển cùng với mạch tương tự của bạn xung quanh nó.
  • Bạn có thể gỡ lỗi Arduino: khi trình giả lập đạt đến điểm dừng của bạn, quá trình mô phỏng bị tạm dừng và bạn có thể dễ dàng kiểm tra mọi biến trong mã và mọi điện áp hoặc dòng điện trong mạch của mình.
  • Bạn có thể sử dụng và quan sát các giao thức truyền thông khác nhau như UART, I2C và SPI.
  • Bạn có thể tạm dừng mô phỏng ở giữa chuỗi I2C bằng cách đặt điểm dừng trong mã trình điều khiển (ví dụ: thói quen dịch vụ ngắt cho các sự kiện I2C)
  • Nó miễn phí!

Thí dụ

Đây là một mạch ví dụ có IR Remote và màn hình LCD.

Tuyên bố miễn trừ trách nhiệm: Chúng tôi là nhà sản xuất Mạch 123D


1
Làm thế nào để nó chơi với Arduino IDE ? nó sẽ có sẵn để flash, gỡ lỗi, vv?
rraallvv

14

Xin lưu ý rằng không có trình giả lập nào sẽ tái tạo các tình huống thực tế. Đã có rất nhiều bài viết trên diễn đàn Arduino về các vấn đề với mã hoặc thiết bị điện tử, hóa ra là một thứ gì đó tinh tế, chẳng hạn như:

  • Vấn đề thời gian
  • Điều kiện cuộc đua (các sự kiện liên quan / phụ thuộc không phải lúc nào cũng diễn ra theo cùng một thứ tự)
  • Cấp điện áp, ví dụ. chân đầu vào nổi
  • Động cơ điều khiển làm giảm điện áp Arduino đủ để nó đặt lại
  • Không có tụ điện tách rời
  • Các chân đầu vào ở trạng thái "không xác định" (ví dụ: 2,5V trên chân trong đó 2 hoặc ít hơn V là THẤP và 3V trở lên là CAO)
  • Các vấn đề với trình xử lý ngắt, chẳng hạn như các biến không được khai báo là không ổn định
  • Điện áp tăng đột biến do không có điốt flyback trên động cơ
  • Bộ xử lý đặt lại sau khi bật hơn 10 đèn LED vì mức vẽ hiện tại vượt quá số lượng phần cứng có thể cung cấp
  • Trình xử lý ngắt lấy 10 Lời nói để xử lý ngắt khi chỉ có 9 Pha.

Bản chất mô phỏng của họ không thể tái tạo tất cả điều này. Ngay cả khi họ có thể, bạn có nghĩ sẽ chuyển đổi tùy chọn "chèn tiếng ồn ngẫu nhiên từ động cơ" không?


Để sẵn sàng cho hội đồng quản trị đến, hãy tải xuống IDE và bắt đầu lập trình. Bạn có thể cài đặt các thư viện, viết mã và không có lỗi cú pháp, sắp xếp gọn gàng và nói chung là sẵn sàng cho ngày trọng đại khi phần cứng nằm trong tay bạn.


Hãy vui vẻ và tận hưởng thử nghiệm với Arduino của bạn!


13

Bạn có thể sử dụng Yenka (miễn phí cho sử dụng tại nhà) để mô phỏng Arduino, PIX, PIXACE và các bảng khác với I / O kỹ thuật số, analog và nối tiếp. Nó cung cấp rất nhiều thành phần và các dự án mẫu.

Ảnh chụp màn hình:

Mô phỏng Arduino Yenka


Nó có thể được lập trình, gỡ lỗi từ Arduino IDE không?
rraallvv

12

Có, bạn có thể, hãy thử sử dụng Proteus ISIS để mô phỏng mã của bạn ...

Để mô phỏng đầy đủ Arduino, có một chương trình chia sẻ được gọi là VBB (Virtual BreadBoard) , tôi cũng đã thử nó và nó rất hay.

Chỉnh sửa: Bạn có thể kiểm tra hướng dẫn chi tiết của tôi ở đây về cách mô phỏng trên Proteus ISIS


9

Tôi tin rằng trang web này có một danh sách cả trình giả lập và giả lập cùng với giá cả và tính sẵn có của chúng.

Cập nhật:

Vì một số người dùng đã đề cập có các liên kết bị hỏng trong trang web đó, đây là một lựa chọn các trình giả lập mà tôi tìm thấy. Lưu ý rằng một số mô tả có thể đã được lấy từ liên kết được đề cập:

  • Emulino : Là một phần mềm dựa trên linux mã nguồn mở trong giai đoạn đầu phát triển mô phỏng các MCU dành riêng cho Arduino.

  • Emulare : là một trình giả lập phần cứng có mục đích chung. Nó nhằm mục đích cung cấp một giao diện trung tâm để xây dựng các mô phỏng điện tử để phát triển phần mềm nhúng. Hiện tại emulare tập trung vào dòng vi điều khiển ATMega (Arduino UNO có bộ xử lý ATMega).

  • SimAVR : là một trình giả lập AVR mới cho linux hoặc bất kỳ nền tảng nào sử dụng avr-gcc. Trình mô phỏng tải các tệp ELF trực tiếp và thậm chí còn có cách chỉ định các tham số mô phỏng trực tiếp trong mã được mô phỏng bằng cách sử dụng phần .elf. Nó hỗ trợ giả lập nhiều bộ xử lý ATMega và được đề cập rằng thật dễ dàng để thêm các bộ xử lý mới.

  • Amtel Studio : Điều này dường như không đề cập đến thuật ngữ mô phỏng, nhưng nó là một IDE tinh vi để gỡ lỗi mã của bạn cho nhiều nền tảng đặc biệt là Arduino. Atmel Studio 7 có tính năng nhập các dự án một lần nhấp liền mạch được tạo trong môi trường phát triển Arduino. Bản phác thảo của bạn, bao gồm mọi thư viện mà nó tham chiếu, sẽ được nhập vào Studio 7 dưới dạng dự án C ++. Sau khi nhập, bạn có thể tận dụng toàn bộ khả năng của Studio 7 để tinh chỉnh và gỡ lỗi thiết kế của mình. Atmel Studio 7 hỗ trợ đầy đủ trình gỡ lỗi nhúng mạnh mẽ trên bo mạch Arduino Zero. Đối với các bo mạch Arduino khác, các bộ điều hợp khiên phơi bày các đầu nối gỡ lỗi có sẵn hoặc chuyển sang một trong nhiều bo mạch Xplained-Mini / PRO có sẵn để tận dụng hoàn toàn hệ sinh thái Atmel HW.

Bạn vẫn có thể sử dụng các trình giả lập như EasyEDA để kiểm tra mã của mình và trong hầu hết các trường hợp có thể chạy nó trên thiết bị. Nhưng lưu ý rằng với bản chất của các thành phần điện tử, bạn có thể phải cung cấp điện trở bên ngoài, tụ điện, vv để có được kết quả mong đợi.


Liên kết chỉ trả lời không phải là một điều tốt ở đây bởi vì chúng sẽ vô dụng khi trang web được liên kết đi xuống. Vui lòng viết một bản tóm tắt và cũng đảm bảo rằng câu trả lời của bạn tăng thêm giá trị và không chỉ lặp lại những câu chúng tôi đã có.
totymedli

Tôi đồng ý với @totymedli - nếu liên kết đó bị chết, câu trả lời sẽ trở nên vô dụng. Hãy tóm tắt, ít nhất, các trình giả lập được đề cập và giá hiện tại. Bạn có thể bắt đầu các dòng bằng dấu hoa thị để tạo điểm đạn, nếu điều đó có ích.
Nick Gammon

7

Virtualbreadboard có phiên bản VBB4Arduino 'Hai Arduino' mới, bao gồm cả bộ mô phỏng Arduino JVM và trình giả lập tập lệnh AVR với các ví dụ bao gồm hầu hết tất cả các ví dụ phân phối Arduino và một loạt các phần cứng ngoại vi - LCD, WS2812 Neo LEDS, Motors, Servo , Phân tích logic và nhiều hơn nữa.

http://www.virtualbreadboard.com

Tuyên bố miễn trừ trách nhiệm: Tôi là tác giả của Virtual Breadboard


6

Hãy thử Simulator cho Arduino - nó là tốt nhất nhưng sau đó chúng tôi thiên vị vì chúng tôi là một phần của nhóm phát triển. Không phải ai cũng muốn trả 19,99 đô la mặc dù gần 5 nghìn người dùng Arduino có trong vài năm qua. Có một phiên bản Simulator cho Arduino miễn phí chạy trong 45 ngày hoặc 100 lần tải phác thảo và tối đa 200 dòng. Hãy thử điều này và sau đó mua nếu bạn có đủ khả năng và / hoặc nếu nó có vẻ đáng giá.

Nếu có điều gì đó không đúng hoặc có thể được cải thiện, hãy cho chúng tôi biết - mọi người khác làm và có, đó là lý do tại sao Trình mô phỏng cho Arduino đã được xây dựng 99% bởi ý tưởng người dùng và báo cáo lỗi.

Ngoài ra, chương trình duy nhất khác mà chúng tôi đã thử có chất lượng gần như là Proteus nhưng đây là một studio thiết kế PCB đầy đủ và có vẻ rất đắt tiền - tức là hơn 20 đô la. Và chúng tôi dự định bỏ qua một yêu cầu người dùng gần đây để tăng giá lên 200 đô la.


5

Bạn có thể sử dụng giả lập của tôi. Nó đặc biệt phù hợp với các ứng dụng giống như PLC, trong đó đa nhiệm đạt được bằng cách đánh giá theo chu kỳ các đối tượng giống như mạch được kết nối với nhau: Timers, Markers, Latches, Oneshots và đăng ký. Bạn cũng có thể sử dụng nó để mô phỏng hệ thống được kiểm soát của mình, cũng như trở nên rõ ràng từ các ví dụ trong bản tải xuống. Nó có khả năng hiển thị khiêm tốn, có thể vẽ biểu đồ thời gian và cho phép bạn truy cập và thay đổi cq buộc tất cả các biến trong thời gian thực trong quá trình mô phỏng đang chạy. Ngoài ra bạn có thể đóng băng thời gian. Khi bạn hài lòng với hành vi kiểm soát của mình, nó sẽ tạo mã C để được tải lên Arduino thực tế.

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


1

một cách tôi có thể viết mã của mình và mô phỏng / kiểm tra nó bằng máy tính để bàn

Nếu bạn có nghĩa là có thể "kiểm tra đơn vị" bằng máy tính để bàn, tôi có thể cung cấp một thư viện mà tôi đã viết có tên là arduino_ci .

Nó không cung cấp thi đua. Bạn sẽ thể hiện các bài kiểm tra của bạn trong mã. Ví dụ, đây là một bài kiểm tra được lấy từ tài liệu tham khảo xác thực dữ liệu được ghi vào một cổng:

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]);
  }
}

Trong thực tế, có thể bạn sẽ không gọi digitalWritetrực tiếp các chức năng - bạn sẽ gọi một chức năng trong thư viện của mình, sau đó xác minh rằng "trạng thái thế giới" (được biểu thị ở đây bởi GODMODEcấu trúc) phù hợp với những gì bạn mong đợi thư viện của mình sẽ làm.


0

Có bạn có thể, và khá dễ dàng. Có một mô phỏng trực tuyến tuyệt vời (hoàn toàn miễn phí) được gọi là TinkerCAD . Nó có một mô phỏng bảng mạch tuyệt vời, với các bộ phận như bóng bán dẫn, đèn LED, IC và Arduino. Bạn có thể lập trình Arduino và chạy tất cả trong một mô phỏng trực tiếp bao gồm các đầu vào tương tác (nút nhấn, công tắc DIP, v.v.).


[Chỉnh sửa: Văn bản sau đây đề cập đến chức năng đã được chuyển sang Circuits.io , cụ thể là Eagle PCB ]

Đó chưa phải là tất cả. Nó cũng bao gồm trong một sơ đồ tab riêng cho mạch của bạn và một tab khác để thiết kế PCB cho mạch bánh mì của bạn! Hoặc, bạn chỉ có thể thực hiện sơ đồ của mình từ đầu và tạo PCB của bạn từ đó.

Bạn có thể có các thiết kế mạch của bạn được thực hiện và bạn có thể mua chúng. Bạn có thể thực hiện tất cả những điều này trong Circuit.io và bạn không có nguy cơ làm hỏng Arduino thực tế của mình. Nó cũng có các chỉ báo cảnh báo trong mô phỏng (ví dụ: nếu bạn không sử dụng đủ lực cản trên đèn LED hoặc IC).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.