Saya berencana untuk mengukur ketinggian air di sebuah sumur, yaitu sekitar 10 m dengan level air maksimum hingga 5 m. Rencana saya adalah menggunakan sensor ultrasonik HC SR04 untuk mengukur kedalaman, mengirimkannya melalui ZigBee ke Raspberry Pi di dalam rumah saya.
Seperti yang dibahas dalam pertanyaan saya sebelumnya, saya perlu memilih pengontrol mikro untuk menghubungkan sensor ultrasound dan modul ZigBee.
Parameter untuk pemilihan adalah:
Daya rendah: Saya berencana menjalankan ini dengan baterai, jadi penggunaan daya rendah adalah prioritas. Sampai sekarang saya tidak memiliki target untuk penggunaan daya atau berhari-hari antara perubahan baterai atau bahkan baterai yang digunakan. Karena ini lebih merupakan proyek pembelajaran dan ada di rumah saya, saya fleksibel, tetapi penggunaan daya yang lebih rendah lebih baik.
Biaya rendah: Ini adalah proyek pembelajaran bagi saya, dan saya tidak ingin menghabiskan banyak uang untuk hal ini, jadi biaya yang lebih rendah lebih baik.
Bekerja di dalam sumur: Seluruh proyek akan bekerja dari dalam sumur dan akan terkena sinar matahari dan hujan lebat. Saya akan memberikan kasus dan perlindungan yang baik.
Mudah diprogram.
Saya memilih ZigBee karena sederhana, memenuhi penggunaan saya dan daya rendah. Tetapi persyaratan saya adalah untuk mengangkut data sensor dan saya terbuka untuk transportasi lain. Jarak dari sumur saya ke Raspberry Pi adalah sekitar 6 meter dengan dinding di antaranya. Saya berencana untuk mengukur kedalaman air setiap 10 menit dan dua kali setiap menit ketika pompa air berjalan (sekitar 20 menit setiap hari).
Jawaban:
Proses umum pemilihan mikrokontroler.
Ringkas kebutuhan Anda terhadap mikrokontroler. Misalnya dalam hal ini:
Anda dapat bergaul dengan pengontrol 8 pin untuk ini, yang mungkin memerlukan penggunaan pin pemrogram untuk keperluan umum juga.
Tentukan persyaratan CPU yang diperlukan dan persyaratan memori . Apakah cukup menggunakan MCU 8-bit atau sebaliknya Anda membutuhkan 32-bit? Berapa kecepatan jam CPU yang dapat diterima puluhan MHz atau 1 MHz sudah cukup? Berapa banyak memori program, RAM dan ROM yang dibutuhkan?
Mengingat aplikasi yang dijelaskan, Anda tidak perlu kinerja komputasi yang tinggi. Mungkin pengontrol 8-bit sudah cukup (meskipun tidak akan jauh lebih murah daripada 32-bit sehingga Anda dapat memutuskan di sini dengan harga mungkin).
Daya rendah . Ketika tidak penting Anda mungkin bisa bergaul dengan hampir semua jenis pengontrol menggunakan mode daya rendah dengan tegangan suplai terendah dan frekuensi jam sistem. Jika lebih penting, Anda dapat mulai mempersempit daftar pencarian Anda dengan memulai dengan core MCU berdaya rendah khusus seperti (core ARM® Cortex®-M0 atau M0 + CPU). Biasanya lembar data berisi tabel untuk sebagian besar mode daya rendah / frekuensi VCC / SysClk , yang lebih baik akan mencantumkan konsumsi masing-masing periferal juga.
Alat pengembang . Saya menganggapnya sebagai aspek yang sangat penting. Alat programmer perangkat keras khusus dapat menghabiskan banyak biaya, jadi biasanya saya tetap menggunakan MCU yang sudah saya miliki untuk programmer. Ketika Anda beralih ke keluarga atau merek lain, ada baiknya berinvestasi ke papan pengembangan yang memiliki programmer on-board yang nantinya dapat digunakan untuk memprogram papan kustom Anda. Secara umum selalu periksa dulu berapa biayanya untuk dapat mengunduh program ke mikrokontroler.
Seperti yang ditunjukkan oleh @Sean dalam komentar, solusi yang mungkin dan hemat biaya adalah mencari modul RF seperti itu yang dilengkapi dengan MCU aplikasi yang dapat diprogram dan dapat diprogram, yang dapat menjalankan firmware Anda saat menangani bagian komunikasi RF juga. Modul semacam itu ada untuk BLE, WiFi dan ZigBee dan mungkin untuk banyak teknologi lainnya.
Selain itu tentang bagaimana MCU akan bertahan di sumur. Semuanya akan muncul di kandang Anda akan menyediakan untuk perangkat. Sebagai contoh, MCU mana yang Anda pilih tidak akan menjadi masalah jika enklosur tidak tahan air 100%.
TL; DR; Di sinilah bagian spesifik produk.
Anda dapat memilih ATtiny25 yang harganya $ 0,87 per potong di Farnell. 8-bit, 8-pin jadi tidak akan memakan banyak ruang. Dalam mode Power-down ia mengkonsumsi 0,2 μA dengan watchdog dinonaktifkan, pada 3 V. 2-4 μA jika watchdog diaktifkan. Ini kompatibel dengan Arduino sehingga pemrograman tidak akan dikenakan biaya banyak (programmer USBasp atau AVRdude berharga sekitar $ 2 di eBay). ( Perhatikan bahwa : Anda harus menggunakan perpustakaan Serial Perangkat Lunak Arduino untuk antarmuka modul komunikasi RF, karena MCU ini hanya memiliki SPI oleh perangkat keras.) Semua itu kecil, murah, dengan konsumsi daya yang relatif rendah, tetapi UART bit-banged mungkin memperumitnya . Ini memiliki memori program 2 kB yang seharusnya cukup untuk Anda.
Atau gunakan ARM Cortex M0, yang mengkonsumsi 2 μA dalam mode Siaga dan 5 μA dalam mode Stop. MCU semacam itu misalnya STM32F030F4 yang harganya $ 1,09 / 1 buah . Ini adalah pengontrol 32-bit yang lebih kuat dengan maksimum frekuensi sistem 48 MHz, tetapi seperti yang Anda lihat hanya dengan + 0,2 $. Muncul dengan memori program 16 kB, jauh dari cukup untuk tugas sederhana ini. Ini memiliki SPI, UART, I2C dan banyak perangkat lainnya. Pemrogramannya akan lebih mahal, programmer yang berdedikasi biaya $ 20 di Farnell. Menurut saya, tidak sepadan. Sebagai gantinya, Anda dapat berinvestasi dalam papan pengembangan untuk keluarga F0 yang memiliki programmer on-board (ST-LINK) . STM32F0 Biaya papan makan ~ 10 $. Anda dapat mulai membuat prototipe dengan board ini dan menggunakannya sebagai programmer nanti.
sumber
Melihat kemudahan pemrograman dan biaya rendah, saya mungkin akan mulai dengan semacam modul Arduino (atau klon biaya rendah). Kode untuk sensor ultrasonik Anda sudah ada, seperti halnya kode contoh untuk ZigBee, misalnya menggunakan modul Digi XBee. Pada yang terakhir, Anda menghubungkan XBee ke port serial, dan setelah membuat koneksi dengan antarmuka perintah "AT" yang lama, Anda kemudian memiliki saluran point-to-point yang dapat Anda kirim teks ke bawah (ke Raspberry Pi Anda ). ZigBee bukan jenis komunikasi jarak pendek yang termurah, tetapi modul XBee telah jatuh harga secara riil selama 5 tahun terakhir.
Saya tahu bahwa beberapa orang memiliki masalah dengan bahasa berbasis C / C ++ yang digunakan pada Arduino, tetapi dalam hal ini Anda sebagian besar akan menggabungkan skrip yang sudah ada dari pengguna lain.
Jika Anda mencari Google untuk "mode tidur Arduino", Anda akan menemukan contoh bagaimana Anda dapat mengatur Arduino ke mode daya rendah, dan bangun secara sporadis untuk membaca, berkomunikasi, lalu masuk kembali ke mode tidur.
sumber