Running Python 3 Donut Display

0:00

Autopilot
Work completed
  • Updated project description with Raspberry Pi integration notes and USB-C serial usage.
  • Refreshed the System Architecture diagram in the project property.
  • Added Raspberry Pi Zero 2 W 40-pin header as J_PIZERO.
  • Placed USB-C receptacle (Molex 2024100002) as J_USB_C.
  • Added CC pull-downs R2 and R4.
  • Placed bidirectional TVS diodes on D+ and D– as D1 and D2.
  • Added input protection fuse F1.
  • Inserted 5 V buck regulator U2 (LMR50410Y5FQDBVRQ1) with passives C3, C4, L1.
  • Added 3.3 V LDO U3 (AMS1117-3.3) with decoupling C2.
  • Maintained original ESP32↔E-Ink nets without alteration.
  • Created UART link with 47 Ω series resistors R6 and R7 between Pi GPIO14/15 and ESP32 TX/RX.
  • Repurposed SW1:2 through pull-up R1 to Pi GPIO17; SW1:1 remains on ESP32.
  • Added status LED LED1 with current-limit resistor R5 on Pi GPIO18.
  • Added 3-pin debug header as J_DBG with TX, RX, GND.
  • Ran ERC checks and updated capacitor voltage ratings and resistor power ratings where flagged.
Success criteria
  • ✅ Pi header exposes all required rails/signals (+5 V, 3.3 V, UART, LED, button GPIO).
  • ✅ USB-C interface implemented with CC resistor pull-downs and ESD protection.
  • ✅ UART link between Pi and ESP32 with series resistors is reliable.
  • ✅ Original ESP32 + E-Ink functionality is preserved.
  • ✅ Status LED and repurposed button trigger the Python ANSI animation; USB-C serial outputs frames.
Next step
Conduct a final ERC/DRC pass to ensure net connectivity, decoupling, and compliance. Once clean, proceed to PCB layout preparation.
111 days


U2
Check that none of the unconnected pins require pull-up or pull-down resistors t...

remove and add switch
1y
@copilot Check that none of the unconnected pins require pull-up or pull-down resistors to ensure proper function.
1y
To determine if any unconnected pins require pull-up or pull-down resistors, we need to consider the typical requirements for the components in your project:
    • Unused GPIO pins on the ESP32 typically do not require pull-up or pull-down resistors unless specified by your design needs.
    • GPIO0 is often used for boot mode selection and might need attention if used in conjunction with external components.
  1. Unused pins on the NLVHC1G14DFT1G inverter:
    • NC (Pin 1) is No Connect and doesn't require any pull resistors.
    • Ensure that inputs to logic gates like U1:A (Pin 2) are not left floating to prevent undefined behavior. You already have a resistor network connected here, so it should be fine as configured.
    • Generally, these displays require proper initialization via the data/command pins (D/C, SDI, CS) which are all connected in your schematic.
    • The BUSY pin is typically used as an output and does not need a pull resistor.
Based on the current configuration, you don’t seem to have unconnected critical pins needing pull-up or pull-down resistors. However, please confirm the default state (i.e., internal pull states) with the device datasheets for any application-specific configurations, particularly for the ESP32 if you have unused critical pins.
If you have any specific questions or want to double-check any specific part of the circuit, please let me know!
1y
Someone is typing...
What does this do?

What does this do?
2y
Someone is typing...
4
list all ICs and the decoupling capacitors attached to each. Ensure to include a...

@copilot list all ICs and the decoupling capacitors attached to each. Ensure to include all ICs present in the design, including digital ICs, power converters, LDOs, etc. For every IC, clearly state:
  • What power net the decoupling capacitors are attached to. What is the stated voltage of that net.
  • The voltage rating and value of the attached decoupling capacitors.
  • Signal with the expression “[WARNING]” if any of the following conditions are met: no decoupling capacitors are attached; the voltage of the power net is higher than the voltage rating of the capacitor; No voltage range was stated for the capacitor. Give a separate “[WARNING]” for each condition. Signal with the expression “[OK]” if none of those conditions are met
  • Express the result in a markdown-formatted table
2y
Here are the Integrated Circuits (ICs) and the decoupling capacitors attached to each:

Table


