Untuk programmer Arduino yang berpengalaman atau yang lainnya?

11

Latar belakang saya:

Saya telah melakukan perangkat lunak mondar-mandir cukup lama, dan saya kurang lebih mahir dalam C, C ++, Java, Ruby, Erlang, Haskell, Lua dan Python. Saya juga mengambil kelas di lab elektronik, tetapi selain membentuk satu lab singkat dengan pompa, itu semua tentang mendapatkan sinyal ke dan A / D dan dari sana ke x86 dengan LabView ( bukan pilihan saya lingkungan pemrograman) Saya ingin untuk kembali bermain-main dengan perangkat keras dengan tujuan otomatisasi rumah. (Saya pikir saya bisa melakukan lebih baik maka ini kurang dari $ 500)

Pertanyaan:

Saya akan memotong gigi saya pada Arduino, tetapi semakin saya membaca semakin rasanya seperti keuntungan utama dari sistem itu adalah mudah diprogram. Apakah ini tempat yang baik untuk memulai perangkat lunak (yang masih perlu membeli besi solder) atau apakah ada sesuatu yang lebih cocok untuk saya?

(PS Saya punya lebih banyak waktu daripada uang)

John F. Miller
sumber

Jawaban:

4

Sejauh papan eval mikrokontroler siap digunakan di luar gerbang, ada keluarga arduino tentu saja. tetapi juga mempertimbangkan launchpad msp430 untuk $ 4,30. set instruksi yang baik dan kinerja yang serupa dengan AVR dengan kecenderungan ke arah daya / biaya rendah. Untuk $ 20 Anda bisa mendapatkan penemuan stm32f4 (jangan bingung dengan penemuan garis nilai stm32 atau keluarga stm8) yang umumnya kurang dari yang Anda bayarkan untuk arduino yang dapat digunakan ($ 35- $ 50) tetapi berjalan di sekitar arduino 168Mhz, floating point unit, cache, dll. Di ujung atas kisaran harga Arduino ada lengan lain tempat tidur (mbed.org), yang mungkin paling dekat dengan pengalaman kotak pasir Arduino.

Jika Anda ingin tinggal di standbox dan hanya membuat panggilan api arduino mungkin adalah tempat Anda ingin tinggal, ada mega untuk kinerja lebih atau pergi dengan mapl leaflabs yang berbasis lengan tetapi mencoba untuk memberikan pengalaman arduino sandbox.

Anda bisa mendapatkan lebih banyak kinerja, menghasilkan uang, dll jika Anda mengambil sedikit lebih banyak tanggung jawab dan pengetahuan tentang apa yang sedang terjadi. Saya merekomendasikan ketiga platform (avr, msp, arm / thumb) dan beberapa vendor (avr dan msp terkunci tetapi arm dijual oleh semua orang dengan periferal berbeda dan I / O). Sebagai contoh, Anda dapat digunakan untuk platform yang tidak memiliki pull-up pada jalur gpio dan harus menggunakan komponen eksternal di mana chip atau vendor lain menyediakannya pada chip dengan harga / kinerja yang sebanding. Demikian juga Anda mungkin suka menggedor port serial atau spi bus tetapi menemukan bahwa untuk uang, kekuatan, ukuran, dll yang sama beberapa vendor lain memiliki perangkat keras untuk membantu dalam antarmuka itu.

jika tidak ada yang lain itu adalah kepentingan terbaik Anda sebagai seorang programmer dan seseorang yang ingin masuk ke hobi elektronik untuk mengetahui lebih banyak tentang apa yang terjadi di luar kotak pasir. Sebagai cara untuk memasuki dunia elektronik hobi ini, Arduino adalah transisi yang sangat sangat nyaman dari pemrograman aplikasi pada sistem operasi. sparkfun memiliki beberapa kit sekarang yang mencakup antarmuka serial dan beberapa periferhals ada kit lilypad (platform arduino) dan mungkin kit pro, keduanya bukan faktor bentuk perisai arduino jika itu penting. sparkfun menjual kotak ritel dan banyak rasa arduinos, uno, dll. (papan st dan msp yang disebutkan di atas harus Anda mulai di situs web ti atau st atau buka github.com/dwelch67 dan saya memiliki tautan ke berbagai papan di saya contoh).

old_timer
sumber
8

Saya juga seorang pria perangkat lunak pada siang hari. Sekitar sepuluh tahun yang lalu saya mulai dengan stempel BASIC dari Parallax, dan setelah selang lama saya baru-baru ini kembali ke proyek tertanam. Awalnya saya melihat Arduino dan bagian-bagiannya yang berbeda dan menyadari bahwa saya bisa melewati label harga papan Arduino dan mengambil ATMega168 dan mulai lagi. Ini bekerja sebagian besar, namun saya sering mengalami masalah di mana memiliki papan prebuilt akan menyenangkan karena saya tidak bisa mengacaukan perakitan dasar.

Saya akhirnya memesan Arduino dan menyukai segala sesuatu tentang papan dan perpustakaan. Saya bukan penggemar "IDE" jadi saya klik pada 'Use External Editor' dan gunakan IDE murni untuk mengkompilasi dan menginstal perangkat lunak ke papan tulis. Biasanya saya memulai proyek atau ide dengan papan Arduino dan kemudian port itu ke dalam mega chip. Ini membantu menjaga biaya turun dengan hanya menggunakan bagian-bagian yang diperlukan untuk suatu proyek tetapi masih memungkinkan saya untuk dengan cepat membuat prototipe.

Semoga berhasil!

Michael Dillon
sumber
6

Arduino adalah pengantar yang bagus untuk pemrograman mikrokontroler.

Ada perbedaan besar antara menulis perangkat lunak untuk PC dan menulis firmware untuk mikrokontroler.

Arduino akan menjadi titik awal yang baik untuk mendapatkan kepala Anda berinteraksi dengan periferal dll tanpa harus terjebak dalam berurusan dengan kebiasaan chip tertentu dan semacamnya.

Tapi, seperti yang saya katakan, ini adalah pengantar.

Mulailah dengan Arduino kemudian beralih ke hal-hal yang lebih besar dan lebih baik.

Saya menggunakan keluarga PIC dari mikrokontroler cukup banyak, tetapi saya masih memiliki li'l Arduino terpercaya yang saya gunakan untuk mencoba ide dan menguji berbagai hal dengan cepat.

Majenko
sumber
6

Karena "Arduino" terdiri dari beberapa hal, saya pikir mungkin berguna untuk melihatnya secara terpisah:

  • Di sisi perangkat keras, perangkat yang kompatibel dengan Arduino pada dasarnya adalah mikrokontroler ATMega dengan bootloader tertentu. Biasanya papan yang kompatibel dengan Arduino yang siap pakai juga akan mencakup elektronik pendukung lainnya, seperti antarmuka port serial atau USB, pengatur tegangan, pin header untuk memudahkan akses ke pin, dll. Perangkat perangkat keras cukup terjangkau jika Anda menginginkan fungsi USB dan bersama dengan bootloader yang telah diprogram, Anda tidak perlu lagi membeli programmer terpisah untuk mengunggah perangkat lunak Anda. Jadi, ya, Arduino (dan klon yang kompatibel) berguna sebagai perangkat perangkat keras saat membuat prototipe; untuk build terakhir Anda mungkin ingin membangun sendiri hanya dengan bagian-bagian yang Anda butuhkan, jadi Anda tidak perlu memasukkan satu Arduino lengkap ke dalam setiap proyek.

  • Di sisi perangkat lunak, perpustakaan Arduino seperti perpustakaan pemrograman dan kegunaannya tergantung pada kebutuhan Anda. Secara pribadi saya merasa kadang-kadang berguna untuk prototyping cepat (misalnya, fungsi port serial), tetapi sebagai programmer berpengalaman saya tidak menyukai banyak penyederhanaan (terutama penomoran pin). Dalam hal apa pun Anda dapat dengan mudah menggunakan pustaka AVR asli alih-alih, atau sebagai tambahan, pustaka Arduino bahkan jika Anda memprogram untuk perangkat Arduino dan / atau menggunakan Arduino IDE. Jadi, gunakan pustaka Arduino apa pun yang Anda temukan bermanfaat, terutama saat membuat prototipe, tetapi pelajari AVR yang mendasarinya saat Anda mengikuti (lihat sumber Arduino & lembar data ATMega).

  • Akhirnya, Arduino IDE adalah lingkungan pemrograman grafis dengan editor sederhana, konsol port serial, "membuat" -seperti membangun sistem (tersembunyi dari pengguna), dan (ujung depan untuk) alat untuk mengunggah perangkat lunak Anda ke perangkat yang sebenarnya . Secara pribadi saya benci IDE dan tidak pernah menggunakannya, lebih suka bekerja pada baris perintah, tetapi jelas ini hanya masalah preferensi pribadi.

