Go Down

Topic: How to make a weather station - and fix temperature sensor readings on the Sense (Read 107 times) previous topic - next topic

Florin_Andrei

The Nano 33 Sense has a lot of sensors. It could be the main hardware powering a weather station. With it, you could capture metrics such as:

- temperature
- relative humidity
- air pressure
- acceleration in 3D (or just gravity when not moving - might work as an earthquake detector)
- gyroscope data (rotation, in degrees / second) - should be near zero for a stationary device
- magnetic field in 3D (Earth's own field most of the time)
- light: RGB components plus overall intensity
- noise

It's quite awesome to see how much data you could get with this small device.

With a bit of extra hardware, such as a Raspberry Pi, and some Python code, you could collect that data, parse it, and send it to Graphite for long term storage. Visualization could be done with Grafana.

Here's the project's main page:

https://github.com/FlorinAndrei/WeatherStation

Keep in mind, this is work in progress, which is why I'm simply providing a link. Things may change.




One important thing to note: the temperature sensor on the Nano 33 seems off by many degrees - as much as 7 deg Celsius. That's a lot. But the error appears to be linear, and almost entirely due to a bad offset. The slope is close to 1, which is good.

The project provides a Jupyter notebook to perform linear regression and determine the correction parameters for the sensor. If you collect enough data points, you can do the linear regression yourself - just remove all numbers from the CSV file (but leave the header alone), put your own data points in there, then run the notebook.

I suspect the corrections are similar for all Nano 33 devices, but I don't know for sure. If your results differ, please post here your corrections, and we may then figure out the spread of the error between different devices.

pert

Great project. Thanks so much for sharing!

One important thing to note: the temperature sensor on the Nano 33 seems off by many degrees - as much as 7 deg Celsius.
The temperature sensor is fine. The problem is that it's sensing the temperature at the Nano 33 BLE Sense's PCB, which is higher than ambient temperature due to heating from the electronics on the board. Some documentation has recently been added about this here:
https://www.arduino.cc/en/Guide/NANO33BLESense#toc10
Quote
NOTE: to get reliable readings for temperature and humidity, the sensor should not be influenced by thermal sources in the surrounding. The sensor readings will be influenced by board self heating, caused mainly by the processor and secondarily by the on board DC-DC.

To offset the board self heating we suggest to

    either take into account the temperature rise, which depends on the software, is independent from ambient temperature, but may depend from ventilation and other external factors, so it will be difficult to assess and take as an offset
    or to reduce the board self heating itself making the temperature offset negligible.


In order to minimise self heating it's recommended to use the lowest possible power modes and reduce to a minimum the processor activity. In addition to this, it is also possible to power the board bypassing the DC-DC regulator cutting the link between the 3.3V pads:


After this mod, the board shall be powered from its 3.3V and GND input pins.
When you cut the link between the two 3.3V pads, you isolate the DC/DC 5V->3.3 V circuit and the board can't be programmed using the USB standard procedure. To recover this functionality you need to restore the connection between the two pads with a drop of solder. We therefore suggest that you cut the connection when you have finalised your sketch and the board has been programmed with the final version.

Florin_Andrei

Great project. Thanks so much for sharing!
The temperature sensor is fine. The problem is that it's sensing the temperature at the Nano 33 BLE Sense's PCB, which is higher than ambient temperature due to heating from the electronics on the board. Some documentation has recently been added about this here:
https://www.arduino.cc/en/Guide/NANO33BLESense#toc10
Excellent point.

I've added a note to that effect on the project's README, and linked to the page you've provided. Thanks!

Go Up