Einfacher Spitzenschalenregenregenmessgeräte über Lorawan ™ verbunden. Das Gerät zählt die Anzahl der Bucket -Tipps/-sturz und sendet den Wert mit Lorawan ™.
Eine Empfängeranwendung kann dann den Niederschlag berechnen und bei Bedarf den Zähler zurücksetzen.
Die Niederschlagsberechnung ist durch den Arduino-Rain-Gauge-Kalibrationsunterricht inspiriert.
Eine Regenmesser mit Spitzenklappen mit den Abmessungen von 11 cm x 5 cm wird verwendet, was eine Einzugsfläche von 55 cm² ergibt. Eine Sammlung von 10 Millilitern Regen beträgt 10 ml/55 cm² = 0,181818182 cm = 1,81818182 mm Regen.
In der Spitzenklammerregenregenmessung 5 -mal für 10 ml (oder 1,81 mm Regen) und so ist eine einzelne Spitze für (10/5) ml = 2 ml (oder 0,3646363664 mm).

Alle benötigten Stifte der RFM95 -Stifte sind auf der Feder, die direkt mit Stiften auf der 32U4 verbunden sind, mit Ausnahme von RFM95 DIO1. Für RFM95 wird DIO1 Arduino Pin 1 als externer Interrupt #3 ausgewählt und sich neben DIO1 auf der Feder befinden. Adafruit Feather 32U4 RFM95 Pin Mapping.
Der Wipp -Eimer benötigt zwei Stifte an Feder, GND und Eingang. Als Eingangsstift ist Arduino Pin 3 (externer Interrupt 0) ausgewählt.
Für den Arduino-Pin 3 muss ein schwacher Klimmzug aktiviert werden. Wenn der Spitzenschalenspitzen/Stolpern ein niedriges Signal erkannt werden kann.
Platformio mit der Adafruit Feather 32U4 Platformio -Board ist die Basis. Die Arduino-Lmic-Bibliothek bietet die Lorawan ™-Unterstützung.
Die Firmware zählt nur die Anzahl der Tipps/Tasten, die vom Tipp -Eimer durchgeführt wurden, und sendet sie mit Lorawan ™. In der Nachricht ist auch der Batteriespannungsstand gemeldet.
Während der Lorawan -Join -Sequenz verblasst die LED. Die Fade -Klasse wird aus dem Arduino Fading LED -Beispiel erstellt.
Die Stromeinsparung erfolgt in zwei Hauptzuständen. Regenmodus und kein Regenmodus.
In einem dritten Modus wird das Gerät im Sleep_forever -Modus ohne aktivierte Interrupts festgelegt, wenn die Batteriespannung unter 3,5 v. Damit liegt. Dies dient dazu, dass die Batterie durch Entladung zerstört wird.
Der Schlaf erfolgt in 8 Sekunden und nach 8 s Schlaf wird die LMIC -Zustandsmaschine überprüft und Daten, wenn Zeitdaten gesendet werden.
Die Standarddaten -Sendezeit beträgt 15 Sekunden.
Wenn für ungefähr eine Stunde kein Regen festgestellt wurde, setzt das Gerät den Schlafmodus Sleep_forever und wartet auf das nächste Mal, wenn es regnet, sodass ein externer Interrupt das Gerät aufwacht.
Wenn das Gerät aufwacht, wird eine Nachricht gesendet, um einen eingehenden Befehl abzurufen.
Um die Integration in das Things Network zu vereinfachen, kann ein Decoder und Encoder verwendet werden, um die Verwendung der MQTT -API zu vereinfachen.
MQTT -Befehl zum Zurücksetzen des Regenschalters im Gerät. Der Parameter -Reset hat den Wert 234 (0xea), damit der Befehl Reset vom Gerät akzeptiert wird.
mosquitto_pub -h < Region > .thethings.network -u " <AppID> " -P " <AppKey> " -t ' <AppID>/devices/<DevID>/down ' -m ' {"port":2,"confirmed":true,"payload_fields":{"reset":234}} 'MQTT -Befehl zum Einstellen von Sendeintervall auf 15 Minuten.
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 ;
}