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