Skip to content

Modified version of Cesare Pizzi´s USBvalve, added SD-Card Logger, LiPo, TrafficLight-System

License

Notifications You must be signed in to change notification settings

TryBreakFixAgain/USBvalve-tbfa-Mod

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

USBvalve TBFA Mod

Based on cecio/USBvalve Version 0.18.0

For basic information, please visit the cecio repository.


I made some modifications to the USBvalve to fulfil the needs of my friends and myself.
To enable SD-Card Logging, the entire serial output was redirected.
In addition, there is the comfortable indication via a Ws2812b LED in a Traffic Light System.
Additional you can create an independent system with a Pimoroni Pico Lipo and the LiPo-Mod.
To ensure complete wireless debugging, the WiFi HTML Output ESP-01 Mod is used.
As the PicoW unfortunately does not provide enough RAM, an ESP01 takes over the server tasks.

Compatibility with the Pi Pico Watch has been removed.

I decided against a custom PCB and used standard components.

All required parts can be found in the corresponding BOM.

You can find pictures in the pictures folder.

Table of Contents



Mods:

  • TrafficLight LED
  • simple language customisation
  • Fixing the first 2 lines
  • LiPo Mod
  • SD-Card Logger
  • WiFi HTML Output ESP-01 (ESP8266)
  • PicoW LED Fix (No-WiFi Support)

More information can be found on the wiki



Cases:

STL-Files could be fond in the STL folder.

USBvalve LiPo

3D printable case for USBvalve LiPo (FDM ready 0.4 Nozzle)

My Settings

LipoValveBottom.stl & LipoValveBottom.stl

  • No supports
  • Layer height first and secound Layer 0.1 after it 0.2

LipoValveInner.stl

  • Supports
  • Layer height 0.2

2x LipoValveButton.stl

  • No supports
  • Raft
  • Layer height 0.2

USBvalve tbfa

3D printable case for USBvalve none custom PCB (FDM ready 0.4 Nozzle)

My Settings
  • No supports
  • Layer height first and secound Layer 0.1 after it 0.2



Pico Pinout:

USBvalve tbfa



Mappings NO LiPo:

  • PIN6 (GPIO4) of Pi --> OLED SDA
  • PIN7 (GPIO5) of Pi --> OLED SCL
  • PIN19 (GPIO14) of Pi --> D+ of USB Host
  • PIN20 (GPIO15) of Pi --> D- of USB Host
  • PIN23 (GND) of Pi --> GND of USB Host
  • PIN38 (GND) of Pi --> OLED GND
  • PIN36 (3V3OUT) of Pi --> OLED VCC
  • PIN40 (VBUS) of Pi --> VCC of USB Host

TrafficLight I use 3.3V to power the LED because 5V was too bright for me. Depending on the LED you may have to use 5V.

  • PIN36 (3V3OUT) of Pi --> OLED VCC OR PIN40 (VBUS) of Pi --> VCC of Ws2812b DOT
  • PIN28 (GND) of Pi --> GND of Ws2812b DOT
  • PIN10 (GPIO7) of Pi --> DIN of Ws2812b DOT

Additional BOOTSEL Button form my Case Design

  • TP6 of Pi (Bottom side Testpoint) --> Pushbutton
  • PIN28 (GND) of Pi --> Pushbutton



USBvalve tbfa without SD

Mappings LiPo (Pimoroni Pico LiPo):

  • PIN6 (GPIO4) of Pi --> OLED SDA
  • PIN7 (GPIO5) of Pi --> OLED SCL
  • PIN19 (GPIO14) of Pi --> D+ of USB Host
  • PIN20 (GPIO15) of Pi --> D- of USB Host
  • PIN38 (GND) of Pi --> OLED GND
  • PIN36 (3V3OUT) of Pi --> OLED VCC
  • PIN39 (VSYS) of Pi --> + IN DC-DC 3.7V to 5V Step-Up
  • PIN23 (GND) of Pi --> - IN DC-DC 3.7V to 5V Step-Up
  • + OUT DC-DC 3.7V to 5V Step-Up --> VCC of USB Host
  • - OUT DC-DC 3.7V to 5V Step-Up --> GND of USB Host

