Run your Home Assistant Voice Assist Wyoming Satellite on a Pi Zero 2W!
Non-printed materials required for assembly
1) M2 8mm round head screw - 11 pieces (they are actually slightly too long for securing the lid but I couldn't buy any that are shorter than 8mm, which is why I use long washers for that assembly).
2) M2 16mm round head screw - 4 pieces
3) Speaker mesh fabric meant for audio equipment, 0.5 mm thick. This AliExpress listing looks like the fabric that I bought:
https://aliexpress.com/item/32860133394.html
4) Respeaker 2-Mic board from Seeed - availabe on AliExpress https://aliexpress.com/item/1005005990516681.html
OR (not tested with this case but should fit)
Respeaker 2-Mic board from Keyestudio - availabe on AliExpress
https://aliexpress.com/item/32902300949.html
NOTE: the Keyestudio board is incompatible with a regular speaker plug, you need to order the Dupont variant of the 2831 speaker and connect it with proper polarity!
5) 2831 8 Ohm 3W speaker - availabe on AliExpress https://www.aliexpress.com/item/1005005247563116.html?&sku_id=12000035552488960
OR the 4 Ohm variant (same listing) but with the Dupont connector type if you are using the Keyestudio board!
6) Pi Zero 2W with headers. You can either install the headers yourself or buy one with presoldered headers. I bought a board with headers pre-soldered on AliExpress: https://aliexpress.com/item/1005003533448650.html
Note: mine came with leftover flux and some very small solder balls stuck to the dried up flux around the underside of the header pins, make sure to clean that off before installation!
7) microSD card. I bought a 32gb endurance Samsung one.
8) Official MicroUSB Raspberry Pi power supply (don't cheap out on power supplies!)
9) Optional - a small heatsink for the Pi's SoC. I bought it on AliExpress too: https://aliexpress.com/item/32795900158.html
10) Optional - rubber bumpers to cover screw holes on the bottom and to act like feet (see photos):
https://aliexpress.com/item/1005002619943801.html
11) A rubber band.
Printing tips:
1) Case needs to be printed with Snug supports and is optimized for 0.2mm layer height. For ease of support removal, you may want to set XY separation between an object and its support to 80%. I printed with PETG due to the warmth coming from Pi Zero, but it's probably fine to use PLA.
2) Print 6 pieces of 1mm thick washers, 4 pieces of 11mm thick “tall washers” and 6 pieces of 3mm thick “tall washers”.
3) Optionally enable ironing for the topmost surface of the Main Body and Outer Lid models for better apperance.
4) Set bridges fan speed to 100%.
5) Use 100% infill for better acoustics.
Pre-assembly steps:
1) Remove all supports, including the ones located inside the 3 standoffs for mounting the lid! I found it easy to remove those by using a screwdriver with a fairly tiny head.
Assembly steps:
1) Place the Raspberry Pi Zero 2W on the table or any suitable surface with the header pins facing top.
2) Place 4 11mm “long washers” on top of mounting holes.
3) Connect Respeaker 2 board to the Pi Zero, without losing the long washers that go between 2 boards in the process.
4) Place 4 1mm thick printed plastic washers on top of mounting holes on the Respeaker board.
5) Insert 4 M2 16mm round head screws into the mounting holes so that each goes through straight to the bottom holes on the Pi Zero.
6) Grab the speaker and connect the plug into the correct header on the Respeaker board.
7) Carefully grab the board “sandwich” and place it in the main body, orienting the micro-usb and audio jack port with the I/O cutouts and the 4 standoffs at the bottom
8) Secure the “sandwich” by screwing in the 4 16mm screws you've previously inserted into the standoffs.
9) Place the speaker onto its stands, orienting the wire to face the Respeaker board and not the main body walls.
10) Place 2 1mm printed plastic washers on top of mounting holes of the speaker
11) Secure the speaker with 2 M2 8mm round head screws to the main body.
12) Cut a piece of the speaker fabric large enough so that it could be tied into a knot around the Inner Lid piece (see photo).
13) Tightly wrap the piece of fabric around the Inner Lid piece and temporarily secure it to form a knot with a rubber band (see photo). You may want to pay attention to the weave pattern on the side opposite to the knot so that it matches the orientation of the main body and looks nice.
Make sure the bottom of the Inner lid faces the side with stretched out fabric and the top faces the knot, otherwise the mounting holes won't match!
14) Connect it with the Outer Lid piece (see photo for proper orientation).
15) Place 6 3mm thick “long washers” onto the holes shown in the photo. Pay close attention which holes are for joining 2 lid pieces together and which ones are for securing the lid assembly to the main body!
16) Tightly secure 2 lid parts with 6 M2 8mm round head screws.
16) Unwrap the knot and cut excess fabric (see photo).
17) Place the Lid part onto the main body so that the top of the lid is level with the top of the walls of the main body.
18) Rotate the main body upside down and secure the lid to the main body by placing 3 M3 8mm long round head screws into the bottom holes and screwing them into the lid.
Disclaimer: The audio on this is not Echo Dot/Nest Mini level of quality but it's usable as a smart speaker.
Software installation tutorials:
https://www.youtube.com/watch?v=eTKgc0YDCwE
https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md
You might not want to set up the LED service because the LEDs are very bright and shine right through the case and the fabric.
Here are some options I've found useful when setting up the satellite and openwakeword services with this particular satellite I've built:
from wyoming-satellite.service:ExecStart=/home/pi/wyoming-satellite/script/run \
--name 'Pi Satellite' \
--uri 'tcp://0.0.0.0:10700' \
--mic-command 'arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 22050 -c 1 -f S16_LE -t raw' \
--snd-command 'aplay -D plughw:CARD=seeed2micvoicec,DEV=0 -r 22050 -c 1 -f S16_LE -t raw' \
--snd-volume-multiplier 0.35 \
--mic-auto-gain 5 \
--mic-noise-suppression 1 \
--mic-seconds-to-mute-after-awake-wav 0 \
--wake-refractory-seconds 3 \
--awake-wav 'sounds/awake.wav' \
--timer-finished-wav 'sounds/timer_finished.wav' \
--timer-finished-wav-repeat 3 3 \
--wake-uri 'tcp://127.0.0.1:10400' \
--wake-word-name ‘ok_nabu’
If you have any questions please let me know!
The author marked this model as their own original creation.