
LevelShifter
gusmanb/logicanalyzer
24 channel, 100Msps logic analyzer hardware and software

IOT Lightsaber Wall Light
LSaber1 is an open-source printed circuit board by jondurrant, from the jondurrant/LSaber1 repository on GitHub, published under the MIT licence. It is a 2-layer board with 21 parts on 59 nets, routed with 112 tracks and 0 vias.
Its parts include 7 resistors, 5 connectors, 3 ICs, 1 capacitor and 1 diode. It belongs with the home automation and IoT boards and the ESP8266 and RP2040 boards of this library.
IOT Saber Wall Light based on Raspberry PI Pico, ESP-01S and WS2812 LEDs.
PIR and Switch activated wall light. Works as a group able to turn each other on and off via MQTT hub topics.
A circuit diagram is available in KICAD format. Included in PCB folder.
Warning: The LEDs will draw 4Amps of current. You should assure yourself that the circuit and wiring can safely deliver that current.
I got very cheap pack of ESP-01S but they came with 1Mb flash. Latest version of ESP-AT, version 2.2, requires 2MB.
Fortunatly Jandrassy has built a working 2.1 firmware for 1MB. This is on github at: https://github.com/jandrassy/WiFiEspAT
To reliably upload the firmware to ESP-01S requires the RST IO0 to get pulled to zero and the released. Some further inform on how to do this at: https://blog.tiga.tech/flashing-esphome-firmware-to-esp-01s/
I used the RPI 4 to upload the firmware and the esptool.py. I had to drop frequency to 40m and change upload mode to dout in the download.config file. Then use the command esptool.py --port /dev/ttyS0 write_flash @download.config
Case is 3D printed in PLA. I've modelled the case and wall mounts for the case in OpenSCAD. The model and SLA files available in the 3dmodels folder.
Blade is a 20mm x 3mm x 1000mm OPAL Acrylic Tube. You can find these on ebay, though I found ebay quite expensive. Bought mine from The Clear Plastic Shop in the UK.
Some test code to interact with the api are included in py/test folder. They expect some environment variables to point to the MQTT hub and credentials.
##Clone project ''' git clone --recurse-submodules https://github.com/jondurrant/LSaber1 ''' main.cpp include "Credentials.env" for the Wifi AP name and passwd, MQTT Host, Port, Username and password. I've not included this file in the repo. Please create one looking something like this:
#define SID "SID"
#define PASSWD "PWD"
#define MQTTHOST "IP"
#define MQTTPORT 1883
#define MQTTUSER "jon"
#define MQTTPASSWD "PWD"mkdir build
cd build
cmake ..
make
make install (only work if you used my config setup in the Pico Intro course as does SWD upload of code direct from make).For more on how I use a Raspberry PI to build, deploy code and debug the Pico see my course on Udemy
I have included a Docker file to build an image for the management software. It manipulates the Python path to include the right libraries, along with loading some from requirements.txt.
Setup EMQX using mysql authentication and acl. The TwinThingPyMQTT repo include the DDL to create the required tables.
Lights authenticate using the MAC address of the device for Client Id, Username and Password. They will require permissions within EMQX to access:
[
{
"topic": "GRP/ALL/TPC/#",
"action": "sub",
"access": "allow"
},
{
"topic": "TNG/$CLIENTID/#",
"action": "pubsub",
"access": "allow"
},
{
"topic": "GRP/saber/TPC/#",
"action": "pubsub",
"access": "allow"
}
]The Management software will need access to:
[
{
"topic": "GRP/ALL/TPC/#",
"action": "sub",
"access": "allow"
},
{
"topic": "TNG/$CLIENTID/#",
"action": "pubsub",
"access": "allow"
},
{
"topic": "GRP/saber/TPC/#",
"action": "pubsub",
"access": "allow"
},
{
"topic": "GRP/saber/TWIN/RES",
"action": "sub",
"access": "allow"
},
{
"topic": "GRP/saber/TWIN/GET",
"action": "pub",| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 92R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R3, R4, R5 |
| 2 | 10R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R2 |
| 2 | Conn_01x03_Male | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J4, J5 |
| 2 | Screw_Terminal_01x02 | TerminalBlock:TerminalBlock_Altech_AK300-2_P5.00mm | J1, J2 |
| 1 | 10K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R7 |
| 1 | 330R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R6 |
| 1 | CP | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C1 |
| 1 | ESP-01v090 | ESP8266:ESP-01 | U2 |
| 1 | Fuse 5A | Fuse:Fuseholder_Cylinder-5x20mm_Schurter_0031_8201_Horizontal_Open | F1 |
| 1 | LED_RCGB | LED_THT:LED_D5.0mm-4_RGB_Wide_Pins | D1 |
| 1 | Pico | MCU_RaspberryPi_and_Boards:RPi_Pico_SMD_TH | U1 |
| 1 | SPARKFUN_LOGIC_LEVEL_CONVERTER | Boards:SPARKFUN_LOGIC_LEVEL_CONVERTER | U3 |
| 1 | Screw_Terminal_01x03 | TerminalBlock:TerminalBlock_Altech_AK300-3_P5.00mm | J3 |
The 18 most common of 21 parts.
21 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 jondurrant/LSaber1 repository on GitHub, at the commit this page was made from: the board is pcb/LSaber-1.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

gusmanb/logicanalyzer
24 channel, 100Msps logic analyzer hardware and software

mntmn/amiga2000-gfxcard
MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog


hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

drandyhaas/KiCadRoutingTools
A set of Python/Rust tools to aid routing in KiCad

Arrow-air/project-quiver
Project Quiver documentation, designs, and project artifacts.

