Recipes - Tools - Community and Events - References - Inspiration - To do
Unlisted: 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, Fomy, Pinecil (with IronOS)
Workshop
RISC-V
Espressif
IDE setup https://github.com/espressif/esp-idf?tab=readme-ov-file#setup-build-environment
To explore
ESP32-S3 as Watchy
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
ESP32-C6-DevKitC-1
#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
}
}
ESP32-C3-DevKitC-RUST-1
ESP32-C6-WROOM-1-N8
- chip at the heart of the ESP32-C6-DevKitC-1 devboard
Intersection with XR
KiCAD
Exercise from PCB design with KiCad - updated for KiCad 7
Whadda kits
- motivation https://twitter.com/utopiah/status/1745034407994376659
- done
- Metronome
- Super stereo ear
- Running microbug
- Rolling dice
- to do
- Tape-o-tronics craft box
- Stereo ultrasonic sound and bat detector
- Traffic light
- Digitally controlled FM radio
- Code lock
- Proximity Card Reader with USB Interface
See https://forum.whadda.com for ways to interact with the community
Precursor
PineTime
Gateway Things (WebThingsIO)
Replaced by Home Assistant (see below in RPi section) due to better support and existing API endpoints.
Formelly Mozilla Gateway Things
VR + Home Automation + Creativity for Mozilla Hubs Creator Meetup
PoCs
- IoT on HTC Vive for in-VR experiment environment modification
- wifi = micropythoN
- webrelp = python
Recipes
- NFC
- e.g. applying CognitiveEnvironments on phone and appliances (laptop, domotic and related appliances on current location)
- "physical" bitcoin wallet using RFID
- random music
- needs
- continuous on the go music stream aiming toward a personal auditive aesthetic
- solutions
- multiple tracks
- random generation
- decide what a sample is
- output sound (DSP?)
- limits
- required time to reach quality
- suggestions
- share result for live social interactions (Thomas)
- health
- needs
- know when to take a pill (and when not to)
- solutions
- input pill X, Y, ... taken at timestamp Tx, Ty, ...
- curves of upper limit and down limit
- output visual and/or vibration as warning signal
- limits
- suggestions
- quantitative life
- needs
- be able to record quickly and in a very private way (nobody else has to know an event has been recorded) a non-predefined series of event
- solutions
- register button pressed with timestamp
- output date
- limits
- memorization of the association of event/button required
- suggestions
- take a picture/scan of your own hand to really have the ideal shape
- replace button with EEG/fMRI/...
- ideas of applications
- smiles, X calories, ideas, feelings, steps, learn something, healthy behavior, ...
-
Raspberry Pi
- for proper headless usage
raspi-config
allows to configure the WiFi network
- this means setup in one place before going to another
- note that with typical DHCP the MAC address will allow the same IP to be re-allocated thus possible to connect directly without nmap
- the RPi Zero can't use the 64bits image, make sure to stick to 32 bits
- find a new device to connect back
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"
- in order to bring a new Pi on the local network,enabling ssh at boot and setting the WiFi
- the new version of rpi-imager official does support such options
- mount the
/boot
partition then cd /media/fabien/boot && ~/Prototypes/connectpi.sh
- note that you can also mount the home partition and add files already
- WPA supplicant is sorted by priority
- possible to put mobile hotspot first then home WiFi next
- scripts for WiFi to ethernet and vice versa
- headless setup of ssh and WiFi via /boot
- turn off system LED
echo 0 > /sys/class/leds/led1/brightness
- 3 LED lights
- LED web server accessible with / to verify it's on then /start and /stop
- onoff: GPIO access and interrupt detection with Node.js on Linux boards https://github.com/fivdi/onoff
- tutorial based on Freva (Belgium company) ~100e kit https://www.freva.com/tutorials/
- controlling GPIO with NodeJS https://www.w3schools.com/nodejs/nodejs_raspberrypi.asp
- verson of node is outdated but still well explained
- node-RED https://nodered.org/docs/getting-started/raspberrypi
WebXR AP on RPi0
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
- setup WiFi with ssh access via the expert option
- ssh in to install NodeJS and all dependencies
- setup AP https://www.raspberrypi.com/documentation/computers/configuration.html#setting-up-a-routed-wireless-access-point
- in
/etc/hostapd/hostapd.conf
use wpa=0
and remove what's after to make an open AP
- note that if you have a device with 2 interfaces, e.g desktop with Ethernet and WiFi, you can connect to the unbridged AP but still have Internet
- the AP won't though so commands like
apt install
or npm install
will fail
- for single person XR follow https://aframe.io/docs/1.4.0/introduction/faq.html#can-i-use-a-frame-offline-or-self-hosted
- for social XR follow https://github.com/networked-aframe/networked-aframe#offline-usage
- note https://github.com/networked-aframe/networked-aframe/issues/408 for easier setup
Process to generate image, useful to restore the state and make more copies.
- identify source microSD, replacing XXX with the right device from
lsblk
sudo dd if=/dev/sdXXX of=pi0.img bs=32M && sudo pishrink.sh pi0.img
- from https://github.com/Drewsif/PiShrink
- This is a fairly long process, e.g 8min on a 32Gb microSD.
- Optionally the resulting img can be compressed via
xz
(which supports multithreading, e.g xz -T9 pi0.img
) which here went from ~3Gb to 0.6Gb
- fairly long process, e.g 8min for a 3Gb file using 9 cores.
- copy to another microSD
dd if=pi0.img of=/dev/sdXXX bs=32M conv=fsync
- can be done via
rpi-imager
also, a GUI and thus more convenient for people unfamiliar with the CLI. It works also with the compressed image.
- finally boot on it
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
- to make a smaller image remove
~/.npm
- unused locales via e.g
localepurge
- if you copy over on another larger microSD use
resize2fs
after using a partition manager to expand the partition
retropie
Home assistant
Process to get a device working without proper support :
- pair it
- go in
/developer-tools/event
and listening to *
all events
- active said device, e.g press on button
- once event cought, stop listening and refine, e.g listen to
zha_event
- define a new automation in
/config/automation/dashboard
and edit it in YAML
- refine trigger thanks to
event_data
trigger:
- platform: event
event_type: zha_event
event_data:
device_ieee: 00:11:22:33:44:55:66:77
command: off
Haxophone (hat)
Arduino
Robotics
Add also conferences by MIT professor and Roomba CTO Rodney Brooks
Brain-Computer Interface (BCI)
Field-Programmable Gate Array (FPGA)
- BrilliantLabs hardware
- Precursor XC7S50 https://www.crowdsupply.com/sutajio-kosagi/precursor
- FPGAs: cryptography and bioinformatics, CMSC 411 at The University of Maryland
- "Since FPGAs are better suited to computationally intensive tasks with little I/O, computer science fields based in mathematical algorithms (like cryptography) or dynamic programming algorithms (like bioinformatics) are instrinsically suited to FPGA use."
- Wikipedia:FPGA
- consider cellular automata as a model
- Wikipedia:VHDL
- interesting for me to learn since it goes from high level abstraction (functions) to low-level primitives (logic gates)
- Xilinx Programmable Logic Design Quick Start Hand Book
- History of FPGA by Ivo Bolsens, Xilinx 2007
- projects
- Milkymist open source solution for the live synthesis of interactive visual effects for VJs (video performance artists).
- NetFPGA.org
- FPGA Basics by Vineet, 2008
- QEMU open source machine emulator and virtualizer
- Seedea:Utopiahanalysis/HiTechCreativity-draft#Electronics
- An Actor/dataflow Programming Model for Platform FPGAs at CMU by Dave Parlour, Xilinx 2007
- FPGAs Enter The Third Dimension by William Wong, Electronic Design March 2010
- ABL Equipment AVNET, with an FPGA containing 12 mega gates and 60 floating point multipliers.
- Project-CORTEX:Neural network synthesis on FPGA by Bernard Girau, INRIA 2006
- fpga4fun.com where FPGAs are fun
- SHA-1,SHA-256 and MD5 Hashing, Fast (Helion) Xilinx
- Reconfigurable datapath array (rDPA) is a coarse-grained morphware unit for Reconfigurable computing.
- libhdlfltp FPGA coprocessor floating point math lib
- VHDL library of floating point operators, all of which are parametrized, synthesizable to FPGAs and cover a number of the core operators in math.h
- competitive advantage
- shortening prototyping cycle for new (eventually open) hardware
- parallel processing
- real-time signal processing
- motivation Needs#WikiOnAChip
- are there self-optimizing FPGA?
- predicting it's next "free" range
- no work based on previous history
- table of version and associated run time
- mutate the code
- run
- update table
- if time lower and result correct
- swap existing code with new code
- check if the time gained is worth the time spent and thus energy spent
- fpgaCAD Free CAD tool flows for FPGA research and education
- FPGA for HFT, moved from FinancialTools
- Xilinx acquisition of AutoESL High-Level Synthesis Tool, shared to Nicolas
- MyOpenFPGA a list of useful web resources and links.
- OpenCores community for development of hardware IP cores as open source.
Tools
Community and Events
References
Inspiration
To do
ContainsPersonalYoutubeContentToMigrate