Pengukur hujan bucket sederhana yang terhubung melalui Lorawan ™. Perangkat menghitung berapa kali ujung ember/jatuh, dan mengirimkan nilainya menggunakan Lorawan ™.
Aplikasi penerima kemudian dapat menghitung curah hujan, dan jika perlu mengatur ulang penghitung.
Perhitungan curah hujan terinspirasi oleh instruksi kalibrasi arduino-rain-gauge.
Pengukur hujan ember tip dengan dimensi 11 cm masing -masing 5 cm digunakan, memberikan area tangkapan sebesar 55 cm². Koleksi 10 mililiter hujan adalah 10 ml/55 cm² = 0,181818182 cm = 1,81818182 mm hujan.
Dalam pengukur hujan bucket tip, ujung/tumbuhan ember 5 kali untuk 10 mL (atau 1,81 mm hujan) dan dengan demikian satu ujung untuk (10/5) ml = 2ml (atau 0,364636364 mm).

Semua pin yang dibutuhkan dari pin RFM95 berada di bulu yang terhubung langsung ke pin pada 32U4 kecuali untuk RFM95 DiO1. Untuk RFM95 DIO1 adalah Arduino Pin 1 yang dipilih karena External Interrupt #3, dan juga terletak di sebelah DIO1 di bulu. ADAFRUIT Feather 32U4 RFM95 Pin Mapping.
Bucket tip membutuhkan dua pin pada bulu, GND dan input. Sebagai pin input adalah pin arduino 3 (interupsi eksternal 0) dipilih.
Pull-up yang lemah perlu diaktifkan untuk Arduino Pin 3 sehingga ketika ujung ember tip/jatuh, sinyal rendah dapat dideteksi.
Platformio Menggunakan Papan Platformio Feather 32U4 adalah pangkalan. Perpustakaan Arduino-LMIC menyediakan dukungan Lorawan ™.
Firmware hanya menghitung jumlah tip/tumbuhan yang dilakukan oleh ember tip dan mengirimkannya menggunakan Lorawan ™. Dalam pesan juga level tegangan baterai yang dilaporkan.
Selama urutan gabungan Lorawan, LED memudar. Kelas Fade dibangun dari contoh LED Arduino yang memudar.
Penghemat daya dilakukan di dua negara bagian utama. Mode hujan dan tidak ada mode hujan.
Mode ketiga mengatur perangkat dalam mode sleep_forever tanpa interupsi yang diaktifkan jika tegangan baterai di bawah 3,5 V. Ini adalah untuk menyimpan baterai dari dihancurkan dengan mengeluarkan.
Tidur dilakukan dalam interval 8 detik dan setelah setiap 8 detik tidur mesin LMIC state diperiksa dan data jika data waktu dikirim.
Periode pengiriman data default adalah 15 detik.
Jika belum ada hujan yang terdeteksi untuk perkiraan satu jam perangkat mengatur mode tidur sleep_forever dan menunggu saat berikutnya hujan sehingga interupsi eksternal membangunkan perangkat.
Ketika perangkat bangun pesan dikirim untuk mengambil perintah yang masuk.
Untuk menyederhanakan integrasi ke jaringan hal -hal dekoder dan encoder dapat digunakan untuk menyederhanakan penggunaan API MQTT.
Perintah MQTT untuk mengatur ulang penghitung hujan di perangkat. Reset parameter harus memiliki nilai 234 (0xea) untuk perintah reset yang akan diterima oleh perangkat.
mosquitto_pub -h < Region > .thethings.network -u " <AppID> " -P " <AppKey> " -t ' <AppID>/devices/<DevID>/down ' -m ' {"port":2,"confirmed":true,"payload_fields":{"reset":234}} 'Perintah MQTT untuk mengatur interval transmisi ke 15 menit.
mosquitto_pub -h < Region > .thethings.network -u " <AppID> " -P " <AppKey> " -t ' <AppID>/devices/<DevID>/down ' -m ' {"port":2,"confirmed":true,"payload_fields":{"multiplexer":15}} ' function Decoder ( bytes , port )
{
// Decode an uplink message from a buffer
// (array) of bytes to an object of fields.
var decoded = { } ;
if ( port === 1 )
{
if ( bytes . length >= 3 )
{
decoded . counts = ( ( ( bytes [ 2 ] & 0x80 ) >> 7 ) << 16 ) | ( bytes [ 1 ] << 8 ) | bytes [ 0 ] ;
decoded . vbat = ( ( bytes [ 2 ] & 0x7F ) + 330 ) / 100.0 ;
}
}
return decoded ;
} function Encoder ( object , port ) {
// Encode downlink messages sent as
// object to an array or buffer of bytes.
var bytes = [ ] ;
if ( port === 1 && ( ( object . multiplexer > 0 ) && ( object . multiplexer < 255 ) ) )
{
bytes [ 0 ] = 1 ;
bytes [ 1 ] = object . multiplexer ;
}
else if ( port === 2 && object . reset === 0xea )
{
bytes [ 0 ] = object . reset ;
}
return bytes ;
}