Pemrograman Tertanam untuk Pemula: Arduino atau Raspberry Pi? [Tutup]


32

Saya seorang mahasiswa ilmu komputer dan saya ingin memperluas pengetahuan saya tentang pemrograman tertanam dan teknik listrik.

Saya sudah baca di sini bahwa menggunakan alat seperti mikrokontroler Arduino adalah cara yang baik untuk memulai.

Saya terutama seorang programmer Java dan Python tetapi memiliki beberapa pengalaman dalam C ++. Selanjutnya saya bermain-main dengan ArchLinux.

Sebuah proyek kecil yang ingin saya lakukan adalah mengendalikan beberapa bola lampu melalui Wi-Fi melalui Arduino / Pi saya.

Dari apa yang saya baca baik Pi dan Arduino dimaksudkan untuk siswa tetapi saya tidak tahu yang lebih cocok untuk orang seperti saya yang ingin memahami bagaimana komputer bekerja pada level rendah.

Sebagai seorang pemula saya akan mengalami banyak pertanyaan, jadi komunitas besar dan bermanfaat (yang saya dengar memiliki Pi) adalah nilai tambah yang besar.

Jadi yang mana yang lebih cocok untuk pemula yang belajar sendiri: Arduino atau Raspberry Pi?

Terima kasih sebelumnya.

Edit:

Dari banyak jawaban Anda yang hebat dan juga artikel - artikel berharga ini saya sampai pada yang berikut

Kesimpulan

  1. Saya memilih Arduino sebagai titik masuk ke pemrograman tertanam karena ini adalah sistem yang lebih sederhana daripada Pi dan memungkinkan saya bekerja lebih dekat dengan logam lebih mudah.

  2. Ada nilai dalam melangkah lebih dalam: saya mungkin mempelajari AVR atau mengatur mikrokontroler di lain waktu untuk mempelajari lebih lanjut tentang detail komputasi tingkat rendah.

  3. Kedua perangkat memungkinkan saya untuk memprogram tanpa sistem operasi, itulah yang saya inginkan (pada awalnya).

  4. Saya juga menemukan proyek yang menggunakan satu Pi untuk mengendalikan Arduino. Saya menemukan ini menarik karena kedua perangkat cukup terjangkau dan saya suka menggunakan kekuatan Linux yang dapat berjalan di Pi.

  5. Selain itu, saya menemukan buku ini yang seharusnya membantu saya belajar lebih banyak tentang teknik listrik saat bereksperimen dengan Arduino.

  6. Tampaknya sulit untuk melakukan proyek bola lampu saya dengan Arduino. Tapi itu tidak masalah. Saya yakin saya dapat memikirkan proyek memotivasi lainnya atau mendapatkan inspirasi di sini atau di sini .

Terima kasih atas jawaban Anda.


2
Arduino lebih sederhana. Saya menyarankan itu titik awal yang lebih baik untuk "pemula belajar mandiri". Arduino saat ini memiliki komunitas pembuat add-on yang lebih besar misalnya untuk "tameng" (papan tambahan plug-in). Pi adalah nilai yang lebih baik untuk uang tetapi saya pikir memiliki antarmuka tingkat rendah lebih sedikit (jumlah GPIO, I2C dll) daripada banyak varian Arduino. Saya punya masing-masing, jika Anda kurang tertarik pada hal-hal tingkat rendah saya akan menggunakan Pi.
RedGrittyBrick

Jawaban:


35

Jika Anda benar-benar ingin "memahami cara kerja komputer pada level rendah", maka dapat dikatakan bahwa Arduino maupun Raspberry Pi tidak cocok. Kedua platform ini (perangkat keras dan perangkat lunaknya) dirancang khusus untuk menyembunyikan detail tingkat rendah agar mudah bagi orang yang tidak peduli dengan detail itu untuk mencapai tujuan tingkat tinggi dengan menciptakan aplikasi yang tertanam.