Arkku
sumber
1
Saya tidak tahu bagaimana mereka dapat menyebut monster itu sebagai IDE. Itu adalah bagian paling mengerikan dari [sumpah serapah dihapus] yang bisa dibayangkan. Saya telah Anjuta hampir mengatur untuk melakukan segalanya untuk saya sekarang karena (tidak terlalu) IDE Arduino melakukannya.
Majenko
4

Pertanyaan Anda terlalu terbuka berakhir untuk jawaban langsung, sehingga yang bisa kami lakukan adalah menunjukkan kepada Anda pengorbanan.

Adruino adalah mikrokontroler berlapis gula yang dibuat bodoh untuk massa. Ini dioptimalkan untuk menyelesaikan hal-hal dasar dengan cepat dengan minimal harus mempelajari hal-hal.

Di jantung arduino adalah mikrokontroler biasa, yang dapat Anda gunakan secara langsung juga. Keuntungannya adalah Anda dapat memilih mikro untuk apa yang ingin Anda lakukan, tidak memiliki ide orang lain tentang apa yang harus Anda lakukan antara Anda dan mikro, dan Anda dapat melakukan apa pun yang mampu dilakukan oleh mikro telanjang, yang merupakan lebih dari sekadar muncul melalui abstraksi Arduino. Kelemahannya adalah Anda harus benar-benar mempelajari sesuatu, membaca beberapa lembar data 100 halaman hanyalah permulaan, dan Anda tidak akan mendapatkan kepuasan instan.

Hanya Anda yang bisa mengatakan apa yang lebih baik untuk Anda. Apakah Anda ingin merangkul kebodohan batin Anda dan dipimpin dengan bahagia melalui taman selamanya terdegradasi untuk mengatakan "ya?", "Apa?", Dan "Oh itu sangat lucu!" untuk hal-hal elektronik? Atau apakah Anda lebih suka menyusuri jalan gelap panjang untuk muncul dengan satu LED berkedip setelah banyak kerja keras dan masalah? Apakah Anda hanya ingin mengendarai mobil atau mempelajari cara mesin bekerja sehingga Anda bisa mendapatkan kinerja maksimal dan menyesuaikannya sendiri?

