Mission
Build this
Build a passive-buzzer instrument with a labelled phrase control, immediate mute, and conducting arm for short phrases derived from live temperature and recent entrance activity.
Borrowed parts are labelled below and have a fallback. The registered device ID is fixed; sensing and behaviour decisions remain yours.
Bill of materials
Parts
| Source | Part | Fallback |
|---|---|---|
| ● kit | Passive buzzer and 100 Ω resistor | — |
| ● kit | Potentiometer and push button | — |
| ● kit | SG90 servo | — |
Disconnect USB before rewiring. Motors, the relay, and the servo need appropriate power and a shared ground. Never drive an actuator from the ESP32 3V3 pin.
Your invitation
Let the garden become audible without turning it into an alarm
The Garden Sonifier reads temperature and entrance activity, then composes short phrases from the newest trusted values. A listener should be able to notice meaningful differences without being trapped beside a machine that never stops announcing itself.
Sound can reveal patterns that a screen hides, but it is not automatically pleasant or accessible. Your instrument needs silence, a physical mute, a bounded duty cycle, and an alternative explanation for visitors who cannot or do not want to listen.
If the mute is hard to find, slow to respond, or quietly ignored by the code, it is not a mute.
The central idea
Give different data different musical jobs
Pitch or register
Warmer values may move a phrase higher. Clamp the useful range so one extreme reading does not become an extreme tone.
Rhythm or density
New counts in a fixed window may add notes or shorten gaps. The lifetime total is not a tempo.
Silence or uncertainty
Stale input should thin or stop the phrase, not continue sounding confident forever.
When two inputs both control everything, listeners cannot know which one changed. Begin with one clearly audible dimension per variable, then test whether they remain distinguishable in combination.
Turn a total into a rhythm
Count the new passages, not every passage that ever happened
If the new total is smaller, do not create negative percussion. Store it as the beginning of a new window and show that recent activity is temporarily unknown.
Wiring
Build the mute before composing the second phrase
The potentiometer is a software control for phrase rate or density; it is not a calibrated acoustic volume control. The button provides an immediate, unambiguous mute. A physical cover over the buzzer opening may provide additional passive attenuation.
The power rule: The potentiometer and inputs use 3V3. The small passive buzzer is current-limited by 100 Ω. The servo uses a separate 5 V supply. Join all grounds.
Bench referenceOpen the exact wiring map
| ESP32 pin | Part | Part marking | Carries |
|---|---|---|---|
3V3 | Potentiometer | outer leg | 3V3 power |
GPIO 34 | Potentiometer | centre wiper | Analog voltage — phrase density or rate control |
GND | Potentiometer | other outer leg | Ground |
GPIO 32 | MUTE button | one leg | Digital in/out — configure INPUT_PULLUP |
GND | MUTE button | other leg | Ground |
GPIO 25 | Passive buzzer | + via 100 Ω | PWM to actuator — short bounded phrases |
GND | Passive buzzer | − | Ground |
GPIO 18 | SG90 servo | signal (orange) | PWM to actuator — conducting arm |
external 5 V | SG90 servo | power (red) | 5V power — separate supply |
GND | SG90 servo | ground (brown) | Ground — join servo and ESP32 grounds |
Confirm that the sounder is a small passive piezo; use a driver module for an unknown or higher-current part. Never power the servo from ESP32 3V3. Keep sound brief in the shared visitor centre.
- 3V3 power
- Analog voltage
- Ground
- Digital in/out
- PWM to actuator
- 5V power
The potentiometer controls a documented software parameter such as phrase density. Label it honestly. The mute button must stop any new sound immediately.
Write the score as a table
Make the mapping inspectable before making it beautiful
| Input condition | Pitch/register | Rhythm/density | Phrase limit | Arm |
|---|---|---|---|---|
| cool + quiet | ___ | ___ | ___ s | ___ |
| warm + quiet | ___ | same activity cue | ___ s | ___ |
| cool + busy | same temperature cue | ___ | ___ s | ___ |
| stale input | silence / sparse cue | silence / sparse cue | ___ s | rest |
Your team decides:
- Which changes deserve a new phrase rather than continuous sound?
- What is the maximum sounding time per minute?
- What does the potentiometer control, and how is that label tested?
- What visual or written route communicates the same states without sound?
Your listening study
Test recognition and tolerance as separate questions
- Prepare at least three replayable data scenes.
Include changes where only temperature moves, only activity moves, and both move.
- Ask at least five unfamiliar listeners to label them.
Record which data dimension they heard and how confident they felt.
- Run a room-sharing test.
Play the normal schedule for a fixed period. Ask whether its frequency and duration remain acceptable; do not call this a sound-level measurement without a meter.
- Test control and silence.
Time how quickly a new user finds mute, and verify that stale data or quiet hours stop new phrases.
| Scene | Intended difference | Listener label | Correct? | Tolerable? | Mute time |
|---|---|---|---|---|---|
| A | temperature only | ___ | yes / no | yes / no | ___ s |
| B | activity only | ___ | yes / no | yes / no | ___ s |
| C | both | ___ | yes / no | yes / no | ___ s |
When the music makes the wrong claim
Trace each audible change back to one input
The tempo accelerates all day
You are mapping the lifetime visitor total rather than change over a recent window. Log both totals and the calculated difference.
Listeners hear “alarm” in every warm phrase
High pitch, repetition, abrupt onset, or the musical interval may carry urgency you did not intend. Redesign the vocabulary and retest the label.
The mute works only after the phrase ends
A blocking melody prevents input handling. Schedule notes from elapsed time and check mute between every note.
The knob says volume but changes rhythm
The physical label is making a false promise. Rename it “density” or “rate,” or add hardware that genuinely controls amplitude.
Old data keeps singing
Track the arrival age of each subscribed topic independently. A phrase using two inputs must reveal when either one is stale.
Choose your listening question
What kind of sonification team will you become?
The mapping composers
Make independent musical dimensions for temperature and activity, then explore how combinations remain understandable.
The perception testers
Compare alternative pitches, rhythms, and phrase lengths using recognition rather than personal preference alone.
The considerate hosts
Make mute discovery, quiet intervals, bounded duty cycle, and a non-audio companion display the heart of the project.
A calm way through the build
Collect four small wins
gs-01says hello.Join the garden silently with an
okstatus.- One knob value and mute event are reliable.
Build human control before the instrument.
- One input produces one bounded phrase.
Schedule notes without blocking, then add the second input.
- Three replay scenes remain distinguishable.
Add the conductor arm and invite listeners.
The garden handshake
Share what you found
These names are the rigid part of the project. They let another team find your work without knowing what you called the variables in your code.
Sonifier operating state
garden/visitor-centre/sonifier/gs-01/statusUnit: enum
Listen beyond your own device.
garden/greenhouse-1/climate-node/gm-01/temperature and garden/entrance/counter/gk-01/countTemperature may control one musical dimension. Derive recent passage activity from differences in Gate Keeper’s cumulative count before mapping it to another.
Finish line
Ready to introduce to the garden
gs-01 stays online and publishes a registered status such as ok, active, warning, or sleeping.
The reject feed stays clear after the final code starts.
The sonifier reads both required topics, handles count resets, and tracks each input’s age.
Phrases and conducting gestures are bounded and non-blocking; the physical mute stops new sound immediately.
The build log contains the mapping table, three replay scenes, five listener labels, recognition results, room-sharing feedback, duty-cycle limit, and mute-discovery time.
The buzzer is current-safe, sound is restrained, the servo is separately powered, a non-audio explanation is present, and the device label can be scanned.
The Garden Sonifier succeeds when sound reveals a pattern and then willingly makes room for silence. Attention is borrowed from the listener, never owed.