CONSIsenção de responsabilidade: este é um projeto pessoal e não afiliado ao meu empregador
O cosyfir deve ajudá -lo a regar suas plantas.
O software Node é executado em um microcontrolador STM32 ARM Cortex. O software do servidor é executado em sistemas baseados em UNIX como Debian. A figura a seguir descreve um exemplo de configuração:
[] / +--+ / o/
[] <-> | <-> | | <-> ( )( ) <-> |
/ LoRa | +--+ MQTT ( ) SSH /
Sensor LoRaWAN TTN RPi User
Node Gateway Server @home
./node/* (Not part of cosyfir) ./server/*
Este readme descreve o servidor (por exemplo, Raspberry Pi) e o software do nó sensor nas seções a seguir.
O aplicativo Cosyfird é um daemon, que recebe mensagens dos nós do sensor via TTN Server e exibe a última mensagem.
Instale os seguintes pacotes de software, por exemplo, para o Debian Do:
sudo apt install libncurses6 libmosquittopp1 libssl1.1 libyaml-cpp0.6 gcc cmake libjsoncpp1 libb64-0d
C ++ 17 é necessário compilador. GCC 8.3.0 é recomendado.
Esta seção descreve o software do nó do sensor que se comunica com base em Lora e TTN.
O LSN50-V2 provavelmente também deve funcionar.
Instale os seguintes pacotes:
sudo apt install stm32flash arm-none-eabi-gcc
Antes de construir os binários, registre seu aplicativo COSYFIR no site da TTN.
A seguir, é apresentado um modelo de arquivo de configuração da YAML para Cosyfird:
MqttConfig :
HostAddress : region.thethings.network
Port : 8883
ClientId : application-id
Password : secret region TTN usa a porta 8883 com SSL e a region.thethings.network do endereço do host eu
Primeiro de tudo, crie um identificador de cliente no site TTN clicando em "Adicionar aplicativo" no seu console de rede pessoal. A chave de acesso do aplicativo pode ser encontrada na parte inferior depois de criar um aplicativo. Ele atua como a senha para a conexão MQTT.
Aqui está uma visão geral da terminologia Lora:
| Lora | Explicação | De onde? | Onde colocar? |
|---|---|---|---|
| Deveui | Identificador de dispositivo final de 64 bits (exclusivo) | Na caixa de dispositivo | Console ttn ("dispositivo de registro") |
| Appeui ou JOINEUI | Identificador de aplicativos de 64 bits | Emitido pelo TTN ("Adicionar aplicativo") | Comissionamento.H |
| NWKKEY ou APPKEY | Chave de criptografia de dados (TTN <-> servidor) | Gerado por TTN ("Adicionar aplicativo") | Comissionamento.H |
| Devaddr | Endereço de 32 bits (não único) | Atribuído quando o nó se junta a ttn | - |
O método de ativação sempre será a ativação do ar (OTAA). O arquivo é pré -configurado para executar na Europa.
Preencha o pré -processador define em node/Commissioning_template.h conforme descrito na tabela. Em seguida, renomeie o arquivo:
mv node/common/Commissioning_template.h node/common/Commissioning.h
Execute o script de construção no root para criar o servidor e o nó binário.
./build_all.sh
Os parâmetros disponíveis para o script são:
clean : faça uma compilação limpadebug : construir com símbolos de depuraçãoO LSN50 piscante pode ser feito com um cabo FTDI UART simples usando o modo de inicialização do ISP.
Conecte o UART conforme descrito abaixo:
GND (black): JP4 Pin11 GND
TXD (orange): JP3 Pin9 PA3 (USART1)
RXD (yellow): JP3 Pin10 PA2 (USART1)
Descubra onde seu dispositivo serial USB está montado:
journalctl -k -n 100
Defina a mudança do modo flash para o modo ISP e depois faça:
sudo stm32flash -w node/build/sensor-node.hex /dev/ttyUSBx
Conecte os sensores:
# 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
Mais informações sobre o sensor de marca d'água.
Verifique sua cobertura TTN local e verifique se um gateway está próximo. START ./cosyfird --config-file /path/to/cosyfird.yaml e energia no LSN50 com a chave de inicialização definida como flash. Depois de alguns momentos, você deve ver as mensagens chegarem. No modo de depuração, as mensagens são enviadas a cada 30 segundos. No modo de liberação a cada meia hora.
Exemplo de carga útil da mensagem em hexadecimal:
| 42 | BE | EF | CA | FE |
^
Battery level
^
Temperature (resolution 0.0625 °C)
^
Soil water tension
(tbd)
Para o desenvolvimento, os pacotes a seguir podem ser necessários:
sudo apt install clang-format libmosquittopp-dev libssl-dev libyaml-cpp-dev libjsoncpp-dev libb64-dev libncurses-dev
Obtenha um depurador ST-Link V2 e instale estes pacotes:
sudo apt install stmlink-tools gdb-multiarch
Três aplicativos estão disponíveis após a instalação:
Conecte -se conforme descrito abaixo:
GND: JP4 Pin11 GND
SWCLK: JP4 Pin4 PA14
SWDIO: JP4 Pin9 PA13
RST: JP4 Pin1 NRST
Defina a chave de inicialização como ISP e tente:
st-info --probe
Se tudo estiver funcionando corretamente, você verá a série e outras informações sobre o microcontrolador. Caso você não veja o Infos, tente trocar o Swdio e o SWCLK. Alguns depuradores ST-Link V2 são rotulados incorretamente.
Você pode piscar e depurar seu código com:
st-util -p 1234
(gdb-multiarch) set arch arm
(gdb-multiarch) target extended-remote localhost:1234
(gdb-multiarch) load sensor-node
Para poder voltar ao código do usuário, defina o interruptor de inicialização de volta ao flash. Então você pode definir pontos de interrupção e executar o código como de costume:
(gdb-multiarch) break foo.c:42
(gdb-multiarch) run
Apenas carregar os símbolos sem piscar é possível:
(gdb-multiarch) file sensor-node
Para fazer um reinício quente, pule para o início do flash:
(gdb-multiarch) jump *0x08000000
Para poder ver o Printf conectar um FTDI nos mesmos pinos que piscam via modo de inicialização/ISP e execute:
screen /dev/ttyUSB3 38400