Overview
In this guide, we will interface the Reed Switch with Raspberry Pi Pico for Magnet Detection. We will program Raspberry Pi Pico using MicroPython Code to detect the magnetic signal. Whenever a small magnet is placed close to the reed switch, then the buzzer triggers to play a music tone.
A reed switch is an electromagnetic switch used to control the flow of electricity in a circuit. They are made from two or more ferrous reeds encased within a small glass tube-like envelope, which become magnetized and move together or separate when a magnetic field is moved towards the switch.
Components Required
In this guide, I used Elecrow Raspberry Pi Pico Starter Kit to test different Modules. You can buy the kit and perform some other operations as well. From this kit, you can use the following components.
1. Raspberry Pi Pico Board – 1
2. Reed Switch Module – 1
3. Buzzer – 1
4. Breadboard – 1
5. Jumper Wires – 4
6. Micro-USB Cable – 1
Reed Switch
A reed switch is a sensor that closes the circuit in the presence of a magnetic field. Reed sensors can be used in many applications requiring contactless on/off.
The Reed Switch Sensor Module consists of a Reed Switch, resistors, capacitor, potentiometer, comparator LM393 IC, Power, and status LED in an integrated circuit.
Reed Switch Sensor Module consists of three pins i.e. VCC, GND, and DO. The digital out pin is connected to the output pin of the LM393 comparator IC. Then the output can be directly connected to the Microcontroller. When the Reed Switch sensor detects the magnetic field, it closes the circuit and the digital pin of the module connected to the LM393 IC goes high.
How to use Reed Switch with Raspberry Pi Pico
Now let us interface the Reed Switch Sensor Module with Raspberry Pi Pico & Buzzer. The connection diagram is very simple.
Connect the VCC, GND & Output of Reed Sensor Switch to VSYS, GND & GP0 of Raspberry Pi Pico respectively. Similarly, connect the positive terminal of Buzzer to GP14 of Raspberry Pi Pico & the negative terminal to GND.
MicroPython Code/Program
Copy the following code and paste it into the Thonny Editor.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
from machine import Pin,PWM import utime from utime import sleep Reed_switch = Pin(0, Pin.IN, Pin.PULL_UP) buzzer = PWM(Pin(14)) Tone_CL = [0, 131, 147, 165, 175, 196, 211, 248] # low C note frequency Tone_CM = [0, 262, 294, 330, 350, 393, 441, 495] # middle C note frequency Tone_CH = [0, 525, 589, 661, 700, 786, 882, 990] # high C note frequency # sheet music song_1 = [ Tone_CM[3], Tone_CM[5], Tone_CM[6], Tone_CM[3], Tone_CM[2], Tone_CM[3], Tone_CM[5], Tone_CM[6], Tone_CH[1], Tone_CM[6], Tone_CM[5], Tone_CM[1], Tone_CM[3], Tone_CM[2], Tone_CM[2], Tone_CM[3], Tone_CM[5], Tone_CM[2], Tone_CM[3], Tone_CM[3], Tone_CL[6], Tone_CL[6], Tone_CL[6], Tone_CM[1], Tone_CM[2], Tone_CM[3], Tone_CM[2], Tone_CL[7], Tone_CL[6], Tone_CM[1], Tone_CL[5] ] # The beat of the song beat_1 = [ 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3] # Buzzer play function def playtone(frequency): buzzer.duty_u16(1000) buzzer.freq(frequency) # Stop play function def bequiet(): buzzer.duty_u16(0) if __name__ == '__main__': while True: if Reed_switch.value() == 0: for i in range(1, len(song_1)): # play song playtone(song_1[i]) # Set the frequency of the song notes sleep(beat_1[i] * 0.5) # Delay a note by one beat * 0.5 seconds sleep(1) bequiet() |
Run the script and start testing the above-connected circuit.
Place the small magnet close to the reed switch, and then trigger the buzzer to play music by detecting the level signal change of the reed switch to achieve the effect of a music box.











