Co nctrol Sy stem f或ir rigation免責聲明:這是一個個人項目,不隸屬於我的雇主
Cosyfir應幫助您澆水。
節點軟件在STM32 ARM Cortex微控制器上運行。服務器軟件在基於UNIX的系統(例如Debian)上運行。下圖描述了一個示例設置:
[] / +--+ / o/
[] <-> | <-> | | <-> ( )( ) <-> |
/ LoRa | +--+ MQTT ( ) SSH /
Sensor LoRaWAN TTN RPi User
Node Gateway Server @home
./node/* (Not part of cosyfir) ./server/*
此讀數文件在以下各節中描述了服務器(例如Raspberry Pi)和傳感器節點軟件。
Cosyfird應用程序是一個守護程序,它通過TTN服務器從傳感器節點接收消息,並顯示最後一條消息。
安裝以下軟件包,例如Debian DO:
sudo apt install libncurses6 libmosquittopp1 libssl1.1 libyaml-cpp0.6 gcc cmake libjsoncpp1 libb64-0d
需要C ++ 17編譯器。建議使用GCC 8.3.0。
本節介紹了基於Lora和TTN通信的傳感器節點軟件。
LSN50-V2也很可能也應起作用。
安裝以下軟件包:
sudo apt install stm32flash arm-none-eabi-gcc
在構建二進製文件之前,請在TTN網站上註冊您的Cosyfir應用程序。
以下是cosyfird的YAML配置文件模板:
MqttConfig :
HostAddress : region.thethings.network
Port : 8883
ClientId : application-id
Password : secret TTN使用端口8883與SSL和主機eu region.thethings.network region
首先,通過單擊您的個人網絡控制台上的“添加應用程序”,在TTN站點上創建客戶端標識符。創建應用程序後,可以在底部找到應用程序訪問密鑰。它充當MQTT連接的密碼。
這是洛拉術語的概述:
| 洛拉 | 解釋 | 從哪裡? | 放在哪裡? |
|---|---|---|---|
| Deveui | 64位最終設備標識符(唯一) | 在設備盒上 | TTN控制台(“註冊設備”) |
| Appeui或Joineui | 64位應用標識符 | 由TTN發行(“添加申請”) | 偵錯 |
| nwkkey或appkey | 數據加密密鑰(TTN <->服務器) | 由TTN生成(“添加應用程序”) | 偵錯 |
| Devaddr | 32位地址(非唯一) | 當節點加入TTN時分配 | - |
激活方法將始終是空氣激活(OTAA)。該文件預先合併以在歐洲運行。
如表中所述,填充預處理器定義為node/Commissioning_template.h 。然後重命名文件:
mv node/common/Commissioning_template.h node/common/Commissioning.h
在root中運行構建腳本以構建服務器和節點二進制。
./build_all.sh
腳本的可用參數是:
clean :執行乾淨的版本debug :使用調試符號構建可以使用ISP啟動模式使用簡單的FTDI UART電纜來完成閃爍的LSN50。
如下所述連接UART:
GND (black): JP4 Pin11 GND
TXD (orange): JP3 Pin9 PA3 (USART1)
RXD (yellow): JP3 Pin10 PA2 (USART1)
找出您的USB串行設備安裝在哪裡:
journalctl -k -n 100
將開關從閃存模式設置為ISP模式,然後執行:
sudo stm32flash -w node/build/sensor-node.hex /dev/ttyUSBx
連接傳感器:
# 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
有關水印傳感器的更多信息。
檢查您當地的TTN覆蓋範圍,並確保附近有門戶。 start ./cosyfird --config-file /path/to/cosyfird.yaml和lsn50上的功率,啟動開關設置為flash。片刻後,您應該看到消息到達。在調試模式下,每30秒發送消息一次。在釋放模式下每半小時。
十六進制中的示例消息有效載荷:
| 42 | BE | EF | CA | FE |
^
Battery level
^
Temperature (resolution 0.0625 °C)
^
Soil water tension
(tbd)
對於開發,可能需要以下包裝:
sudo apt install clang-format libmosquittopp-dev libssl-dev libyaml-cpp-dev libjsoncpp-dev libb64-dev libncurses-dev
獲取ST-Link V2調試器並安裝以下軟件包:
sudo apt install stmlink-tools gdb-multiarch
安裝後有三個應用程序:
如下所述連接:
GND: JP4 Pin11 GND
SWCLK: JP4 Pin4 PA14
SWDIO: JP4 Pin9 PA13
RST: JP4 Pin1 NRST
將引導開關設置為ISP並嘗試:
st-info --probe
如果一切都正確運行,則應看到有關微控制器的串行和其他信息。如果您看不到Infos,請嘗試交換SWDIO和SWCLK。一些ST-Link V2調試器被錯誤地標記。
您可以通過以下方式閃爍並調試代碼:
st-util -p 1234
(gdb-multiarch) set arch arm
(gdb-multiarch) target extended-remote localhost:1234
(gdb-multiarch) load sensor-node
為了能夠跳回用戶代碼,請將啟動開關設置回Flash。然後,您可以設置斷點並照常運行代碼:
(gdb-multiarch) break foo.c:42
(gdb-multiarch) run
只是可以加載符號而不會閃爍:
(gdb-multiarch) file sensor-node
要進行溫暖的重新啟動,請跳到閃光燈的開始:
(gdb-multiarch) jump *0x08000000
能夠看到printf的連接在同一引腳上與通過bootloader/isp啟動模式閃爍並運行:
screen /dev/ttyUSB3 38400