Well, “kind” of a sensor network. Only one real sensor and some other WisBlock based Meshtastic nodes.
I made this setup for some tests with Meshtastic and our WisMesh products.
WisMesh Hub RAK2560 (soon to come) as a range extender with integrated temperature and humidity sensor. This node is powered by a RAK9154 solar panel and battery kit.
WisMesh Pocket without sensors, only transmitting its locations
@beegee Hello, many thanks for this! That is what i was bulding with 60 RAK4631 + 60 RAK19001 + 50 RAK19001.
I wanted to build the entire system battery powered, unfortunately without solar panel becaouse of the environment where they will be deployed is inside some buildings, but because the Meshtastic stock firmware keeps the LoRa active incoming for the connections the battery will drain in a month or so with a Li-Ion 2200mah. I need to modify the Meshtastic firmware i imagine, there is no other option in your opinion?
BTW many thanks for keep the project open!
Marco
Battery consumption with Meshtastic is a problem for sensor nodes that are supposed to run from battery.
I have the same problem, as you could see in the graph, the WisMesh Pocket with it’s GNSS enabled, is not lasting very long.
My other nodes are all direct supply.
@beegee Ah, ok i see. Have you thought on how can the firmware be modified to be more battery friendly? Unfortunately i’m non a programmer (or at least barely know something), i’ve tried to read the code but at the moment i don’t know where to put my hands
I keep my hands out of the Meshtastic firmware. That’s their task to improve power consumption.
If you do not need a mesh network and can place one “P2P gateway” with cloud connection at a place where it can be reached from all nodes, you could use P2P, disable RX permanently and only send your packets.
But you will have to implement some kind of addresses in your payload, so that the gateway knows where the data is coming from.
@beegee yes, definitely will be a solution for me. The only thing i would change is that i need to read the data locally, using Node-RED as gateway to transform the data in Modbus TCP. Some time ago i saw you written a tutorial on GitHub using WisBlock API-2 but in that case you were using LoRaWAN if i remember well. Can it be modified to use only the LoRa P2P without the LoRaWAN implementation?
I am working on a new PoC, using P2P to send data to a P2P gateway with connection to an MQTT broker.
From there I can pick the data. In my PoC I will most likely send the data to an InfluxDB database and then do visualization with Grafana.
So far I have the LoRa P2P, the connection to the MQTT broker and the parsing of the data in NodeRED working.
Hardware:
One sensor node (RAK10702) with a small change in the firmware (adding a node ID to the payload).
One P2P gateway based on RAK11200 + RAK13300.
I guess for your application you will use the NodeRED http or websocket functions and skip the MQTT broker.
Hi @beegee. Glad I’ve inspired you
So, what I have done at the moment is:
Install the Meshtastic firmware with this setup: RAK4631 + RAK19007 + RAK1901 + RAK19005 + RAKBOX-B3. As sensor Node, powered via USB type-C connector.
Install the Meshtastic firmware whit this setup: RAK4631 + RAK19007 + RAK13800 connected via Ethernet on an 4G Teltonika Router. In the same LAN, there is a Raspberry Pi with Node-RED running; the Node-RED instance read the Meshtastic Protobuf and convert the Telemetry readings to Modbus TCP.
As Said the last time, because it worked, I wanted to replicate this setup for other buildings ( already ordered and arrived N.80 19007 + N.80 4631 + N.40 13800 + N.40 1901 + N.40 19005) and it will be perfect if this setup works only with battery, waking up from the deep sleep every 15/20 minutes and sending the enviroments readings. The battery as to have a life cicle of about 10 months to 1 year.
The step 2 will be, other the temperature and relative humidity readings, the reading of RAK12013 radar sensor to sample if the room where the sensor is installed is occupied.
If you make the code for the P2P project that you are working on a GitHub public repository it will be awesome for me and for other interested on that project for shure!
@beegee from what I see, the RAK10702 and the RAK4631 has the same MCU and have the same SHTC3 sensor. So is it will be possible to “stole” from your your code as much as possible
Aside jokes, if the battery setup will be succesful, the project will be upscaled to other projects I have in mind.
Marco
All my codes are Open Source, so no need to steal it
Sure you can take them, adjust them to your needs.
However the RAK10702 is using a custom Base Board and some special IO’s to control the power of the sensors.
But other examples like my RAK4631-Kit-4-RAK1906 can work with both LoRaWAN and LoRa P2P and my new PoC.
This one is a more complicated variant. It supports out of the box many WisBlock Sensor Modules ==> WisBlock-Sensor-For-LoRaWAN. Despite it’s name, it supports LoRa P2P as well.
Blockquote Processing rak4631-debug (platform: nordicnrf52; board: wiscore_rak4631; framework: arduino)-------------------------------------------------------------------------------------------------------------------------------------------- Verbose mode can be enabled via-v, --verbose` option CONFIGURATION: https://docs.platformio.org/page/boards/nordicnrf52/wiscore_rak4631.html
PLATFORM: Nordic nRF52 (10.6.0) > WisCore RAK4631 Board
HARDWARE: NRF52840 64MHz, 243KB RAM, 796KB Flash
DEBUG: Current (jlink) External (jlink, stlink)
PACKAGES
framework-arduinoadafruitnrf52 @ 1.10601.0 (1.6.1)
framework-cmsis @ 2.50700.210515 (5.7.0)
tool-adafruit-nrfutil @ 1.503.0 (5.3)
tool-sreccat @ 1.164.0 (1.64)
toolchain-gccarmnoneeabi @ 1.70201.0 (7.2.1)
LDF: Library Dependency Finder → Library Dependency Finder (LDF) — PlatformIO latest documentation
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 64 compatible libraries
Scanning dependencies…
Dependency Graph
|-- SX126x-Arduino @ 2.0.26
|-- WisBlock-API-V2 @ 2.0.18
|-- CayenneLPP @ 1.4.0
|-- SparkFun SHTC3 Humidity and Temperature Sensor Library @ 1.1.4
|-- Adafruit LPS2X @ 2.0.6
|-- ClosedCube OPT3001 @ 1.1.2
|-- Adafruit BME680 Library @ 2.0.4
|-- SparkFun u-blox GNSS Arduino Library @ 2.2.27
|-- TinyGPSPlus @ 1.1.0
|-- Adafruit LIS3DH @ 1.3.0
|-- RAK12035_SoilMoisture @ 1.0.3
|-- RAKwireless VEML Light Sensor @ 1.0.2
|-- Sensirion Gas Index Algorithm @ 3.2.2
|-- Sensirion I2C SGP40 @ 0.1.0
|-- Sensirion Core @ 0.7.1
|-- RAKwireless MQx library @ 1.0.0
|-- Adafruit MCP23017 Arduino Library @ 2.3.2
|-- VL53L0X @ 1.3.1
|-- RAK I3G4250D Gyroscope @ 1.0.0
|-- RevEng PAJ7620 @ 1.5.0
|-- nRF52_OLED @ 1.0.0
|-- Melopero RV3028 @ 1.1.0
|-- Grove - Coulomb Counter for 3.3V to 5V LTC2941 @ 1.0.0
|-- RAK12019_LTR390_UV_Light @ 1.0.0
|-- INA219_WE @ 1.3.8
|-- RAKwireless CAP1293 Touch Pad library @ 1.0.3
|-- MPU9250_WE @ 1.2.9
|-- LPS35HW @ 1.0.2
|-- SparkFun SCD30 Arduino Library @ 1.0.20
|-- SparkFun MLX90632 Noncontact Infrared Temperature Sensor @ 1.0.1
|-- SparkFun GridEYE AMG88 Library @ 1.0.2
|-- RAKwireless Storage @ 1.0.2
|-- ArduinoECCX08 @ 1.3.8
|-- Adafruit FRAM I2C @ 2.0.3
|-- SparkFun u-blox Arduino Library @ 1.8.11
|-- RAKwireless RAK12034 @ 1.0.0
|-- Adafruit EPD @ 4.5.5
|-- SparkFun STC3x Arduino Library @ 1.0.0
|-- RAK12027-D7S @ 1.0.0
|-- BSEC Software Library @ 1.6.1480
|-- RAK12039_PM_Sensor @ 1.0.0
|-- RAK12052-MLX90640 @ 1.0.0
|-- SparkFun ADXL313 Arduino Library @ 1.0.4
|-- Wire @ 1.0
|-- RAKwireless_ADC_SGM58031_library @ 1.0.1
|-- Adafruit GFX Library @ 1.11.10
|-- SE0352NQ01 EPD Library @ 0.0.1
|-- Adafruit Unified Sensor @ 1.1.14
|-- Adafruit Little File System Libraries @ 0.11.0
|-- Adafruit Internal File System on Bluefruit nRF52 @ 0.11.0
|-- SPI @ 1.0
Building in release mode
Compiling .pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_TinyUSB_API.cpp.o
Compiling .pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_USBD_CDC.cpp.o
Compiling .pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_USBD_Device.cpp.o
Compiling .pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_USBH_Host.cpp.o
In file included from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Arduino.h:60:0,
from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\Adafruit_TinyUSB_Arduino\src\arduino\Ada
fruit_USBD_CDC.cpp:30: C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Uart.h:27:10: fatal error: variant.h: No such file or directo
ry
*************************************************************** Looking for variant.h dependency? Check our library registry!
** CLI > platformio lib search “header:variant.h” Web > PlatformIO Registry #include "variant.h ^~~~~~~~~~~
compilation terminated.
In file included from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Arduino.h:60:0,
from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\Adafruit_TinyUSB_Arduino\src\arduino\Ada
fruit_USBD_Device.cpp:35: C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Uart.h:27:10: fatal error: variant.h: No such file or directo
ry
****************************************************************** Looking for variant.h dependency? Check our library registry! CLI > platformio lib search “header:variant.h” Web > PlatformIO Registry***** #include “variant.h”
^~~~~~~~~~~
compilation terminated.
In file included from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Arduino.h:60:0,
from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\SPI/SPI.h:24,
from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\Adafruit_TinyUSB_Arduino\src/arduino/Ada
fruit_USBH_Host.h:30, from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\Adafruit_TinyUSB_Arduino\src/Adafruit_Ti
nyUSB.h:80, from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\Adafruit_TinyUSB_Arduino\src\arduino\Ada
fruit_TinyUSB_API.cpp:29: C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Uart.h:27:10: fatal error: variant.h: No such file or directo
ry
****************************************************************** Looking for variant.h dependency? Check our library registry!** CLI > platformio lib search “header:variant.h”* Web > PlatformIO Registry****************************************************************** #include “variant.h” ^~~~~~~~~~~
compilation terminated.
*** [.pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_USBD_Device.cpp.o] Error 1
*** [.pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_USBD_CDC.cpp.o] Error 1
*** [.pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_TinyUSB_API.cpp.o] Error 1
In file included from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Arduino.h:60:0,
from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\SPI/SPI.h:24,
from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\Adafruit_TinyUSB_Arduino\src\arduino\Ada
fruit_USBH_Host.h:30, from C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\libraries\Adafruit_TinyUSB_Arduino\src\arduino\Ada
fruit_USBH_Host.cpp:36: C:\Users\Utente.platformio\packages\framework-arduinoadafruitnrf52\cores\nRF5/Uart.h:27:10: fatal error: variant.h: No such file or directo
ry ****************************************************************** Looking for variant.h dependency? Check our library registry!** CLI > platformio lib search “header:variant.h”* Web > PlatformIO Registry*
***************************************************************** #include “variant.h”
^~~~~~~~~~~
compilation terminated.
*** [.pio\build\rak4631-debug\lib564\Adafruit_TinyUSB_Arduino\arduino\Adafruit_USBH_Host.cpp.o] Error 1
======================================================= [FAILED] Took 66.24 seconds =======================================================
Environment Status Duration
------------- -------- ------------rak4631-debug FAILED 00:01:06.241
================================================== 1 failed, 0 succeeded in 00:01:06.241 ================================================== * Il processo del terminale “C:\Users\Utente.platformio\penv\Scripts\platformio.exe ‘run’” è stato terminato. Codice di uscita: 1.
`
but i don’t know to fix it, i already watched in the framework of the PlatformIO searching for the arduinoadafruitnrf52 keywords but i didn’t find anything. Can you please help me on where to search? Many thanks
@beegee I have already patched before trying to compile it, I received on error but it was about the RP2040 MCU. The error appear in the building phase after patching the PlatformIO.
I’ve installed also the Raspberry Pi RP2040 from the Platforms menu on PlatformIO just to be shure that the execution of Python script is searching and blocking by the missing Raspberry RP2040 platform but nope, it throws another error.
Anyway, thanks for taking time to help me on this phase, Bernd.
Marco