Bisakah saya memprogram untuk Arduino tanpa memiliki papan nyata?

204

Saya ingin memulai pengembangan beberapa proyek Arduino dasar tetapi saya belum memiliki papan Arduino. Apakah ada cara saya dapat menulis kode saya dan meniru / mengujinya menggunakan komputer desktop sehingga setelah papan saya tiba saya hanya perlu mengunggah dan menjalankan proyek saya di atasnya?

totymedli
sumber
1
Saya tertarik juga, apakah Anda menemukan yang cocok dengan IDE Arduino ? yaitu, terdeteksi oleh IDE seolah-olah itu papan, dengan semua fungsinya.
rraallvv

Jawaban:

127

Ada banyak simulator Arduino di luar sana, banyak yang gratis, dan beberapa produk berbayar juga.

  • Lingkungan pengembangan CodeBlocks Arduino termasuk simulator Arduino gratis, masih dalam pengembangan tetapi fungsional.
  • Simuino mensimulasikan pin Arduino Uno dan Mega - bukan simulator realistis yang tampak cantik, tetapi berfungsi.
  • Arduino Simulator yang berbasis Python adalah pilihan lain, yang cocok dengan IDE resmi
  • Virtronics Simulator untuk Arduino terlihat menjanjikan, tetapi saya tidak mengerti mengapa saya akan membayar $ 14,99 untuk itu, ketika saya bisa membeli satu atau lebih klon Arduino aktual untuk harga itu

Banyak simulator Arduino lain ada di luar sana jika Anda mencari, dan yang baru diumumkan, bahkan crowdfunded, sepanjang waktu.

Anindo Ghosh
sumber
10
sebagai catatan, itu bukan emulator tetapi simulator , perbedaan terpenting adalah tidak menjalankan kode pada mesin virtual AVR (seperti apa yang dilakukan qemu ), tetapi mengikat fungsi Arduino ke kode asli. Jadi pada dasarnya mereka tidak akan dapat menjalankan hal-hal AVR asli dan perilaku register / timer tidak akan sama seperti pada perangkat keras AVR asli. Lihat perbedaan yang dijelaskan dengan baik dalam jawaban itu . Meskipun demikian, secara teori dimungkinkan untuk meniru kode Arduino Due dengan qemu .
zmo
5
Anda "tidak mengerti mengapa [satu] akan membayar $ 14,99 untuk itu, ketika [satu] bisa membeli satu atau lebih klon Arduino aktual untuk harga itu"? Saya dapat memberi tahu Anda alasannya: karena perangkat keras tidak memiliki debugger bawaan dengan fitur yang dapat disediakan oleh simulator.
R. Martinho Fernandes
8
The Arduino Simulator menggelitik minat saya, tapi sayangnya tampaknya tidak memiliki file yang berhubungan dengan itu di situs sourceforge. Apakah saya kehilangan sesuatu, atau sudah menjadi usang sejak Anda menulis jawaban Anda?
Greenonline
Seperti disebutkan dalam komentar di atas, tidak ada file di situs menempa sumber simulator arduino. Apakah ada situs web untuk itu atau ada simulator lain yang berfungsi dengan baik di mac, dengan IDE resmi?
gordanvij
4
Simuino mengerikan, tidak profesional dan tidak berguna. Mereka tidak tahu bagaimana cara membuat kode. Arduino Simulator tidak memiliki rilis. CodeBlocks hanya untuk Windows. Simulator untuk Arduino bukan open-source.
dhchdhd
81

Saya suka menggunakan circuits.io alias TinkerCAD untuk ini.

Ini berbasis cloud dan memiliki beberapa fitur bagus termasuk desain dan kolaborasi PCB.

IMO simulasi dan kemampuan Arduino sangat mengesankan dan intuitif.

