

intimations piec
- Size
- 295.1 × 84 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 46
- Nets
- 106
- Pads
- 236
- Tracks, vias
- 218, 0
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 5 Dec 2023
- Updated
- 12 Jul 2024
Overview
Mhk is an open-source printed circuit board by lan-ensad, from the lan-ensad/intimations repository on GitHub, published under the CC0-1.0 licence. It is a 4-layer board of 295.1 × 84 mm with 46 parts on 106 nets, routed with 218 tracks and 0 vias.
README
readme.mdIntimations of Shanshui
Interactive Sculpture

| Artists/Creators | Vivian Wang, Martin De Bie, Olivier Bienz |
| Title, Year | Intimations of Shanshui, 2024 |
| Exhibition Location | Shanshui: Echoes & Signals, M+ Hong Kong |
| Media | Interactive textile sculpture with sound, light, movement, and sensors |
| Logic/Description | For Intimations, we created a structural concept around the idea of circular layers. This sculpture crafted from fabric creates a focused and immersive experience blending sound, movement, and light. Variations in sound, light and movement respond to human presence and circumnavigation, unfolding in a slow and deliberate choreography of the different elements. The work is an ode to Shanshui painting, bridging tradition and modernity through an interactive exchange and the composition of textile and sound, with special detail given to how lighting dramatically alters the visual impact of the mountains. |
Interaction & Space Mapping Logic
There are 6 distance sensors on the sculpture. They are labelled S_00 to S_05. S_02 and S_05 are at the entry and exit points of the display location called the Breakout Room. To trigger sound and light activity, we partitioned the interaction zones into 6 zones labelled A, B, C, D, E and F.
Sounds are activated by presence within zones. All zones have an inner and an outer zone and these measurements are not the same for each zone. The rationale is to have something a little more organic in shape. For example, Zone D has an inner zone that goes up to 500mm, and its outer zone extends up to 2000mm whereas Zone F has an inner zone of 400mm and the outer extends only up to 1100mm. Anything outside of 1100mm will register a value on the sensor but it will not trigger a sound. We also programmed sounds to trigger when 2 zones register a value at the same time, meaning the sensors in these zones have to sense two separate persons in order to activate a sound. Certain sounds will also only trigger after a delay value of say 29656ms in the outer zone of Zone D. This gives some nuance and variation to the sounds and does not create cacophony for every interaction that happens each time a sensor value is registered. These 2-zone combinations are also varied between inner and outer zones. For each specific zone within zones A-F, there are also sometimes 2 or 3 files that are randomised to create more diverse combinations of sounds.
Light colour combinations are also varied. Each concentric circle has between 3-5 sectors of LEDs that light up. The colour sectors are irregular, so as to create organic combinations of light and shadow play between the layers of textile. Different behaviours are triggered depending of how many zones are active during a certain amount of time. Each colour sequence is scripted to create a sense of rhythm and movement and the colours are selected according to a predefined colour palette.
Movement of the 4 circular rings/layers of textile mountains are programmed and follow its own logic. Between 90000ms to 120000ms, different combinations of rings 1,2,3 will move. The duration of movement varies between 3000ms and 20000ms. The direction of the oscillation is randomised. The rings could move in the same direction or in opposite directions. Once a day, all 4 rings move.

network diagram

mechanics
Principles assembly