Olin Lathrop
sumber
1
Olin, kau sekolah tua! Maksud saya sebagai pujian ... Tapi saya dengan hormat tidak setuju dengan Anda tentang masalah ini. Berurusan dengan perangkat lunak yang dirancang biasa-biasa saja pada sistem operasi yang salah dipahami telah menambah nol pada pemahaman saya tentang elektronik. Sebenarnya telah menghabiskan berhari-hari waktu yang berharga ketika saya bisa belajar hal-hal yang berguna dari orang-orang yang berpengetahuan seperti Anda. Saya katakan, "Hidup Arduino!"
Kaelin Colclasure
2
@KaelinColclasure Komentar Anda membuat saya bingung. Anda menerima masalah dengan perangkat lunak dan OS yang buruk, tetapi Olin tidak mengatasinya sama sekali. Jika Anda dapat mempertimbangkan apa yang Arduino lakukan untuk Anda lapisan abstraksi seperti bagaimana OS adalah lapisan abstraksi. Belajar menggunakan arduino tidak banyak membantu Anda menjadi insinyur yang lebih baik karena biaya overhead akan menghasilkan biaya tambahan yang tidak diperlukan. Dengan itu, saya pikir Arduino adalah platform yang hebat, tetapi tidak boleh dianggap sebagai pengganti untuk benar-benar memahami dunia elektronik tertanam.
Kellenjb
Analogi mobil Yay! Olin, bagi banyak orang ini bukan tentang berjalan dengan susah payah dan mempelajari seluk beluk elektronik dan muncul untuk menjadi seorang insinyur. Banyak orang hanya ingin memilih alat yang memungkinkan mereka mencapai tujuan mereka dan menyelesaikan masalah mereka. Mempelajari elektronik adalah sarana untuk mencapai tujuan dalam banyak kasus, dan bukan tujuan itu sendiri. Tidak semua orang ada dalam game ini karena alasan yang sama dengan Anda.
nemik
2
Ya? Lalu apa yang bicara tentang "merangkul tolol batinmu"? Ayo. Apakah Anda merangkul tolol batin Anda menjalankan Windows atau Linux atau OS X daripada menulis OS Anda sendiri seperti Real Man ™? Itu adalah sistem operasi berlapis gula yang dibuat bodoh untuk massa.
nemik
1
@ nemik: Merangkul tolol batin Anda adalah semacam lelucon, seperti berjalan dengan susah payah di jalan gelap yang panjang ... Tentu saja ada juga beberapa kebenaran di kedua hal itu.
Olin Lathrop
4

Sebagai seorang programmer, saya lebih suka pemrograman dalam bahasa yang digunakan oleh banyak orang, dengan cara itu ada banyak buku, artikel, teman sebaya dll yang tersedia untuk membantu saya belajar.

Di dunia komputer papan tunggal, Arduino adalah yang paling populer dengan dukungan penuh. Ini adalah pilihan yang sangat baik untuk komputer mikro pertama Anda.

Mengingat betapa murahnya barang-barang ini (kebanyakan kurang dari $ 50), Anda mungkin ingin mempertimbangkan untuk mendapatkan lebih dari satu jenis.

Untuk seseorang yang terbiasa dengan Microsoft Visual Studio dan C #, Netduino adalah pilihan yang sangat baik karena memiliki toolchain yang sudah Anda ketahui.

Jika lingkungan pilihan Anda adalah Unix, Anda mungkin menyukai papan seperti Raspberry Pi yang akan keluar pada Januari 2012:

Apa itu Raspberry Pi? Raspberry Pi adalah komputer berukuran kartu kredit yang dihubungkan ke TV dan keyboard Anda. Ini adalah PC kecil yang mampu yang dapat digunakan untuk banyak hal yang dilakukan PC desktop Anda, seperti spreadsheet, pengolah kata, dan game. Itu juga memutar video definisi tinggi. Kami ingin melihatnya digunakan oleh anak-anak di seluruh dunia untuk belajar pemrograman.

Kapan perangkat akan tersedia untuk dibeli? Kami berharap Raspberry Pi tersedia untuk dipesan pada akhir 2011. Kami masih berharap akan melelang beberapa papan beta pertama kami sebelum akhir tahun (mengawasi situs setelah Natal); kami akan pindah ke produksi utama pada bulan Januari.

Berapa biayanya? Model A akan dikenakan biaya $ 25 dan Model B $ 35.

Berita yang sangat bagus adalah ada banyak pengendali mikro berbiaya rendah yang tersedia dengan lebih banyak keluar sepanjang waktu.

Akhirnya ada Texas Instruments MSP-430 Launchpad yang tersedia untuk $ 4,30 dengan pengiriman gratis. Dengan harga yang murah, bagaimana mungkin Anda tidak membelinya?

JonnyBoats
sumber
4

