Did you know your CircuitPython-compatible microcontroller probably has a thermometer inside? It does! microcontroller.cpu.temperature reflects the temperature inside the microcontroller itself, which will frequently be 3-4 degrees C above the ambient temperature. Note that temperatures are reported in Celsius, not Fahrenheit.
This is a great example to extend with the sensor(s) of your choice, as well as with a Real Time Clock (RTC) so that you know the time that each reading was recorded. We chose the internal temperature to make this work with a wide range of boards, as long you've configured mount_sd.py!
# SPDX-FileCopyrightText: 2017 Limor Fried for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import board
import digitalio
import microcontroller
# pylint: disable=unused-import
import mount_sd # You must create a module mount_sd.py that mounts your sd card!
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
# Use the filesystem as normal! Our files are under /sd
print("Logging temperature to filesystem")
# append to the file!
while True:
# open file for append
with open("/sd/temperature.txt", "a") as f:
led.value = True # turn on LED to indicate we're writing to the file
t = microcontroller.cpu.temperature
print("Temperature = %0.1f" % t)
f.write("%0.1f\n" % t)
led.value = False # turn off LED to indicate we're done
# file is saved
time.sleep(1)
Page last edited January 22, 2025
Text editor powered by tinymce.