Canique Ambience

Ultra low power monitoring of temperature, humidity, pressure, reed contacts and motion. With Encryption!

Similar projects worth following
There are plenty of environmental sensors out there transmitting measured data wirelessly. But in a world where energy has become a bottleneck and where oil prices hit record highs, each and every device that is built should be built with maximum energy efficiency in mind.

Canique Ambience has been designed from the very first minute with the goal to draw as little power as is technically possible.
It is the successor of Canique Climat (, uses the same hardware and software base, but has more sensors packed on the PCB.
It can run off a single AA battery from 9 to 20 years while transmitting data every 30 seconds. It draws such a little amount of energy that its battery lifetime is mostly restricted by the battery shelf life itself.

Time based measurements include: temperature, relative humidity, barometric pressure
Transmissions triggered by the environment include: reed open/closed, knock/tilt

Use Cases

Reed Sensor

  • Count how many times a door is opened
  • Detect a left open door/window
  • Monitor a drawer, window, refrigerator door etc.
  • Detect intrusion into an area by attaching a trip wire to the reed contacts
  • Use as a call button - to call a taxi from a taxi station nearby e.g.
  • Use like an Amazon Dash Button to automate a task when a button is pressed: ordering something, controling a distant relay that listens for MQTT messages, controling some home automation device etc.

Motion Sensor

  • Detect a knock on a door
  • Detect opening of a window
  • Detect whether a machine (e.g. washing machine, industrial appliance) is working or not *
  • Detect movement of an elevator *

* could be supported in future firmware

Temp./Humidity/Pressure sensor

  • Calculate absolute humidity
  • Weather forecast
  • Measure elevation level
  • Find out which floor an elevator is on
  • Use data to control air ventilation or heating/cooling
  • Warn about mould on high relative humidity levels

Battery Life vs Precision vs Transmission Interval

A "trick" when trying to achieve a low average power consumption is to transmit infrequently: say every 5 minutes. This sacrifices data density for power efficiency. This easy route has not been chosen in this project. The transmission interval is fixed at 0.5 minutes. Note that the sensor could even achieve a higher battery lifetime if the transmission was based on a minimum delta between 2 measured datapoints, e.g. if we changed the code to only transmit if the temperature has changed by at least 0.05°C since the last transmission (same for pressure/humidity) then we might save some substantial battery juice because the transmission would happen more infrequently. Please also note that in such a case waiting for an acknowledgment from the receiver is a good idea because the "last transmission" from the view of the sender is not necessarily the "last transmission" from the view of the receiver. Missed packets can always occur.

A different approach to increasing battery lifetime is to keep data imprecise. The less bytes you send, the faster you'll be finished. The faster you're finished, the less energy you've consumed. Sending the temperature without decimals e.g. would fit in 1 single byte. Canique Ambience does not go this route either.

Temperature (°C) is transmitted with 2 decimal places, relative humidity (%) is transmitted with 2 decimal places, barometric pressure (Pascal) is transmitted with 1 decimal place. So: no sacrifice here either. A compression is applied to the transmitted data, though, to save some valuable battery power.

We already mentioned that a fast transmission saves power. Now you could be tempted to transmit at maximum speed which in the case of the used radio chip is 300kb/s using FSK modulation. The drawback of this approach is that you're trading off speed for range. Higher speed means lower sensitivity, means lower range.
The sensor introduced here transmits at 25kb/s, so: range has not been sacrificed either.

Battery Life

This is a comparison table for the estimated minimum battery life assuming max. transmission power (+13dBm), a transmission interval of 30 seconds and a battery self discharge of 15% over the entire lifetime.

Note that with lower transmission power, the battery life time will increase.

MeasurementBatteryMin. Batt. Life
Rel. Humidity,
Energizer Ultimate Lithium
3000 mAh
13 years
Rel. Humidity,
Energizer Ultimate Lithium
3000 mAh
min. TX power (-18 dBm)
20 years
Rel. Humidity,
Alkaline 2800 mAh10 years
Rel. Humidity,
Knock detection
Energizer Ultimate Lithium
3000 mAh
10 years
Rel. Humidity,
Knock detection
Energizer Ultimate Lithium
3000 mAh
min. TX power (-18 dBm)
13 years
Rel. Humidity,
Knock detection
Alkaline 2800 mAh9 years
Rel. Humidity,
Tilt detection
Energizer Ultimate Lithium
3000 mAh
13 years

"Knock detection"...

Read more »

  • News Update 2023

    canique08/04/2023 at 11:40 0 comments

    I'm currently working on a LoRa version of this project with even lower power consumption:

    around 400nA powered by 1.8V or

    1 uA powered by a 1.5V battery

    with all sensors shut down.

    It comes with 3 separate voltage rails for EEPROM, sensors and the LoRa chip.

    It features an external connector for connecting a sensor externally.

  • Current consumption of Canique Ambience with pulse counter

    canique03/29/2023 at 17:44 0 comments

    The last 2 videos posted here are showing the current consumption of Canique Ambience (rev 1.2.0) with its pulse counter connected to the RPM signal of a fan.

    The values measured (input voltage: 1.84V) are:

    a) 1.05uA with the fan not spinning

    b) 1.25uA with the fan spinning @ 900 rpm

    Of course you could just as well connect the pulse counter to a rain gauge, a button (to count button presses) or some similar switch.

  • Ultra low power Pulse Counter

    canique02/19/2023 at 10:44 0 comments

    I'm implementing an additional pulse counter connector now. The reed connector will be a 4pin connector - 2 pins for a reed sensor, 2 pins for a pulse counter.

    Canique Ambience will be able to count pulses, e.g.

    • from a rain gauge or
    • from gas/water/electricity meters or
    • from a fan's tacho signal to calculate the RPM

     with very low quiescent current.

    Technically I will be pulling up the input pin via a 1Mohm resistor to 1.8 volt and current will only flow when a pulse is driving the input low. So if there is a 10ms pulse, then 1.8 µA will flow for 10ms.

    The pulse counter itself will draw about 10nA.

    If we assume that a pulse is coming in every second (1Hz), the average quiescent current that this circuit introduces would be 18nA + 10nA = 28nA. If pulses are coming in at a lower rate, then this figure will approach 10nA. If they come in at a higher rate, then average current will be above 28nA.

    Another factor is the pulse duration. The higher the pulse duration, the higher the current consumption.

    And don't forget the cable capacitance. A long cable will have a high capacitance. So even after releasing the pulse counter input, it can take a few ms for the capacitance of the cable to charge up - during that period current will flow to charge the cable capacitance.

    Let's do a small calculation here. Assumption: Cable Capacitance = 1.6nF (80pF/meter, 20 meter cable)

    1.6nF * 1.8V = 2.88 nanoCoulomb

    2.88 nC = 2.88 nA * s = 2.88 nA for a 1 second period => we have to provide a current of 2.88 nA for 1 second to fully charge the cable capacitance

    If the pulse rate is 1Hz, then we'd have an additional 2.88 nA of consumption due to the cable capacitance.

    Next thing to consider is a debouncing circuit. The 1M pullup resistor will form an RC filter with a small capacitor (~1nF) so as to not count any bouncing in the switch. The reed sensor input also has an RC filter.

    Until now I've written about driving the input low during a pulse. Is the opposite possible too? Driving the input high? If Canique Ambience is configured for that kind of operation (means: no pullup resistor), then yes.

    An external device, sharing the same ground, can send pulses with up to 5V. The quiescent current of the pulse counter in Canique Ambience will be 10nA with no additional current since there is no pullup resistor active.

    What are the differences between the reed sensor and the pulse counter?

    Reed SensorPulse Counter
    Supported Drive Low PeriodLong (can be hours or days)Short (ms)
    TransmissionImmediatelyTime based
    Power Consumption240nA only while switch closeddriving low: 1.8 µA during pulse +
    10nA permanent
    driving high: 10nA
    Max Frequencya few Hza couple of Hundred Hz

  • Roadmap 2023 and current state

    canique02/15/2023 at 19:50 0 comments

    Currently this platform is also available with an external 4 or 5 pin header (100kHz I2C) to connect external sensors (up to 2m cable) to it. As of now it only has support for an external temperature/humidity sensor board.

    In the course of the year it will support external ambient light measurements (in LUX).

    Experiments with LoRa are also planned for 2023, especially with spreading factor SF5. The goal is to communicate via LoRa without affecting battery lifetime. This is like trying to take a shower without getting wet, but this won't keep me from trying it.

  • Roadmap?

    canique08/28/2022 at 18:02 0 comments

    An ambient light sensor is on the roadmap for 2022. It will be part of the Canique Ambience sensor.

    A 3D case is planned - ETA unknown yet

  • Could power consumption be reduced even further?

    canique08/28/2022 at 17:58 0 comments


    1. Upgrade MCU: Cortex M4 instead of Cortex M0+. This increases cost, though.
    2. 2 batteries instead of 1. This decreases cost, increases size and decreases power consumption. It's a tradeoff.
    3. Delta transmission: Only transmit when delta between last transmitted and current transmitted datapoint is above a certain threshold.