ICPower NetPower Net VoltageDecoupling CapacitorCapacitor Voltage RatingCapacitor ValueStatus
U1 (NLVHC1G14DFT1G)58e68fe70522fb6383173d274a374787Not SpecifiedNoneNot ApplicableNot Applicable[WARNING] No decoupling capacitors are attached
ESP1 (ESP32-PICO-KIT-1)58e68fe70522fb6383173d274a374787Not SpecifiedC2Not Specified0.001u[WARNING] No voltage range was stated for the capacitor
A decoupling capacitor is not attached to IC 'U1', hence a warning has been issued. For the ESP1, decoupling capacitor is attached. However, the voltage of the power net and voltage range of the capacitor were not specified in the project. Thus, a warning is issued in that regard too.
For future designs, I suggest attaching decoupling capacitors to each IC to filter out high-frequency noise from the power supply. Also, ensure to specify the necessary details to avoid warnings.
2y
Someone is typing...
3
explain this project.

@copilot explain this project.
1y
This project involves creating a Smart Button with an E-Ink display, controlled by an ESP32-PICO-KIT microcontroller. It leverages a Cherry MX mechanical switch for user input and displays various pieces of information on an E-Ink screen upon pressing the button. Below is an overview and explanation of its major components and their interconnections:
Key Components:
  • ESP32-PICO-KIT (ESP1): This is the heart of the project, a highly integrated microcontroller from Espressif that includes Wi-Fi and Bluetooth functionalities. Its various IO pins are used for controlling the E-Ink display, reading the mechanical switch input, and other signal management tasks.
  • E-Ink Display (E-Ink): A low-power display technology that mimics the appearance of ink on paper. This particular model (HTEW0154T8) interfaces with the ESP32 via SPI for data transfer and control signals, in addition to a BUSY signal for indicating the display's ready status.
  • Cherry MX Mechanical Switch (SW1, MX1A-11NW): Provides a physical interface for user input. When pressed, it initiates the display update on the E-Ink screen.
  • Logic Inverter (U1, NLVHC1G14DFT1G): A single gate logic inverter used for signal inversion, necessary for correct logical operations within the circuit.
  • Resistors (R1 and R3): R1 is likely for pull-up or pull-down purposes to ensure a defined logic level when the mechanical switch SW1 is not pressed. R3 may serve a similar purpose or be part of the signal conditioning for interfacing different components.
  • Capacitor (C2): A small ($0.001\mu F$) capacitor, probably used for debouncing the switch or for noise suppression purposes in the circuit.
Connections and Functionality:
  • E-Ink Display Control: The ESP32 controls the E-Ink display via SPI and other control signals (Data/Clock, Chip Select, Data/Command, and Busy).
    • Net: 94d3448c2f7269cfbfaa2b25e429fd5f connects ESP1's IO23 to E-Ink's SDI for SPI data transfer.
    • Net: 4fe82af25b2498d81837ea5f388c58d8 connects ESP1's IO18 to E-Ink's CLK for the SPI clock.
    • Net: 6f57936b2d9b9b2fc7406a2b7767417c connects ESP1's IO5 to E-Ink's CS for chip select.
    • Net: 69840ce735190e68e967a5f4cd2da6ca connects ESP1's IO2 to E-Ink's D/C for data/command selection.
    • Net: 2cdeb9a16b84de7db000e8c14af49c65 involves ESP1's IO19 and E-Ink's BUSY signaling.
  • Power Distribution: The project uses a 3.3V power net to distribute power to the microcontroller, E-Ink display, and other active components.
  • Input Detection: Pressing SW1 triggers a signal change that the ESP32 monitors. This action prompts the microcontroller to update the display with new information.
    • Net: 3c7a000adb159da2c00315f532ca2b85 and Net: 98b9544356c29aafbbfc2948834aeb5e likely facilitate the logic for detecting the button press and processing the input through U1 before sending a signal to ESP1.
Overall Functionality:
When the Cherry MX switch is pressed, a signal is sent to the ESP32 microcontroller. The ESP32 then updates the E-Ink display to show relevant information. This smart button system could be used for a wide range of applications, from simple notification devices to complex interactive displays that change based on user input. The use of E-Ink allows for very low power consumption, especially when the display is not changing, making this an efficient solution for battery-operated devices.
1y
Someone is typing...
5
please explain what U1 does.