akellyirl
sumber
3
Ini sangat bagus dan bersih dan fungsionalitas dasar sangat mengesankan, mudah digunakan dan kuat. Namun banyak bagian umum (termasuk LCD dan sensor suhu) belum didukung. Saya ragu Anda dapat menguji apa pun kecuali desain yang sangat mendasar pada tahap ini. Saya harap ini akan menjadi lebih baik dari waktu ke waktu.
Suma
Saya mencobanya dengan cepat dan ternyata sangat mengesankan untuk produk gratis. Saya tidak tahu keterbatasannya dalam hal realisme simulasi, tetapi editornya sangat ramah dan hanya menempatkan petunjuk ke slot yang tepat secara otomatis kode yang dibuat dengan pin yang benar dan lingkaran yang berkedip!
heltonbiker
bahkan pilihan saya akan menjadi 123d tetapi satu-satunya keluhan saya tentang situs ini adalah mereka tidak menambahkan komponen baru. Akan sangat bagus jika mereka dapat memiliki beberapa komponen baru di daftar mereka
KD.
2
Bagian lab elektronik dari situs circuits.io telah pindah ke tinkercad.com , di mana Anda dapat menemukannya di bawah sirkuit .
SiggyF
1
Saya telah mengeditnya dan memperbarui tautannya.
sa_leinad
40

Banyak pilihan ada di dunia simulator elektronik, tetapi circuits.io alias TinkerCAD mungkin adalah yang paling serbaguna di luar sana.

  • Anda dapat menyusun sirkuit Anda di papan tempat memotong roti virtual yang terlihat seperti nyata.
  • Anda benar-benar dapat menonton LED yang berkedip atau menekan tombol selama simulasi waktu nyata daripada berjuang dengan bentuk gelombang abstrak.
  • Anda dapat menggabungkan perangkat digital seperti timer 555 atau register geser dengan komponen analog (interaktif) seperti resistor dan LED.
  • Anda dapat memprogram Arduino dan mensimulasikan mikrokontroler bersama dengan rangkaian analog Anda di sekitarnya.
  • Anda dapat men-debug Arduino: ketika simulator mencapai breakpoint Anda, simulasi dihentikan sementara dan Anda dapat dengan mudah memeriksa setiap variabel dalam kode Anda dan setiap tegangan atau arus di sirkuit Anda.
  • Anda dapat menggunakan dan mengamati protokol komunikasi yang berbeda seperti UART, I2C dan SPI.
  • Anda dapat menjeda simulasi di tengah urutan I2C dengan meletakkan breakpoint dalam kode driver (mis., Interupsi servis rutin untuk peristiwa I2C)
  • Gratis!

Contoh

Ini adalah contoh sirkuit yang memiliki dengan Remote IR dan Layar LCD.

Penafian: Kami adalah pembuat Sirkuit 123D

Sirkuit 123D
sumber
1
Bagaimana cara kerjanya dengan Arduino IDE ? apakah akan tersedia untuk flash, debug, dll?
rraallvv
14

Sadarilah bahwa tidak ada simulator yang akan mereproduksi situasi kehidupan nyata. Ada banyak posting di forum Arduino tentang masalah dengan kode atau elektronik, yang ternyata menjadi sesuatu yang halus, seperti:

  • Masalah pengaturan waktu
  • Kondisi lomba (kejadian terkait / tidak selalu terjadi dalam urutan yang sama)
  • Level tegangan, mis. pin input mengambang
  • Mengemudi motor yang menjatuhkan voltase Arduino cukup sehingga me-reset
  • Tidak memiliki kapasitor decoupling
  • Pin input berada dalam keadaan "tidak terdefinisi" (mis. 2.5V pada pin di mana 2 atau kurang V adalah RENDAH dan 3V atau lebih adalah TINGGI)
  • Masalah dengan interrupt handler, seperti variabel tidak dinyatakan volatile
  • Paku tegangan karena tidak memiliki dioda flyback pada motor
  • Proses ulang prosesor sekali lagi dari 10 LED dinyalakan karena undian saat ini melebihi jumlah yang dapat disediakan oleh perangkat keras
  • Penangan interrupt mengambil 10 μS untuk memproses interupsi ketika hanya 9 μS yang tersedia.

Secara alami, simulator tidak dapat mereproduksi semua ini. Bahkan jika mereka bisa, apakah Anda berpikir untuk beralih opsi "masukkan suara acak dari motor"?


Untuk bersiap-siap ketika board tiba, unduh IDE dan mulailah pemrograman. Anda dapat menginstal pustaka, kode tertulis dan bebas dari kesalahan sintaksis, mengaturnya dengan rapi, dan umumnya siap untuk hari besar ketika perangkat keras ada di tangan Anda.


Bersenang-senang dan nikmati bereksperimen dengan Arduino Anda!

Nick Gammon
sumber
13

