Saya baru-baru ini membangun pelacak GPS / GSM IoT yang berfungsi penuh dengan Pi Zero untuk proyek perguruan tinggi dan sekarang setelah selesai dan selesai, saya ingin meminimalkan penarikan seluruh sistem saat ini karena dua baterai 2500mAh hanya dapat menyalakannya paling lama satu atau dua hari. Namun, saya masih baru di perangkat ini dan saya akan senang membantu tentang perubahan dan teknik perangkat keras.
Tujuan saya: Perangkat yang mampu menjalankan skrip python yang memiliki faktor bentuk minimalis (terutama tinggi) dengan penarikan daya serendah mungkin.
Setup saya saat ini menggunakan:
- Raspberry Pi Zero
- Adafruit Fona 808 GPS & GSM
- Adafruit LSM303 Accelerometer & Magnetometer
Saya tahu tentang Arduino dan MSP430 yang menghirup tenaga, tetapi saya tidak tahu apakah mungkin untuk melakukan apa yang saya perlukan dengan pengontrol mikro ini.
Pertanyaan saya adalah:
- Seberapa curam kurva belajar yang ada untuk pergi dari Raspberry Pi ke papan yang lebih sederhana?
- Apakah mungkin bagi board lain ini untuk menjalankan GSM / GPS / Accelerometer secara bersamaan?
- Apakah ada modul lain yang menyediakan fungsi yang sama tetapi mengkonsumsi daya lebih sedikit? (Saya tidak dapat menemukan nomor daya spesifik untuk modul ini)
- Apakah modul saya saat ini bekerja dengan MSP430 misalnya?
- Ada rekomendasi / komentar?
sumber
Jawaban:
Saya akan menganggap bahwa persyaratan pemrosesan pada perangkat hampir nol. Sepertinya Anda menggunakan beberapa input akselerasi untuk menentukan seberapa sering membangunkan perangkat GSM.
Idealnya, Anda menginginkan MCU yang dapat dipicu dari accelerometer untuk bangun dari tidur, dan kemudian menentukan kapan mengirim lokasi ping. Perangkat berbasis mikro-python harus menjadi titik awal yang baik.
Sebagai contoh pengaliran daya papan kecil, microbit BBC tampaknya menggunakan beberapa miliamp ketika layar mati (berjalan pada 16 MHz, dan dengan on-board accelerometer / magentometer bertenaga).
Micropython mendukung 'sleep', tetapi itu akan tergantung pada platform target berapa banyak daya ini menghemat Anda. Secara realistis, untuk aplikasi semacam ini, sistem operasi yang tertanam C ++ tidak akan lebih sulit untuk dikodekan, dan memungkinkan lebih banyak fleksibilitas untuk menghemat daya lebih banyak.
Tahap pertama dalam menghitung power drain Anda adalah mengidentifikasi mode yang berbeda, dan mengalokasikan biaya energi untuk setiap tugas. Ini memungkinkan Anda untuk membandingkan biaya pesan GPS / GSM dengan daya siaga harian dasar (tidak bekerja). Anda kemudian dapat melihat apa penghematan yang tersedia pada setiap komponen. Asalkan modul GSM Anda hanya aktif selama beberapa menit sehari, konsumsi dayanya mungkin tidak signifikan.
sumber
Dalam pengalaman saya, modul GSM dan GPS menarik daya jauh lebih besar daripada prosesor. Ini diharapkan karena keduanya mengandung banyak sirkuit RF dan modul GSM perlu mengirim dan menerima.
Langkah pertama adalah mengkonfigurasi ulang prototipe Anda sehingga Anda dapat memantau daya yang dikonsumsi oleh setiap bagian. Setelah Anda memiliki karakteristik itu, Anda mungkin perlu menerapkan sirkuit kontrol daya sehingga Anda hanya menyalakan modul GPS dan GSM saat diperlukan. Semakin lama Anda mampu menghindarinya, semakin baik masa pakai baterai Anda.
Salah satu masalah dengan protokol GSM dan GPS adalah bahwa jika unit tidak aktif untuk jangka waktu yang lama, maka diperlukan waktu lebih lama untuk membangun kembali koneksi dan ini akan meningkatkan waktu untuk memperbaiki terlebih dahulu untuk ketersediaan GPS dan sirkuit data untuk GSM.
sumber
Menggunakan MicroPython Anda mungkin bisa beralih dari Pi Zero yang mengkonsumsi ke beberapa platform lain. PyBoard resmi adalah STM32F405RG yang bisa cukup baik tetapi ada dukungan untuk seri STM32L4 daya rendah juga.
Saat ini Anda menjalankan Pi Zero pada 1 GHz untuk menggunakan perangkat UART dan I2C untuk menghubungkan SIM808 dan LSM303 Anda. Pi mengkonsumsi sekitar 80 mA dalam kondisi idle, tidak membicarakan kapan tidak.
Jika Anda dapat menurunkan frekuensi clock CPU Anda, Anda juga dapat menurunkan konsumsi daya. Untuk tugas ini cukup beberapa MHz.
Jadi Anda bisa berubah menjadi PyBoard yang hanya mengkonsumsi beberapa mA di bawah 10 MHz dalam mode run dengan semua periferal ON.
Apalagi 0,4 mA dalam stop dan 2,4 uA dalam mode siaga.
Mungkin Anda harus mem-porting skrip Anda ke MicroPython tetapi itu akan lebih mudah daripada porting ke C.
sumber