Mulailah dengan Arduino untuk menyempurnakan ide Anda dan membuat prototipe yang berfungsi minimal dan hanya belajar untuk berinteraksi dengan dasar-dasar yang Anda perlukan untuk produk Anda (motor, sensor, serial untuk komunikasi).

Nantinya jika Anda menginginkan lebih banyak fungsionalitas (perangkat USB, Ethernet) pindah ke chip ARM Cortex M-series. ARM 32-bit berarti mereka sangat kuat dan sekarang sering lebih murah dan dengan lebih banyak periferal daripada chip 8 atau 16 bit kelas atas seperti AVR dan PIC. NXP's mbed (http://mbed.org) adalah pengantar yang sangat lembut untuk platform itu jika Anda berasal dari Arduino.

nemik
sumber
2

Ketika orang mengatakan Arduino "sederhana untuk memprogram" apa yang sebenarnya mereka maksud adalah bahwa toolchain pada dasarnya hanya berfungsi. Ini bekerja di Mac, bekerja di Windows, dan bekerja di Linux. Anda pasang di papan Anda, Anda menulis kode Anda, Anda mengunggahnya dan itu pergi.

Untuk menawarkan sedikit kontras anekdotal, saya sendiri hanya "meningkatkan" ke Atmel's STK600 dan lingkungan pengembangan AVR Studio 5 mereka. Ini hanya berfungsi pada Windows, jadi saya harus menginstal dan menjalankan VMware di Mac saya. Kemudian saya harus menginstal driver USB Jengo yang rewel, yang membutuhkan waktu sehari untuk membaca posting forum yang cerewet. Kemudian saya harus mencari tahu mengapa saya bisa berbicara dengan papan dev dari IDE, tetapi tidak dengan kartu anak ATmega2560 yang datang dengan STK600 ... (Kabel JTAG salah terpasang, karena saya mengikuti tutorial bergambar di Web yang ternyata memiliki gambar yang menunjukkan kabel terhubung ke belakang.)

Sejauh ini saya belum menulis sebaris kode dengan AVR Studio 5, tetapi saya mungkin menghabiskan lebih banyak waktu untuk mengotak-atiknya daripada saya memiliki total waktu menggunakan Arduino IDE. Dan saya sudah menulis lusinan sketsa Arduino.

Bahasa yang Anda gunakan untuk pemrograman pada dasarnya adalah C ++ dengan sedikit preprocessing. Dengan latar belakang Anda, Anda tidak akan kesulitan mencari tahu bagaimana mentransplantasikan sketsa yang Anda inginkan ke lingkungan "pro" nanti jika diperlukan. Bagi saya, kebutuhan muncul hanya sekali saya melampaui mengutak-atik perangkat Arduino dan mulai merancang papan saya sendiri. YMMV, tentu saja ...

Semoga ini membantu. :-)

Kaelin Colclasure
sumber
3
Bukan untuk memilihmu ... tapi aku tidak setuju denganmu lagi. Alasan orang mengatakan bahwa Arduino mudah diprogram adalah karena mereka pada dasarnya menambahkan lapisan abstraksi yang tidak akan Anda dapatkan sebaliknya. Anda juga memunculkan C ++, ini sangat jarang terlihat di dunia tertanam. Terkadang diperlukan untuk proyek tertentu, tetapi juga menambahkan beberapa overhead yang tidak bisa Anda miliki ketika Anda mencoba untuk memotong setiap sen.
Kellenjb
@Kellenjb, saya dapat kode C ++ dengan hampir tanpa overhead, kadang-kadang bagian dapat memiliki sebanyak 10%, tetapi banyak bagian dengan 0 overhead. Tapi ya, ini jarang terjadi karena Anda harus lebih memperhatikan apa yang Anda lakukan dengan bahasa Anda, tetapi tunggu, hal yang sama juga berlaku pada C. Saya telah melihat pengguna mencoba malloc () di c sebelumnya sebelum disematkan ke hasil yang tidak bagus.
Kortuk
1

