LoMesh is built on the philosophy of open hardware and open source software. That way, stakeholders can drive feature addition and help with identifying and fixing bugs. For this open source ethos to grow, I’d like to take some time to walk you through LoMesh’s technology.
The heart of LoMesh is Microchip’s PIC18F27K42 MCU. A simple to use, yet very capable 8 bit micro-controller, the PIC18F27K42 runs the wireless stack and the application.
Features that make the PIC18F27K42 MCU a great fit for the project include:
Vectored interrupts: You no longer need to go through multiple, unrelated interrupt status flags just to find the source of the interrupt. The vectored interrupt structure allows low interrupt latency. This, in turn, allows for acceptable serial communication functionality and overall low interrupt jitter for the code.
Re-locatable vector table: LoMesh runs a bootloader at the reset vector. The application code will only start at some offset from the reset vector and reset interrupt vector table. If not for the re-locatable vector feature of the PIC18F27K42, the vector table would lie in the bootloader and the application would need one program counter jump before servicing the ISR. This would increase interrupt latency. However, with the re-locatable vectors, the vector table can lie within the application, providing a penalty-free bootloader feature.
Large Flash, RAM, and EEPROM: The high flash capacity of LoMesh means the application has lots of room for future expansion of features. High RAM capacity allows the stack to deal with multiple queues. Allowing multiple queues to handle the application demands helps to mitigate the slow nature of LoRa communication. Lastly, the onboard EEPROM makes it easy to save device parameters with very little code overhead.
The power supply is based on Microchip’s MCP16301H switching buck regulator. This gem of a buck regulator gives LoMesh a wide operating range of input voltages, making it suitable for industrial panel operation. The board accepts the RFM95 (or NiceRF equivalent for spring antenna) module to provide the LoRa phy. This module is based on Semtech’s SX1276 LoRa transceiver. The amazing part of this board is that it accepts an SX1280 module for 2.4GHz LoRa for future product variants.
LoMesh includes an SMA connector for the antenna. Different configurations of LoRa will will include an appropriate antenna. This is the antenna used for the module’s certification. If LoMesh is mounted in a metal control panel, an SMA cable can jumper the antenna out of the enclosure.
Lastly, there are three software stacks involved in the system:
For a meshing stack, LoMesh uses Microchip's LWmesh. This stack provides a means to send 802.15.4 like frames over the LoRa phy. The routing algorithm used is an LWmesh "native" algorithm.
A MODBUS stack is implemented with BSD freemodbus.
AT commands are implemented by a state engine I developed specifically for LoMesh.
Stay tuned for more updates on the project in the days to come!