co ntrol sy stem f หรือ ir rigationข้อจำกัดความรับผิดชอบ: นี่เป็นโครงการส่วนบุคคลและไม่เกี่ยวข้องกับนายจ้างของฉัน
Cosyfir จะช่วยให้คุณรดน้ำพืชของคุณ
ซอฟต์แวร์โหนดทำงานบนไมโครคอนโทรลเลอร์เยื่อหุ้มสมอง STM32 ARM ซอฟต์แวร์เซิร์ฟเวอร์ทำงานบนระบบที่ใช้ UNIX เช่น Debian ภาพต่อไปนี้แสดงการตั้งค่าตัวอย่าง:
[] / +--+ / o/
[] <-> | <-> | | <-> ( )( ) <-> |
/ LoRa | +--+ MQTT ( ) SSH /
Sensor LoRaWAN TTN RPi User
Node Gateway Server @home
./node/* (Not part of cosyfir) ./server/*
readme นี้อธิบายทั้งเซิร์ฟเวอร์ (เช่น Raspberry Pi) และซอฟต์แวร์โหนดเซ็นเซอร์ในส่วนต่อไปนี้
แอปพลิเคชัน Cosyfird เป็น daemon ซึ่งได้รับข้อความจากโหนดเซ็นเซอร์ผ่านเซิร์ฟเวอร์ 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
ก่อนที่จะสร้างไบนารีลงทะเบียนแอปพลิเคชัน COSYFIR ของคุณบนเว็บไซต์ TTN
ต่อไปนี้เป็นเทมเพลตไฟล์การกำหนดค่า YAML สำหรับ COSYFIRD:
MqttConfig :
HostAddress : region.thethings.network
Port : 8883
ClientId : application-id
Password : secret TTN ใช้พอร์ต 8883 กับ SSL และภูมิภาคที่อยู่โฮสต์ region.thethings.network ที่ซึ่ง region สามารถเช่น EG eu
ก่อนอื่นให้สร้างตัวระบุไคลเอนต์บนเว็บไซต์ TTN โดยคลิก "เพิ่มแอปพลิเคชัน" บนคอนโซลเครือข่ายส่วนบุคคลของคุณ ปุ่มการเข้าถึงแอปพลิเคชันสามารถพบได้ที่ด้านล่างหลังจากที่คุณสร้างแอปพลิเคชัน มันทำหน้าที่เป็นรหัสผ่านสำหรับการเชื่อมต่อ MQTT
นี่คือภาพรวมของคำศัพท์ LORA:
| Lora | คำอธิบาย | จากที่ไหน? | จะใส่ที่ไหน? |
|---|---|---|---|
| คนรัก | ตัวระบุอุปกรณ์ปลายทาง 64 บิต (ไม่ซ้ำกัน) | ในกล่องอุปกรณ์ | คอนโซล TTN ("อุปกรณ์ลงทะเบียน") |
| appeui หรือ joineui | ตัวระบุแอปพลิเคชัน 64 บิต | ออกโดย TTN ("เพิ่มแอปพลิเคชัน") | การว่าจ้าง. |
| nwkkey หรือ appkey | คีย์การเข้ารหัสข้อมูล (เซิร์ฟเวอร์ TTN <->) | สร้างโดย TTN ("เพิ่มแอปพลิเคชัน") | การว่าจ้าง. |
| devaddr | ที่อยู่ 32 บิต (ไม่ใช่ unique) | กำหนดเมื่อโหนดเข้าร่วม TTN | - |
วิธีการเปิดใช้งานจะเป็นการเปิดใช้งานทางอากาศ (OTAA) เสมอ ไฟล์ได้รับการกำหนดค่าล่วงหน้าให้ทำงานในยุโรป
กรอกข้อมูลล่วงหน้ากำหนดไว้ใน node/Commissioning_template.h ตามที่อธิบายไว้ในตาราง จากนั้นเปลี่ยนชื่อไฟล์:
mv node/common/Commissioning_template.h node/common/Commissioning.h
เรียกใช้สคริปต์บิลด์ในรูทเพื่อสร้างทั้งเซิร์ฟเวอร์และโหนดไบนารี
./build_all.sh
พารามิเตอร์ที่มีอยู่ในสคริปต์คือ:
clean : ดำเนินการสร้างที่สะอาดdebug : Build With Debug SymbolsLSN50 กะพริบสามารถทำได้ด้วยสายเคเบิล FTDI UART แบบง่ายโดยใช้โหมดบูต ISP
เชื่อมต่อ 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 วินาที ในโหมดปล่อยทุกครึ่งชั่วโมง
ตัวอย่างข้อความตัวอย่างใน Hex:
| 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
เพื่อให้สามารถเห็นการเชื่อมต่อ FTDI ของ Printf บนพินเดียวกับการกะพริบผ่านโหมดบูต bootloader/ISP และเรียกใช้:
screen /dev/ttyUSB3 38400