Czy mogę programować dla Arduino bez prawdziwej płyty?


205

Chciałbym rozpocząć tworzenie podstawowych projektów Arduino, ale nie posiadam jeszcze płyty Arduino. Czy istnieje sposób, w jaki mogę napisać kod i emulować / przetestować go na komputerze stacjonarnym, więc po przybyciu płyty muszę po prostu załadować i uruchomić na nim mój projekt?


1
Jestem również zainteresowany, czy znalazłeś taki, który dobrze komponuje się z Arduino IDE ? to znaczy wykrywane przez IDE tak, jakby była płytą, ze wszystkimi jej funkcjami.
rraallvv 11.04.16

Odpowiedzi:


128

Istnieje cała masa symulatorów Arduino, wiele bezpłatnych, a także płatnych produktów.

  • Środowisko programistyczne CodeBlocks Arduino zawiera bezpłatny symulator Arduino, wciąż w fazie rozwoju, ale funkcjonalny.
  • Simuino symuluje piny Arduino Uno i Mega - niezbyt realistyczny symulator, ale działa.
  • Symulator Arduino oparty na Pythonie to kolejna opcja, która dobrze współgra z oficjalnym IDE
  • Virtronics Simulator for Arduino wygląda obiecująco, ale nie rozumiem, dlaczego zapłaciłbym za to 14,99 USD, skoro mogłem kupić jeden lub więcej rzeczywistych klonów Arduino za tę cenę

Jeśli szukasz, istnieje wiele innych symulatorów Arduino, a przez cały czas ogłaszane są nowe, nawet finansowane z funduszy społecznościowych.


10
Uwaga: nie są to emulatory, tylko symulatory , najważniejsza różnica polega na tym, że nie uruchamia on kodu na maszynie wirtualnej AVR (podobnie jak qemu ), ale wiąże funkcje Arduino z kodem natywnym. Zasadniczo więc nie będą w stanie uruchamiać natywnych treści AVR, a zachowanie rejestru / timera nie będzie takie samo jak na prawdziwym sprzęcie AVR. Zobacz różnicę dobrze wyjaśnioną w tej odpowiedzi . Jest jednak teoretycznie możliwa emulacja kodu Arduino Due za pomocą qemu .
zmo

5
„Nie rozumiesz, dlaczego [jeden] zapłaciłby za to 14,99 USD, kiedy [jeden] mógł kupić jeden lub więcej rzeczywistych klonów Arduino za tę cenę”? Mogę powiedzieć dlaczego: ponieważ sprzęt nie ma wbudowanego debugera z funkcjami, które może zapewnić symulator.
R. Martinho Fernandes

8
Arduino Simulator wzbudził moje zainteresowanie, ale niestety wydaje się nie mieć pliki z nim związane na stronie sourceforge. Czy coś pomijam, czy stało się przestarzałe, odkąd napisałeś swoją odpowiedź?
Greenonline

Jak wspomniano w powyższym komentarzu, nie ma żadnych plików w witrynie źródłowej arduino symulatora. Czy istnieje strona internetowa lub inny symulator, który działa dobrze w systemie Mac z oficjalnym IDE?
gordanvij

4
Simuino jest okropny, nieprofesjonalny i bezużyteczny. Nie mają pojęcia, jak kodować. Arduino Simulator nie ma żadnych wydań. CodeBlocks jest tylko Windows. Simulator for Arduino nie jest oprogramowaniem typu open source.
dhchdhd

81

Lubię do tego używać circuits.io, znanego również jako TinkerCAD .

Jest oparty na chmurze i ma kilka ciekawych funkcji, w tym projektowanie i współpracę z PCB.

IMO symulacja i możliwości Arduino są imponujące i intuicyjne.


3
Jest bardzo ładny i czysty, a podstawowa funkcjonalność jest naprawdę imponująca, łatwa w użyciu i wydajna. Jednak wiele typowych części (w tym czujniki LCD i czujniki temperatury) nie są jeszcze obsługiwane. Wątpię, czy na tym etapie można przetestować cokolwiek innego niż bardzo podstawowe projekty. Mam nadzieję, że z czasem będzie lepiej.
Suma