Sebagai gantinya, saya akan merekomendasikan memilih keluarga CPU yang memiliki arsitektur set instruksi yang relatif "bersih", dan belajar bagaimana memprogramnya dalam bahasa assembly. Sebagai contoh, saya melakukan banyak pengkodean awal pada komputer mini PDP-11, yang (sudah) memiliki arsitektur 16-bit yang sangat bersih. Saya diberitahu bahwa keluarga TI MSP430 sangat mirip. Pada keluarga 8-bit modern, dapat dikatakan bahwa AVR sedikit lebih bersih daripada PIC. Atau Anda bisa pergi ke sekolah lama dan melihat M68K atau bahkan Z80.

Jadi, itu benar-benar tergantung pada apa sebenarnya tujuan Anda: Apakah Anda ingin membuat aplikasi yang disematkan, atau apakah Anda ingin mempelajari sendiri prosesornya?

Jika Anda ingin memulai dengan yang pertama dan kemudian beralih ke yang terakhir nanti, mungkin Anda harus mulai dengan Arduino sekarang, dan kemudian bermigrasi ke pemrograman prosesor AVR yang mendasarinya di tingkat yang lebih rendah nanti.

Saya membuat rekomendasi ini sebagian karena sifat sederhana dari aplikasi yang Anda sarankan, dan sebagian karena jalur migrasi. Jauh lebih sulit untuk bermigrasi ke pemrograman tingkat rendah di Pi. Ini didasarkan pada SoC kompleks yang membutuhkan sedikit "infrastruktur" perangkat lunak hanya untuk menjalankannya. Dengan AVR, Anda dapat dengan mudah memprogram sampai ke "bare metal" jika Anda cenderung.


Terima kasih, saya ingin memulai dengan membuat aplikasi yang disematkan dan mungkin kemudian mempelajari prosesor.
Matthias Braun

1
Anda dapat memprogram logam polos Pi tanpa masalah, tidak perlu tahu infrastruktur apa pun. Abaikan saja video, audio dan jaringan, dan Anda memiliki chip ARM cepat dengan banyak RAM, yang dimuat untuk Anda dari kartu SD. Atau, letakkan bootloader pada kartu SD dan unduh aplikasi Anda ke RAM menggunakan port serial.
Wouter van Ooijen

2
Untuk pengembangan burn & crash bare metal, Arduino yang siap untuk menjalankan boot loader dan persyaratan startup yang lebih sederhana akan jauh lebih mudah untuk dijalankan (yaitu, memperlakukannya sebagai papan dev ATMEGA)
Chris Stratton

13

Arduino dapat digunakan dengan Arduino SDE, yang menyediakan beberapa fungsionalitas dengan cara 'tersembunyi', tetapi juga dapat digunakan dengan assembler biasa, C, atau C ++ (dan mungkin dengan banyak bahasa lain, tetapi sepertinya banyak kurang umum). Ada berbagai macam papan add-one yang tersedia yang disebut perisai, biasanya dengan perangkat lunak pendukung yang terintegrasi dengan Arduino SDE. Menggabungkan banyak perisai bisa rumit. Ethernet mungkin, tetapi itu memperluas kemampuan. Tumpukan host USB AFAIK di luar kemampuannya.

Arduino asli berisi chip AVR, tetapi ada alternatif berdasarkan pada chip PICs dan LPC (ARM).

Raspberry Pi dirancang untuk menjadi komputer papan tunggal yang menjalankan Linux yang diperkecil. Karena itu dapat diprogram dalam berbagai bahasa (dari assembler ke Python, dan segala sesuatu di antara, termasuk C dan C ++). Ini bisa menjadi host USB, jadi seharusnya tidak ada masalah untuk menambahkan dongle WiFi USB. Pi PCB memiliki konektor IO di mana beberapa pin tersedia, dan Anda dapat mengakses pin-pin itu dari aplikasi Linux Anda, tetapi rasanya agak canggung.

Meskipun tidak dirancang untuk digunakan sedemikian rupa, tidak ada masalah untuk memprogram logam kosong Raspberry Pi (= tanpa OS apa pun). Sekarang Anda memiliki akses langsung dan cepat ke pin IO, tetapi Anda kehilangan kemampuan untuk menjalankan driver Liunux, sehingga menambahkan WiFi akan sulit. AFAIK belum ada banyak ekstensi perangkat keras (dengan perpustakaan perangkat lunak yang menyertainya) untuk RaPi seperti halnya untuk Arduino, tetapi firasat saya adalah bahwa ini mungkin berubah.

Semua dalam semua saya katakan Anda tidak bisa salah dengan baik, tetapi jika Anda benar-benar ingin WiFi saya akan merekomendasikan RaPi dengan Linux.


1
Satu hal buruk dari Raspberry Pi adalah kurangnya dokumentasi resmi. Ini sebagian besar rahasia Broadcom hal-hal eksklusif yang tidak bisa disentuh oleh manusia biasa. Jika kecepatan ARM diperlukan, ada platform lain yang memiliki dokumentasi yang lebih baik untuk pekerjaan logam kosong yang murah dan lebih mudah diperoleh dibandingkan dengan Raspberry Pi. Di sisi lain, Raspberry Pi jauh lebih dekat ke "komputer nyata" daripada berbagai kit ARM murah dari Texas Instruments, STmicro atau Freescale.
AndrejaKo

3
AFAIK kurangnya dokumentasi ada di video dan mungkin bagian audio (tapi saya membaca bahwa driver untuk bagian-bagian itu sekarang bersumber terbuka - jadi setidaknya ada beberapa bentuk dokumentasi jika Anda ingin menggunakan bagian-bagian itu.) Jika Anda hanya berpura-pura bagian-bagian itu tidak ada di sana Anda dibiarkan dengan banyak bang (RAM dan daya CPU) untuk uang Anda. Siapa yang peduli bahwa ada hal-hal tambahan yang tidak ingin Anda gunakan dalam aplikasi mikrokontroler yang khas? Saya tidak perlu mesin grafis full-blown. Dan jika saya membutuhkan antarmuka tingkat-pixel itu ada di sana.
Wouter van Ooijen

Ini bukan hanya audio dan video, dokumentasi GPIO pi ini sangat jarang dibandingkan dengan perangkat embedded biasa.
Chris Stratton

1
Saya tidak kesulitan menggunakan GPIO menggunakan dokumentasi yang tersedia. Apakah Anda menemukan masalah?
Wouter van Ooijen

4

Menurut pendapat saya turun ke ini: apakah Anda ingin memprogram dalam OS atau pada perangkat keras itu sendiri (semacam membuat OS Anda sendiri)?

Dengan RaspberryPi, Anda cukup banyak menggunakan Debian Linux. Itu bagus dan Linux sangat berguna. Jika Anda mempelajarinya, Anda bisa tumbuh ke PC lain, server, dll. Anda mungkin akan pemrograman dalam Python lagi jika Anda terbiasa dengan itu karena itu bagus dan mudah dilakukan di Pi.

Jika di sisi lain Anda ingin melihat bagaimana rasanya memprogram sesuatu yang sangat kecil, murah dan berdaya rendah, coba Arduino. Semua kode Anda berjalan pada chip kecil di sana, Anda bahkan dapat menghapusnya dari papan (jika itu adalah DIP) dan meletakkannya di papan tempat memotong roti dan lihat sendiri betapa sedikit perangkat keras yang Anda butuhkan untuk membuat komputer kecil dasar berfungsi. Setidaknya itu sangat luar biasa bagi saya. Semua yang Anda tulis akan berjalan pada chip itu sendiri sehingga seluruh "OS" akan menjadi run-loop kecil Anda. Bahasa Arduino IDE / bahasa bagus untuk memulai tetapi kemudian turun ke C / C ++ akan sangat berguna untuk diketahui. Jika Anda benar-benar masuk ke dalamnya pada saat itu, Anda dapat menggunakan keterampilan C Anda dengan mudah pada mikro lain seperti chip ARM Cortex M atau TI MSP430 untuk daya yang sangat rendah.