TrafficLight I use 3.3V to power the LED because 5V was too bright for me. Depending on the LED you may have to use 5V.

  • PIN36 (3V3OUT) of Pi --> OLED VCC OR PIN40 (VBUS) of Pi --> VCC of Ws2812b DOT
  • PIN28 (GND) of Pi --> GND of Ws2812b DOT
  • PIN10 (GPIO7) of Pi --> DIN of Ws2812b DOT



Mappings SD-Logger:

SPI MicroSD Breakout Adapter

  • PIN21 (GPIO16) of Pi --> SD-Card Breakout MISO
  • PIN22 (GPIO17) of Pi --> SD-Card Breakout CS
  • PIN24 (GPIO18) of Pi --> SD-Card Breakout SCK
  • PIN25 (GPIO19) of Pi --> SD-Card Breakout MOSI
  • PIN33 (GND) of Pi --> OLED GND
  • PIN36 (3V3OUT) of Pi --> OLED VCC



USBvalve tbfa without SD



Mappings ESP01-Server:

ESP01 (ESP8266) Server

  • PIN11 (GPIO8) of Pi --> RX of ESP01
  • PIN12 (GPIO9) of Pi --> TX of ESP01
  • PIN18 (GND) of Pi --> GND of ESP01
  • PIN36 (3V3OUT) of Pi --> 3.3 VCC of ESP01
  • Push Button --> GPIO0 of ESP01
  • Push Button --> PIN18 (GND) of Pi



USBvalve tbfa without SD

LED meanings:

  • Red: Things are happening that must not happen.
  • Green: Everything is OK
  • Orange: Attention, something could be wrong.
  • Off: Nothing connected or nothing recognised. Attention: The LED remains off with some RubberDuckies. So if a stick is connected and the LED shows nothing, it could be a RubberDucky.



Firmware Naming:

USBvalve_tbfa-x.xx.x-32NoMod = No Mods, 32Pixel Display
USBvalve_tbfa-x.xx.x-64NoMod = No Mods, 64Pixel Display

USBvalve_tbfa-x.xx.x-32Tr = TrafficLight, 32Pixel Display
USBvalve_tbfa-x.xx.x-64Tr = TrafficLight, 64Pixel Display

USBvalve_tbfa-x.xx.x-32SdTr = SD-Logger, TrafficLight, 32Pixel Display
USBvalve_tbfa-x.xx.x-64SdTr = SD-Logger, TrafficLight, 64Pixel Display

USBvalve_tbfa-x.xx.x-32Sd = SD-Logger, 32Pixel Display
USBvalve_tbfa-x.xx.x-64Sd = SD-Logger, 64Pixel Display

USBvalve_tbfa-x.xx.x-32LiSdTr = LiPo, SD-Logger, TrafficLight, 32Pixel Display
USBvalve_tbfa-x.xx.x-64LiSdTr = LiPo, SD-Logger, TrafficLight, 64Pixel Display

USBvalve_tbfa-x.xx.x-32LiSd = LiPo, SD-Logger, 32Pixel Display
USBvalve_tbfa-x.xx.x-64LiSd = LiPo, SD-Logger, 64Pixel Display

USBvalve_tbfa-x.xx.x-32LiTr = LiPo, TrafficLight, 32Pixel Display
USBvalve_tbfa-x.xx.x-64LiTr = LiPo, TrafficLight, 64Pixel Display

USBvalve_tbfa-x.xx.x-32Li = LiPo, 32Pixel Display
USBvalve_tbfa-x.xx.x-64Li = LiPo, 32Pixel Display

USBvalve_tbfa-x.xx.x-32Wi = WiFi, 32Pixel Display
USBvalve_tbfa-x.xx.x-64Wi = WiFi, 64Pixel Display

USBvalve_tbfa-x.xx.x-32SdTrWI = SD-Logger, TrafficLight, WiFi, 32Pixel Display
USBvalve_tbfa-x.xx.x-64SdTrWI = SD-Logger, TrafficLight, WiFi, 64Pixel Display

