Electronics Production #
The Electronics Production Process
Designing a PCB: #
For this week’s assignment, I have decided I will try to work with the ESP32 S3, per the recommendation for my final project. I want to create a breakout board that I can use when trying to work with an accelerometer and an e-ink screen. As such my board will include an 8-pin header and a 4-pin header. I will also include and LED and resistor so that I can program the board to blink.
I’ve been struggling a bit to figure out how to match the pins on the ESP32 with the E-ink display. I’ve found the following resources through which it seems like I should be able to discern the answer, but alas I can’t make heads or tails of them:
I’ve also been talking to Claude to try and get a sense of how to create a schematic for my ESP32 breakout board. Here is what Claude suggested:
J3 (SPI E-Ink Header): Pin 1: MOSI (D10) Pin 2: SCK (D8) Pin 3: CS (D3) Pin 4: DC (D2) Pin 5: RST (D1) Pin 6: BUSY (D6) Pin 7: 3V3 Pin 8: GND
Fortuntely this seems to match information from this website, so i feel confident enough to go ahead and create a schematic based on these corroborating sources.
For my ESP32-S3 my Eink Display matches up with the corresponding pins: Busy: D4/SDA/A4/GPIO5 RST: D3/A3/GPIO4 DC: D2/A2/GPIO3 CS: D1/A1/GPIO2 CLK: D8/A8/SCK/GPIO7 DIN: D10/MOSI GND: GND VCC: 3V3
As for the accelerometer, I am connecting the following pins (this was easier to find online): SDA: D4/A4/SDA/GPIO5 SCL: D5/A5/SCL VCC: 3V3 GND: GND
How to use the Roland SRM-20 Milling Machine: #
-
Select an end mill:
- Options: 1/32" and 1/64"
- 1/32" is for outlines
- 1/64" is for traces
- Check to see if the end mill isn’t chipped
- Options: 1/32" and 1/64"
-
Setting up the Roland: (file > home > mods > js)
- Upload png to Roland mod (trace image first then edge cuts), and ensure the piece of PCB is big enough for the board (check width and height undernearth image after uploading it)
- Make sure the spoilboard is completely flat and clean
- Make sure the copper board you are using is also flat (smaller boards are less likely to wrap and bend)
- Place pieces of tape below copper board vertically and horizontally to avoid movement –> ensure tape is below where you will be milling
- Place board on the spoilboard over an area that it relatively flat and use a plastic tool to put pressure on the board and ensure cohesion
-
Milling the trace layer:
- Select “mill traces 1/64” in “Set PCB defaults,” then select “calculate” inside “mill raster 2d”
- Install end mill:
- Pull out alan key from below the milling machine in the drawer
- Get 1/64" end mill from the shelf, and carefully place inside of the machine using two fingers. Push end mill up quite far, almost to tapered part, then start tightening
- Install end mill:
- Under “roland srm milling machine” mod > select origin: x, y & z
- Select z height: 10 mm > lower again if needed (it was set to 2mm for my cut) and move the x or y to make sure the end mill is situated on the bottom left corner of the stock
- Loosen end mill again, and release underneath your finger until it touches surface
- apply downward force on end mill and retighten with alan key
- Click “calculate” again
- Click “open” on websocket device
- Click “send file to device”
- Select “mill traces 1/64” in “Set PCB defaults,” then select “calculate” inside “mill raster 2d”
-
Milling the edge cut layer:
- vaccuum up the debris from the trace cut
- upload new png with traces layer
- install 1/32" bit in the same way as you did with the 1/64" bit
- follow steps above to send file to device
Soldering: #
With a few minor annoyances, the soldering process was fairly straight forward. I kept bumping into the problem of forming ‘icicles’ and having too much solder on the pad that I had to wick up. Not all of the soldering connections were as I would have liked them to be, but once I completed each of the necessary connections I figured I would see if the microcontroller worked.
Programming the ESP32 S3: #
I am feeling quite grateful that the micrcontroller turned on, and that I was able to get a simple code to light up the LED. I asked ChatGPT for a simple blink code and uploaded it using Arduino IDE using the “ESP32S3 Dev Module,” which I had to download from the boards manager.
#define LED_PIN 1 // LED connected to GPIO1
void setup() { pinMode(LED_PIN, OUTPUT); }
void loop() { digitalWrite(LED_PIN, HIGH); // LED ON delay(500); digitalWrite(LED_PIN, LOW); // LED OFF delay(500); }
The Final Product: #
Click Here to Download PCB Gerber File
Notes and Resources
Notes and Resources: #
Why not just use this driver board?
- https://www.waveshare.com/e-paper-esp32-driver-board.htm
- https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board#Demo_Usage
- https://www.youtube.com/watch?v=YLQY2bYLPzo
Displays:
Class Notes: #
- make sure to recalibrate control software when lowering mill as it will lift up when you tighten it
Recitation Notes: #
Pattern recognition is key*
Category 1 (will ruin everything)
- Milling issues/solder brigdges
- Cold joints
- Orientations
- Connections
- Power grids/shorts
Category 2 (soft problems)
- Wrong GPIO
- Transmit/receive issue
- Clock issues
Office Hours Notes: #