View all 6 project logs

  • 1
    Create a free HiveMQ Cloud account

    First off, the requirements for the following setup instructions are:

    • A Canique Ambience sensor
    • A Canique Pico Gateway
    • an MQTT server that is reachable (can be in local network or in the internet): we will use a free HiveMQ MQTT server in the Azure cloud infrastructure here but you're free to change this.

    Visit and create a free account.

    When asked, select "Azure" as the cloud provider (although "aws" should be fine too).
    Note the URL and the TLS port of your cluster.
    Then create MQTT Client Credentials for your cluster and note them.

  • 2
    Note IP of your Canique Pico Gateway

    Get the IP of your Canique Pico Gateway. If you log into the administration console of your router, it will show the IP.

  • 3
    Enter MQTT credentials

    Browse to http://your-pico-gateway-ip (use IP from step 2) and set custom MQTT server settings using the data from step 1

    Save the settings, wait a couple of seconds and reload the settings page. 

    It should display that you're connected to the HiveMQ cluster.

View all 4 instructions

Enjoy this project?



kwhiteusc wrote 02/19/2023 at 05:00 point

When will this be available for purchase?

  Are you sure? yes | no

canique wrote 02/19/2023 at 10:10 point

Probably somewhere between April and June.

  Are you sure? yes | no