Saya menyarankan Anda untuk pergi ke Arduino jika Anda lebih peduli untuk mempelajari bahasa EE dan bahasa yang disematkan, terutama karena betapa mudahnya membuat sirkuit sendiri untuk bagian EE. Anda tidak dapat dengan mudah melepas chip Raspberry Pi ke papan Anda sendiri atau mengacaukan banyak perangkat keras; juga cukup banyak sistem Linux. Putar saja VM pada saat itu dan pelajari Linux di sana.


3

Apa yang tepat sangat tergantung pada rincian tugas.

Jika Anda membutuhkan wifi, Anda mungkin akan menemukan Raspberry Pi menjadi solusi yang lebih hemat biaya, karena Anda dapat menggunakan dongle wifi murah.

Namun, pi memiliki beberapa kompleksitas - di sisi perangkat lunak, meskipun Anda memiliki pengalaman dengan konfigurasi linux, dan juga dalam keterbatasan catu daya - beberapa dongle wifi akan bekerja secara langsung, untuk yang lain Anda akan memerlukan hub bertenaga atau untuk mem-bypass solder sekitar polyfus.

Di jalur Arduino, kecuali Anda mendapatkan adapter wifi yang mengimplementasikan tumpukan jaringan penuh dan mensimulasikan saluran serial, Anda akan berakhir menggunakan sebagian besar memori yang tersedia untuk implementasi jaringan; orang-orang melakukannya, tetapi itu bisa sangat pas.

Sebagai pendapat, tidak ada platform yang benar-benar ideal untuk tugas ini - pi berubah menjadi sedikit lebih dari mainan dengan keterbatasan daya, menggantung kartu SD mount, dan menahan dokumentasi daripada yang ideal sebagai blok bangunan tertanam, dan Arduino memiliki sedikit sumber daya onboard untuk harganya. Yang mengatakan, tidak ada banyak alternatif populer yang unggul, meskipun ada sejarah panjang peretasan I / O digital ke router wifi berbasis linux, dan beberapa dari mereka yang murah kompetitif / kompak sekarang.


3

Saya akan merekomendasikan prosesor mbed. Ini memiliki keseimbangan yang bagus dari abstraksi level tinggi (untuk membantu Anda memulai) di C ++ dan kemudian Anda bisa drop down ke C dan mulai bekerja dengan pada level yang lebih rendah.

Setelah Anda mencapai kecepatan dan nyaman dengan gangguan, timing dan informasi membaca (baik analog maupun digital) kemudian pindah ke PIC sederhana. Saya suka 16F886, ini akan memberi Anda ide yang jauh lebih baik tentang apa yang sebenarnya terjadi di tingkat register. Gunakan kompiler Hi-Tech C sebagai titik awal, tidak perlu pergi ke perakitan kecuali Anda benar-benar menginginkannya.

Dengan PIC Anda dapat mulai mengkhawatirkan konsumsi daya, ukuran program, memori, penundaan waktu.

Dari sana Anda dapat kembali ke prosesor yang lebih besar seperti mbed atau Arduino mengetahui bahwa Anda memiliki ide yang lebih baik tentang apa yang terjadi di dalam.


2

Saya mulai dengan Arduino dan ketika saya mengerti cara kerjanya, saya pindah ke Pic dan bisa dibilang berhasil. Saya membuat beberapa proyek mencolok dengan Arduino, dan itu mudah karena di web Anda memiliki banyak contoh kode. Pi raspberry masih terus tumbuh dan tidak banyak yang membantu seperti Arduino. Jadi menurut saya, saya sarankan Anda untuk mulai dengan Arduino dan ketika Anda mendapatkan beberapa level, pindah ke mikrokontroler.


2
Saya tidak menonton waktu diposting, itu hanya muncul kepada saya di topik yang disarankan dan saya hanya ingin membantu.
Manuel Joaquín
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.