Szybko spróbowałem i okazało się, że jest to imponujące jak na darmowy produkt. Nie znam jego ograniczeń w zakresie realizmu symulacji, ale edytor jest bardzo przyjazny i po prostu umieszcza diodę w odpowiednim gnieździe automatycznie utworzonym kodzie z odpowiednim pinem i migającą pętlą!
heltonbiker

nawet mój wybór to 123d, ale narzekam tylko na tę stronę, że nie dodają nowych składników. Byłoby naprawdę wspaniale, gdyby mogli mieć jakieś nowe komponenty na swojej liście
KD.

2
Część witryny poświęconej elektronicznym laboratoriom witryny circuits.io została przeniesiona na tinkercad.com , gdzie można ją znaleźć pod obwodami .
SiggyF

1
Zredagowałem go i zaktualizowałem linki.
sa_leinad

40

W świecie symulatorów elektronicznych istnieje wiele opcji, ale circuits.io, znany również jako TinkerCAD, jest prawdopodobnie najbardziej wszechstronny.

  • Możesz skomponować obwód na wirtualnej płytce ściennej, która wygląda jak prawdziwa.
  • Możesz faktycznie obserwować miganie diody LED lub nacisnąć przycisk podczas symulacji w czasie rzeczywistym zamiast walczyć z abstrakcyjnymi kształtami fali.
  • Możesz łączyć urządzenia cyfrowe, takie jak zegar 555 lub rejestry przesuwne z (interaktywnymi) komponentami analogowymi, takimi jak rezystory i diody LED.
  • Możesz zaprogramować Arduino i symulować mikrokontroler wraz z otaczającym go obwodem analogowym.
  • Możesz debugować Arduino: gdy symulator osiągnie punkt przerwania, symulacja jest wstrzymana i możesz łatwo sprawdzić każdą zmienną w kodzie i każde napięcie lub prąd w obwodzie.
  • Możesz używać i obserwować różne protokoły komunikacyjne, takie jak UART, I2C i SPI.
  • Możesz wstrzymać symulację w środku sekwencji I2C, umieszczając punkt przerwania w kodzie sterownika (np. Procedura obsługi przerwań dla zdarzeń I2C)
  • Jest wolne!

Przykład

Jest to przykładowy obwód z pilotem na podczerwień i ekranem LCD.

Oświadczenie: Jesteśmy twórcami obwodów 123D


1
Jak to działa z Arduino IDE ? czy byłoby możliwe flashowanie, debugowanie itp.?
rraallvv 11.04.16

14

Pamiętaj, że żaden symulator nie odtworzy rzeczywistych sytuacji. Na forum Arduino pojawiło się wiele postów na temat problemów z kodem lub elektroniką, które okazują się czymś subtelnym, na przykład:

  • Problemy z czasem
  • Warunki wyścigu (powiązane / zależne zdarzenia nie zawsze odbywają się w tej samej kolejności)
  • Poziomy napięcia, np. bezpotencjałowe piny wejściowe
  • Silniki napędzające, które obniżają napięcie Arduino na tyle, że resetuje się
  • Brak kondensatorów odsprzęgających
  • Piny wejściowe są w stanie „nieokreślonym” (np. 2,5 V na pinie, gdzie 2 lub mniej V jest NISKIE, a 3 V lub więcej jest WYSOKIE)
  • Problemy z procedurami obsługi przerwań, takimi jak zmienne, które nie są deklarowane jako zmienne
  • Skoki napięcia z powodu braku diod flyback na silnikach
  • Procesor resetujący się więcej niż 10 diod LED jest włączony, ponieważ pobór prądu przekracza ilość, którą sprzęt może dostarczyć
  • Procedury obsługi przerwań biorą 10 µS na przetworzenie przerwania, gdy dostępne jest tylko 9 µS.

Ze swojej natury symulatory nie są w stanie odtworzyć tego wszystkiego. Nawet gdyby mogli, czy pomyślałbyś o przełączeniu opcji „wstaw losowy hałas z silników”?


Aby przygotować się do przybycia płyty, pobierz IDE i zacznij programować. Możesz zainstalować biblioteki, napisać kod i uniknąć błędów składniowych, uporządkować go i być ogólnie gotowym na wielki dzień, gdy sprzęt jest w twoich rękach.


Baw się dobrze i baw się eksperymentując ze swoim Arduino!


13