Anda dapat menggunakan Yenka (gratis untuk digunakan di rumah) untuk mensimulasikan Arduino, PIX, PIXACE dan papan lainnya dengan I / O digital, analog dan serial. Ini menyediakan banyak komponen dan proyek sampel.

Tangkapan layar:

Simulasi Yenka Arduino

niutech
sumber
Bisakah itu diprogram, di-debug dari Arduino IDE ?
rraallvv
12

Ya, Anda bisa, coba gunakan Proteus ISIS untuk mensimulasikan kode Anda ...

Untuk emulasi penuh Arduino, ada program shareware yang disebut VBB (Virtual BreadBoard) , saya juga mencobanya dan itu bagus.

Sunting: Anda dapat memeriksa tutorial terperinci saya di sini tentang cara mensimulasikan di Proteus ISIS

Ahmed Hamdy
sumber
9

Saya percaya situs web ini memiliki daftar baik emulator maupun simulator beserta harganya dan ketersediaannya.

Memperbarui:

Karena beberapa pengguna menyebutkan ada tautan rusak di situs web itu, berikut ini adalah beberapa pilihan emulator yang saya temukan. Perhatikan bahwa beberapa deskripsi mungkin diambil dari tautan yang disebutkan:

  • Emulino : Adalah perangkat lunak berbasis linux open source dalam pengembangan awal yang mengemulasi MCU khusus Arduino.

  • Emulare : adalah emulator perangkat keras tujuan umum. Ini bertujuan untuk menyediakan antarmuka pusat untuk membangun simulasi elektronik untuk pengembangan perangkat lunak tertanam. Saat ini emulare berfokus pada jalur mikrokontroler ATMega (Arduino UNO memiliki prosesor ATMega).

  • SimAVR : adalah simulator AVR baru untuk linux, atau platform apa pun yang menggunakan avr-gcc. Simulator memuat file ELF secara langsung, dan bahkan ada cara untuk menentukan parameter simulasi secara langsung dalam kode yang ditiru menggunakan bagian .elf. Ini mendukung emulasi banyak prosesor ATMega dan disebutkan bahwa bahkan lebih mudah menambahkan yang baru.

  • Amtel Studio : Ini sepertinya tidak menyebutkan istilah emulasi, tetapi ini adalah IDE canggih untuk men-debug kode Anda untuk banyak platform khususnya Arduino. Atmel Studio 7 memiliki fitur impor satu klik mulus proyek yang dibuat di lingkungan pengembangan Arduino. Sketsa Anda, termasuk pustaka yang dirujuknya, akan diimpor ke Studio 7 sebagai proyek C ++. Setelah diimpor, Anda dapat memanfaatkan kemampuan penuh Studio 7 untuk menyempurnakan dan men-debug desain Anda. Atmel Studio 7 sepenuhnya mendukung debugger tertanam yang kuat di papan Arduino Zero. Untuk papan Arduino lainnya, adaptor-perisai yang mengekspos konektor debug tersedia, atau beralih ke salah satu dari banyak papan Xplained-Mini / PRO yang tersedia untuk sepenuhnya memanfaatkan ekosistem-sistem Atmel HW.

Anda masih dapat menggunakan simulator seperti EasyEDA untuk menguji kode Anda dan dalam kebanyakan kasus dapat menjalankannya di perangkat. Tetapi perhatikan bahwa mengingat sifat komponen elektronik, Anda mungkin harus menyediakan resistor eksternal, kapasitor dll untuk mendapatkan hasil yang diharapkan.

Aaron Azhari
sumber
Tautan hanya menjawab bukan hal yang baik di sini karena tidak akan berguna ketika situs tertaut mati. Harap menulis ringkasan dan juga memastikan bahwa jawaban Anda menambah nilai dan tidak hanya mengulangi yang sudah kita miliki.
totymedli
Saya setuju dengan @totymedli - jika tautan itu mati jawabannya menjadi tidak berguna. Mohon rangkum, paling tidak, emulator yang disebutkan dan harga saat ini. Anda dapat memulai garis dengan tanda bintang untuk membuat poin-poin, jika itu membantu.
Nick Gammon
7

Virtualbreadboard memiliki edisi VBB4Arduino 'Dua Arduino' baru yang mencakup KEDUA emulator Arduino JVM DAN AVR Instruksi mengatur simulator dengan contoh-contoh yang mencakup hampir semua contoh distribusi Arduino dan banyak perangkat periferal - LCD, WS2812 Neo LEDS, Motors, Servo's , Logic Analyzer dan banyak lagi.