You can find all details and print parts in the 3d/ folder.
electronics
All firmeware available in firmeware/< shield > folder
All schematics and gerber available in pcb/mhk folder in KiCad project format
components :
-
Global:
- Raspberry Pi
- DAC+
- router, setup for zeroTier vpn support
- PowerSupply +5V, for the Raspberry Pi and the shields
- PowerSupply +12V, for the router
-
Motors Shield:
- dagu WT751, motor 6Vcc
- drv8838, driver motor, 0→11V
- optical endstop
- Raspberry Pico Wifi, micropython
-
Leds Shield:
- WS2812 led strip, 5V
- Raspberry Pico Wifi, micropython
-
Sensors Shield:
- HC-SR04, ultrasonic sensors
- Raspberry Pico Wifi, micropython
All details available in pcb/mhk KiCad project
Installation
Raspberry
DAC+
- Install
Plug the shield on the RaspberryPi
sudo nano /boot/config.txt --line
l.6. > comment #dtparam=i2c_arm=on
l.7. > enable dtparam=i2s=on
l.8. > comment #dtparam=spi=on
l.11 > comment #dtparam=audio=on
l.12 > enable dtoverlay=iqaudio-dac
l.27 > verify dtoverlay=vc4-kms-v3d,noaudi > (cut hdmi audio)
All config files are in dacplus/config.txt folder
NodeRed
- Install
NodeRed - Install dashboard
Palette > Install > node-red-dashboard
The flow is available in the nodered/flows.json folder.
Pure Data
- Install
sudo apt update && sudo apt upgrade -y
sudo apt install puredata -yThe patch is available in the puredata/_expo_patch.pd folder.
Mosquitto
- Install
sudo apt update && sudo apt upgrade -y
sudo apt install mosquitto mosquitto-clients -y
sudo systemctl enable mosquitto.service- Edit config
sudo nano /etc/mosquitto/mosquitto.conf
add in the end :
listener 1883
allow_anonymous trueCheck the installation :
-
subscribe command line
mosquitto_sub -d -t <topic>(anonymous)
mosquitto_sub -d -t <topic> -u <user> -P <pass>(logged) -
publish command line
mosquitto_pub -d -t <topic> -m "<Message>"(anonymous)
mosquitto_pub -d -t <topic> -m "<Message>" -u <user> -P <pass>(logged)WIFI
sudo nano /etc/wpa_spplicant/wpa_supplicant.conf
network{
scan_ssid=1
ssid="<SSID>"
psk="<PASSWORD>"
key_mgmt=WPA-PSK
}Parts
46| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | Conn_01x03_Socket | Connector_JST:JST_XH_S3B-XH-A_1x03_P2.50mm_Horizontal | J15, J16, J17, J18, J31, J32, J33, J34 |
| 8 | Conn_01x04_Socket | Connector_JST:JST_XH_S4B-XH-A_1x04_P2.50mm_Horizontal | J1, J5, J6, J7, J8, J9, J10, J11 |
| 8 | Conn_01x05_Socket | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J27, J28, J29, J30, J35, J36, J37, J38 |
| 7 | Conn_01x02_Socket | Connector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_2-G-5,08_1x02_P5.08mm_Horizontal | J4, J14, J20, J22, J23, J24, J25 |
| 6 | Conn_01x20_Socket | Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_Vertical | J2, J3, J12, J13, J21, J26 |
| 6 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H1, H1, H2, H2, H2 |
| 3 | LOGO | elif_10:elif_20 | G***, G***, G*** |
Questions
How big is the Mhk PCB?
It measures 295.1 × 84 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Mhk use?
46 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Mhk KiCad files?
From the lan-ensad/intimations repository on GitHub, at the commit this page was made from: the board is pcb/mhk/mhk.kicad_pcb and its schematic pcb/mhk/leds.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Mhk design in my own project?
Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
Similar boards
- 4 layers48 × 80 mm

- 4 layers50 × 42 mm

Beam Offset Switch
nanographs/Open-Beam-Interface
Just what you need to control the beam and get an image.
46 parts371 - 4 layers53.3 × 34.5 mm

- 4 layers91.1 × 53.6 mm

Parallel2usb
tomverbeure/fake_parallel_printer
Capture traffic on parallel printer port to USB
46 parts95BSD-2-Clause - 4 layers105 × 47 mm

Pdu
azonenberg/latentred
Open hardware 48x 1000baseT + 2x 25G SFP28 Ethernet switch
46 parts36BSD-3-Clause - 4 layers44.5 × 22.5 mm

- 4 layers41.8 × 14.8 mm

Nrf52811 usb
alvarop/chaac
This is a work in progress for a wireless weather station project.
46 parts21MIT - 4 layers50.8 × 114.3 mm