Możesz użyć Yenka (darmowy do użytku domowego) do symulacji Arduino, PIX, PIXACE i innych płyt z cyfrowymi, analogowymi i szeregowymi I / O. Zapewnia wiele komponentów i przykładowych projektów.

Zrzut ekranu:

Symulacja Yenka Arduino


Czy można go zaprogramować, debugować z Arduino IDE ?
rraallvv 11.04.16

12

Tak, możesz spróbować użyć Proteus ISIS do symulacji kodu ...

Aby uzyskać pełną emulację Arduino, istnieje program shareware o nazwie VBB (Virtual BreadBoard) , próbowałem też i było przyjemnie.

Edit: Można sprawdzić mój szczegółowy poradnik tutaj , w jaki sposób symulować na Proteus ISIS


9

Uważam, że ta strona internetowa zawiera listę emulatorów i symulatorów wraz z ich ceną i dostępnością.

Aktualizacja:

Ponieważ niektórzy użytkownicy wspomnieli, że na tej stronie są zepsute linki, oto wybór emulatorów, które znalazłem. Pamiętaj, że niektóre opisy mogły zostać zaczerpnięte ze wspomnianego linku:

  • Emulino : To oprogramowanie oparte na systemie Linux typu open source we wczesnym etapie rozwoju, które emuluje MCU specyficzne dla Arduino.

  • Emulare : jest emulatorem sprzętowym ogólnego zastosowania. Ma na celu zapewnienie centralnego interfejsu do tworzenia symulacji elektronicznych do tworzenia oprogramowania wbudowanego. Obecnie emulare koncentruje się na linii mikrokontrolerów ATMega (Arduino UNO ma procesor ATMega).

  • SimAVR : to nowy symulator AVR dla systemu Linux lub dowolnej platformy korzystającej z avr-gcc. Symulator ładuje pliki ELF bezpośrednio, a istnieje nawet sposób na określenie parametrów symulacji bezpośrednio w emulowanym kodzie za pomocą sekcji .elf. Obsługuje emulację wielu procesorów ATMega i wspomniano, że łatwo jest nawet dodawać nowe.

  • Amtel Studio : Wydaje się, że nie wspomina o emulacji, ale jest to wyrafinowane IDE do debugowania kodu na wielu platformach, szczególnie Arduino. Atmel Studio 7 oferuje płynny import projektów utworzonych w środowisku programistycznym Arduino za pomocą jednego kliknięcia. Szkic, w tym wszelkie biblioteki, do których się odwołuje, zostanie zaimportowany do Studio 7 jako projekt C ++. Po zaimportowaniu możesz wykorzystać pełne możliwości Studio 7, aby dostroić i debugować swój projekt. Atmel Studio 7 w pełni obsługuje wbudowany debugger na płycie Arduino Zero. W przypadku innych płyt Arduino dostępne są adaptery ekranowe, które odsłaniają złącza debugowania lub przełączają się na jedną z wielu dostępnych płyt Xplained-Mini / PRO, aby w pełni wykorzystać ekosystem Atmel HW.

Nadal możesz używać symulatorów, takich jak EasyEDA, do testowania kodu, a w większości przypadków można go uruchomić na urządzeniu. Należy jednak pamiętać, że biorąc pod uwagę naturę elementów elektronicznych, może być konieczne zapewnienie zewnętrznych rezystorów, kondensatorów itp., Aby uzyskać oczekiwane wyniki.


Link tylko nie odpowiada tutaj dobrze, ponieważ będą one bezużyteczne, gdy zepsuje się linkowana strona. Napisz podsumowanie, a także upewnij się, że twoja odpowiedź dodaje wartości, a nie tylko powtarza te, które już mamy.
totymedli

Zgadzam się z @totymedli - jeśli ten link znika, odpowiedź staje się bezużyteczna. Proszę streścić przynajmniej wspomniane emulatory i aktualną cenę. Możesz zacząć wiersze od gwiazdki, aby zrobić punktory, jeśli to pomoże.
Nick Gammon

7

Virtualbreadboard ma nową edycję VBB4Arduino „Two Arduino”, która zawiera ZARÓWNO emulator JVM Arduino ORAZ symulator zestawu instrukcji AVR z przykładami obejmującymi prawie wszystkie przykłady dystrybucji Arduino i kilka urządzeń peryferyjnych - LCD, WS2812 Neo LEDS, Silniki, Serwosilniki , Logic Analyzer i więcej.

