Charter 19 · read · available project

Garden Sonifier

Accessible Data Mapping

Let the garden become audible while treating silence, mute, and other people’s attention as design requirements.

Difficulty
★★☆
Prefix
gs
Zone
visitor-centre
Type
sonifier
Device
gs-01
Build time
8 hours

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.

One kit, one team repository.

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

SourcePartFallback
● kitPassive buzzer and 100 Ω resistor—
● kitPotentiometer and push button—
● kitSG90 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.

The room-sharing rule

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

temperature

Pitch or register

Warmer values may move a phrase higher. Clamp the useful range so one extreme reading does not become an extreme tone.

recent passages

Rhythm or density

New counts in a fixed window may add notes or shorten gaps. The lifetime total is not a tempo.

data age

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

earlier total506
new total511
five-minute activity5 events
A restarted counter needs a new baseline.

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
WiringPhrase control, immediate mute, passive buzzer, and conducting arm
ESP323V3Potentiometerouter legGPIO 34Potentiometercentre wiperGNDPotentiometerother outer legGPIO 32MUTE buttonone legGNDMUTE buttonother legGPIO 25Passive buzzer+ via 100 ΩGNDPassive buzzer−GPIO 18SG90 servosignal (orange)external 5 VSG90 servopower (red)GNDSG90 servoground (brown)
ESP32 pinPartPart markingCarries
3V3Potentiometerouter leg3V3 power
GPIO 34Potentiometercentre wiperAnalog voltage — phrase density or rate control
GNDPotentiometerother outer legGround
GPIO 32MUTE buttonone legDigital in/out — configure INPUT_PULLUP
GNDMUTE buttonother legGround
GPIO 25Passive buzzer+ via 100 ΩPWM to actuator — short bounded phrases
GNDPassive buzzer−Ground
GPIO 18SG90 servosignal (orange)PWM to actuator — conducting arm
external 5 VSG90 servopower (red)5V power — separate supply
GNDSG90 servoground (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 conditionPitch/registerRhythm/densityPhrase limitArm
cool + quiet_________ s___
warm + quiet___same activity cue___ s___
cool + busysame temperature cue______ s___
stale inputsilence / sparse cuesilence / sparse cue___ srest

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

  1. Prepare at least three replayable data scenes.

    Include changes where only temperature moves, only activity moves, and both move.

  2. Ask at least five unfamiliar listeners to label them.

    Record which data dimension they heard and how confident they felt.

  3. 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.

  4. Test control and silence.

    Time how quickly a new user finds mute, and verify that stale data or quiet hours stop new phrases.

SceneIntended differenceListener labelCorrect?Tolerable?Mute time
Atemperature only___yes / noyes / no___ s
Bactivity only___yes / noyes / no___ s
Cboth___yes / noyes / 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

  1. gs-01 says hello.

    Join the garden silently with an ok status.

  2. One knob value and mute event are reliable.

    Build human control before the instrument.

  3. One input produces one bounded phrase.

    Schedule notes without blocking, then add the second input.

  4. 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.

When state changes

Sonifier operating state

garden/visitor-centre/sonifier/gs-01/status

Unit: enum

Listen beyond your own device.

garden/greenhouse-1/climate-node/gm-01/temperature and garden/entrance/counter/gk-01/count

Temperature 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.

Backbone now

Live status

Updates from the same public event stream

Checking gs-01…