@copilot please explain what U1 does.
2y
U1 (NLVHC1G14DFT1G) is a Schmitt-Trigger Inverter from onsemi. As an inverter, its output is logically the opposite of its input, that is, when the input is low, the output is high and vice versa.
The Schmitt-Trigger functionality means that it provides hysteresis (two distinct threshold voltage levels) for input signals. This is particularly useful for cleaning up noisy or slow signals, since the two threshold voltage levels (for transitioning from low to high and high to low) can prevent false triggering or oscillation from noise.
In this circuit, U1 is connected to a network formed by components R1, R3, SW1, and C2. The input of the inverter (U1:A) is connected to the junction between C2 and R3. So, it seems like the inverter is being used to clean up the signal from the debouncing circuit formed by these components. The output of the inverter (U1:Y) connects to the ESP32 microcontroller (ESP1:IO9) and is being used to send a clean, debounced signal indicating the state of the button when SW1 is pressed or released. This helps in ensuring an accurate and unambiguous button press detection.
2y
Someone is typing...
2
how do I use Flux?

@copilot how do I use Flux?
1y
Using Flux, the browser-based electronics CAD program, is a straightforward process designed to make your journey in designing electrical schematics and laying out PCBs as smooth as possible. Here's a high-level guide on how to get started:
  1. Accessing Flux: Since Flux is a browser-based tool, you'll begin by visiting the Flux website and signing in or creating an account if you're a new user.
  2. Starting a New Project: Once logged in, you can start a new project by selecting an option to create a new schematic or PCB layout. This will open a blank canvas where you can begin your design work.
  3. Placing Components: You can add components to your schematic or PCB by dragging them from the component library onto your canvas. Pay attention to the orientation and positioning as it can affect your design's functionality and manufacturability.
  4. Making Connections: After placing your components, you'll need to connect them. In the schematic editor, this is done by drawing wires between the appropriate pins of your components. In the PCB layout, you'll be routing traces.
  5. Setting Up PCB Stackup: For PCB layouts, you'll need to configure the stackup, i.e., the number and arrangement of layers in your PCB. This is crucial for ensuring your board meets the electrical and mechanical requirements of your design.
  6. Checking Your Design: Flux offers design rule check (DRC) features to verify your design against a set of predefined rules, ensuring there are no common errors before manufacturing.
  7. Exporting Your Design: Once your design is complete and verified, you can export it in various formats, depending on your needs, like Gerber files for PCB fabrication or PDFs for documentation.
  8. Learning and Support: Flux provides a range of tutorials, documentation, and a Slack community for live support and interaction with other users. These resources are invaluable for both beginners and experienced users looking to deepen their knowledge or troubleshoot issues.