http://www.virtualbreadboard.com

Penafian: Saya adalah penulis Virtual Breadboard

James Caska
sumber
6

Coba Simulator untuk Arduino - ini adalah yang terbaik tetapi kemudian kami bias karena kami adalah bagian dari tim pengembangan. Tidak semua orang ingin membayar $ 19,99 meskipun hampir 5k pengguna Arduino memiliki dalam beberapa tahun terakhir. Ada versi gratis Simulator untuk Arduino yang beroperasi selama 45 hari atau 100 beban sketsa dan maks 200 baris. Coba ini dan kemudian beli jika Anda mampu membelinya dan / atau jika tampaknya bermanfaat.

Jika ada sesuatu yang tidak benar atau yang dapat diperbaiki, beri tahu kami - semua orang melakukannya dan memilikinya, itulah sebabnya Simulator untuk Arduino 99% dibangun oleh gagasan pengguna dan laporan bug.

Juga, satu-satunya program lain yang kami coba yang mendekati kualitas adalah Proteus tetapi ini adalah studio desain PCB penuh dan terlihat sangat mahal - yaitu lebih dari $ 20. Dan kami berencana untuk mengabaikan permintaan pengguna baru-baru ini untuk menaikkan harga menjadi $ 200.

Virtronics
sumber
5

Anda bisa misalnya menggunakan simulator saya. Ini sangat cocok untuk aplikasi seperti PLC, di mana multitasking dicapai dengan evaluasi siklik dari objek seperti sirkuit yang saling berhubungan: Pengatur Waktu, Penanda, Kait, Oneshots dan Register. Anda dapat menggunakannya untuk mensimulasikan sistem terkontrol Anda juga, seperti menjadi jelas dari contoh-contoh dalam unduhan. Ini memiliki kapasitas visualisasi sederhana, dapat menggambar grafik waktu, dan memungkinkan Anda untuk mengakses dan mengubah cq memaksa semua variabel secara real time selama simulasi berjalan. Anda juga dapat membekukan waktu. Ketika Anda puas dengan perilaku kontrol Anda, kode C akan diunggah ke Arduino yang sebenarnya.

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

Jacques de Hooge
sumber
1

cara saya bisa menulis kode saya dan meniru / mengujinya menggunakan komputer desktop

Jika Anda bermaksud dapat "menguji unit" menggunakan komputer desktop, saya dapat menawarkan perpustakaan yang saya tulis bernama arduino_ci .

Itu tidak menawarkan persaingan. Anda akan mengekspresikan tes Anda dalam kode. Misalnya, ini adalah tes yang diambil dari dokumentasi referensi yang memvalidasi data yang ditulis ke port:

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

Dalam praktiknya, Anda mungkin tidak akan memanggil digitalWritefungsi secara langsung - Anda akan memanggil fungsi di perpustakaan Anda, lalu verifikasi bahwa "negara dunia" (diwakili di sini oleh GODMODEkonstruk) cocok dengan apa yang Anda harapkan perpustakaan Anda lakukan.

Ian
sumber
0

Ya, Anda bisa, dan cukup mudah. Ada simulasi online yang luar biasa (sepenuhnya gratis) yang disebut TinkerCAD . Ini memiliki simulasi papan tempat memotong roti yang sangat baik, dengan bagian-bagian seperti transistor, LED, IC, dan Arduino. Anda dapat memprogram Arduino dan menjalankan semuanya dalam simulasi langsung yang mencakup input interaktif (tombol, switch DIP, dll.).


[Sunting: Teks berikut ini merujuk pada fungsionalitas yang telah dipindahkan ke Circuits.io , yaitu Eagle PCB ]

Bukan itu saja. Ini juga termasuk dalam skema tab terpisah untuk sirkuit Anda, dan tab lain untuk desain PCB sirkuit papan tempat memotong roti Anda! Atau, Anda bisa membuat skema dari awal dan membuat PCB dari sana.

Anda dapat memiliki desain sirkuit Anda dan Anda dapat membelinya. Anda dapat melakukan semua ini di circuits.io, dan Anda tidak mengambil risiko mengacaukan Arduino Anda yang sebenarnya. Ini juga memiliki indikator peringatan dalam simulasi (misalnya, jika Anda tidak menggunakan cukup perlawanan pada LED, atau IC).

I. Golsby
sumber