Arduino membuat platform loncatan yang fleksibel yang menyediakan A / D, D / A (setidaknya seperti PWM) banyak I / O digital, LED yang dapat diprogram di papan tulis, serial-ke-USB, dan modul siap pakai tersedia untuk banyak jenis perangkat keras lainnya. Jika Anda ingin memutar sendiri untuk pengalaman belajar, maka Anda tidak membutuhkannya. Jika Anda menginginkan platform untuk menjalankan dan menjalankan sesuatu hanya untuk bersenang-senang atau saat Anda merancang versi perangkat keras murah untuk sesuatu itu, maka platform siap untuk digunakan saat Anda berada. Ini adalah keputusan desain, strategis, dan ekonomi yang benar-benar valid untuk dibuat dengan cara apa pun yang sesuai dengan tujuan Anda. Tidak ada yang "bodoh" tentang melakukan pengorbanan - itulah yang dilakukan insinyur - dan seharusnya dilakukan - setiap hari.

JRobert
sumber
1

Pengalaman John hampir sama persis dengan pengalaman saya 15 tahun yang lalu ketika saya pensiun dari mengajar ilmu komputer (pada dasarnya Assembly Language Programming, dan C) untuk mahasiswa sarjana. Saya kemudian menyadari bahwa untuk mengikuti kemajuan dalam komputasi akan sangat mahal, jadi istri saya menyarankan kembali ke Elektronika sebagai hobi, karena saya menikmati menjadi Insinyur Listrik pada 1950-an. Ini saya lakukan, walaupun saya hanya sebentar bertemu dengan transistor, dan tidak pernah melihat op-amp, jadi saya punya banyak pembelajaran yang menyenangkan untuk dilakukan. Saya mempertahankan kecintaan saya pada Bahasa Majelis, dan ketika Microchip Pics muncul di pertengahan tahun 90-an, saya terpikat pada mereka.

Saya tidak dapat membandingkannya dengan Arduino, yang tidak saya ketahui, tetapi keuntungan menggunakan Pics adalah murah untuk diatur, karena Microchip memasok semua informasi gratis, dengan IDE yang brilian, dan Anda dapat belajar menggunakannya , seperti yang saya lakukan, dari apa yang mereka terbitkan. Anda dapat memulainya dengan Programmer buatan sendiri, banyak desain di Internet, jadi hanya perlu beberapa pound untuk beberapa keping Pic untuk memulai. Tetapi saya akan merekomendasikan PicKit 2 yang memiliki banyak fitur bawaan untuk memudahkan pengembangan program. Mungkin bukan PicKit 3, lihat:

http://www.eevblog.com/2009/10/21/eevblog-39-pickit-3-programmerdebugger-review/ Meskipun ini telah diperbarui, lihat catatan tentang referensi ini.

Ada banyak buku tentang Foto, tetapi ada juga yang sampah, waspadalah. Untuk awal yang mudah, pengantar Pic yang luar biasa adalah:

"Merancang Sistem Tertanam dengan Mikrokontroler PIC: Prinsip dan Aplikasi" [Paperback] oleh Tim Wilmshurst, £ 22-66 di Amazon, yang mencakup Assembler dan C. Saya menghindari C untuk sementara waktu karena sepertinya menghilangkan keintiman dengan perangkat keras yang diberikan Assembler, tetapi dengan kompiler C Microchip yang disediakan, Anda dapat melihat kode Assembler yang dihasilkan juga.

Untuk cakupan keseluruhan, bagus, teknis (tidak takut untuk memasukkan Matematika) elektronik modern saya sarankan: "Elektronik Praktis untuk Penemu" 2 / E [Paperback] oleh Paul Scherz, £ 19-95 di Amazon.

Saya membayar masing-masing £ 26-99 dan £ 22-99 untuk buku-buku ini di toko, dan sama sekali tidak menyesalinya.

Saya tidak dapat membahas cukup di sini, saya akan senang berkorespondensi melalui email tentang hal ini: [email protected] (dan, untuk berjaga-jaga, saya sangat waspada dengan apa yang saya baca atau unduh atau jawab.)

Harry Weston
sumber