bkindel wrote 02/16/2023 at 14:01 point

I understand that your project is closed source, but was wondering if you could share which Cortex M0+ MCU you were using?

  Are you sure? yes | no

canique wrote 02/16/2023 at 14:53 point

I'm using an STM32L0.

IIRC the closest competitor, when deciding which MCU to use a couple of years ago, was NXP.

  Are you sure? yes | no

bkindel wrote 02/16/2023 at 15:06 point

Thanks for the quick reply.  My buddy and I have a board that we designed that uses the ATSAMD21 and the RFM69 radio.  We could never get the current consumption down as low as what you have indicated.  I think around 6uA is the lowest we ever achieved.

  Are you sure? yes | no

canique wrote 02/16/2023 at 15:11 point

The reason why I early decided against Microchip was iirc, that their current consumption at elevated temperatures was a catastrophy. So even if you achieved 1uA, that would not stay at that level once temperatures get high.

  Are you sure? yes | no

strange.rand wrote 02/21/2023 at 10:20 point

I use Microchip (328p) in a similar project powered by a supercapacitor, and the overall power consumption is 5uA in sleep mode, but I didn't think it drifts significantly with temperature. Probably, I'll re-measure while heating the board with a heat gun.

  Are you sure? yes | no

canique wrote 02/21/2023 at 10:49 point

44uA are stated max for power down mode for Atmega328p @ 3V. Temperatures are not stated.

Atmega328p needs at least 2.7V x your 5uA current = 13.5 uW (for 8MHz operation)

Cortex M0+ needs 1.8V x 0.8uA current = 1.44uW (for 32 MHz operation)

This is almost ten times less power (disregarding that the Cortex M0+ is more than 4 times faster: 32 MHz vs 8, 32 bit vs 8).

When referring to temperatures, I was referring to the ATSAMD devices, though.

  Are you sure? yes | no

strange.rand wrote 02/21/2023 at 20:33 point

