Recipes - Tools - Community and Events - References - Inspiration - To do
Unlisted: 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, Pinecil (with IronOS)
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
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 virtualimg
ing 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
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