Moca-hcho - Bluetooth 5 BLE formaldehyde/temperature/humidity sensor beacon

Overview

moca-hcho: Bluetooth 5 BLE formaldehyde/temperature/humidity sensor beacon

moca-hcho is a simple Bluetooth Low Energy sensor beacon that uses a Sensirion SFA30 Formaldehyde Sensor Module to sense formaldehyde/temperature/humidity. This information is measured and sent periodically using Bluetooth BLE advertisements, which can be received by any Bluetooth 4.0+ device within range.

Wall-mounted moca-hcho with banana for scale

Overview:

  • Enclosure: Hammond 1551V4WH vented sensor enclosure (wall-mountable)
  • Sensor: Sensirion SFA30 Formaldehyde sensor module
  • Microcontroller: Fanstel BT832 Bluetooth module with Nordic nRF52832
  • Power supply: external +5V power supply
  • Firmware (less than 1 kLOC) is written in Rust using the Embassy embedded async/await framework
  • Data is sent periodically using Bluetooth BLE advertisements that are very simple to send and receive
  • Not FCC/Bluetooth/etc certified/qualified but a "best effort" -style approach is used by using qualified BT832 module with integrated antenna + qualified Nordic S112 SoftDevice Bluetooth stack.

moca-hcho v1.0 assembled, without lid

Potential future improvements

  • Tidy up the code...currently the code is very crude and could use a lot of polish and some tests should be written
  • Improve environmental coupling of the sensor. The vented enclosure works fine, but SFA30 Design-In Guide suggests even better environmental coupling options
  • Add encryption. Unencrypted advertisements can be read or spoofed by anyone
  • Re-evaluate the feasibility of using a battery

License

Hardware is licensed under Creative Commons Attribution 4.0 International.

Firmware is licensed under either of

at your option.

You might also like...
BLEZ - Asynchronous Bluetooth Low Energy on Linux for Rust

BLEZ - Asynchronous Bluetooth Low Energy on Linux for Rust This library provides an asynchronous, fully featured interface to the Bluetooth Low Energy

Listen to bluetooth headphone keys (Linux only)

What Take action when you use your bluetooth headphone to indicate pause, play, next or previous. For Linux only. Why You can bind global keys to XF86

A simple yet powerful bluetooth client.
A simple yet powerful bluetooth client.

Overskride A Bluetooth and (soon to be) Obex client that is straight to the point, DE/WM agnostic, and beautiful (also soon to be) :D Prerequisites gt

๐Ÿ›œ TUI for managing bluetooth devices
๐Ÿ›œ TUI for managing bluetooth devices

TUI for managing bluetooth devices ๐Ÿ’ก Prerequisites A Linux based OS with bluez installed. ๐Ÿš€ Installation ๐Ÿ“ฅ Binary release You can download the pre-

Emulates an Edge hardware-based room sensor client purely as a CLI application

ambi_mock_client Usage You must have Rust installed to build ambi_mock_client. You can find documentation on installing Rust here. Using cargo run c

A simple program that provides DBus interface to control display temperature and brightness under wayland without flickering

wl-gammarelay-rs Like wl-gammarelay, but written in rust, runs on a single thread, has three times less SLOC and uses DBus (for simplicity). Dbus inte

Provides a mock Ambi client that emulates real sensor hardware such as an Edge client

ambi_mock_client Provides a mock Ambi client that emulates real sensor hardware such as an Edge client. Usage You must have Rust installed to build am

A tool to control the fan speed by monitoring the temperature of CPU via IPMI.

ipmi-fan-control A tool to control the fan speed by monitoring the temperature of CPU via IPMI. Why Our Dell R730 server's iDRAC is not works as expec

Arduino Uno 9 axis acceleration sensor (BMX055) reader implemented in Rust.

Arduino Uno Accelaration reader in Rust Components Arduino Uno (Probably possible with other AVR microcontrollers) BMX055 (Japanese website) Datasheet

Raspberry Pi's CPU and GPU temperature exporter for Prometheus consumption.
Raspberry Pi's CPU and GPU temperature exporter for Prometheus consumption.

Pi Temperature Exporter A simple application for collecting Raspberry Pi's CPU and GPU temperatures and exporting them for Prometheus consumption. Ins

Example of reading the BME280 sensor on an ESP32-C3 using Rust

Rust ESP32-C3 BME280 Example of reading the BME280 sensor on an ESP32-C3 using Rust Hardware: ESP32-C3 microcontroller BME280 sensor Breadboard Jump w

Owner
Joonas Javanainen
Joonas Javanainen
Arduino Uno 9 axis acceleration sensor (BMX055) reader implemented in Rust.

Arduino Uno Accelaration reader in Rust Components Arduino Uno (Probably possible with other AVR microcontrollers) BMX055 (Japanese website) Datasheet

Katsu Uchiyama 3 Dec 15, 2022
I2C driver for the AHT21B temperature and humidity sensor.

I2C driver for the AHT21B temperature and humidity sensor.

Rushen Wang 2 Mar 7, 2022
Rust embedded-HAL driver for the AHT20 temperature and humidity sensor.

AHT20-driver Rust embedded-HAL driver for the AHT20 temperature and humidity sensor. You can read my blog post AHT20 thermometer driver which details

Rikard Anglerud 3 Nov 15, 2022
Humidity & Temperature CLI datalogger for DHT22 sensor on Raspberry Pi.

Datalogger Humidity & Temperature CLI datalogger for DHT22 sensor on Raspberry Pi. Index Install Git Cargo Master branch Latest release from crates.io

Marco Radocchia 2 Aug 2, 2022
The hacker's BLE (bluetooth low energy) browser terminal app

Blendr is a terminal UI app for browsing BLE (Bluetooth Low Energy) devices. It allows you to inspect, search, connect, and analyze data coming from B

Dmitriy Kovalenko 120 Jul 4, 2023
This is my home environment setup for monitoring temperature and humidity

Home EnViroNment Motivation This is my IoT temperature and humidity monitoring solution for where i live. I found it cheaper to go buy sensors and hoo

Fredrik 1 Jan 5, 2022
Parity Shasper beacon chain implementation using the Substrate framework.

Parity Shasper This is an implementation of Serenity beacon chain by Parity Technologies. To learn more about Serenity and Ethereum's sharding plan, s

Parity Technologies 198 Nov 20, 2022
A crate for working with Ethereum beacon chain light client protocol messages. `no_std` friendly!

eth-lightclient-rs A crate for working with Ethereum beacon chain light client protocol messages. no_std friendly! !! For hacking and experimentation

Willem Olding 12 Jan 6, 2023
A toy-level BLE peripheral stack

bleps - A toy-level BLE peripheral stack This is a BLE peripheral stack in Rust. (no-std / no-alloc) To use it you need an implementation of embedded-

Bjรถrn Quentin 4 Oct 17, 2022
HAL for the CH58x family of microcontrollers. BLE 5.3, RISC-V Qingke V4.

ch58x-hal HAL for the CH58x RISC-V BLE microcotrollers from WCH. This crate is under random and active development. DO NOT USE in production. This sho

WCH MCU for Rust 3 Oct 24, 2023