공동 정체 또는 ir rigation면책 조항 : 이것은 개인 프로젝트이며 내 고용주와 제휴하지 않습니다.
Cosyfir는 식물에 물을주는 데 도움이됩니다.
노드 소프트웨어는 STM32 암 피질 마이크로 컨트롤러에서 실행됩니다. 서버 소프트웨어는 Debian과 같은 Unix 기반 시스템에서 실행됩니다. 다음 그림은 예제 설정을 보여줍니다.
[] / +--+ / o/
[] <-> | <-> | | <-> ( )( ) <-> |
/ LoRa | +--+ MQTT ( ) SSH /
Sensor LoRaWAN TTN RPi User
Node Gateway Server @home
./node/* (Not part of cosyfir) ./server/*
이 readme는 서버 (예 : 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
Binaries를 구축하기 전에 TTN 웹 사이트에 COSYFIR 응용 프로그램을 등록하십시오.
다음은 COSYFIRD의 YAML 구성 파일 템플릿입니다.
MqttConfig :
HostAddress : region.thethings.network
Port : 8883
ClientId : application-id
Password : secret TTN은 SSL과 함께 포트 8883 사용하고 호스트 주소 region.thethings.network region EG eu 가 될 수 있습니다.
우선, 개인 네트워크 콘솔에서 "애플리케이션 추가"를 클릭하여 TTN 사이트에서 클라이언트 식별자를 만듭니다. 애플리케이션 액세스 키는 응용 프로그램을 만든 후 하단에서 찾을 수 있습니다. MQTT 연결의 비밀번호 역할을합니다.
다음은 LORA 용어에 대한 개요입니다.
| 로라 | 설명 | 어디에서? | 어디에 넣을까요? |
|---|---|---|---|
| Deveui | 64 비트 종료 기기 식별자 (고유) | 장치 상자에 | TTN 콘솔 ( "등록 장치") |
| appeui 또는 choineui | 64 비트 응용 프로그램 식별자 | TTN에 의해 발행 ( "응용 프로그램 추가") | 커미셔닝 .H |
| nwkkey 또는 appkey | 데이터 암호화 키 (TTN <-> 서버) | TTN에 의해 생성 ( "응용 프로그램 추가") | 커미셔닝 .H |
| Devaddr | 32 비트 주소 (비 유니 키) | Node가 TTN에 가입 할 때 할당됩니다 | - |
활성화 방법은 항상 공적 활성화 (OTAA)입니다. 파일은 유럽에서 실행되도록 미리 구성되어 있습니다.
사전 처리기를 테이블에 설명 된대로 node/Commissioning_template.h 로 채우십시오. 그런 다음 파일 이름을 바꾸십시오.
mv node/common/Commissioning_template.h node/common/Commissioning.h
루트에서 빌드 스크립트를 실행하여 서버와 노드 바이너리를 빌드하십시오.
./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 적용 범위를 확인하고 게이트웨이가 근처에 있는지 확인하십시오. 시작 ./cosyfird --config-file /path/to/cosyfird.yaml 시작하고 부팅 스위치가 플래시로 설정된 상태에서 LSN50의 전원을 켜십시오. 잠시 후에 메시지가 도착하는 것을 볼 수 있습니다. 디버그 모드에서는 30 초마다 메시지가 전송됩니다. 30 분마다 릴리스 모드에서.
16 진수의 예제 메시지 페이로드 :
| 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
사용자 코드로 돌아갈 수 있으려면 부팅 스위치를 플래시로 다시 설정하십시오. 그런 다음 중단 점을 설정하고 평소와 같이 코드를 실행할 수 있습니다.
(gdb-multiarch) break foo.c:42
(gdb-multiarch) run
깜박임없이 기호를로드하면 가능합니다.
(gdb-multiarch) file sensor-node
따뜻한 재시작을하려면 플래시 시작으로 점프하십시오.
(gdb-multiarch) jump *0x08000000
Printf의 FTDI를 Bootloader/ISP Boot Mode를 통해 플래시하고 실행하는 것과 동일한 핀에 FTDI를 연결하는 것을 볼 수 있습니다.
screen /dev/ttyUSB3 38400