Co ntrol SYSTEM FOR IR REGINTERHaftungsausschluss: Dies ist ein persönliches Projekt und nicht mit meinem Arbeitgeber verbunden
CoSyfir hilft Ihnen dabei, Ihre Pflanzen zu gießen.
Die Knotensoftware wird auf einem STM32 -Arm Cortex -Mikrocontroller ausgeführt. Die Serversoftware wird auf UNIX-basierten Systemen wie Debian ausgeführt. Das folgende Bild zeigt ein Beispiel -Setup:
[] / +--+ / o/
[] <-> | <-> | | <-> ( )( ) <-> |
/ LoRa | +--+ MQTT ( ) SSH /
Sensor LoRaWAN TTN RPi User
Node Gateway Server @home
./node/* (Not part of cosyfir) ./server/*
Diese Readme beschreibt sowohl den Server (z. B. Raspberry Pi) als auch die Sensorknotensoftware in den folgenden Abschnitten.
Die cosyfird -Anwendung ist ein Daemon, das Nachrichten von Sensorknoten über TTN Server empfängt und die letzte Nachricht anzeigt.
Installieren Sie die folgenden Softwarepakete, z. B. für Debian DO:
sudo apt install libncurses6 libmosquittopp1 libssl1.1 libyaml-cpp0.6 gcc cmake libjsoncpp1 libb64-0d
C ++ 17 Compiler ist erforderlich. GCC 8.3.0 wird empfohlen.
In diesem Abschnitt wird die Sensorknotensoftware beschrieben, die basierend auf LORA und TTN kommuniziert.
LSN50-V2 sollte höchstwahrscheinlich auch funktionieren.
Installieren Sie die folgenden Pakete:
sudo apt install stm32flash arm-none-eabi-gcc
Registrieren Sie vor dem Erstellen der Binärdateien Ihre coyfir -Anwendung auf der TTN -Website.
Im Folgenden finden Sie eine YAML -Konfigurationsdateivorlage für Coyfird:
MqttConfig :
HostAddress : region.thethings.network
Port : 8883
ClientId : application-id
Password : secret TTN verwendet Port 8883 mit SSL und der region region.thethings.network eu
Erstellen Sie zunächst eine Client -Kennung auf der TTN -Site, indem Sie in Ihrer persönlichen Netzwerkkonsole auf "Anwendung hinzufügen" klicken. Der Anwendungszugriffstaste finden Sie unten, nachdem Sie eine Anwendung erstellt haben. Es fungiert als Passwort für die MQTT -Verbindung.
Hier ist ein Überblick über die Lora -Terminologie:
| Lora | Erläuterung | Wovon? | Wohin? |
|---|---|---|---|
| Deveui | 64-Bit-Endentrübchenkennung (einzigartig) | Auf der Gerätebox | TTN -Konsole ("Registergerät") |
| Appeui oder joineui | 64-Bit-Anwendungskennung | Ausgestellt von TTN ("Antrag hinzufügen") | Inbetriebnahme.H |
| Nwkkey oder appey | Datenverschlüsselungsschlüssel (TTN <--> Server) | Generiert von TTN ("Anwendung hinzufügen") | Inbetriebnahme.H |
| Devaddr | 32-Bit-Adresse (Nicht einverstanden) | Zugewiesen, wenn der Knoten TTN anschließt | - - |
Die Aktivierungsmethode wird immer Over-the-Air-Activation (OTAA) sein. Die Datei ist vorkonfiguriert, um in Europa zu laufen.
Füllen Sie den Vorprozessor Definiert in node/Commissioning_template.h wie in der Tabelle beschrieben. Benennen Sie dann die Datei um:
mv node/common/Commissioning_template.h node/common/Commissioning.h
Führen Sie das Build -Skript in Root aus, um sowohl Server als auch Knoten binär zu erstellen.
./build_all.sh
Verfügbare Parameter zum Skript sind:
clean : Führen Sie einen sauberen Build durchdebug : Erstellen Sie mit Debug -SymbolenFlasing LSN50 kann mit einem einfachen FTDI -UART -Kabel über den ISP -Startmodus durchgeführt werden.
Verbinden Sie den UART wie unten beschrieben:
GND (black): JP4 Pin11 GND
TXD (orange): JP3 Pin9 PA3 (USART1)
RXD (yellow): JP3 Pin10 PA2 (USART1)
Finden Sie heraus, wo Ihr USB -Seriengerät montiert ist:
journalctl -k -n 100
Stellen Sie den Schalter vom Flash -Modus auf den ISP -Modus ein und tun Sie dann:
sudo stm32flash -w node/build/sensor-node.hex /dev/ttyUSBx
Verbinden Sie die Sensoren:
# DS18B20
GND (blue): JP3 Pin2 GND
DQ (yellow): JP3 Pin4 PA9 (Half-duplex single-wire using only TX)
VDD (red): JP3 Pin1 VDD
# Watermark 200SS (tbd)
JP3 Pin12 PA0
JP3 Pin5 PA4
# 10k resistor between PA4 and PA1
Weitere Informationen zum Wasserzeichensensor.
Überprüfen Sie Ihre örtliche TTN -Abdeckung und stellen Sie sicher, dass sich ein Tor in der Nähe befindet. Start ./cosyfird --config-file /path/to/cosyfird.yaml und Strom auf dem LSN50 mit dem Startschalter auf Flash eingestellt. Nach ein paar Augenblicken sollten Sie sehen, dass Nachrichten eintreffen. Im Debug -Modus werden alle 30 Sekunden Nachrichten gesendet. Im Freigabemodus jede halbe Stunde.
Beispielnachricht Nutzlast in Hex:
| 42 | BE | EF | CA | FE |
^
Battery level
^
Temperature (resolution 0.0625 °C)
^
Soil water tension
(tbd)
Für die Entwicklung können die folgenden Pakete erforderlich sein:
sudo apt install clang-format libmosquittopp-dev libssl-dev libyaml-cpp-dev libjsoncpp-dev libb64-dev libncurses-dev
Holen Sie sich einen ST-Link V2-Debugger und installieren Sie diese Pakete:
sudo apt install stmlink-tools gdb-multiarch
Nach der Installation sind drei Anwendungen verfügbar:
Verbinden Sie wie unten beschrieben:
GND: JP4 Pin11 GND
SWCLK: JP4 Pin4 PA14
SWDIO: JP4 Pin9 PA13
RST: JP4 Pin1 NRST
Stellen Sie den Startschalter auf ISP ein und versuchen Sie es mit:
st-info --probe
Wenn alles richtig läuft, sollten Sie die seriellen und andere Infos über den Mikrocontroller sehen. Wenn Sie die Infos nicht sehen, versuchen Sie, SWDIO und SWCLK auszutauschen. Einige ST-Link V2-Debugger sind fälschlicherweise beschriftet.
Sie können Ihren Code mit:
st-util -p 1234
(gdb-multiarch) set arch arm
(gdb-multiarch) target extended-remote localhost:1234
(gdb-multiarch) load sensor-node
Um zum Benutzercode zurückzusteigen, stellen Sie den Startschalter wieder auf Flash ein. Dann können Sie Breakpoints festlegen und den Code wie gewohnt ausführen:
(gdb-multiarch) break foo.c:42
(gdb-multiarch) run
Das Laden der Symbole ohne Blinken ist möglich:
(gdb-multiarch) file sensor-node
Um einen warmen Neustart zu machen, springen Sie zum Start des Blitzes:
(gdb-multiarch) jump *0x08000000
Um das Printfs anzusehen, verbinden Sie einen FTDI auf denselben Stiften wie für den Bootloader/ISP -Startmodus und führen Sie aus:
screen /dev/ttyUSB3 38400