Atmega328p can work from 1.8V at 4MHz. In my case, it's connected directly to a supercapacitor, and the voltage range is 1.8V-3.6V.

But yeah, I fully agree that Cortex M0+ is much faster, consumes less, and is just a newer chip.

  Are you sure? yes | no

Carel Lubbe wrote 02/16/2023 at 10:23 point

Hi Canique,

This is an awesome concept / Idea.... congrats on the progress so far. I already have a few different uses for this.  Really useful project!   Once you have added a daylight / light  sensor it nearly ticks all the boxes for my use case.... please consider to add a frequency meter to your vibration sensor if at all possible... (different frequencies = different causes for the vibration detected)

Thanks for sharing your project and keep up the progress mate.

  Are you sure? yes | no

canique wrote 02/16/2023 at 11:44 point

Hello Carel,

The challenge with the daylight sensor is the enclosure. There is a formula that mandates how big the hole in the enclosure must be for the ALS (ambient light sensor) to measure correct levels. The challenge is: placing the hole at the exact correct position AND somehow closing it with a transparent glass.

As an "intermediate solution" I have therefore put the ALS on its own board and leave it up to the customer how he mounts it in an enclosure.

The vibration/motion sensor measures G forces in 3 axis actually - with a configurable measurement interval up to 200Hz (every 5ms) - higher rates are only possible at the expense of high current consumption. To gather a frequency spectrum from the measurements you'd need an onboard FFT calculation. I can't say whether the MCU/power budget would be sufficient for this task.

An alternative approach would be AI where certain vibration patterns are detected directly on the board, but I haven't done research in that field.

  Are you sure? yes | no

Carel Lubbe wrote 02/16/2023 at 12:01 point

Awesome .... thanks for the reply.

  Are you sure? yes | no

Hoolio Wobbits wrote 02/15/2023 at 20:45 point

Hi, awesome work :) but having read your comment that this is not an open source project my interest waned greatly.  My only interest in following the project now will be if the end result is ultimately cost effective.  You would have a good idea of the BOM cost already, then there's recovery of your development costs and profit  margin etc etc.  Anyhow; are you willing to divulge how much are these likely to be? just a rough idea is fine.

  Are you sure? yes | no

canique wrote 02/16/2023 at 09:31 point

Hello Hoolio :)

To recover my development costs I'd need to sell many thousand devices :)

The sibling of this project "Canique Climat" (temp/humidity sensor) is being sold for ~44€ without enclosure.

The price of Canique Ambience with all sensors on it will be in the range 55-60€. I cannot tell whether end users deem this as high, to me, knowing the effort involved, it's extremely low priced. 

  Are you sure? yes | no

max wrote 02/15/2023 at 20:03 point

Can you explain why the Arm Cortex is preferable to any of the typical Arduino processors which also support powering down of various devices, low clocking, low power...etc?

  Are you sure? yes | no

canique wrote 02/15/2023 at 20:15 point

There's a plethora of reasons:

Cortex M0+ MCUs have much lower deepsleep current (below 1uA)

32Bit vs 8 Bit - even using the same clock speed you're faster running calculations

M0+ runs at only 1V8 at full speed - lower voltage means less power drawn

they can have a very power efficient RTC 

  Are you sure? yes | no

Michael Shulman wrote 02/15/2023 at 19:56 point

Do you have a parts list and board layout?

  Are you sure? yes | no

canique wrote 02/15/2023 at 20:03 point

Aalas this is not open source. Firmware is heavily protected too.

  Are you sure? yes | no

Shane Bekker wrote 02/15/2023 at 19:13 point

Is this a lora radio module and can it be replaced with a different frequency?

  Are you sure? yes | no

canique wrote 02/15/2023 at 19:43 point

Thank you for your interest, Shane.

No, this is not a LoRa Module, it is an RFM69(C)W.

Yes, it can be replaced with a different frequency.

Regarding LoRa: There is a possibility that I will offer the very same board with LoRa in the course of the year. Let me say, though, that transmission times with Lora are considerably higher so this will have an impact on battery performance.

When I've done some experimenting, I can write a log post about this.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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