
Passive rpi hub75-adapter
hzeller/rpi-rgb-led-matrix
Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO

This is the data repository for the code development of the instrumented object for my thesis.
TMAG5273A1 PCB mini is an open-source printed circuit board by Joementrex, from the Joementrex/InstrumentedCube repository on GitHub. It is a 2-layer board of 6.6 × 6.2 mm with 2 parts on 5 nets, routed with 13 tracks and 0 vias.
Its parts include 1 capacitor and 1 IC.
This repository contains the content documenting the files for the instrumented cube
The data collected has been omitted from this repository as it exceeds the github 100MB limit.
The parts used in this project are:
The 3D files folder contains the STL files of the instrumented object to be downloaded, modified as wanted, and printed to construct the device.
The code folder contains all the code developed during development including the programming for the microcontrollers and local data collection, training and inference.
The final code used for demonstration was the manualFinal python file and manualCollection Final running in python and the microcontrollers used ESP32C3_Master_sensors2 and ESP32_Slave_sensors.
The libraries in the data collection and training folder contain custom tools for commanding a 3D printer over the network that is connected with octoprint and contains functions that will estimate the duration of the movement of the printer to prevent sending many gcode commands and executing code before finishing movement. A library called ESPReader was also developed that reads and parses the incoming Serial data from the device.
The remaining code uploaded was just for development purposes for the visualisation, training and inference. Some versions of the code contain methods for saving version history of the data collected to prevent training when there is no new training data and skip to inference.
The custom PCB for the sensors were developed by another student and used in this project and is included in the PCB folder
To assemble the device, 3D print the 3D model files with the inner shell and lid printed in a tough material such as PETG to ensure longevitiy and durability for extended use of the device under high forces, and print the bottom face to enclose the bottom. Do the same for the reciever print model and assemble it. The antenna can be removed on the reciever without limiting range greatly.

The modules and the outer shell is printed out of TPU material, TPU 95A was used but printers capable of printing a softer material can be used for better performance.
Once printed get the PCB's made and assemble them with the appropriate resistor and sensor. Wire up the sensors in groups of 3 with optional JST connectors for simple disassembly and glue them into the inserts in the modules. To provide face swaps and easy assembly and disassembly wire up the order of the sensors in each face the same order.

Glue 5 magnets around the inner shell, and feed the wires of the modules through the holes in the inner shell. Heat insert m2 inserts into the hole for the lid screw in the inner shell and 4 more inside the lid for the IO expander and screw the IO expander onto the lid.

Place the ESP32C3 microcontroller in the designated slot in the inner shell and place the battery inside the shell. Connect the IO expander to the microcontroller and the modules to the IO expander. Screw on the bottom lid.

Face the top module with the peak sensor facing the forward direction and the remaining modules have the peak sensor facing upwards. Enclose the modules with the outer shell and place the bottom face onto the device to secure the cube together and provide a flat surface.

Upload the code to the ESP32C3 reciever and transmitter.
To run the code, the main working example is the DataCollectionManualFinal that will prompt the user to press on each of the 4 contact points on the face and collect a range of sample data from the device. Once data has been collected manualFinal training will train the data on a random forest regressor and run inference on the file with a simple 2D visualiser showing contacts, forces and varying colour for each face.
The respository also contains many examples of using different training methods, different data collections and many different visualisers ranging from automatic to manual data collection. What combination of tools used is up to the researcher.
To probe the device using an ender 3 V2 a custom probe was designed that attaches to the printer and supports swapping of the probe to different contact point numbers and can be found in the 3D Files section.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | C_Small | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | TMAG5273 | Package_TO_SOT_SMD:SOT-23-6 | U1 |
It measures 6.6 × 6.2 mm and has 2 copper layers, 1.6 mm thick.
2 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.
From the Joementrex/InstrumentedCube repository on GitHub, at the commit this page was made from: the board is PCB/TMAG5273A1_PCB_mini/TMAG5273A1_PCB_mini.kicad_pcb and its schematic PCB/TMAG5273A1_PCB_mini/External_sensor_schematic/External_sensor_schematic.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Joementrex before reusing the design.

hzeller/rpi-rgb-led-matrix
Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO


adamws/kicad-kbplacer
KiCad plugin for automatic keyboard's key placement and routing

Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

NVNTLabs/switch2-SDEX2M2
Micro SD Express to M.2 NVME Adapter for Nintendo Switch 2

BlueSCSI/BlueSCSI-v2
BlueSCSI v2/Ultra - an open source, open hardware, SCSI emulator using the Pi Pico PR2040 and Pico 2 RP2350

ohmtech-rdi/eurorack-blocks
Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust
