Pertanyaan ini menanyakan, antara lain, apakah ada kurva belajar yang besar antara menggunakan Python pada Raspberry Pi untuk membuat prototipe titik akhir, dan menggunakan mikrokontroler.
Jelas ada peningkatan besar dalam konsumsi daya (dengan biaya pengurangan throughput prosesor) sehingga ada alasan yang baik untuk mengambil pendekatan MCU untuk suatu produk yang perlu bertenaga baterai.
Salah satu alasan potensial untuk tetap menggunakan komputer papan tunggal yang menjalankan Linux adalah bahwa tidak ada perangkat lunak baru untuk dipelajari (di atas python atau sejenisnya) dengan asumsi aplikasi dapat ditulis dalam bahasa tingkat tinggi (di mana harus ada banyak standar perpustakaan).
Pada platform pengembangan tertanam, pilihan yang mungkin adalah C ++ (mbed atau arduino), atau micropython. Kesan saya adalah bahwa ini tidak berbeda secara signifikan atau lebih kompleks daripada menulis kode untuk dijalankan di Linux - walaupun platform memang memiliki keunggulan individual. Pernahkah saya melewatkan sesuatu yang relevan dengan pengembang perangkat lunak?
Secara khusus, saya bertanya tentang titik akhir IoT - jadi tidak penting untuk memiliki sumber daya penuh sistem Linux untuk aplikasi yang saya minati di sini. Perlu juga ditekankan bahwa pertimbangan daya dan latensi menjadikan implementasi MCK persyaratan sulit dalam jenis aplikasi ini.
sumber
Itu tergantung pada apa yang Anda coba lakukan.
Kesenjangan terbesar adalah bahwa mikrokontroler yang Anda sebutkan (seperti Arduino) tidak menjalankan sistem operasi multitasking seperti Linux. Ini berarti jika aplikasi Anda bergantung pada multitasking atau multithreading, ini mungkin jauh lebih sulit atau bahkan tidak mungkin dijalankan di Arduino.
Kesenjangan kedua adalah dukungan perangkat keras. Misalnya, Raspberry Pi mendukung kamera, audio USB, ethernet, WiFi di luar kotak. Tidak ada yang didukung secara langsung oleh Arduino, dan walaupun Anda dapat menggunakan berbagai perisai (seperti USB Host, Ethernet atau WiFi), menggunakannya tidak semudah menggunakan jaringan di Raspberry Pi.
Kesenjangan ketiga adalah sumber daya yang tersedia. Sebagian besar mikrokontroler tidak mendekati sumber daya yang ditawarkan Raspberry Pi. Sebagai contoh, bahkan Raspberry Pi pertama menawarkan CPU yang berjalan pada 700MHz dengan 256Mb RAM dan dapat digunakan dengan penyimpanan 32Gb. Arduino Uno yang khas berdasarkan ATMEGA328 berjalan pada 16MHz, dan memiliki penyimpanan 32Kb dan RAM 2Kb.
Jadi menggunakan Raspberry Pi jelas jauh lebih mudah bagi pengembang yang datang dari PC. Keuntungan utama menggunakan mikrokontroler adalah:
Jika tidak ada yang penting, menggunakan Raspberry Pi jelas lebih masuk akal.
sumber
YA, ini adalah lompatan besar dari pemrograman dengan Python ke pemrograman menggunakan alat bahasa berbasis C pada mikrokontroler. Bahkan, dalam banyak kasus Anda mungkin perlu menulis beberapa, jika tidak semua, aplikasi Anda dalam bahasa assembly.
Seperti yang sudah ditunjukkan dalam jawaban lain, mikro-controller sangat terbatas sumber daya dan dengan demikian Anda kehilangan semua kenyamanan sistem operasi Linux dan semua alat yang dapat Anda jalankan secara lokal. Iterasi dengan Arduino IDE sangat lambat dibandingkan dengan menjalankan skrip lokal.
Walaupun saya memiliki banyak pengalaman profesional dengan mikrokontroler dan mikroprosesor, saya lebih suka menjalankan proyek pribadi saya menggunakan perangkat keras RPi dengan beberapa Arduino untuk hal-hal kritis real-time. Saya juga mencoba-coba Beagle Bone Black dan dalam beberapa hal lebih nyaman daripada menggunakan RPi dengan satu atau lebih Arduino.
sumber
Ya, perbedaan besar
Perbedaannya seperti siang dan malam, baik dalam hal perangkat keras dan perangkat lunak. Tidak ada perbandingan yang valid sama sekali.
Kapan harus menggunakan yang mana
Gunakan Arduino, jika ...
Dalam semua kasus lain, Pi jauh lebih ramah pengguna. Pi hanyalah komputer (lambat) lainnya.
Jangan salah sangka. Saya memiliki Pi dan menggunakannya untuk beberapa layanan Linux di jaringan saya. Saya juga sering memprogram Arduinos (kebanyakan Pro Micros). Keduanya hebat, saya suka mereka sama, tetapi mereka memiliki skenario penggunaan yang sangat berbeda.
Pada pertanyaan Anda tentang kesulitan - itu relatif. Satu-satunya saat Arduino menjadi sulit bagi saya adalah sulit untuk men-debug masalah waktu, terutama jika dikombinasikan dengan elektronik yang dipertanyakan (yaitu, gangguan EM, kabel terlalu panjang dll). Jika Anda tegas dalam bahasa pilihan Anda (yaitu, C untuk Arduino IDE), maka Anda harus dapat meretas perpustakaan apa pun yang Anda gunakan. Namun, itu akan selalu lebih kompleks daripada Pi, di mana Anda dapat misalnya menggunakan bahasa scripting pilihan Anda untuk hal-hal non-waktu-kritis - yang akan selalu lebih mudah untuk dikembangkan dan di-debug.
sumber
Saya percaya ada beberapa poin yang belum ditentukan secara eksplisit.
Lingkungan pengembangan benar-benar berbeda. Anda benar-benar dapat mengembangkan perangkat lunak Pi PADA Pi — Anda bahkan dapat menggunakan GUI jika mau. Ada alat debugging canggih yang sudah ada di dalamnya — juga banyak sekali apa yang tersedia untuk sistem komputer mana pun.
Kontroler harus dikembangkan / ditiru pada komputer yang terpisah kemudian dikirim ke controller untuk pengujian akhir.
Pi dapat menjalankan hampir semua bahasa yang Anda inginkan untuk memprogramnya, pengontrol mikro biasanya memiliki satu atau dua.
Pi dapat menjalankan beberapa sistem operasi (termasuk windows IoT dan banyak sistem khusus), pengendali tertanam cenderung tidak menjalankan "Sistem Operasi" sama sekali.
Sejauh runtime / OS berjalan — Pi membutuhkan waktu beberapa detik untuk boot — jika Anda ingin benar-benar melakukan sesuatu dalam beberapa detik pertama maka pi tidak akan bekerja untuk Anda. Juga, kecuali Anda pergi ke beberapa langkah ekstrem untuk mencegah penulisan ke penyimpanan apa pun, Anda benar-benar tidak boleh hanya menghilangkan daya, Anda harus menjalankan "Shutdown" dan menunggu sedikit. Ini juga dapat membatasi beberapa penggunaan.
Poin pasca penempatan lain yang belum saya lihat disebutkan. Saya tidak yakin bagaimana saya akan benar-benar yakin bahwa saya telah mendapatkan Pi dengan benar — bahwa tidak ada agensi yang menempelkan sedikit kode di suatu tempat yang memungkinkan akses tidak sah dalam keadaan tertentu — tanpa menghapusnya dari semua jaringan dan menonaktifkan semua mekanisme akses nirkabel . Pengontrol mikro cukup mudah untuk diamankan karena Anda menulis hampir semua kode yang berjalan pada benda itu.
Tentu saja, Anda selalu dapat mengembangkan gambar Pi Anda sendiri tanpa OS nyata dan mengambil alih seluruh papan / CPU yang akan membuatnya menjadi pengontrol mikro yang sangat kuat / mahal dengan semua kelebihan / kekurangan terkait. Seseorang mungkin sudah melakukan ini, tetapi saya belum mencari hal seperti itu belakangan ini.
sumber
Perbedaan antara mengembangkan aplikasi dengan Pi dapat sangat berbeda atau agak mirip dengan mengembangkan aplikasi dengan mikrokontroler karena perbedaan perangkat keras serta perbedaan pengembangan perangkat rantai alat.
Ada berbagai macam mikrokontroler yang tersedia di mana saja dari prosesor 8 bit hingga 64 bit dan memiliki mulai dari beberapa K RAM hingga beberapa gigabytes RAM. Mikrokontroler yang lebih mampu memberikan pengalaman seperti Pi. Mikrokontroler yang kurang mampu tidak.
Dan bahkan dengan Pi ada perbedaan besar antara pengembangan untuk sistem operasi Windows 10 IoT versus pengembangan untuk Raspian, Mate, atau OS berbasis Linux lainnya. Windows 10 IoT memerlukan PC pengembangan menggunakan Visual Studio toolchain dengan debugger jarak jauh yang menargetkan lingkungan Universal Windows Program (UWP). Pengembangan untuk Raspian atau Mate sebenarnya dapat dilakukan pada Pi dengan alat yang tersedia di Pi.
The Dibatasi Application Protocol digunakan untuk, perangkat dibatasi kecil yang digunakan dengan Internet lingkungan Hal. Untuk mendapatkan gambaran tentang beragam perangkat keras dan perangkat lunak mikrokontroler, halaman tentang implementasi protokol CoAP ini memberikan gambaran tentang lingkungan yang ditargetkan. Disebutkan sistem operasi Contiki yang samar-samar saya dengar bersamaan dengan OS yang lebih dikenal seperti iOS, OSX, dan Android. Bahasa pemrograman yang disebutkan adalah Java, JavaScript, C, C #, Ruby, Go, Erlang, Rust, dan Python.
Rantai alat yang digunakan untuk pengembangan dengan mikrokontroler bervariasi tergantung pada pabrikan serta jenis sumber daya apa yang tersedia dari komunitas pengembangan dan inisiatif sumber terbuka. Dalam beberapa kasus Anda mendapatkan assembler silang, dalam kasus lain Anda mendapatkan compiler C cross, dan dalam kasus lain Anda mendapatkan rantai alat yang bagus dengan semua bel dan peluit dan emulator dan sejenisnya dengan Visual Studio toolchain untuk Windows 10 IoT.
Lingkungan pengembangan aktual untuk mikrokontroler dapat melibatkan penggunaan programmer EEPROM dan perangkat lunak untuk membuat gambar baru dan mendorongnya ke perangkat atau perangkat mungkin memiliki konektivitas yang diperlukan untuk memungkinkan gambar baru untuk diunduh melalui koneksi serial atau lebih koneksi jaringan.
Kesan saya adalah bahwa sebagian besar mikrokontroler memiliki kompiler lintas C meskipun kompiler hanya dapat mendukung standar yang lebih lama seperti K&R atau mungkin C98. Kompiler silang C sering kali memiliki kata kunci non-standar untuk fitur spesifik mikroprosesor misalnya
far
dannear
kata kunci untuk pointer dengan prosesor 8080 dan 8086 lama dengan memori tersegmentasi.Ada juga bahasa khusus yang menargetkan mikrokontroler seperti bahasa pemrograman FORTH . Bahasa-bahasa ini sering memiliki desain run time yang menargetkan bare metal sehingga tidak ada sistem operasi selain bahasa run time.
Sistem operasi dapat berkisar dari yang praktis tidak ada hingga Linux yang telanjang hingga OS khusus seperti freeRTOS atau Windows Embedded atau Linux yang penuh sesak atau Microsoft Windows. Lihat proyek SourceForge ini MINIBIAN untuk Raspberry Pi . Lihat juga eBuku ini, Baking Pi: Pengembangan Sistem Operasi yang menjelaskan pengembangan OS yang belum sempurna untuk Raspberry Pi dalam assembler.
Artikel dari Majalah Visual Studio ini, Memprogram Internet of Things with Visual Studio , memberikan tinjauan tentang berbagai perangkat yang tersedia diikuti dengan tinjauan umum menggunakan Visual Studio IDE untuk pengembangan untuk Linux dan juga Windows.
...
Contoh spesifik aplikasi Mikrokontroler
Ini adalah gambar papan mikrokontroler dari pembuat kopi otomatis. Ini tampaknya menjadi komponen standar untuk pembuat kopi otomatis yang diproduksi di Cina. Situs web untuk pabrikan dicetak pada PCB.
Gambar terdiri dari dua tampilan. Tampilan di sebelah kiri adalah bagian belakang papan yang berisi mikrokontroler dan sirkuit pendukung. Tampilan di sebelah kanan adalah bagian depan papan dengan layar LCD dan satu set tombol yang digunakan untuk mengatur waktu saat ini dan untuk melakukan tindakan seperti pemrograman waktu mulai, dll.
Tampilan di sebelah kanan cocok dengan pembawa yang kemudian pas ke lubang di depan pembuat kopi. Sakelar pada PCB bawah digerakkan dengan sakelar rocker arm. LCD, yang tampaknya menjadi tujuan khusus, digunakan untuk menampilkan waktu dan status saat ini serta untuk menampilkan antarmuka pengguna saat mengubah pengaturan pembuat kopi. LED merah digunakan untuk menunjukkan kapan pembuat kopi benar-benar membuat kopi dan untuk menunjukkan kapan dilakukan dengan mematikan kembali iluminasi.
Mikrokontroler adalah ELAN Microelectronics Corp EM78P447NAM (lembar data) yang merupakan mikrokontroler 8 bit. Beberapa statistik dasar menunjukkan betapa kecil dan minimalnya perangkat ini, namun berfungsi baik untuk tujuan yang dimaksudkan. Tujuannya adalah untuk mengembangkan perangkat lunak yang kemudian diunduh ke ROM sekali tulis sebagai bagian dari manufaktur.
sumber