vault backup: 2026-07-11 16:59:05
This commit is contained in:
8
Projects/Electronics/AC Dimmer Switch.md
Normal file
8
Projects/Electronics/AC Dimmer Switch.md
Normal file
@@ -0,0 +1,8 @@
|
||||
## Goal
|
||||
|
||||
Create a light switch with a dimmer that can control 110 VAC or 220 VAC loads.
|
||||
|
||||
## References
|
||||
|
||||
- [Arduino Controlled Light Dimmer : 16 Steps - Instructables](https://www.instructables.com/Arduino-controlled-light-dimmer-The-circuit)
|
||||
- https://www.aliexpress.us/item/2251832615710334.html
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
active: false
|
||||
tags: project
|
||||
created: 2026-05-28 15:23
|
||||
---
|
||||
## Summary
|
||||
|
||||
Building an I2C temperature controller involves reading temperature from an I2C sensor (like an MCP9808 or DHT12) and using an Arduino to trigger a relay (for heaters/coolers) or adjust a fan. Use the standard `<Wire.h>` library for communication and control relays based on your temperature thresholds.
|
||||
|
||||
Here is a straightforward guide to get your project running.
|
||||
|
||||
🛠️ Hardware Requirements
|
||||
|
||||
- **Microcontroller:** Arduino Uno or Nano
|
||||
- **I2C Temperature Sensor:** MCP9808 (High precision) or DHT12
|
||||
- **I2C Display (Optional):** 16x2 LCD with I2C backpack (PCF8574)
|
||||
- **Control Element:** 5V Relay module (to switch a fan or heater)
|
||||
- **Misc:** Breadboard, jumper wires, and 4.7kΩ pull-up resistors (if not built into your sensor modules)
|
||||
|
||||
🔌 Wiring the Components
|
||||
|
||||
Connect your I2C devices to the Arduino's I2C bus. You will share these lines between the sensor and the display.
|
||||
|
||||
- **VCC** Arduino
|
||||
- **GND** Arduino
|
||||
- **SDA** Arduino Analog Pin (or the dedicated pin on newer boards)
|
||||
- **SCL** Arduino Analog Pin (or the dedicated pin on newer boards)
|
||||
- **Relay Signal Pin** Arduino Digital Pin
|
||||
|
||||
Before running this code, ensure you have installed the **Adafruit MCP9808 Library** and the **LiquidCrystal_I2C Library** via the Arduino IDE Library Manager (`Sketch > Include Library > Manage Libraries`).
|
||||
|
||||
```
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_MCP9808.h>
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
|
||||
// Create sensor and display objects
|
||||
Adafruit_MCP9808 tempsensor = Adafruit_MCP9808();
|
||||
LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD address to 0x27 for a 16 chars and 2 line display
|
||||
|
||||
const int RELAY_PIN = 7;
|
||||
const float TARGET_TEMP = 25.0; // Target temperature in Celsius
|
||||
const float HYSTERESIS = 0.5; // Prevents relay rapid switching (chattering)
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
pinMode(RELAY_PIN, OUTPUT);
|
||||
digitalWrite(RELAY_PIN, HIGH); // Default to OFF (Relays are often active LOW)
|
||||
|
||||
// Initialize I2C LCD
|
||||
lcd.init();
|
||||
lcd.backlight();
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print("I2C Temp Ctrl");
|
||||
|
||||
// Initialize sensor
|
||||
if (!tempsensor.begin(0x18)) { // Default I2C address for MCP9808
|
||||
Serial.println("Couldn't find MCP9808!");
|
||||
while (1);
|
||||
}
|
||||
tempsensor.setResolution(3); // Set resolution to 0.0625°C
|
||||
}
|
||||
|
||||
void loop() {
|
||||
tempsensor.wake(); // Wake up sensor
|
||||
float tempC = tempsensor.readTempC();
|
||||
tempsensor.shutdown(); // Shutdown to save power/reduce self-heating
|
||||
|
||||
// Update Display
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("Temp: ");
|
||||
lcd.print(tempC);
|
||||
lcd.print("C");
|
||||
|
||||
// Temperature Control Logic
|
||||
if (tempC > (TARGET_TEMP + HYSTERESIS)) {
|
||||
digitalWrite(RELAY_PIN, LOW); // Turn ON cooling/heating
|
||||
}
|
||||
else if (tempC < (TARGET_TEMP - HYSTERESIS)) {
|
||||
digitalWrite(RELAY_PIN, HIGH); // Turn OFF cooling/heating
|
||||
}
|
||||
|
||||
delay(1000); // Read temperature every second
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Tasks
|
||||
|
||||
|
||||
## References
|
||||
19
Projects/Electronics/Digital Potentiometer.md
Normal file
19
Projects/Electronics/Digital Potentiometer.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
active: false
|
||||
tags: project
|
||||
created: 2025-02-11 18:57
|
||||
---
|
||||
## Goal
|
||||
|
||||
Create digitally controlled potentiometer.
|
||||
## Tasks
|
||||
|
||||
- [x] Research ➕ 2025-02-11 ✅ 2025-02-11
|
||||
- [ ] Order parts ➕ 2025-02-11
|
||||
- [ ] Breadboard a circuit ➕ 2025-02-11
|
||||
- [ ] Test with 12V LED ➕ 2025-02-11
|
||||
## References
|
||||
|
||||
- [Arduino With MCP4131 Digitally Controlled Potentiometer (DCP) : 8 Steps - Instructables](https://www.instructables.com/Arduino-With-MCP4131-Digitally-Controlled-Potentio)
|
||||
- [Digital Variable Resistor using NE555 & CD4017 IC](https://www.circuits-diy.com/digital-variable-resistor-using-ne555-cd4017-ic)
|
||||
- [Arduino and MCP4131 digitally controlled potentiometer (DCP) - Hackster.io](https://www.hackster.io/umpheki/arduino-and-mcp4131-digitally-controlled-potentiometer-dcp-d35997)
|
||||
69
Projects/Electronics/Escape Gallery Rack Mounted Server.md
Normal file
69
Projects/Electronics/Escape Gallery Rack Mounted Server.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
active: false
|
||||
tags:
|
||||
- project
|
||||
- eg
|
||||
created: 2025-08-08
|
||||
completed: 2025-09-09
|
||||
---
|
||||
## Goal
|
||||
|
||||
Install a rack mounted server for Escape Gallery.
|
||||
|
||||
## To Do
|
||||
|
||||
- [x] Order used Dell R640 ➕ 2025-08-22 ✅ 2025-08-22
|
||||
- [x] Install in rack ➕ 2025-08-22 ✅ 2025-08-22
|
||||
- [x] Adjust and fix-up the rack ➕ 2025-08-22 ✅ 2025-08-23
|
||||
- [x] Create network cables ➕ 2025-08-31 ✅ 2025-08-31
|
||||
- [x] Install network cables ➕ 2025-08-23 ✅ 2025-09-09
|
||||
- [x] Install power cables ➕ 2025-08-23 ✅ 2025-09-09
|
||||
- [x] Install and tidy all cables on rack ➕ 2025-08-22 ✅ 2025-09-09
|
||||
- [x] Cut new top for the rack ➕ 2025-08-22 ✅ 2025-09-09
|
||||
- [x] Configure the system RAID ➕ 2025-08-22 ✅ 2025-09-09
|
||||
- [x] Test iDRAC interface ➕ 2025-08-23 ✅ 2025-09-09
|
||||
- [x] Install Ubuntu on system ➕ 2025-08-22 ✅ 2025-09-09
|
||||
## Notes
|
||||
|
||||
IPMI (==Intelligent Platform Management Interface==) is a standardized computer interface used for out-of-band management of computer systems. It allows for remote monitoring and management of servers, even when the main system is powered off or unresponsive. This is primarily achieved through a [Baseboard Management Controller (BMC)](https://www.google.com/search?client=firefox-b-1-d&cs=1&sca_esv=84a972cf9bb6250a&sxsrf=AE3TifMH8StQqpwwT6qFSJ0vmem-ifnEbQ%3A1754588176034&q=Baseboard+Management+Controller+%28BMC%29&sa=X&ved=2ahUKEwiZ2aWnnvmOAxXfOjQIHSSoNYgQxccNegQIBRAB&mstk=AUtExfAn7NkltD9c2Hl5f6c-b9QH-ZpnCOXseq62sbJvz26_opwj0re3BrR9XDlNuWBQY2n5PFxfdUOL8VPQuivWzkrXk3cfNfkGms5gLG_kGE7BeKi1KPct3LfwpawO6WsHvnk-QT8mr8X-VFW9wDDdvudTF73-JRryoUTis3_D_6DtirJxmzGkXtSL4YnvFzl6VIC5WoGdXbSh5kOvvOAfdBSaYvoANDpR8zz6Zt6VfM2q836KDAllYu-Y7F9gXoSl_ihkxOU2nkVBD74ot82vSDsk&csui=3), which acts as a separate, dedicated computer on the server's motherboard.
|
||||
|
||||
To install `ipmitool` on Ubuntu 24.04, follow these steps: Update package lists.
|
||||
|
||||
Code
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
```
|
||||
|
||||
install ipmitool.
|
||||
|
||||
Code
|
||||
|
||||
```
|
||||
sudo apt install ipmitool
|
||||
```
|
||||
|
||||
- Install `openipmi` (optional, but recommended for full functionality):
|
||||
|
||||
Code
|
||||
|
||||
```
|
||||
sudo apt install openipmi
|
||||
```
|
||||
|
||||
Start the openipmi service (if installed).
|
||||
|
||||
Code
|
||||
|
||||
```
|
||||
sudo systemctl start openipmi
|
||||
```
|
||||
|
||||
After these steps, `ipmitool` will be installed and ready for use. You can verify the installation by running `ipmitool -V` to check its version.
|
||||
## References
|
||||
|
||||
- [Dell R630 Fan Speeds | TrueNAS Community](https://www.truenas.com/community/threads/dell-r630-fan-speeds.95897)
|
||||
- [Silence Your Dell PowerEdge Server](https://www.spxlabs.com/blog/2019/3/16/silence-your-dell-poweredge-server)
|
||||
- [Dell PowerEdge R630 Owner's Manual](https://dl.dell.com/content/manual18909488-dell-poweredge-r630-owner-s-manual.pdf?language=en-us)
|
||||
- [Dell iDRAC8 Manual](https://dl.dell.com/content/manual29462169-integrated-dell-remote-access-controller-8-version-2-75-75-75-user-s-guide.pdf?language=en-us)
|
||||
- https://www.youtube.com/watch?v=3k-Bl3jJ8g8&t=192s
|
||||
122
Projects/Electronics/GPIO Breakout Board v2.md
Normal file
122
Projects/Electronics/GPIO Breakout Board v2.md
Normal file
@@ -0,0 +1,122 @@
|
||||
---
|
||||
active: false
|
||||
created: 2024-06-01
|
||||
tags:
|
||||
- eg
|
||||
- project
|
||||
---
|
||||
|
||||
## Goal
|
||||
|
||||
Create an RPi puzzle breakout board that makes it easier to plug in different switches, RFID readers and I2C components.
|
||||
|
||||
![[Pasted image 20240618071431.png]]
|
||||
|
||||
Pin 1 on GPIO connector goes to Pin 1 on the breakout board.
|
||||
|
||||
## J9
|
||||
|
||||
.png)
|
||||
![[Ribbon_Cable_Orientation.png.png]]
|
||||
## U1 Chip Output
|
||||
|
||||
We use a [CD4051B](https://www.ti.com/lit/ds/symlink/cd4051b.pdf) multiplexer chip to turn 3 GPIO lines (17, 27, 22) into 8 output control lines. The chip's INH (disable pin) is pulled low. GPIO20 provides the X input value (high or low depending the use case)
|
||||
|
||||

|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | -------------------------------------- |
|
||||
| X | 3 | 20 | 38 | Master enable switch (0 = off, 1 = on) |
|
||||
| A | 11 | 17 | 11 | Refer to selector table |
|
||||
| B | 10 | 27 | 13 | -"- |
|
||||
| C | 9 | 22 | 15 | -"- |
|
||||
|
||||
### Selector table U1
|
||||
|
||||
| Reset | A (GPIO 17) | B (GPIO 27) | C (GPIO 22) |
|
||||
| ----- | ----------- | ----------- | ----------- |
|
||||
| J1 | 0 | 0 | 0 |
|
||||
| J2 | 1 | 0 | 0 |
|
||||
| J3 | 0 | 1 | 0 |
|
||||
| J4 | 1 | 1 | 0 |
|
||||
| J5 | 0 | 0 | 1 |
|
||||
| J6 | 1 | 0 | 1 |
|
||||
| J7 | 0 | 1 | 1 |
|
||||
| J8 | 1 | 1 | 1 |
|
||||
|
||||
## J1 to J8
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ------------- |
|
||||
| Jn | 1 | 8 | 24 | SDA/SPI0/CE0 |
|
||||
| | 2 | 11 | 23 | SCK |
|
||||
| | 3 | 10 | 19 | MOSI |
|
||||
| | 4 | 9 | 21 | MISO |
|
||||
| | 5 | | | Not connected |
|
||||
| | 6 | | 25 | Ground |
|
||||
| J2 | 7 | | | See U1 table |
|
||||
| J3 | 7 | | | See U1 table |
|
||||
| J4 | 7 | | | See U1 table |
|
||||
| J5 | 7 | | | See U1 table |
|
||||
| J6 | 7 | | | See U1 table |
|
||||
| J7 | 7 | | | See U1 table |
|
||||
| J8 | 7 | | | See U1 table |
|
||||
| Jn | 8 | | 17 | 3V3 |
|
||||
|
||||
## J17 to J22
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ------ |
|
||||
| J22 | 1 | 25 | 22 | I/O |
|
||||
| | 2 | | 9 | Ground |
|
||||
| J21 | 1 | 18 | 12 | I/O |
|
||||
| | 2 | | 9 | Ground |
|
||||
| J20 | 1 | 23 | 16 | I/O |
|
||||
| | 2 | | 9 | Ground |
|
||||
| J19 | 1 | 24 | 18 | I/O |
|
||||
| | 2 | | 9 | Ground |
|
||||
| J18 | 1 | 12 | 32 | I/O |
|
||||
| | 2 | | 9 | Ground |
|
||||
| J17 | 1 | 16 | 36 | I/O |
|
||||
| | 2 | | 9 | Ground |
|
||||
|
||||
## J10 to J15
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ------ |
|
||||
| J10 | 1 | 5 | 29 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J11 | 1 | 6 | 31 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J12 | 1 | 13 | 33 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J13 | 1 | 19 | 35 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J14 | 1 | 26 | 37 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J15 | 1 | 21 | 40 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
|
||||
## J16
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ---------- |
|
||||
| J16 | 1 | 2 | 3 | SDA1 / I2C |
|
||||
| | 2 | 3 | 5 | SDL1 / I2C |
|
||||
| | 3 | | 9 | Ground |
|
||||
| | 4 | | 17 | 3V3 |
|
||||
|
||||
122
Projects/Electronics/GPIO Breakout Board v3.md
Normal file
122
Projects/Electronics/GPIO Breakout Board v3.md
Normal file
@@ -0,0 +1,122 @@
|
||||
---
|
||||
active: false
|
||||
created: 2025-04-29 08:16
|
||||
tags:
|
||||
- eg
|
||||
- project
|
||||
---
|
||||
S## Goal
|
||||
|
||||
Create an RPi puzzle breakout board that makes it easier to plug in different switches, RFID readers and I2C components with connector pins holes aligned with red/yellow/black wires on commonly available leads.
|
||||
|
||||
![[Pasted image 20240618071431.png]]
|
||||
|
||||
Pin 1 on GPIO connector goes to Pin 1 on the breakout board.
|
||||
|
||||
![[GPIO_Board_v3.jpg]]
|
||||
## J9
|
||||
|
||||
.png)
|
||||
![[Ribbon_Cable_Orientation.png.png]]
|
||||
## U1 Chip Output
|
||||
|
||||
We use a [CD4051B](https://www.ti.com/lit/ds/symlink/cd4051b.pdf) multiplexer chip to turn 3 GPIO lines (17, 27, 22) into 8 output control lines. The chip's INH (disable pin) is permanently held low. GPIO 20 provides the X input value (high or low depending the use case)
|
||||
|
||||

|
||||
|
||||
| Socket | Socket Pin | BCM | Pin | Action |
|
||||
| ------ | ---------- | --- | --- | -------------------------------------- |
|
||||
| X | 3 | 20 | 38 | Master enable switch (0 = off, 1 = on) |
|
||||
| A | 11 | 17 | 11 | Refer to selector table |
|
||||
| B | 10 | 27 | 13 | Refer to selector table |
|
||||
| C | 9 | 22 | 15 | Refer to selector table |
|
||||
|
||||
### Selector table U1
|
||||
|
||||
| Reset | RSTn | A (BCM 17) | B (BCM 27) | C (BCM 22) |
|
||||
| ----- | ---- | ---------- | ---------- | ---------- |
|
||||
| J1 | 0 | 0 | 0 | 0 |
|
||||
| J2 | 1 | 1 | 0 | 0 |
|
||||
| J3 | 2 | 0 | 1 | 0 |
|
||||
| J4 | 3 | 1 | 1 | 0 |
|
||||
| J5 | 4 | 0 | 0 | 1 |
|
||||
| J6 | 5 | 1 | 0 | 1 |
|
||||
| J7 | 6 | 0 | 1 | 1 |
|
||||
| J8 | 7 | 1 | 1 | 1 |
|
||||
|
||||
## J1 to J8
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | BCM | Pin | Action |
|
||||
| ------ | ---------- | --- | --- | ------------- |
|
||||
| Jn | 1 | 8 | 24 | SDA/SPI0/CE0 |
|
||||
| | 2 | 11 | 23 | SCK |
|
||||
| | 3 | 10 | 19 | MOSI |
|
||||
| | 4 | 9 | 21 | MISO |
|
||||
| | 5 | | | Not connected |
|
||||
| | 6 | | 25 | Ground |
|
||||
| J2 | 7 | | | See U1 table |
|
||||
| J3 | 7 | | | See U1 table |
|
||||
| J4 | 7 | | | See U1 table |
|
||||
| J5 | 7 | | | See U1 table |
|
||||
| J6 | 7 | | | See U1 table |
|
||||
| J7 | 7 | | | See U1 table |
|
||||
| J8 | 7 | | | See U1 table |
|
||||
| Jn | 8 | | 17 | 3V3 |
|
||||
|
||||
## J17 to J22
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | BCM | Pin | Action | Position |
|
||||
| ------ | ---------- | --- | --- | ----------- | -------- |
|
||||
| J22 | 1 | | 9 | Ground | |
|
||||
| | 2 | 25 | 22 | I/O | |
|
||||
| J21 | 1 | | 9 | Ground | |
|
||||
| | 2 | 18 | 12 | I/O<br>PWM0 | |
|
||||
| J20 | 1 | | 9 | Ground | |
|
||||
| | 2 | 23 | 16 | I/O | |
|
||||
| J19 | 1 | | 9 | Ground | |
|
||||
| | 2 | 24 | 18 | I/O | |
|
||||
| J18 | 1 | | 9 | Ground | |
|
||||
| | 2 | 12 | 32 | I/O<br>PWM0 | |
|
||||
| J17 | 1 | | 9 | Ground | |
|
||||
| | 2 | 16 | 36 | I/O | |
|
||||
|
||||
## J10 to J15
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | BCM | Pin | Action |
|
||||
| ------ | ---------- | --- | --- | ----------- |
|
||||
| J10 | 1 | 5 | 29 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J11 | 1 | 6 | 31 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J12 | 1 | 13 | 33 | I/O<br>PWM1 |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J13 | 1 | 19 | 35 | I/O<br>PWM1 |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J14 | 1 | 26 | 37 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J15 | 1 | 21 | 40 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
|
||||
## J16
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | BCM | Pin | Action | Wire Color |
|
||||
| ------ | ---------- | --- | --- | ---------- | ---------- |
|
||||
| J16 | 1 | | 9 | Ground | Black |
|
||||
| | 2 | | 1 | 3V3 | Red |
|
||||
| | 3 | 3 | 5 | SCL1 / I2C | White |
|
||||
| | 4 | 2 | 3 | SDA1 / I2C | Yellow |
|
||||
|
||||
122
Projects/Electronics/GPIO Breakout Board v4.md
Normal file
122
Projects/Electronics/GPIO Breakout Board v4.md
Normal file
@@ -0,0 +1,122 @@
|
||||
---
|
||||
active: false
|
||||
created: 2025-05-03
|
||||
tags:
|
||||
- eg
|
||||
- project
|
||||
---
|
||||
|
||||
## Goal
|
||||
|
||||
Create an RPi puzzle breakout board that makes it easier to plug in different switches, RFID readers and I2C components. Must allow IRQ to be used on SPI interfaces.
|
||||
|
||||
![[Pasted image 20240618071431.png]]
|
||||
|
||||
Pin 1 on GPIO connector goes to Pin 1 on the breakout board.
|
||||
|
||||
[Protect digital inputs][1] externally to avoid blowing out RPi's
|
||||
## J9
|
||||
|
||||
.png)
|
||||
![[Ribbon_Cable_Orientation.png.png]]
|
||||
## U1 Chip Output
|
||||
|
||||
We use a [CD4051B](https://www.ti.com/lit/ds/symlink/cd4051b.pdf) multiplexer chip to turn 3 GPIO lines (17, 27, 22) into 8 output control lines. The chip's INH (disable pin) is permanently held low. GPIO 20 provides the X input value (high or low depending the use case)
|
||||
|
||||

|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ----------------------------- |
|
||||
| RST | 3 | 20 | 38 | RST (0 = disable, 1 = enable) |
|
||||
| A | 11 | 17 | 11 | Refer to selector table below |
|
||||
| B | 10 | 27 | 13 | -"- |
|
||||
| C | 9 | 22 | 15 | -"- |
|
||||
|
||||
### Selector table for U1
|
||||
|
||||
RST pins are pulled low to disable the reader. Use address pins A, B, C to target J1 thru J8 with RST on GPIO20 and pull it high to restart the reader.
|
||||
|
||||
| Reset | A (GPIO 17) | B (GPIO 27) | C (GPIO 22) |
|
||||
| ----- | ----------- | ----------- | ----------- |
|
||||
| J1 | 0 | 0 | 0 |
|
||||
| J2 | 1 | 0 | 0 |
|
||||
| J3 | 0 | 1 | 0 |
|
||||
| J4 | 1 | 1 | 0 |
|
||||
| J5 | 0 | 0 | 1 |
|
||||
| J6 | 1 | 0 | 1 |
|
||||
| J7 | 0 | 1 | 1 |
|
||||
| J8 | 1 | 1 | 1 |
|
||||
|
||||
## J1 to J8
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ------------------------------------- |
|
||||
| Jn | 1 | 8 | 24 | SDA/SPI0/CE0 |
|
||||
| | 2 | 11 | 23 | SCK |
|
||||
| | 3 | 10 | 19 | MOSI |
|
||||
| | 4 | 9 | 21 | MISO |
|
||||
| | 5 | 4 | 7 | IRQ |
|
||||
| | 6 | | 25 | Ground |
|
||||
| | 7 | 20 | 38 | RST (See U1 table above for selector) |
|
||||
| | 8 | | 17 | 3V3 |
|
||||
|
||||
## J17 to J22
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ------ |
|
||||
| J22 | 1 | | 9 | Ground |
|
||||
| | 2 | 25 | 22 | I/O |
|
||||
| J21 | 1 | | 9 | Ground |
|
||||
| | 2 | 18 | 12 | I/O |
|
||||
| J20 | 1 | | 9 | Ground |
|
||||
| | 2 | 23 | 16 | I/O |
|
||||
| J19 | 1 | | 9 | Ground |
|
||||
| | 2 | 24 | 18 | I/O |
|
||||
| J18 | 1 | | 9 | Ground |
|
||||
| | 2 | 12 | 32 | I/O |
|
||||
| J17 | 1 | | 9 | Ground |
|
||||
| | 2 | 16 | 36 | I/O |
|
||||
|
||||
## J10 to J15
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ------ |
|
||||
| J10 | 1 | 5 | 29 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J11 | 1 | 6 | 31 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J12 | 1 | 13 | 33 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J13 | 1 | 19 | 35 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J14 | 1 | 26 | 37 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
| J15 | 1 | 21 | 40 | I/O |
|
||||
| | 2 | | 39 | Ground |
|
||||
| | 3 | | 1 | 3V3 |
|
||||
|
||||
## J16
|
||||
|
||||
.png)
|
||||
|
||||
| Socket | Socket Pin | GPIO BCM | GPIO Pin | Action |
|
||||
| ------ | ---------- | -------- | -------- | ---------- |
|
||||
| J16 | 1 | | 9 | Ground |
|
||||
| | 2 | | 1 | 3V3 |
|
||||
| | 3 | 3 | 5 | SDL1 / I2C |
|
||||
| | 4 | 2 | 3 | SDA1 / I2C |
|
||||
|
||||
## References
|
||||
|
||||
[1]: https://www.digikey.com/en/articles/protecting-inputs-in-digital-electronics
|
||||
13
Projects/Electronics/Handheld RFID Reader.md
Normal file
13
Projects/Electronics/Handheld RFID Reader.md
Normal file
@@ -0,0 +1,13 @@
|
||||
## Goal
|
||||
|
||||
Create a handheld RFID reader.
|
||||
## To Do
|
||||
- [x] Connect LCD screen and get working ➕ 2024-06-02 ✅ 2024-06-02
|
||||
- [x] Connect RFID reader and get working ➕ 2024-06-02 ✅ 2024-06-02
|
||||
- [x] Connect RFID reader and LCD screen ➕ 2024-06-02 ✅ 2024-06-02
|
||||
## References
|
||||
|
||||
- [LCD Display](https://pimylifeup.com/raspberry-pi-lcd-16x2/)
|
||||
- [2 mfrc522 in one arduino](https://forum.arduino.cc/t/2-mfrc522-in-one-arduino-solved/416925/3)
|
||||
- [Arduino - LCD I2C | Arduino Tutorial](https://arduinogetstarted.com/tutorials/arduino-lcd-i2c)
|
||||
|
||||
21
Projects/Electronics/MFRC522 RFID Reader I2C.md
Normal file
21
Projects/Electronics/MFRC522 RFID Reader I2C.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
active: false
|
||||
tags: project
|
||||
created: 2026-03-08 20:25
|
||||
---
|
||||
## Goal
|
||||
|
||||
Build an I2C based MFRC522 reader.
|
||||
|
||||
- Use RJ45 connectors
|
||||
- Use DIP switches to set address
|
||||
## Tasks
|
||||
|
||||
- [ ] Clone the SPI based board ➕ 2026-03-08
|
||||
- [ ] Redesign the SPI based board to be I2C ➕ 2026-03-08
|
||||
## References
|
||||
|
||||
- [DIP Switches for Setting I2C address](https://www.ctscorp.com/Files/DataSheets/Switches/DIP-Switches/CTS-Switches-DIP-219-Series-Datasheet.pdf)
|
||||
- [DigiKey DIP switches](https://www.digikey.com/en/products/detail/cts-electrocomponents/219-5MST/223200)
|
||||
- [MFRC522 Data Sheet](https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf)
|
||||
- [I2C Specification](https://www.nxp.com/docs/en/user-guide/UM10204.pdf)
|
||||
97
Projects/Electronics/MFRC522 RFID Reader.md
Normal file
97
Projects/Electronics/MFRC522 RFID Reader.md
Normal file
@@ -0,0 +1,97 @@
|
||||
---
|
||||
tags:
|
||||
- project
|
||||
- eg
|
||||
active: false
|
||||
created: 2024-02-06
|
||||
---
|
||||
## Goal
|
||||
|
||||
Reverse engineer MFRC522 RFID reader, create circuit design, add a ribbon cable connector, have RST pin be pulled low.
|
||||
|
||||
## To Do
|
||||
|
||||
- [x] Test MFRC522 in Rust crate ➕ 2024-09-29 ✅ 2025-05-02
|
||||
- [x] Test the small picofarad capacitors to see what the values are ➕ 2024-10-28 ✅ 2025-03-02
|
||||
- [x] Check that MFRC522 chips can be ordered on ➕ 2024-09-29 ✅ 2024-10-28
|
||||
- [x] Decide on asymmetry of TX1/TX2 ➕ 2024-10-03 ✅ 2024-10-28
|
||||
- [x] See which side of TX the RX/VMID connects to on the actual board ➕ 2024-10-03 ✅ 2024-10-08
|
||||
- [x] Add ribbon cable connector ➕ 2024-06-20 ✅ 2024-10-03
|
||||
- [x] Give all capacitors and resistors their values in circuit ➕ 2024-09-29 ✅ 2024-10-03
|
||||
- [x] Connect crystal ➕ 2024-09-29 ✅ 2024-10-03
|
||||
- [x] Connect LED ➕ 2024-09-29 ✅ 2024-10-03
|
||||
- [x] Connect antenna ➕ 2024-09-29 ✅ 2024-10-03
|
||||
- [x] Ensure pull up resistor to disable board ➕ 2024-09-29 ✅ 2024-10-03
|
||||
- [x] Pull capacitors off of a working board to figure out what values they are ➕ 2024-06-25 ✅ 2024-09-29
|
||||
|
||||
## Notes
|
||||
|
||||
MF522-AN chip is based on the original Philips MFRC522 chip. Every RFID chip has a unique ID. Additionally you can store encrypted data on many RFID’s as well.
|
||||
|
||||
- https://arduino.stackexchange.com/questions/54119/mfrc522-firmware-unknown - getting version 0xB2 for clone boards
|
||||
- Holding the RST pin low disables the board. Board is reset by a positive edge and enabled when held high.
|
||||
- [Instructables article on how to interface RPi to RC522](https://www.instructables.com/How-to-Interface-RFID-RC522-With-Raspberry-Pi/)
|
||||
- [Donskytech article about using RPi with MFRC522 reader](https://www.donskytech.com/raspberry-pi-mfrc522-rfid-reader-spi/)
|
||||
- [Tutorial that shows how to voltage regulate the 5V signals to 3.3V](https://arduinogetstarted.com/tutorials/arduino-rfid-nfc) and how to read on an Arduino. *Voltage regulation is not required - see note below*
|
||||
- [Article about RC522 RFID modules](https://components101.com/wireless/rc522-rfid-module). Explains that the communication pins of the board are 5V tolerant so no need to voltage regulate as other articles describe
|
||||
- [Enabling SPI interface on Raspberry Pi](https://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorial/all)
|
||||
- [Another interesting RC522 / Arduino tutorial](https://www.instructables.com/How-to-Use-the-RFID-RC522-Module-With-Arduino/)
|
||||
- [How to use an RFID RC522 with a Raspberry Pi](http://wiki.sunfounder.cc/index.php?title=How_to_Use_an_RFID_RC522_on_Raspberry_Pi)
|
||||
- [And another that talks about tag memory and how it is organized](https://peppe8o.com/rfid-and-raspberry-pi-rc522-wiring-and-code-with-python/)
|
||||
- This chap on StackExchange explains [how to attach multiple RC522 readers to one RPi by cycling the RST pins and multiplexing the SPI](https://raspberrypi.stackexchange.com/questions/31773/raspberry-pi-multiple-nfc-readers/137491#137491).
|
||||
- [Full MFRC522 Specification](https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf)
|
||||
- [All the different types of RFID tags and the different standards for each country](https://blogs.bu.edu/llisa/everything-you-need-to-know-about-rfid-tags/)
|
||||
- [Rust MFRC522 driver](https://gitlab.com/jspngh/rfid-rs) for RFID chip reading
|
||||
- [SPI - Serial Peripheral Interface pinout for Raspberry Pi](https://pinout.xyz/pinout/spi)
|
||||
- [DIY Smart Lock](https://www.makeuseof.com/tag/diy-smart-lock-arduino-rfid/)
|
||||
- [Read two RFID’s from same SPID using OR gate](https://forum.arduino.cc/t/2-mfrc522-in-one-arduino-solved/416925/3)
|
||||
- [MFRC522 Circuit Diagram](https://easyeda.com/editor#id=!b4aaa5775d8340e8a0fc626cdb0c1cbe)
|
||||
- https://easyeda.com/editor#id=!488e1b7a8f9544599a7f8e41d1d6ccb9
|
||||
- [Optimizing Read Range in RFID Systems](https://ww1.microchip.com/downloads/en/market_communication/optedn_ps.pdf)
|
||||
- http://miniradiosolutions.com/wp-content/uploads/2015/09/NFC-Reader-Design-II-Antenna-design-considerations-Public.pdf
|
||||
- https://5.imimg.com/data5/SELLER/Doc/2022/1/NB/OG/UX/1833510/rc522-reader-writer-module.pdf
|
||||
|
||||

|
||||
|
||||
The RST pin of the RC522 RFID module is level triggered. Low powers down the board, high powers up and causes a board reset.
|
||||
|
||||
.png)
|
||||
|
||||
|
||||
![[RFID-Module-RC522-Kits-13-56-Mhz-6cm-With-Tags-SPI-Write-Read-for-Arduino-back.png]]
|
||||
|
||||
![[RFID-Module-RC522-Kits-13-56-Mhz-6cm-With-Tags-SPI-Write-Read-for-Arduino.jpg_.png]]
|
||||
|
||||
![[PICA0008.jpg]]
|
||||
|
||||
![[MFRC522-Back-Screen.jpeg]]
|
||||
|
||||
![[MFRC522-Front-Screen.jpeg]]
|
||||
|
||||
![[MFRC522-Back-Copper.jpeg]]
|
||||
|
||||
![[MFRC522-Front-Copper.jpeg]]
|
||||
## References
|
||||
|
||||
- [RFID RC522 Schematic Resources](https://easyeda.com/modules/RFID-RC522-Schematic_488e1b7a8f9544599a7f8e41d1d6ccb9)
|
||||
- https://easyeda.com/editor#id=!488e1b7a8f9544599a7f8e41d1d6ccb9
|
||||
- https://easyeda.com/editor#id=!b4aaa5775d8340e8a0fc626cdb0c1cbe
|
||||
- [How to Set Up a Raspberry Pi RFID RC522 Chip - Pi My Life Up](https://pimylifeup.com/raspberry-pi-rfid-rc522)
|
||||
- [MFRC522 footprint and symbol by NXP USA Inc.](https://www.snapeda.com/parts/MFRC522/NXP%20USA/view-part/?ref=search&t=MFRC522)
|
||||
- [mfrc522 - Rust](https://docs.rs/mfrc522/latest/mfrc522)
|
||||
- [Resistor Sizes and Packages | Resistor Standards and Codes | Resistor Guide](https://eepower.com/resistor-guide/resistor-standards-and-codes/resistor-sizes-and-packages)
|
||||
- [Learn by Example—Using an Impedance Smith Chart - Technical Articles](https://www.allaboutcircuits.com/technical-articles/learn-to-use-the-impedance-smith-chart-through-examples)
|
||||
- [Review of R, X, and Z (Resistance, Reactance and Impedance) | Reactance and Impedance—R, L, And C | Electronics Textbook](https://www.allaboutcircuits.com/textbook/alternating-current/chpt-5/review-of-r-x-and-z)
|
||||
- [Standard Inductor Values - RF Cafe](https://www.rfcafe.com/references/electrical/inductor-values.htm)
|
||||
- [What is an SMD capacitor? Common capacitor values - SM Tech](https://somanytech.com/smd-capacitor-surface-mount-capacitor)
|
||||
- [How to Calculate the Frequency of the Upper Sideband?](https://www.gauthmath.com/knowledge/How-to-calculate-the-frequency-of-the-upper-sideband--7389682134987374604)
|
||||
|
||||
![[RFID-Module-Circuit-Fixed.png]]
|
||||
|
||||
![[MFRC522.png]]
|
||||
|
||||
|
||||
![[Design of Adaptive RFID Reader based on DDS and RC522 1.pdf]]
|
||||
|
||||
![[MFRC522 Antenna Design.pdf]]
|
||||
|
||||
0
Projects/Electronics/Microswitch Pulse Generator.md
Normal file
0
Projects/Electronics/Microswitch Pulse Generator.md
Normal file
21
Projects/Electronics/Next Gen Prop Controller Hardware.md
Normal file
21
Projects/Electronics/Next Gen Prop Controller Hardware.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
active: false
|
||||
tags: project
|
||||
created: 2026-03-02 10:03
|
||||
---
|
||||
## Goal
|
||||
|
||||
Create next generation prop controller hardware.
|
||||
|
||||
- Have RPi bolt onto the board
|
||||
- Have 10 MOSFETS with 2 wire Molex connectors
|
||||
- I2C with RJ45 connector
|
||||
- Power LED
|
||||
- 3.3VDC / 5VDC / 12VDC / 24VDC available to MOSFETs
|
||||
## Tasks
|
||||
|
||||
- [x] Try importing a part from https://www.ultralibrarian.com/ into Fusion ➕ 2026-02-06 ✅ 2026-03-03
|
||||
- [x] Figure out how to re-associate 3D models in imported Fusion projects ✅ 2026-03-03
|
||||
|
||||
## References
|
||||
|
||||
20
Projects/Electronics/PN532 NFC Reader.md
Normal file
20
Projects/Electronics/PN532 NFC Reader.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
created: 2025-08-17
|
||||
tags:
|
||||
- eg
|
||||
- project
|
||||
active: false
|
||||
---
|
||||
## Goal
|
||||
|
||||
Test PN532 boards alternative option to the RF522 boards.
|
||||
## To Do
|
||||
|
||||
- [ ] Breadboard a circuit to tests the board ➕ 2024-06-25
|
||||
- [ ] Order an I2C multiplexer board ➕ 2024-06-25
|
||||
|
||||
## References
|
||||
|
||||
- [PN532 NFC RFID Module — A Quick Introduction - ElectroSchematics.com](https://www.electroschematics.com/nfc-rfid-module-pn532)
|
||||
- [Amazon.com: Haldzemo PN532 Reader Writer Module V3 IC Card with S50 White Blank Card compatible Arduino Raspberry Pi (2 Sets Kit) : Electronics](https://www.amazon.com/dp/B0BPR4DM19)
|
||||
- [`pn532` crate](https://docs.rs/pn532/latest/pn532)
|
||||
8
Projects/Electronics/Plant Watering System.md
Normal file
8
Projects/Electronics/Plant Watering System.md
Normal file
@@ -0,0 +1,8 @@
|
||||
## Goal
|
||||
|
||||
Create an automatic plant watering system
|
||||
## References
|
||||
|
||||
- [Automatic Plant Watering System Using a Micro:bit](https://www.instructables.com/Automatic-Plant-Watering-System-Using-a-Microbit/)
|
||||
- [Arduino Plant Watering System](https://www.instructables.com/Arduino-Plant-Watering-System/) This one looks the simplest.
|
||||
|
||||
9
Projects/Electronics/RPi Camera Streamer.md
Normal file
9
Projects/Electronics/RPi Camera Streamer.md
Normal file
@@ -0,0 +1,9 @@
|
||||
## Goal
|
||||
|
||||
Create a Flutter app that streams from a CS mounted Arducam RPi camera.
|
||||
## References
|
||||
|
||||
- https://www.amazon.com/gp/product/B012ETE75I
|
||||
- [libcamera](https://libcamera.org/index.html)
|
||||
- [OctoPrint.org - A new camera stack for OctoPi](https://octoprint.org/blog/2023/05/24/a-new-camera-stack-for-octopi)
|
||||
- [GitHub - ayufan/camera-streamer: High-performance low-latency camera streamer for Raspberry Pi's](https://github.com/ayufan/camera-streamer)
|
||||
15
Projects/Electronics/RPi Zero and I2S Microphone.md
Normal file
15
Projects/Electronics/RPi Zero and I2S Microphone.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
active: false
|
||||
tags: project
|
||||
created: 2026-03-05 20:31
|
||||
---
|
||||
## Goal
|
||||
|
||||
Create a small microphone that streams over WiFi.
|
||||
## Tasks
|
||||
|
||||
|
||||
## References
|
||||
|
||||
- https://medium.com/@martin.hodges/setting-up-a-mems-i2s-microphone-on-a-raspberry-pi-306248961043
|
||||
- https://www.instructables.com/Make-Your-Own-Spy-Bug-Arduino-Voice-Recorder/
|
||||
42
Projects/Electronics/Ribbon Cable Tester.md
Normal file
42
Projects/Electronics/Ribbon Cable Tester.md
Normal file
@@ -0,0 +1,42 @@
|
||||
## Goal
|
||||
|
||||
Build a handheld device that can be used to test the 8 strand ribbon cables that connect the MRFC522 readers to the RPi breakout board.
|
||||
|
||||
## To Do
|
||||
|
||||
- [x] Design & print ribbon cable tester case bottom half 🔼 ➕ 2024-05-15 ✅ 2024-06-07
|
||||
- [x] Design & print ribbon cable tester case top half 🔼 ➕ 2024-05-15 ✅ 2024-06-08
|
||||
- [x] Design & print ribbon cable tester battery door 🔼 ➕ 2024-06-08 ✅ 2024-06-08
|
||||
- [x] Assembly the unit ➕ 2024-06-10 ✅ 2024-06-10
|
||||
## Parts List
|
||||
|
||||
| **Part Code** | **Type** | **Value** | **Mfg Code** |
|
||||
| ------------- | ------------------ | ----------- | ---------------------------------- |
|
||||
| R1 | Resistor | 68 to 75 KΩ | |
|
||||
| R2 | Resistor | 1 KΩ | |
|
||||
| R3 | Resistor | 1 KΩ | |
|
||||
| R4 | Resistor | 1 KΩ | |
|
||||
| R5 | Resistor | 10 KΩ | |
|
||||
| R6 | Resistor | 100 Ω | The ratio of R6:R7 is 1:3.3 (0.30) |
|
||||
| R7 | Resistor | 330 Ω | |
|
||||
| C1 | Ceramic Capacitor | 0.01 µF | 104 |
|
||||
| C2 | Ceramic Capacitor | 10 µF | 106 |
|
||||
| RV1 | Potentiometer | 100 KΩ | 104 |
|
||||
| U1 | Integrated Circuit | LM555 | |
|
||||
| U2 | Integrated Circuit | CD4017 | |
|
||||
| D1 - D8 | 5mm LED | Red | |
|
||||
| D9 - D16 | 5mm LED | Green | |
|
||||
| D17 | 5mm LED | White | |
|
||||
| J1 - J2 | IDC Socket | 8 pin | |
|
||||
| | | | |
|
||||
|
||||
## Build Notes
|
||||
|
||||
- Overall current draw is 0.03 A so power is ~0.27W
|
||||
## References
|
||||
|
||||
- [This is a good tutorial](https://www.nutsvolts.com/magazine/article/led-chaser-sequencer-circuits), but there is no capacitor to pin 5 of the LM555 as in all the other articles, which seems wrong.
|
||||
- [LM555 datasheet](https://www.ti.com/lit/ds/symlink/lm555.pdf?ts=1715218052822&ref_url=https%253A%252F%252Fwww.google.com%252F)
|
||||
- [4017B datasheet](https://www.ti.com/lit/ds/symlink/cd4017b.pdf?ts=1715285377632&ref_url=https%253A%252F%252Fwww.google.com%252F)
|
||||
- The best [LM555 tutorial](https://www.nutsvolts.com/magazine/article/using-the-555-timer-ic-in-special-or-unusual-circuits). It actually works.
|
||||
|
||||
18
Projects/Electronics/Touch Circuit Controller.md
Normal file
18
Projects/Electronics/Touch Circuit Controller.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
active: true
|
||||
tags: project
|
||||
created: 2026-03-02 10:03
|
||||
---
|
||||
## Goal
|
||||
|
||||
Create a board for the touch circuit. Must have:
|
||||
|
||||
- ADC
|
||||
- I2C
|
||||
- Voltage divider
|
||||
## Tasks
|
||||
|
||||
- [ ] Create a circuit diagram for the helm puzzle ➕ 2026-01-24
|
||||
- [ ] Reverse engineer the ADC converter (with I2C) and add to touch circuit ➕ 2026-01-26
|
||||
## References
|
||||
|
||||
Reference in New Issue
Block a user