Saya sudah bermain-main dengan Arduino untuk sementara waktu sekarang, dan saya sedang dalam proses pindah dari pemula ke perantara. Saya ingin beberapa pendapat tentang .NET Micro Framework , dalam hal kinerja dan ketersediaan perangkat keras.
Saya seorang programmer. NET, tetapi saya telah menemukan Memproses untuk Arduino menjadi nol gesekan ... Ini sangat dekat dengan C # bahwa apa pun yang ingin saya lakukan bahkan tidak memerlukan perjalanan ke dokumentasi.
Bagaimanapun, mana yang lebih baik?
arduino
.net-micro-framework
Chris B. Behrens
sumber
sumber
Jawaban:
Jika Anda ingin beralih dari pemula ke menengah, bahasa yang perlu Anda pelajari adalah C. Bahkan jika Anda mengesampingkan seluruh perdebatan penguncian Windows, Anda harus pandai pemrograman di C sebelum Anda dapat melakukan pekerjaan yang berkualitas pada sebuah mikrokontroler dalam bahasa tingkat yang lebih tinggi seperti .NET Micro atau C ++.
Sistem tertanam terdiri dari piramida pengetahuan, dan Anda benar-benar perlu tahu setidaknya beberapa dari setiap langkah untuk menjadi desainer yang baik:
^ Kode pengguna
^^ Sistem operasi
^^^ Bahasa C
^^^^ Bahasa assembly
^^^ ^^ Arsitektur mikrokontroler
^^^^^^ Desain digital
^^^^^^^ Semikonduktor
^^^^^^^^ Elektronik dasar (hukum Ohm)
Kerangka kerja Arduino menyediakan kait yang mudah bagi para penghobi ke piramida di suatu tempat antara bahasa C dan sistem operasi.
Khusus untuk pertanyaan .NET Micro Framework Anda, Tentang mengatakan:
Juga, brosur membedakannya dari Windows Mobile , Windows Embedded , CE 6.0 , dan .NET Compact Framework, dan membandingkannya dengan Linux, Real-Time, Java, dan sistem operasi khusus. Ini adalah lompatan besar dari kerangka kerja Arduino / Pemrosesan.
Arduino Anda memiliki prosesor 8-bit dengan RAM 1k. Selain kehilangan daya 8-bit vs 32-bit, itu juga berjalan kurang dari setengah secepat sebagian besar prosesor yang terdaftar. Meskipun saya tidak akan mencegah Anda untuk beralih ke prosesor 32-bit, saya akan merekomendasikan itu sebagai langkah menengah ke lanjutan.
Sangat mudah untuk menggunakan banyak waktu dan memori dengan beberapa baris dalam C # atau C ++, yang tidak signifikan pada prosesor dual core yang berjalan pada beberapa gigahertz dengan gigabytes RAM, tetapi yang dapat membuat perbedaan besar pada perangkat tertanam . Sampai Anda mahir dalam bahasa assembly dan / atau C, atau guru di C # atau C ++, saya tidak akan merekomendasikan menggunakannya untuk pemrograman tertanam.
Jadi, saya akan mulai dengan mengunduh WinAVR , dan memprogram rutin kedip LED sederhana di C. Jika C benar-benar membingungkan Anda, lakukan sedikit kode asli ("Hello World") pada PC Anda, dan kemudian pindah ke mikrokontroler, tapi itu seharusnya tidak perlu. Selanjutnya, beralihlah ke komunikasi melalui UART, mulailah menggunakan interupsi, dan ulangi beberapa proyek Arduino Anda di C. Kemudian, cari (atau buat!) Papan pengembangan baru dengan mikrokontroler yang berbeda, mungkin PIC atau ARM , dan beberapa barang seperti layar LCD, Ethernet, kartu SD , atau apa pun yang Anda inginkan, dan cobalah mempelajari sistem baru. Setelah sampai di sana, Anda akan tahu lebih baik ke mana Anda ingin pergi.
Kami akan berada di sini untuk membantu Anda sepanjang jalan!
sumber
Saya tidak punya pengalaman dengan ".NET Micro Framework", tetapi saya sangat curiga terhadap apa pun yang melibatkan menjalankan mesin virtual pada platform tertanam bertenaga rendah. Rasanya seperti sia-sia bagiku. Anda memerlukan lebih banyak prosesor daya, lebih banyak memori, lebih banyak konsumsi daya, untuk mencapai efek yang sama seperti menjalankan platform yang lebih berdedikasi yang mengkompilasi ke kode mesin asli. Mungkin mengapa ponsel Android 528MHz saya yang menjalankan mesin virtual (mirip dengan JVM) sering terasa lebih lambat daripada Palm Treo 312MHz saya yang berumur beberapa tahun sebelumnya yang menjalankan aplikasi yang dikompilasi untuk kode mesin asli.
Dari tampilan cepat, .NET MF membutuhkan prosesor ARM, yang merupakan langkah di atas dalam hal daya & kompleksitas dari chip ATMega 8-bit yang digunakan di Arduino.
Saran saya adalah jika Arduino melakukan apa yang Anda inginkan, tetaplah dengan itu. Jika tidak, Anda dapat melihat chip ATMega atau ATXmega yang lebih kuat, dan di atas itu bekerja dengan ARM langsung di C / C ++, tanpa lapisan terjemahan NET tambahan di atasnya.
sumber
Jika Anda ingin pindah ke perantara Anda harus mencoba platform di luar lingkungan Arduino. Ada banyak dari mereka untuk memilih, Anda dapat tetap pada 8 bit, bahkan dengan Atmel MCU atau pindah ke satu dari vendor lain. Gunakan IDE, tulis bahasa kode C, pahami cara kerja MCU, tulis kode bootloader Anda sendiri atau gunakan programmer di-sirkuit dan terus bergerak.
Tetapi jika Anda benar-benar ingin mencoba menulis dalam C # untuk mikrokontroler, coba ini: http://www.trygtech.com/products/sh7619_evb.php
Menggunakan MCU yang jauh lebih besar, jejak .NET khasnya adalah sekitar 512K memori flash dan 256 ribu RAM.
sumber
Saya baru saja melihat Netduino yang mungkin merupakan kompromi yang menarik untuk Anda. Saya tidak tahu spesifikasi atau rincian sistem tetapi tampaknya menggunakan. NET Micro sehingga terdengar seperti cara yang baik untuk setidaknya mencoba kerangka itu.
sumber
Masalah tunggal terbesar bagi saya dengan Processing / Arduino adalah kurangnya debugger yang layak. Saya memiliki naga AVR, tetapi ini tidak banyak membantu karena (a) debugger AVR Studio lambat dan bermasalah, atau (b) debugging di Eclipse benar-benar lambat dan, meski kurang begitu, masih bermasalah. Saya belum punya kesempatan untuk mencobanya di WinAVR, tapi itu ada di daftar selanjutnya.
Tentu saja tidak ada debugger di Arduino IDE.
Setelah Anda keluar dari aplikasi sederhana dan mulai membuat aplikasi yang harus melakukan hal-hal yang terlibat di tingkat jaringan kabel dan nirkabel, itu cukup membuat frustrasi. Ini terutama mengapa saya serius melihat .NET MF - telah bermain dengan SDK, dan memiliki beberapa perangkat keras yang segera muncul.
sumber
Anda mungkin ingin memeriksa Netduino . Ini dibangun agar kompatibel dengan tata letak arduino dan pin, dan menjalankan .NET Micro Framework. Jadi Anda dapat kode dalam C # dan bahkan men-debug di dalam Visual Studio!
Sejauh ini saya merasa sangat bagus dan mudah digunakan. Meskipun saya belum menemukan banyak tutorial, saya pikir Anda bisa mem-port banyak hal Arduino. Saya seorang pemula, saya dapat dengan mudah port setup photoresistor / photocell dan kode dari tutorial Arduino.
sumber
Anda dapat mempertimbangkan melakukan pengembangan C Arduino-style pada STM32 (ARM M3), melalui salah satu dari beberapa proyek sumber terbuka. LeafLabs dan xduino keduanya memiliki perangkat keras yang berfungsi dan toolchain berbasis Arduino. Saya telah menggunakan papan Leaflabs Maple ketika saya membutuhkan mikrokontroler 32bit, lebih dari chip Atmega biasa
sumber
Anda dapat melihat http://www.hpinfotech.ro/html/cvavr.htm yang merupakan IDE yang mudah digunakan dan bagus untuk Atmel dan menulis beberapa CI telah menggunakan ini secara profesional dan sangat bagus, lebih seperti tingkat kenyamanan Anda dapatkan dari IDE seperti Visual Studio. Saya memiliki Eclipse untuk menjadi agak kikuk untuk pengembangan Android tidak selipis yang dibeli.
Saya memiliki Netduino yang telah menerapkan sistem kontrol Tricopter untuk bersenang-senang, yang sangat real-time dan bekerja dengan andal, ditulis dalam C # dengan Visual Studio 2010. debugging pada perangkat umumnya sangat baik, saya memilikinya secara otomatis menyinkronkan data melalui wifi dan saya punya server HTTP kecil di pesawat.
sumber
Kami menggunakan .NET Micro Framework dalam aplikasi produksi (perangkat pengukuran presisi). Ini bekerja dengan baik.
Mikroprosesor hari ini telah mencapai keadaan ketika Anda dapat menggunakan paradigma 'buat-lihat-profil-ubah-lihat ...'. Jumlah memori cukup besar dan murah sekarang, jadi kemungkinan besar Anda tidak akan menumpuk dengan kondisi kehabisan memori.
Dan sebagai pengembang C #, Anda tahu bahwa profil yang memadai untuk mencapai kondisi yang diinginkan adalah cara yang lebih baik untuk hidup daripada menebak apa lagi dan lebih rumit yang harus Anda lakukan saat membuat kode Anda untuk membuat kode Anda (dan mungkin tidak) sedikit lebih cepat.
sumber