Recipes - Tools - Community and Events - References - Inspiration - To do
Unlisted: Sand Clock Kit (based on RPi 2040), Lego Spike (BT or via RPi hat), CrowVision, RoenDi (cf related issues), PaPiRus (see Eink), PIcade (see RPi), Petoi Bittle (unfortunately stuck in a bad state), ANAVI Fume Extractor, ANAVI Macro Pad 8, Lite3DP 3D Printer, Tomu, Fomu (44min CCC video), Pinecil (with IronOS)

Aka Ded Bug project.
Not the most practical "gesture" but it works! pic.twitter.com/n7NVphmESj
— Fabien Benetou (@utopiah) October 28, 2024
IDE setup https://github.com/espressif/esp-idf?tab=readme-ov-file#setup-build-environment
cd ~/esp/esp-idf/ && source export.sh
idf.py set-target then e.g idf.py set-target esp32c6
idf.py menuconfig to setup e.g WiFi, cf https://github.com/espressif/esp-idf/blob/master/examples/protocols/README.md#configuring-the-example
idf.py build
idf.py flash
idf.py monitor
To explore
To explore
fabien@fabien-CORSAIR-ONE-i160:~$ espflash board-info [2024-07-01T15:43:55Z INFO ] Serial port: '/dev/ttyACM0' [2024-07-01T15:43:55Z INFO ] Connecting... [2024-07-01T15:43:55Z INFO ] Using flash stub Chip type: esp32s3 (revision v0.2) Crystal frequency: 40MHz Flash size: 8MB Features: WiFi, BLE MAC address: 48:ca:43:56:cb:7c
#define BLINK_GPIO_1 4 // GPIO 4 (3rd pin)
void app_main(void)
{
gpio_reset_pin(BLINK_GPIO_1);
gpio_set_direction(BLINK_GPIO_1, GPIO_MODE_INPUT); // define as input
gpio_pulldown_en(BLINK_GPIO_1); //pull down mode, here 100K Ohm
while (1)
{
printf("%d\n", gpio_get_level(BLINK_GPIO_1)); // print GPIO status for monitor
vTaskDelay(1000 / portTICK_PERIOD_MS); // pause 1s
}
}

See https://forum.whadda.com for ways to interact with the community
Replaced by Home Assistant (see below in RPi section) due to better support and existing API endpoints.
Formelly Mozilla Gateway Things
firefox -window-size 300,100 -new-window -kiosk http://gateway.local/things to get a "control panel"
fetch() on https://gateway.local https://gist.github.com/Utopiah/1ab2c1e1ee8b58c4abbd1ee0dde88d77
Weekenk tangible fun : @PlayDoh controller🕹️ & audio sketching.
— Fabien Benetou (@utopiah) August 8, 2022
The @Raspberry_Pi 400 looks like a keyboard BUT with a computer in & extendable with electronics!
Using @adafruit capacitive touch hat (MPR121) and @BareConductive ink with @MakeyMakey directly on 😼🕸️@Scratch Web. pic.twitter.com/btLDMgu8Fa
ssh empty file in boot partition and new user using openssl passwd -6 for hashed password
raspi-config allows to configure the WiFi network
alias newdeviceonnetwork="nmap -sP 192.168.0.* | grep report > /tmp/last; read -p 'Connect new device then press ENTER'; nmap -sP 192.168.0.* | grep report > /tmp/now; diff /tmp/last /tmp/now"
/boot partition then cd /media/fabien/boot && ~/Prototypes/connectpi.sh
echo 0 > /sys/class/leds/led1/brightness
npm i @sammachin/buildhat-nodered to get https://github.com/sammachin/buildhat-nodered installed
What if you you wanted something smaller, cheaper, lighter (as is fitting in your wallet) and even more low power to run your local metaverse node?
— Fabien Benetou (@utopiah) April 13, 2023
Networked @AFrameVR running on a @Raspberry_Pi 0 thanks to @VincentFretin's precious help! https://t.co/TPKnH38mbF pic.twitter.com/KIDb4ZqO3U
If you rely on the image made for this project (620Mb) an open metaverse WiFi should span. Connect to that new WiFi then to https://192.168.4.1/offline.html and see each other. If you want to add your own customizations connect using ssh fabien@192.168.4.1 and password metaverse.
Process to setup environment
rpi-imager to burn the 32bits image
/etc/hostapd/hostapd.conf use wpa=0 and remove what's after to make an open AP
apt install or npm install will fail
Process to generate image, useful to restore the state and make more copies.
lsblk
sudo dd if=/dev/sdXXX of=pi0.img bs=32M && sudo pishrink.sh pi0.img
xz (which supports multithreading, e.g xz -T9 pi0.img) which here went from ~3Gb to 0.6Gb
dd if=pi0.img of=/dev/sdXXX bs=32M conv=fsync
rpi-imager also, a GUI and thus more convenient for people unfamiliar with the CLI. It works also with the compressed image.
All this has been simplified as a regen bash script that uploads the resulting image back here.
To inspect the resulting image uncompress it then use partx -v -a pi0.img to make loops, e.g /dev/loop16, mount /dev/loop16p2 virtualimg then after unmount virtualimging them you can remove with partx -d /dev/loop16 again then losetup -d /dev/loop16. See https://superuser.com/a/1559197 for details.
Small improvements
$(which node) or /usr/local/bin/node is required
setcap 'cap_net_bind_service=+ep' /usr/local/bin/node to bind on port 443
export PORT=443 before starting ./server/easyrtc-server.js
sudo vi /etc/motd allows to put a bit of documentation as a welcome message
~/.npm
localepurge
resize2fs after using a partition manager to expand the partition
Consider also now https://git.benetou.fr/utopiah/biggu_s_gate/issues/20#issuecomment-750 instead.
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"entity_id": "light.innr_fl_140_c_light"}' http://$ROOT:8123/api/services/light/turn_on
jxr fetch('/light_on')
Process to get a device working without proper support :
/developer-tools/event and listening to * all events
zha_event
/config/automation/dashboard and edit it in YAML
event_data
trigger:
- platform: event
event_type: zha_event
event_data:
device_ieee: 00:11:22:33:44:55:66:77
command: off
screen /dev/ttyUSB0 115200 to connect to e.g Petoi Bittle without using Arduino console monitor
Add also conferences by MIT professor and Roomba CTO Rodney Brooks