Close
0%
0%

Openthread Sensor Tag

Open Design Ultra Low Power Sensor Tag for light, temperature, humidity and pressure. openthread on Zephyr with json to MQTT and Grafana

Public Chat
Similar projects worth following
The schematics are open source and ready production gerber files are provided. The firmware also opensource with a full stack innovative with simplicity text based udp packets with minimal python server side for MQTT influxDB and Grafana connection. The SensorTag deep sleeps at 3.19 uA and estimated to last x3 years with 20 sec report period of all sensors

Free Technical support available for those who want to produce and adapt the firmware. The sensor Tag project has its own category on the new Home Smart Mesh forum

https://homesmartmesh.discourse.group/c/projects/thread-sensortag/13

I sell on Tindie

Overview

from https://www.homesmartmesh.com/docs/microcontrollers/nrf52/thread_sensortag/

The Thread Sensor Tag is running on a nRF52840 Microcontroller Module (MS88SF2 from Minew). It uses a Light sensor to detect light in lux and a multi functional sensor for pressure, temperature and humidity. See details below:

  • nRF52840 on a MS88SF2 module. 
  • Light sensor VEMLS6030 @0x48
  • MS8607 with relative humidity @0x40, pressure and temperature @0x76
  • Reset button P0.18 and user button SW0 P1.09
  • i²C bus scl P1.13 and sda P1.15
  • RGB LED P0.04 P0.06 and P0.08

Schematics repo : https://github.com/HomeSmartMesh/nrf52_thread_sensortag

Application

The nRF52840 wakes up every 20 seconds, collects the values for temperature, pressure, humidity and light and sends them via UDP package into the Open Thread network which it connects to. We chosed to use UDP packets because this is the fastest way of transmitting the data which safes time and therefor energy. For example MQTT or Matter would use more energy because it takes longer due to the bigger payload size.

The Zephyr firmware repository can be found here: https://github.com/HomeSmartMesh/sdk-hsm-sensortag

To make a use of the UDP packets we created a script which translates the ipv6 UDP data into a JSON based MQTT message. This script can run as a service on a Raspberry Pi:

https://github.com/HomeSmartMesh/raspi/blob/master/py/thread_tags/thread_tags.py

This is all the python code that has to run on server side :

while True:
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    message = data.decode("utf-8")
    parts = message.split("{")
    topic = friendly_topic(parts[0])
    payload = '{'+parts[1].rstrip('\n')
    log.info(f"'{topic}' => {payload}")
    clientMQTT.publish(topic,payload)

Low power performance

measured with the PPK-II

PeriodAverage Current
deep sleep3.19 µA
sensors acquisition54 µA
wakeup cycle 1.7 sec including RF125 µA

Available on Tindie

View all 5 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates