Memilih mikrokontroler untuk proyek pengumpulan data yang dioperasikan dengan baterai

18

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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).

Raj
sumber
2
Ini terasa agak luas, atau mungkin di luar topik. Setiap MCU kecil di papan akan sesuai. Jika Anda tidak memutuskan Zigbee, saya sarankan melihat BBC micro: bit, yang memiliki BLE onboard, dan konektor baterai.
Sean Houlihane
2
Jika Anda menginginkan radio zigbee, Anda setidaknya harus mengevaluasi bagian-bagian yang menggabungkannya dengan CPU MCU (biasanya ARM Cortex-M). Bukan berarti Anda harus menempuh rute itu, tetapi jika Anda memutuskan untuk tidak melakukannya karena alasan yang bagus.
Chris Stratton
2
Apa yang Anda maksud dengan "di dalam sumur"? Akankah kasingnya berada di bawah air? Jangan mengharapkan transmisi atau penerimaan dari modul Xbee di bawah air. Banyak yang beroperasi pada pita 2,4 GHz, yang diserap dengan baik oleh air; yang lain beroperasi sekitar 900 MHz, yang mungkin tidak dapat menembus air dengan baik. Jika kasingnya tidak di bawah air, dinding 6m + harusnya bagus dengan xbees.
Jonas Schäfer
"di dalam sumur" berarti perangkat akan ditempatkan di dalam sumur, tetapi di atas air.
Raj

Jawaban:

20

Proses umum pemilihan mikrokontroler.

  1. Ringkas kebutuhan Anda terhadap mikrokontroler. Misalnya dalam hal ini:

    • 1 pengatur waktu perangkat keras , untuk mengukur waktu antara pulsa trigger dan echo.
    • 2 pin GPIO untuk menghubungkan pin Echo dan Trigger sensor.
    • Mungkin UART untuk menghubungkan modul komunikasi RF.
    • 1 input ADC untuk memonitor tegangan baterai.


    Anda dapat bergaul dengan pengontrol 8 pin untuk ini, yang mungkin memerlukan penggunaan pin pemrogram untuk keperluan umum juga.

  2. 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).

  3. 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.

  4. 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.

  1. 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.

  2. 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.

Bence Kaulics
sumber
3
Perhatikan bahwa ST-LINKs papan penemuan dan nukleo sering dapat digunakan untuk MCU lain daripada yang ada di papan itu sendiri. Tidak yakin tentang papan khusus itu, tetapi dari tampilannya, ia menggunakan SWD dan dapat diputus menggunakan jumper di sebelah kanan. Hal yang baik tentang itu adalah bahwa ST-LINK tidak hanya programmer, tetapi debuggers di dalam sirkuit , yang memudahkan banyak pengembangan .
Jonas Schäfer
3
Juga, jika Anda tidak peduli dengan balasan dari XBEE, Anda dapat menggunakan Universal Serial Interface dari ATtiny untuk mendapatkan UART yang lebih cepat daripada implementasi perangkat lunak bit-banged.
Jonas Schäfer
3
Perlu dicatat bahwa modul radio sering kali datang dengan sumber daya MCU yang tidak berdedikasi (dan modul ada untuk menyederhanakan jenis persetujuan). CPU biasanya dibagi dengan tumpukan RF, jadi Anda harus menerima interupsi berkala, dll.
Sean Houlihane
3
ULPBENCH adalah sumber daya yang baik ketika operasi daya rendah (baterai) penting.
neonzeon
5

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.

TheMagicCow
sumber
1
Sementara manajemen daya yang baik dimungkinkan dengan chip ATmega, papan Arduino tipikal memiliki saluran daya parasit yang secara tajam akan membatasi masa pakai baterai.
Chris Stratton