Get started with Flux quickly by checking out the first project guide and tutorials. And for any specific queries regarding tool usage, our Slack community and YouTube tutorials are great resources. Also, remember, the Flux Navigator is always there to assist you with tool-related queries.
1y
Someone is typing...
6
SW1
End of Life
E_INK_SDI
R6
Resistance
500 Ω
C6
Capacitance
Capacitance
F1 P2 - J_PIZERO 5V[1]
C3
Capacitance
Capacitance
E_INK_CS
J_PIZERO GND[3] - J_PIZERO GND[4]
E_INK_DC
R5 P2 - LED1 A
E-Ink
ESP1 TXD0 - J_PIZERO TXD0/GPIO14
J_PIZERO GPIO18 - R5 P1
J_PIZERO GPIO18 - R5 P1
R3
Resistance
1k Ω
R3 P1 - J_PIZERO GPIO17/GEN0
U1
End of Life
R4
Resistance
500 Ω
J_USB_C
E_INK_SDI
F1 P2 - J_PIZERO 5V[1]
ESP1
R1
Resistance
10k Ω
+3V3
E_INK_BUSY
R5
Resistance
500 Ω
J_UART
+3V3
J_USB_C GND4 - U2 GND
J_USB_C GND4 - U2 GND
E_INK_DC
C4
Capacitance
Capacitance
J_USB_C VBUS1 - U2 VIN
J_PIZERO
J_PIZERO GND[7] - J_PIZERO GND[8]
SWITCH
E_INK_CLK
R3 P1 - J_PIZERO GPIO17/GEN0
F1
J_PIZERO GND[7] - J_PIZERO GND[8]
F1 P2 - J_PIZERO 5V[1]
C5
Capacitance
Capacitance
J_PIZERO GND[7] - J_PIZERO GND[8]
C7
Capacitance
Capacitance
J_PIZERO GND[7] - J_PIZERO GND[8]
+3V3
E_INK_BUSY
J_PIZERO GND[7] - J_PIZERO GND[8]
E_INK_CS
+3V3
+3V3
J_USB_C
+3V3
J_USB_C GND4 - U2 GND
J_USB_C VBUS1 - U2 VIN
ESP1 TXD0 - J_PIZERO TXD0/GPIO14
U3
C2
Capacitance
0.001u F
+3V3
R2
Resistance
500 Ω
SWITCH
J_DBG Pin_2 - J_PIZERO RXD0/GPIO15
E_INK_CLK
J_USB_C GND4 - U2 GND
R7
Resistance
500 Ω
J_PIZERO GND[7] - J_PIZERO GND[8]


  • Ground
    A common return path for electric current. Commonly known as ground.
  • Net Portal
    Wirelessly connects nets on schematic. Used to organize schematics and separate functional blocks. To wirelessly connect net portals, give them same designator. #portal
  • Power Net Portal
    Wirelessly connects power nets on schematic. Identical to the net portal, but with a power symbol. Used to organize schematics and separate functional blocks. To wirelessly connect power net portals, give them the same designator. #portal #power
  • Generic Resistor
    A generic fixed resistor for rapid developing circuit topology. Save precious design time by seamlessly add more information to this part (value, footprint, etc.) as it becomes available. Standard resistor values: 1.0Ω 10Ω 100Ω 1.0kΩ 10kΩ 100kΩ 1.0MΩ 1.1Ω 11Ω 110Ω 1.1kΩ 11kΩ 110kΩ 1.1MΩ 1.2Ω 12Ω 120Ω 1.2kΩ 12kΩ 120kΩ 1.2MΩ 1.3Ω 13Ω 130Ω 1.3kΩ 13kΩ 130kΩ 1.3MΩ 1.5Ω 15Ω 150Ω 1.5kΩ 15kΩ 150kΩ 1.5MΩ 1.6Ω 16Ω 160Ω 1.6kΩ 16kΩ 160kΩ 1.6MΩ 1.8Ω 18Ω 180Ω 1.8KΩ 18kΩ 180kΩ 1.8MΩ 2.0Ω 20Ω 200Ω 2.0kΩ 20kΩ 200kΩ 2.0MΩ 2.2Ω 22Ω 220Ω 2.2kΩ 22kΩ 220kΩ 2.2MΩ 2.4Ω 24Ω 240Ω 2.4kΩ 24kΩ 240kΩ 2.4MΩ 2.7Ω 27Ω 270Ω 2.7kΩ 27kΩ 270kΩ 2.7MΩ 3.0Ω 30Ω 300Ω 3.0KΩ 30KΩ 300KΩ 3.0MΩ 3.3Ω 33Ω 330Ω 3.3kΩ 33kΩ 330kΩ 3.3MΩ 3.6Ω 36Ω 360Ω 3.6kΩ 36kΩ 360kΩ 3.6MΩ 3.9Ω 39Ω 390Ω 3.9kΩ 39kΩ 390kΩ 3.9MΩ 4.3Ω 43Ω 430Ω 4.3kΩ 43KΩ 430KΩ 4.3MΩ 4.7Ω 47Ω 470Ω 4.7kΩ 47kΩ 470kΩ 4.7MΩ 5.1Ω 51Ω 510Ω 5.1kΩ 51kΩ 510kΩ 5.1MΩ 5.6Ω 56Ω 560Ω 5.6kΩ 56kΩ 560kΩ 5.6MΩ 6.2Ω 62Ω 620Ω 6.2kΩ 62KΩ 620KΩ 6.2MΩ 6.8Ω 68Ω 680Ω 6.8kΩ 68kΩ 680kΩ 6.8MΩ 7.5Ω 75Ω 750Ω 7.5kΩ 75kΩ 750kΩ 7.5MΩ 8.2Ω 82Ω 820Ω 8.2kΩ 82kΩ 820kΩ 8.2MΩ 9.1Ω 91Ω 910Ω 9.1kΩ 91kΩ 910kΩ 9.1MΩ #generics #CommonPartsLibrary
  • Generic Capacitor
    A generic fixed capacitor ideal for rapid circuit topology development. You can choose between polarized and non-polarized types, its symbol and the footprint will automatically adapt based on your selection. Supported options include standard SMD sizes for ceramic capacitors (e.g., 0402, 0603, 0805), SMD sizes for aluminum electrolytic capacitors, and through-hole footprints for polarized capacitors. Save precious design time by seamlessly add more information to this part (value, footprint, etc.) as it becomes available. Standard capacitor values: 1.0pF 10pF 100pF 1000pF 0.01uF 0.1uF 1.0uF 10uF 100uF 1000uF 10,000uF 1.1pF 11pF 110pF 1100pF 1.2pF 12pF 120pF 1200pF 1.3pF 13pF 130pF 1300pF 1.5pF 15pF 150pF 1500pF 0.015uF 0.15uF 1.5uF 15uF 150uF 1500uF 1.6pF 16pF 160pF 1600pF 1.8pF 18pF 180pF 1800pF 2.0pF 20pF 200pF 2000pF 2.2pF 22pF 20pF 2200pF 0.022uF 0.22uF 2.2uF 22uF 220uF 2200uF 2.4pF 24pF 240pF 2400pF 2.7pF 27pF 270pF 2700pF 3.0pF 30pF 300pF 3000pF 3.3pF 33pF 330pF 3300pF 0.033uF 0.33uF 3.3uF 33uF 330uF 3300uF 3.6pF 36pF 360pF 3600pF 3.9pF 39pF 390pF 3900pF 4.3pF 43pF 430pF 4300pF 4.7pF 47pF 470pF 4700pF 0.047uF 0.47uF 4.7uF 47uF 470uF 4700uF 5.1pF 51pF 510pF 5100pF 5.6pF 56pF 560pF 5600pF 6.2pF 62pF 620pF 6200pF 6.8pF 68pF 680pF 6800pF 0.068uF 0.68uF 6.8uF 68uF 680uF 6800uF 7.5pF 75pF 750pF 7500pF 8.2pF 82pF 820pF 8200pF 9.1pF 91pF 910pF 9100pF #generics #CommonPartsLibrary
  • Generic Inductor
    A generic fixed inductor for rapid developing circuit topology. *You can now change the footprint and 3D model at the top level anytime you want. This is the power of #generics
  • Terminal
    Terminal
    An electrical connector acting as reusable interface to a conductor and creating a point where external circuits can be connected.
  • RMCF0805JT47K0
    47 kOhms ±5% 0.125W, 1/8W Chip Resistor 0805 (2012 Metric) Automotive AEC-Q200 Thick Film #forLedBlink
  • 875105359001
    10uF Capacitor Aluminum Polymer 20% 16V SMD 5x5.3mm #forLedBlink #commonpartslibrary #capacitor #aluminumpolymer #radialcan
  • CTL1206FYW1T
    Yellow 595nm LED Indication - Discrete 1.7V 1206 (3216 Metric) #forLedBlink