http://www.virtualbreadboard.com

Oświadczenie: Jestem autorem Virtual Breadboard


6

Wypróbuj Simulator for Arduino - jest najlepszy, ale wtedy jesteśmy stronniczy, ponieważ jesteśmy częścią zespołu programistów. Nie wszyscy chcą płacić 19,99 USD, chociaż prawie 5 000 użytkowników Arduino w ciągu ostatnich kilku lat. Istnieje bezpłatna wersja Simulator for Arduino, która działa przez 45 dni lub 100 obciążeń szkicu i maksymalnie 200 linii. Wypróbuj to, a następnie kup, jeśli możesz sobie na to pozwolić i / lub wydaje się to opłacalne.

Jeśli coś jest nie tak lub które można poprawić, daj nam znać - wszyscy tak robią i właśnie dlatego, dlatego Simulator for Arduino został zbudowany w 99% na podstawie pomysłów użytkowników i zgłoszeń błędów.

Ponadto jedynym innym wypróbowanym przez nas programem, który jest bliski jakości, jest Proteus, ale jest to pełne studio do projektowania obwodów drukowanych i wygląda na bardzo drogie - tj. O wiele więcej niż 20 USD. I planujemy zignorować niedawną prośbę użytkownika o podwyższenie ceny do 200 USD.


5

Możesz np. Użyć mojego symulatora. Jest szczególnie przydatny w aplikacjach podobnych do PLC, w których wielozadaniowość osiągana jest poprzez cykliczną ocenę połączonych obiektów podobnych do obwodu: timerów, znaczników, zatrzasków, Oneshotów i rejestrów. Możesz go użyć do symulacji kontrolowanego systemu, jak wynika z przykładów w pliku do pobrania. Ma skromne możliwości wizualizacji, może rysować wykresy czasowe oraz umożliwia dostęp i zmianę cq wymuszania wszystkich zmiennych w czasie rzeczywistym podczas przeprowadzanej symulacji. Możesz także zatrzymać czas. Kiedy jesteś zadowolony z zachowania twojej kontroli, generuje kod C, który ma zostać przesłany do rzeczywistego Arduino.

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


1

sposób, w jaki mogę pisać kod i emulować / testować go na komputerze stacjonarnym

Jeśli masz na myśli „test jednostkowy” za pomocą komputera stacjonarnego, mogę zaoferować bibliotekę, którą napisałem o nazwie arduino_ci .

Nie oferuje emulacji. Wyraziłbyś swoje testy w kodzie. Na przykład, oto test pobrany z dokumentacji referencyjnej, który sprawdza poprawność danych zapisanych na porcie:

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

W praktyce prawdopodobnie nie wywoływałbyś digitalWritefunkcji bezpośrednio - wywołałeś funkcję w bibliotece, a następnie sprawdziłeś, czy „stan świata” (reprezentowany tutaj przez GODMODEkonstrukcję) odpowiada temu, czego oczekiwałeś od biblioteki.


0

Tak, możesz i dość łatwo. Istnieje wspaniała symulacja online (całkowicie darmowa) o nazwie TinkerCAD . Ma doskonałą symulację makiet z częściami takimi jak tranzystory, diody LED, układy scalone i Arduino. Możesz zaprogramować Arduino i uruchomić go w symulacji na żywo, która zawiera interaktywne wejścia (przyciski, przełączniki DIP itp.).


[Edytuj: Poniższy tekst odnosi się do funkcji, która została przeniesiona do Circuits.io , a mianowicie Eagle PCB ]

To nie wszystko. Zawiera również w osobnej zakładce schematy dla twojego obwodu oraz kolejną zakładkę do projektowania obwodu drukowanego płytki PCB! Lub możesz po prostu zrobić schematy od zera i stamtąd stworzyć płytkę drukowaną.

Możesz wykonać własne projekty obwodów i możesz je kupić. Możesz to wszystko zrobić w circuits.io i nie ryzykujesz zepsucia swojego Arduino. Posiada również wskaźniki ostrzegawcze w symulacji (na przykład, jeśli nie użyłeś wystarczającej rezystancji na diodzie LED lub układzie scalonym).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.