║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
╟┐ ┌╢▐
║ THOTCON is Chicagoland's largest information security ║▐
║ conference; THOT being short for THree One Two, Chicago's ║▐
║ area code. After finishing first in the Digerati's Atlas ║▐
║ CTF at THOTCON 0xA and winning a coveted gold badge, ║▐
║ granting me free admission to future THOTCON events, I ║▐
║ joined the team creating badges for conference. I had ║▐
║ become friends with the creators over the previous few ║▐
║ THOTCONs, so I joined to help with the electronic design ║▐
║ (schematic capture, board layout, and driver development). ║▐
║ ║▐
║ The form factor and art were predefined by the event ║▐
║ artist, a mashup of an NES controller and a circus ticket ║▐
║ (the theme of this year's conference was Bozo the clown), ║▐
║ but beyond that (and a reasonable BOM cost), there were few ║▐
║ restrictions. Previous badge designs were based on the ║▐
║ Sparkfun ESP32 Thing dev board, so we continued using an ║▐
║ ESP32 as the main microcontroller in order to reuse ║▐
║ schematic and code snippets from previous years. ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ To differentiate the circuit design from previous years, ║▐
║ and tailor some of the functionality to align closer with ║▐
║ conference and art theme, we added a few new components. ║▐
║ The first was reverse mount LEDs to backlight lettering and ║▐
║ features of the badge. Reverse mount RGB LEDs were added ║▐
║ behind the large THOTCON letters and single-color reverse ║▐
║ mount LEDs were added by the capacitive touch buttons to ║▐
║ provide feedback when a button is touched. An LED driver ║▐
║ (IS32FL3731) was also added to the badge to drive the large ║▐
║ number of LEDs and provide a simple, CPU-less way to ║▐
║ animate the LEDs. ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ To add to the 8-bit theme, we added a piezo buzzer to ║▐
║ generate some simple tones. Through this interface we were ║▐
║ able to play jingles like Entry of the Gladiators (the ║▐
║ classic circus tune) and Never Gonna Give You Up, along ║▐
║ with feedback tones for button presses. ║▐
║ ║▐
║ The last major circuit addition was an accelerometer. There ║▐
║ wasn't an initial plan for how it would be used, but it ║▐
║ ended up pairing nicely with the buzzer to make a tone ║▐
║ generator/synthesizer using the tilt of the badge as input. ║▐
║ ║▐
║ Returning badge features included capacitive touch buttons, ║▐
║ 2.4GHz connectivity (mostly as a wifi node), remote ║▐
║ connectivity via IRC, and a serial interface. ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ One limitation I encountered with the ESP32 Thing dev PCB ║▐
║ design was the setup of GPIO0. GPIO0 is an ESP32 strapping ║▐
║ pin used to set the boot mode during power-on. Tying the ║▐
║ pin to DTR and RTS allows the FTDI IC to put the ESP32 into ║▐
║ Download mode when uploading new firmware via the UART ║▐
║ interface. GPIO0 is also one of 10 capacitive touch enabled ║▐
║ pins, but routing it to DTR adds load to the pin, making it ║▐
║ unusable for capacitive touch. ║▐
║ ║▐
║ To free GPIO0 of any load once booted, while still ║▐
║ maintaining the ability to program the badge via the USB ║▐
║ interface, I added two additional transistors to create a ║▐
║ buffer gate leading to the pin. This works because GPIO0 ║▐
║ has an internal pull-up that's active only during the ║▐
║ power-on, so after boot all internal load is disconnected. ║▐
║ The buffer disconnects the DTR load except when it's ║▐
║ necessary to pull GPIO0 low for firmware upload. ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ The GPIO0 fix was late in the development process and we ║▐
║ didn't test the circuit enough before sending the design ║▐
║ out for production. While the circuit worked fine when ║▐
║ powered through USB, we learned that when using batteries, ║▐
║ DTR was left floating and this resulted in the ESP32 going ║▐
║ into Download boot mode. Adding a pull-up resistor (R19 in ║▐
║ the circuit above) to the DTR signal fixed this issue. ║▐
║ Working with the PCBA assembly house, I was able to ║▐
║ identify and recommend a quick fix (placing a larger ║▐
║ package resistor across two parallel resistors) before the ║▐
║ badges were shipped to the conference. ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
║ ║▐
╟┐ ┌╢▐
╟┐ ┌╢▐
║ Part hardware hacker, part creative technologist, and part ║▐
║ human-centered designer thriving at the cross-section of ║▐
║ engineering and design. ║▐
║ ║▐
║ Led to engineering through my love for music, art, and ║▐
║ math, I hold degrees in electrical, computer, and music ║▐
║ engineering. Following a stint in academia, I joined IDEO ║▐
║ as a senior electrical engineer where I contributed ║▐
║ creative problem solving and prototyping fluency to a ║▐
║ breadth of projects ranging from vehicles of the future, to ║▐
║ life-changing medical equipment, to innovative children's ║▐
║ toys. Most recently, I was at Delve and now Sundberg-Ferar, ║▐
║ diving deeper into engineering for production, and working ║▐
║ on bringing ideas and prototypes to reality. ║▐
║ ║▐
║ Outside of work, I enjoy creating rotoscopes and ║▐
║ illustrations, reverse engineering electronic toys, and ║▐
║ taking a break from screens by running, biking, and camping ║▐
║ in the great outdoors. ║▐
╟┐ ┌╢▐
║ -=≡≡≡≡≡≡≡≡ MS in Electrical and Computer Engineering ≡≡≡≡≡≡≡≡=- ║▐
║ School .... University of Delaware, Newark, DE ║▐
║ Grad year . 2012 ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡ BEE in Electrical Engineering ≡≡≡≡≡≡≡≡≡≡≡≡≡≡=- ║▐
║ School .... University of Delaware, Newark, DE ║▐
║ Grad year . 2011 ║▐
╟┐ ┌╢▐
║ -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Senior II Electrical Engineer ≡≡≡≡≡≡≡≡≡≡≡≡≡≡=- ║▐
║ Company ... Bresslergroup / Delve, Philadelphia, PA ║▐
║ Key roles . Developed embedded hardware for diagnostic devices ║▐
║ . Developed embedded firmware with precision-timing ║▐
║ . Designed for manufacturing ║▐
║ Years ..... Nov '20 - Apr '22 ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Senior Electrical Engineer ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=- ║▐
║ Company ... IDEO, Chicago, IL ║▐
║ Key roles . Specialized in rapid hardware prototyping ║▐
║ . Developed embedded and front-end software ║▐
║ . Designed human-centered solutions for clients ║▐
║ Years ..... Sep '14 - Oct '20 ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ User Experience Intern ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=- ║▐
║ Company ... Shure, Niles, IL ║▐
║ Years ..... Summer '13 & Summer '14 ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Graduate Research Assistant ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=- ║▐
║ Company ... Univ. of Miami, Music Eng Dept, Miami, FL ║▐
║ Years ..... Aug '12 - May '14 ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ Co-Founder and Shop Manager ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡=- ║▐
║ Company ... Newark Bike Project, Newark, DE ║▐
║ Years ..... Oct '11 - Aug '12 ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡≡≡≡≡ Undergrad/Grad Research Assistant ≡≡≡≡≡≡≡≡≡≡≡≡=- ║▐
║ Company ... Univ. of Delaware, Elec/Comp Eng Dept, Newark, DE ║▐
║ Years ..... Feb '09 & Aug '12 ║▐
╟┐ ┌╢▐
║ -=≡≡≡≡≡≡≡≡ Languages ≡≡≡≡≡≡≡≡=- ║▐
║ C, C++, Obj-C HTML, CSS Spanish (int) ║▐
║ Basic Assembly Javascript Japanese (beg) ║▐
║ Matlab Python ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡ Software ≡≡≡≡≡≡≡≡≡=- ║▐
║ Adobe CC Autodesk Fusion Microsoft 365 ║▐
║ ║▐
║ -=≡≡≡≡≡≡≡≡≡≡ Other ≡≡≡≡≡≡≡≡≡≡=- ║▐
║ Screen Printing Bike Mechanic Furby Technician ║▐
║ Sketching Illustrating ║▐
╟┐ ┌╢▐
╟┐ ┌╢▐
╟┐ ┌╢▐