Implement a secure ICS protocol targeting LoRa Node151 microcontroller for controlling irrigation.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 
 
John-Mark Gurney 58fa06f80c add some clarification about additional dirs, and expected license... 3 роки тому
loramac fix up white space, drop board-config.h so it doesn't collide with the 3 роки тому
stm32 add framework for properly receiving/handling incoming data.. 3 роки тому
strobe add the start of the C version for the uC... 3 роки тому
.gitignore add recommended build dir to be ignored.. 3 роки тому
LICENSE.txt add some clarification about additional dirs, and expected license... 3 роки тому
Makefile print out a little bit more of the messages.. 3 роки тому
NOTES.md minor spelling fixes.. 3 роки тому
PROTOCOL.md add support for replying last message if it was lost.. 3 роки тому
README.md minor spelling fixes.. 3 роки тому
board-config.h get tx/rx working between two Node151's.. 3 роки тому
board.c get tx/rx working between two Node151's.. 3 роки тому
comms.c add support for replying last message if it was lost.. 3 роки тому
comms.h add support for replying last message if it was lost.. 3 роки тому
lora.py add support for replying last message if it was lost.. 3 роки тому
lora_comms.py add support for replying last message if it was lost.. 3 роки тому
main.c fix return to return false, not -1... 3 роки тому
misc.c get tx/rx working between two Node151's.. 3 роки тому
misc.h get tx/rx working between two Node151's.. 3 роки тому
requirements.txt add the required python packages.. 3 роки тому
strobe_rng_init.c make the linker information work... add an inline to ignore warning.. 3 роки тому
strobe_rng_init.h make the linker information work... add an inline to ignore warning.. 3 роки тому
sysIrqHandlers.h get tx/rx working between two Node151's.. 3 роки тому

README.md

LoRa Irrigation System

This project is to build an irrigation system from LoRa capable microcontrollers. The Heltec Node151 was chosen due to it’s small size and inexpensive cost.

Design Decisions

While investigating this, the LoraWAN protocol was investigated, but after looking at the code complexity and other operational requirements, if was decided that for this project, it was safer to target a direct Node to Node style communication system. This would allow the implementation to be more simple, and security to be built in. It could also be used for other projects that need security.

One of the other requirements is that the code be 100% open sourced, not GPL licensed, and no proprietary components. This meant that using IDE’s like ST’s STM32CubeIDE which is only available in binary form was not a choice, as that would preclude building on an operating system other than Windows/MaxOS/Linux.

Building

The build system uses the BSD flavor of make. This is the default make on the BSDs, originally called pmake, but also available as bsdmake for MacOSX, and likely other operating systems as well.

It also depends upon ARM’s GNU Arm Embedded Toolchain which uses gcc as the compiler. It would be good to get it to cross-compile with clang as well, but that requires finding a libc like the nano libc that nano.specs in the above toolchain provides.

Once ARM’s toolchain is in your path, the following should work:

export MAKEOBJDIR=build
mkdir $MAKEOBJDIR
bsdmake all

And in the directory build, a file lora.irr.elf should be present.

Flashing

Flashing can be done via the open source tool OpenOCD. For this, I use a Digilent HS1 JTAG programmer utilizing the resistor hack to allow an FTDI JTAG programmer to control the bi-directional SWIO pin.

One caveat w/ MacOSX, is that it may be necessary to unload the kext com.apple.driver.AppleUSBFTDI via the command:

sudo kextunload -b com.apple.driver.AppleUSBFTDI

as OpenOCD wants direct access to the FTDI driver.

Once that happens, the device can be programmed using the following command:

sudo openocd -f interface/ftdi/digilent-hs1.cfg -f interface/ftdi/swd-resistor-hack.cfg -f target/stm32l1.cfg -c "init" -c "reset init" -c "program build/lora.irr.elf verify reset exit"