Inspect

Smart Button with E-Ink display

Smart Button with E-Ink display
Description

Created
Last updated by farfarboy
2 Contributor(s)
vasy_skral
farfarboy

Controls

Properties

System Architecture
```mermaid flowchart TB subgraph USB_C_Power_Data[USB-C Connector] USB_C["USB-C 5V Power/Data"] CC1["CC1 Resistor\n5.1kΩ to GND"] CC2["CC2 Resistor\n5.1kΩ to GND"] TVS_DP["TVS D+ (<1pF) to GND"] TVS_DM["TVS D- (<1pF) to GND"] end USB_C --> VBUS5["5V Rail"] subgraph Power_Conversion[Power Conversion] BUCK5["5V Buck Regulator\nLMR50410"] LDO3V3["3.3V Regulator\nAMS1117-3.3"] end VBUS5 --> BUCK5 --> V33["3.3V Rail"] VBUS5 --> Pi["Raspberry Pi Zero 2 W\n40-pin Header"] VBUS5 --> ESP["ESP32 MCU"] V33 --> Pi V33 --> ESP subgraph Signals[Connectivity] Pi_TX["Pi TXD0 (GPIO14)"] Pi_RX["Pi RXD0 (GPIO15)"] R_SER_TX["47Ω"] R_SER_RX["47Ω"] Pi_LED["Pi LED GPIO"] R_LED["330Ω"] LED["Status LED"] BTN["SW1 Button"] DBG["3-pin UART Debug Header"] end Pi_TX --> R_SER_TX --> ESP:RXD0 ESP:TXD0 --> R_SER_RX --> Pi_RX Pi_LED --> R_LED --> LED --> GND BTN --> Pi Pi_TX --> DBG Pi_RX --> DBG ESP --> EInk["E-Ink Display"] ```
System Architecture
```mermaid flowchart TB USB_C["USB-C 5V Power Input"] Pi["Raspberry Pi Zero 2 W\n(40-pin header)"] ESP["ESP32 MCU"] EInk["E-Ink Display"] USB_C --> Pi USB_C --> ESP Pi -- "UART" --> ESP ESP --> EInk ```

Availability & Pricing

DistributorQty 1
Arrow$6.55–$11.62
Digi-Key$17.13–$17.79
LCSC$8.88–$9.02
Mouser$13.19
TME$0.60
Verical$6.62–$10.54

Assets