Presentation and Documentation on Home Smart Mesh
This readme is an extract from Home Smart Mesh with focus on software configuration and protocol implementation details
Link to this repository
cd ./applications/
application/01_rotary_decoder> make flash
- buy : "600 pulses Optical Rotary encoder"
- custom wiring +5V, encoder pullups to +3.3 V
- rf timestamp synchronisation
- HW capture of timestamp
- RF Mesh log of modulo 600 position with timestamp
- 4 ms status on change, otherwise 4 s reminder
application/02_usb_dongle> make flash
- buy : "nRF52832 dongle"
- custom firmware for RF mesh
- pogo-pins jtag adapter 3dprint : Fusion360 CAD model
- RF Mesh repeater + RF Mesh to Host interface
application/03_sensored_bldc> make flash
- buy : "nRF52832 dongle"
- custom firmware for RF mesh
Contains the specific drivers for this project from which the "mesh.c" a light weight Mesh Protocol connecting all the devices using a custom RF protocol (without softdevice)
- Sleepy nodes (low power) and router nodes (always listening)
- single layer ultra simple rpotocol. App into mac with unique ids to small ids mapping
- An alternative to the Bluetooth Mesh and Zigbee Thread IPV6 world
Contains the fancy Makefile extensions that allow :
- switch power on and off using a Segger jlink
- read and write parameters matching the device's unique identifier read from the HW registers
This is a submodule that minifies the nRF SDK for Thread and Zigbee which is up update over the nRF SDK 15. this minification ony has content required for this repository.
- nRF52 firmare :
- GNU Tools ARM Embedded version 6 2017-q2-update, referenced from the SDK Makefile.windows
- Python jlink wrapper. Used in Makefile and tools of this repo, more on pylink.readthedocs. Note that it has to be used with a 32 bit python version referenced in the tools scripts as C:\Python27\python.exe. wrapper scripts already availabe in the tools directory
internals of the python debug utility
User data flashing is done with Pylink which reads in uicr.py the registers of the attached device, look it up in the NODES_CONFIG file, retrives which parameters should be flashed, the mapping of parameters to CUSTOMER_X registers come from "uicr_map.json".
The repo contais a directory for boards declaration "boards/" and a directory for applications "applications/". Although every application targets a particular board, it is possible to use any application for any other board. In the makefile a sinlge line has to be edited
USED_BOARD := BOARD_PCA10059
The programmable peripheral interconnect is used for "real" real-time operations rf time synch,...
Functions call graph. Fifos dataflow between interrupts and main loop.