The MonkMakes Sensor Board for micro:bit allows you to sense sound level, temperature and light level.
Features
- 3V and GND connections can be made from either side and allow you to power a second board such as the MonkMakes Relay Board or MonkMakes Speaker.
- LED ‘power on’ indicator
- Reverse polarity protection
- All three sensors are analog and can be connected to pins P0, P1 and P2 using alligator clips.
Getting Started
Connecting to your micro:bit
You only have to wire up the sensors that you are actually using, but you could wire all the sensors up as shown below. The code examples below assume that pin 0 is used for sound, pin 1 for temperature and pin 2 for light. You can use any pin for any of the sensors, but remember to modify the code to match the pin you are using.
Sound
The Sensor for micro:bit uses a MEMs (microphone on a chip) and a pre-amplifier. The output of the sound sensor is connected to an analog input where it can be sampled. The sound signal varies about the 1.5V level. So, silence will produce an analog output of around 1.5V. When there is sound the analog readings will oscillate above and below the 1.5V level like this:
This is why 511 is subtracted from the readings in the code examples below.
JavaScript Blocks Editor
Here is an example of using the Sensor Board to display a bargraph to indicate the sound level. Click on the image below to try it out. Making a noise into the microphone will make the LEDs dance.
MicroPython
from microbit import *
def bargraph(a):
display.clear()
for y in range(0, 5):
if a > y:
for x in range(0, 5):
display.set_pixel(x, 4-y, 9)
while True:
sound_level = (pin0.read_analog() - 511) / 100
bargraph(sound_level)
Temperature
The Sensor for micro:bit uses a thermistor to measure temperature. The temperature output from the board is a voltage that indicates the temperature. This is then measured using an analog input on the micro:bit.
The calculations for converting this voltage reading to an actual temperature are quite complicated and so the code examples here will only give a rough idea of temperature.
If you want your temperatures in Fahrenheit, then multiply the temperature in degrees C by 9, divide the result by 5 and then add 32.
JAVASCRIPT BLOCKS EDITOR
This is an example of using the Sensor Board to display the temperature, try putting your finger on the temperature sensor to warm it up. You can run the example below by clicking on it.
MicroPython
from microbit import *
while True:
reading = pin1.read_analog()
temp_c = int(reading / 13.33 - 14)
display.scroll(str(temp_c))
sleep(500)
Light
The light sensor uses a phototransistor to measure the light level and produces an output voltage that increases as the light level increases. Here is a guide to the kind of light level you might get from the sensor under different conditions (0 to 1023).
- Dark 0 to 3
- Dimly lit room 6 to 10
- Indoors directly under a light 10 to 50
- Outdoors (dull day) 100 to 200
- Outdoors (sunny day) 800 to 900
Even though the maximum analog read value is 1023, the maximum reading from this sensor is around 900.
JAVASCRIPT BLOCKS EDITOR
Here is an example of using the Sensor Board to display a bargraph to indicate the light level. Click on the image below to try it out. Put your finger over the light sensor to make it dark or shine a flash-light onto it to make more LEDs light up.
MicroPython
from microbit import *
def bargraph(a):
display.clear()
for y in range(0, 5):
if a > y:
for x in range(0, 5):
display.set_pixel(x, 4-y, 9)
while True:
light_level = pin2.read_analog() / 10
bargraph(light_level)