USBvalve_tbfa-x.xx.x-32SdWI = SD-Logger, WiFi, 32Pixel Display
USBvalve_tbfa-x.xx.x-64SdWI = SD-Logger, WiFi, 64Pixel Display

USBvalve_tbfa-x.xx.x-32LiSdTrWI = LiPo, SD-Logger, TrafficLight, WiFi, 32Pixel Display
USBvalve_tbfa-x.xx.x-64LiSdTrWI = LiPo, SD-Logger, TrafficLight, WiFi, 64Pixel Display

USBvalve_tbfa-x.xx.x-32LiSdWI = LiPo, SD-Logger, WiFi, 32Pixel Display
USBvalve_tbfa-x.xx.x-64LiSdWI = LiPo, SD-Logger, WiFi, 64Pixel Display

USBvalve_tbfa-x.xx.x-32LiTrWI = LiPo, TrafficLight, WiFi, 32Pixel Display
USBvalve_tbfa-x.xx.x-64LiTrWI = LiPo, TrafficLight, WiFi, 64Pixel Display

USBvalve_tbfa-x.xx.x-32LiWI = LiPo, WiFi, 32Pixel Display
USBvalve_tbfa-x.xx.x-64LiWI = LiPo, WiFi, 32Pixel Display



Customize Firmware:

You can build your own firmware.

Uncomment one ore more defines to compile the MODS you want to use.

/* 
 * #define TBFA_TRAFFIC = TrafficLight Mod
 * #define TBFA_LIPO = Pimoroni Pico LiPo Battery Mod
 * #define TBFA_SDLOG = SD-CARD Logger Mod
 * #define TBFA_ONBORDLED = Use Onbord LED on Pico
 * #define TBFA_ONBORDLEDW = Use Onbord LED on PicoW
 * #define TBFA_ESP01SRV = Use ESP01 as Webserver
 */

//#define TBFA_TRAFFIC
//#define TBFA_LIPO
//#define TBFA_SDLOG
//#define TBFA_ONBORDLED
//#define TBFA_ONBORDLEDW
//#define TBFA_ESP01SRV

To build the standard one I used:
  • Arduino IDE 2.3.2
  • Adafruit TinyUSB Library version 3.1.4, Pico-PIO-USB version 0.5.2, Board Raspberry Pi RP2040 (3.8.0) setting Tools=>CPU Speed at 120MHz and Tools=>USB Stack to Adafruit TinyUSB
  • Adafruit_SSD1306 OLED library version 2.5.10
  • ArduinoJson 7.0.4
  • Adafruit NeoPixel 1.12.2
  • SD by Arduino, Sparkfun 1.2.4

Information on customising the ESP01 firmware can be found in the wiki



Dockerfile:

If you want to build your own firmware, after you customized it, I provide a Dockerfile which builds a complete Arduino environment and compile the firmware. Enter the following commands in the main USBvalve_tbfa folder:

docker build -t usbvalve_tbfa/arduino-cli .
docker run --rm --name usbvalve_tbfa -v $PWD:/mnt usbvalve_tbfa/arduino-cli /mnt/USBvalve_tbfa 

The firmware will be placed with extension uf2 in folder USBvalve_tbfa_out.



Flash Firmware:

To flash the firmware, follow these steps:

  • Connect the Raspberry Pi Pico with the USB cable, by keeping the BOOTSEL button pressed (the big white button on the board)
  • release the button
  • you will see a new drive on the system, named RPI-RP2 (in Linux envs you may have to manually mount it)
  • copy the proper firmware file (with extension uf2) in the folder, depending on the OLED you used
  • wait few seconds until the mounted folder disappear

It's done!

Information on flashing the ESP01 can be found in the wiki



SAFETY WARNING:

Warning

I've received a lot of questions about USBvalve and USB killer devices. USBvalve is not built to test these devices, it has not any kind of insulation or protection, so if you have the suspect you are dealing with one of these devices, test it with something else, NOT with USBvalve or you may damage the device, yourself or objects near to you.

About

Modified version of Cesare Pizzi´s USBvalve, added SD-Card Logger, LiPo, TrafficLight-System

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 50.6%
  • C++ 47.5%
  • Dockerfile 1.9%