Ember
A custom hot plate controller powered by USB-C Power Delivery.
Created by
NotARoomba 🚀
Tier 1
86 views
2 followers
NotARoomba 🚀
added to the journal ago
UI + Case + Solder

So I finally got some more fonts in after making a script that converts any ttf/otf font into a bitmap font and I imported it to make this cool menu screen.

I then worked on making a status screen to show the USB-C PD voltage as I can't use serial when connected to a power outlet so yea and I successfully got 20v although it was at 4.5A:
.jpeg)
After a while I got a notification that my case finally came in so I went to get it and found out that everything fit perfectly lol

All that was missing were the heatset inserts and screws. This also as around the time that I couldn't take the bad screen solder so I went out and bought some leaded solder:

And then after that I finally was able to solder correctly and it looked amazing:

I then started to look for ui libraries on the internet and stumbled upon this one:

but the only problem is that I will have to port it to C :(
For the UI, here's what I'm thinking, a main menu screen that says press to start and then you will be sent to a scrolleable menu, it will have these entries:
- Start / Stop
- Status
- Settings
- About
The start stop button will start the hotplate controller and it will send you to a menu here you have to select between holding a temperature or a reflow profile, if you hold a temp then there will be a slider between 1-200C and for the reflow profile you will have the option to select it, no mater which option you select, there will b a confirm screen.
After you confirm, you will b sent to the status screen, this is basically where you can see how the heat plate is running and the temp and current raw and everything that you could possibly need.
In the settings bar you can change the behavior of the NFC or confirm or change the brightness of the OLED, also you can have the option to turn on or off Bluetooth discovery to control the board.
In the about scan it will how the firmware version and the credits.
Now that I have that planned out I will try and connect the hotplate to see how hot it can get:

NotARoomba 🚀
added to the journal ago
NFC Sounds + Bluetooth + Screen Working
I started in the airport trying to make some misc improvements and thought of making the board beep when an NFC tag is present, It took a little while bit I made it play a little jingle.
(Check my post in #50-days for the vid)
After that I was in another airport heading to blueprint and I was looking through this repo and apparently I needed to flash the bluetooth firmware that I was going to use on the other processor otherwise it wouldn't work. After trying to flash the FUS, I bricked one of the boards because I didn't press and hold the boot button when it was editing the option bytes. But after correctly holding down the boot button, I fixed it and was able to connect to it from my phone:

So prototype happened and then I started working on the OLED screen. I had to solder it and after realizing that I had the wrong type of solder I tried fixing it and had to hold it in a certain position for the screen to work.

after that I got a circle running from this cool library:

.jpeg)
and after a bit I got text and a basic UI although the fonts were wonky and I needed to import more:
.jpeg)
I still have a lot to go but thankfully my heatplate and case is coming in tomorrow so yea, I'll continue working on it.
NotARoomba 🚀
added to the journal ago
NFC + PWM + Board Temp Sensor + First error
I started getting a driver for the NFC chip and added it in, and also struggled a bit with the I2C address as I kept overwriting it whenever I read / write to the tag.

After that I worked on getting a basic PWM driver for the hotplate and I confirmed that the MOSFET was working.
I tested it with a multimeter at 1 Hz (it was switching lol) and then moved on to the board temp sensor. That was also really simple as there were drivers on Github and at first I found one for the tps116, after reading through the datasheet and this pull request, it was the same driver for the tps119 just with a different device id:

Moving on to the current sensor, I found out that I had wired it wrong:


(VS needed to be connected to 3V3 but luckily the regulator is next to it so I can solder a small wire connecting them:

Anyways that wasn't something critical so I moved onto getting the drivers for the external temperature sensors. These functioned over SPI and on different channels to avoid different data length errors, I then got the drivers:

and got them implemented:

after that it was time for the max6675:

I finished that but I still had a problem with the NFC, it wouldn't let me read or write to it and was unreliable at times so I went to look at the code and found out that it was trying to read and get a checksum of the data while it was being read/wrote (on field detect) and this caused a blocking operation on the storage which resulted in that unreliable behavior. After changing it to wait like 200ms it finally started working and I could get changes in the NFC reliably:

All that's left is to configure the screen and set up a PID algorithm for the heatbed (will finish that once I get the heatbed), get bluetooth to workm and get the flash / lcd working.

SO I took a bit of a break bc I got accepted into MIT and added in custom support to play music so yea lol I'ma sleep now
NotARoomba 🚀
added to the journal ago
USB-C PD Working + Jingle Bells

So I finally got the PCB and it looks cool and even better was that when I plugged it in, it didn't burn up like Cyberboard V1 (wooo) so then I started trying to turn on the LEDs (first thing you always have to do) and the STM32 kept resetting and I didn't know why until later debugging (commenting out peripherals until it worked) I found out that I had mislabled an input pin as output:


After that I started configuring the USB-C PD controller to get the status of my laptop and aja after a bit of configurint I finally was able to get PDO's (power data objects) that specify what different power options the source has:

Sadly my laptop only provides [email protected] so yea...

moving on, I wanna try and get the speaker running and lookign at the datasheet I found this cool graph:

but nothign telling me at which speeds it's running at so I will make my own driver that can control the PCB duty cycle
After messing around I got jingle bells playing on the board lol.
zliskovyi
gave kudos to Ember ago
this looks beautiful I hope i can make one of these sooner or later
CAN ⚡🚀
approved Ember ago
Tier approved: 1
Grant approved: $345.00
Nice project!
NotARoomba 🚀
submitted Ember for review ago
NotARoomba 🚀
requested changes for Ember ago
Use a cheaper material for the top case
NotARoomba 🚀
added to the journal ago
Blueprint Banner
This is just to update the blueprint banner after waiting on it to render, I just need to write 150 characters to fill up the requirement so that I can post this.

NotARoomba 🚀
submitted Ember for review ago
NotARoomba 🚀
added to the journal ago
Blender and BOM
After that I decided to put it in blender and get some nice renders of the PCB and case:




Then I finished up the BOM, created a logo, and cleaned up the README:


NotARoomba 🚀
added to the journal ago
CAD (Canadian Dollars)

After procrastinating a bit, I decided to make the case. I had in mind to have the bottom with holes for USBcC and also have a space to add in the cables for the temp sensors and heatplate. I also thought about adding in a slope for the NFC section so that it will work for phones that have a limited range.
Then I posted the board in r/PrintedCircuitBoards and also in the KiCad discord and got some feedback for the board. I then had to change out the optocoupler for a gate driver and also added another screw hole and made them more symmetrical.

After that I worked on the case and tried to make it look good:

I also found this cool image because I want the USB-C cable flush with the socket:

Then after that I finished the bottom case

but I didn't know how to connect the top case to it so I will research that later.
After sleeping I thought about using heatset inserts and then also the different types of screws that I can use:

I think a sloted head would look decent as I wanted something that has a cylindrical head.


After a bit I finally finished the CAD!

NotARoomba 🚀
added to the journal ago
Change Buck and Heatbed
After posting it in the KiCad Discord I got the feedback to use another buck converter (TPS56339DDC) as electrolytic caps don't like heat so I rewired the buck converter and then routed it up on the PCB.


This gave me more space to put the MOSFET in the middle to dissipate more heat.
Moving on to the hotplate/heatbed, I found out that the design I am basing this off of has this schematic and PCB:


and I found out that these values come from KiCad's calculator:

So to design my own, I wanted to do the same. Looking through JLCPCB's Flexible Heater capabilities, I found out that the thickness of the material can be from 30um to 50um (silicone)

Looking at the voltage drop and power consumption, I only have 20V and 100W to play around with and the 3.3V buck converted needs a minimum of 5V so I have to change the length to make sure that I have at least 5V (with a bit of leeway) to be able to use as much area as I can.
I started researching about Hilbert Curves (very interesting) and also how there is a KiCad plugin to generate it:

I was playing around with it as I am trying to generate curves to fill the space in the heating element.

I then ended up woth this 400mm x 400mm board design AND THE BEST PART IS THAT IT'S ONLY 9 USD ON JLCPCB:

So after making the heatbed and the board I now am going to design a case in OnShape.
NotARoomba 🚀
added to the journal ago
Design Schematic
After working for a bit, I finally finished routing up most of the PCB:

I still have to impedance match the antenna and add in the 3D models and fix the silkscreen but for the most part it's done.
After that I fixed up the silkscreen aligning everything perfectly (ocd)

I entered the lock in call and finished impedance matching, edited the silkscreen, and added a few more aesthetic touches.


NotARoomba 🚀
added to the journal ago
PCB Routing
After coming back, I had a thought. There will probably be space under the OLED so I can add in components under it. Although there will be resistors and stuff under it, I can always put a sheet of paper or smth to separate it.


I decided to reorganize the board to edit the space between the components:

After a while of procrastination and burnout, I finally started something:

I still have a bit of routing to go and then I'll send it for review in the KiCad Discord (first time lol) and also the blueprint channel before rendering it :sob:
NotARoomba 🚀
added to the journal ago
Start PCB Layout
After finishing the schematic and selecting the footprints, I went over to the PCB and started grouping the components (ICs) together along with their passives.

(STM32 for example)
and continued until I had the rest of the components laid out. After that, I made a board outline of 50mmx150mm and then started placing the components there. From what I had in mind, I wanted the NFC tag on the opposite side of the USB-C connector and I also wanted the USB-C PPHV line to go through the top away from the other components. I wanted the Bluetooth antenna in a corner away from any noisy components so I decided to place it in the corner opposite of the PPHV line. The screw terminals I wanted in the top and preferably in the center, as well as the OLED and rotary encoder. After playing around with the layout I got something like this:

I started routing a bit but needed to work on Accelerate so I'm gonna take a break lol.
NotARoomba 🚀
added to the journal ago
Finished Schematic and Footprints
I routed up the external temperature sensors, using chips from MAXIM and ended up with this:



I then routed up the PWM hotplate channel (design taken from here) and ended up with this:

I then proceeded to add all of the LEDs and try to find in the OLED and rotary encoder footprints and add them in:


Then I organized the board and ran an ERC to make sure that I didn't have any unconnected items. After that I found a cool font that I am going to use for all of the logos and icons and design and added it in.

Then I updated the footprints for all of the components (making sure not to use 0201) and then imported it into the schematic.

NotARoomba 🚀
added to the journal ago
STM32 Pinout and Most Peripherals
I started by first defining the pinout for the STM32, as I wanted to use most of the pins, I added some status LED's and a buzzer. Continuing on from yesterday's work, I skimmed through the datasheets of each component to see which extra pins I would need to add them immediately and not have to worry about adding them later. I had some trouble with the timers and flash as I could only use 2 timers (out of 4) so I needed a way to get input from the rotary encoder, set the heatbed, and also to control the buzzer. After researching a bit more, I ended up using LPTIM1 for the rotary encoder as I say that It had input for that.
After configuring all of the pins, my STM32 looked like this:


After that I went to work wiring up the rest of the peripherals like the flash, buzzer, board temperature sensor, current sensor, and NFC antenna.





After that, I routed the buck converter to convert from PPHV to 3.3V:

I looked carefully in the datasheet and made sure that I was using the right inductor and capacitors (looked them upon LCSC and added the part numbers).
I also bom optimized a bit by using as many 4.7K pull-up resistors as I could to not have extra costs for different resistor values.
All that's left is to route up the external temperature sensors and also add in the connections to the heatplate. ALSO THE ROTARY ENCODER AND OLED DISPLAY. I plan on using screw terminals and making holes in the acrylic top case to be able to screw/unscrew them. I also plan on
NotARoomba 🚀
added to the journal ago
Worked on Schematic
I started wiring up the STM32 and configuring it in STM32CubeMX. THIS TIME LOOKING AT THE REFERENCE SCHEMATIC AND NOT COPY PASTING TO AVOID ERRORS.


THIS TIME I ACTUALLY ADDED PULL UP RESISTORS ON THE I2C LINES AND DOUBLE CHECKED THE DECOUPLING CAPACITOR VALUES.
I researched a bit about the different screens like the ones on the flipper zero but the standard I2C OLED is fine (SSD1306). I found this cool tool to create UI/UX so I'll put it here to save for later (https://arduinogfxtool.netlify.app/)
I also added in a bit more stuff like current sensor, buzzer, and board thermometer just in case. I might also add in NFC functionality to be able to wirelessly transfer temp data to the board/have presets set in NFC tags and I just put it on top and let it go (overkill but why half ass it).
I also added a 32MB flash to add images/graphcs onto the OLED (might be possible)
I hope to find this encoder somewhere: https://tech.alpsalpine.com/e/products/detail/EC11E18244A5/
I also spent some time thinking about the case:

(very crude)
I'd want it made out of a high quality plastic (PA11-HP Nylon) or acrylic to be able to see the board interior with rounded corners and space to fit the board and OLED/Encoder. I might also include one of those push-push-switches to turn it on or off. (sends signal to STM32 to disable USB-C PD and turns off the display/lights. OR I COULD DO THE BACK AS (PA11-HP Nylon) AND THE TOP COVER AS ACRYLIC, but I'm too tired to think so tmrw I'll finish the schematic and start the routing.
NotARoomba 🚀
added to the journal ago
Start of Schematic
I first created a new KiCad project and then opened up STM32CubeMX and followed this guide on the ST website to configure USB PD. I also changed the processor to the STM32G0B1CBT6 as the other one didn't have a second CC pin due to the pin count.
Yknow what, scratch that, I'm a Texan and should be loyal to TI. So I'm gonna go with a TPS25730D and then use an STM32WB55 to get bluetooth support (everythings better with bluetooth lol). Jokes aside, I am going with TI because I want to complete this project in 3 days (crazy right?) and I feel more comfortable with their chips (Also serves as practice for when I have to work with Athena's PD chip).
For the mosfet I will be using IRFB3207 and TLP183 to drive it (taken from the original repo) and for temperature sensors, MAX6675 (thermocouple to digital), and a PT1000 with opamps to filter/amplify the signal.
I will also be using LM22676MR-ADJ as a good step down converter from high voltages (42V just in case I want more power lol).

I added the components and started wiring up the ESD and USB-C port first:

After that I finished wiring up the USB-C PD chip. (Yes I made sure that there were pull up resistors on the I2C lines)

NotARoomba 🚀
added to the journal ago
Research
This is another project that surged out of nowhere (like trace) but mainly because I want to be able to solder/reflow my own PCB's in my house to be able to save cost and make bigger and better projects in the future (*cough* *cough* robotic arm *cough* *cough*).
While I could buy a hotplate in the shop, I feel like it's too small and I might need to reflow bigger PCB's so just in case, I want to build a large custom hotplate that has these characteristics:
- Powered by USB-C
- Portable/Easy to store
- OLED screen + knob and button to config
- Cool looking case (opportunity to learn CAD before making a robotic arm/rocket)
Looking through the internet to see if anyone has done anything like this, I stumbled on this repo. While cool looking, it uses an external power supply and has a relatively small heatbed (80mm x 80mm). I'm aiming for 4 times that (in terms of area) with a 160mm x 160mm heatbed (or even bigger).
Doing more research and looking at materials, making a heatbed out of aluminum and one layer of copper costs a lot for big boards (slabs of aluminum)

Or even a bit smaller:

BUT, JLCPCB HAS THIS NEW COOL THING CALLED FLEX HEATERS THAT ARE WAYY CHEAPER AND CAN GO FOR BIGGER BC THEY'RE ALL AT 9 USD! SO being the capitalist that I am, I am going to capitalize on these savings and use one.

Now all that's left is to design the board. As I want USB-C PD, I am thinking about using a STM32G0B1KE (32 pin version) as it's powerful enough to do everything that I want it to do. I also would need a 3V3 converter (LM3281YFQR). In addition to a mosfet to control the how much current is going through (PWM). I also plan on adding a bunch of redundancy like USB-C ESD protection, fuses, current sensors, and temperature sensors (Thermocouple and Pt1000).
Since this is going to be a flexible heater, I will also need a way to "prop" it up in the air so that it doesn't burn my desk. I plan on using an aluminum sheet with a hole in each corner to insert a "leg" (screw or smth) to be able to prop it up. Then at the bottom I plan on having a nice case (titanium /j) for the PCB and screw terminals to connect it to the hotplate/heatpad/flex heater.
NotARoomba 🚀
started Ember ago
11/14/2025 - Research
This is another project that surged out of nowhere (like trace) but mainly because I want to be able to solder/reflow my own PCB's in my house to be able to save cost and make bigger and better projects in the future (*cough* *cough* robotic arm *cough* *cough*).
While I could buy a hotplate in the shop, I feel like it's too small and I might need to reflow bigger PCB's so just in case, I want to build a large custom hotplate that has these characteristics:
- Powered by USB-C
- Portable/Easy to store
- OLED screen + knob and button to config
- Cool looking case (opportunity to learn CAD before making a robotic arm/rocket)
Looking through the internet to see if anyone has done anything like this, I stumbled on this repo. While cool looking, it uses an external power supply and has a relatively small heatbed (80mm x 80mm). I'm aiming for 4 times that (in terms of area) with a 160mm x 160mm heatbed (or even bigger).
Doing more research and looking at materials, making a heatbed out of aluminum and one layer of copper costs a lot for big boards (slabs of aluminum)

Or even a bit smaller:

BUT, JLCPCB HAS THIS NEW COOL THING CALLED FLEX HEATERS THAT ARE WAYY CHEAPER AND CAN GO FOR BIGGER BC THEY'RE ALL AT 9 USD! SO being the capitalist that I am, I am going to capitalize on these savings and use one.

Now all that's left is to design the board. As I want USB-C PD, I am thinking about using a STM32G0B1KE (32 pin version) as it's powerful enough to do everything that I want it to do. I also would need a 3V3 converter (LM3281YFQR). In addition to a mosfet to control the how much current is going through (PWM). I also plan on adding a bunch of redundancy like USB-C ESD protection, fuses, current sensors, and temperature sensors (Thermocouple and Pt1000).
Since this is going to be a flexible heater, I will also need a way to "prop" it up in the air so that it doesn't burn my desk. I plan on using an aluminum sheet with a hole in each corner to insert a "leg" (screw or smth) to be able to prop it up. Then at the bottom I plan on having a nice case (titanium /j) for the PCB and screw terminals to connect it to the hotplate/heatpad/flex heater.
11/15/2025 - Start of Schematic
I first created a new KiCad project and then opened up STM32CubeMX and followed this guide on the ST website to configure USB PD. I also changed the processor to the STM32G0B1CBT6 as the other one didn't have a second CC pin due to the pin count.
Yknow what, scratch that, I'm a Texan and should be loyal to TI. So I'm gonna go with a TPS25730D and then use an STM32WB55 to get bluetooth support (everythings better with bluetooth lol). Jokes aside, I am going with TI because I want to complete this project in 3 days (crazy right?) and I feel more comfortable with their chips (Also serves as practice for when I have to work with Athena's PD chip).
For the mosfet I will be using IRFB3207 and TLP183 to drive it (taken from the original repo) and for temperature sensors, MAX6675 (thermocouple to digital), and a PT1000 with opamps to filter/amplify the signal.
I will also be using LM22676MR-ADJ as a good step down converter from high voltages (42V just in case I want more power lol).

I added the components and started wiring up the ESD and USB-C port first:

After that I finished wiring up the USB-C PD chip. (Yes I made sure that there were pull up resistors on the I2C lines)

11/16/2025 - Worked on Schematic
I started wiring up the STM32 and configuring it in STM32CubeMX. THIS TIME LOOKING AT THE REFERENCE SCHEMATIC AND NOT COPY PASTING TO AVOID ERRORS.


THIS TIME I ACTUALLY ADDED PULL UP RESISTORS ON THE I2C LINES AND DOUBLE CHECKED THE DECOUPLING CAPACITOR VALUES.
I researched a bit about the different screens like the ones on the flipper zero but the standard I2C OLED is fine (SSD1306). I found this cool tool to create UI/UX so I'll put it here to save for later (https://arduinogfxtool.netlify.app/)
I also added in a bit more stuff like current sensor, buzzer, and board thermometer just in case. I might also add in NFC functionality to be able to wirelessly transfer temp data to the board/have presets set in NFC tags and I just put it on top and let it go (overkill but why half ass it).
I also added a 32MB flash to add images/graphcs onto the OLED (might be possible)
I hope to find this encoder somewhere: https://tech.alpsalpine.com/e/products/detail/EC11E18244A5/
I also spent some time thinking about the case:

(very crude)
I'd want it made out of a high quality plastic (PA11-HP Nylon) or acrylic to be able to see the board interior with rounded corners and space to fit the board and OLED/Encoder. I might also include one of those push-push-switches to turn it on or off. (sends signal to STM32 to disable USB-C PD and turns off the display/lights. OR I COULD DO THE BACK AS (PA11-HP Nylon) AND THE TOP COVER AS ACRYLIC, but I'm too tired to think so tmrw I'll finish the schematic and start the routing.
11/17/2025 1 AM - STM32 Pinout and Most Peripherals
I started by first defining the pinout for the STM32, as I wanted to use most of the pins, I added some status LED's and a buzzer. Continuing on from yesterday's work, I skimmed through the datasheets of each component to see which extra pins I would need to add them immediately and not have to worry about adding them later. I had some trouble with the timers and flash as I could only use 2 timers (out of 4) so I needed a way to get input from the rotary encoder, set the heatbed, and also to control the buzzer. After researching a bit more, I ended up using LPTIM1 for the rotary encoder as I say that It had input for that.
After configuring all of the pins, my STM32 looked like this:


After that I went to work wiring up the rest of the peripherals like the flash, buzzer, board temperature sensor, current sensor, and NFC antenna.





After that, I routed the buck converter to convert from PPHV to 3.3V:

I looked carefully in the datasheet and made sure that I was using the right inductor and capacitors (looked them upon LCSC and added the part numbers).
I also bom optimized a bit by using as many 4.7K pull-up resistors as I could to not have extra costs for different resistor values.
All that's left is to route up the external temperature sensors and also add in the connections to the heatplate. ALSO THE ROTARY ENCODER AND OLED DISPLAY. I plan on using screw terminals and making holes in the acrylic top case to be able to screw/unscrew them. I also plan on
11/17/2025 1 PM - Finished Schematic and Footprints
I routed up the external temperature sensors, using chips from MAXIM and ended up with this:



I then routed up the PWM hotplate channel (design taken from here) and ended up with this:

I then proceeded to add all of the LEDs and try to find in the OLED and rotary encoder footprints and add them in:


Then I organized the board and ran an ERC to make sure that I didn't have any unconnected items. After that I found a cool font that I am going to use for all of the logos and icons and design and added it in.

Then I updated the footprints for all of the components (making sure not to use 0201) and then imported it into the schematic.

11/18/2025 - Start PCB Layout
After finishing the schematic and selecting the footprints, I went over to the PCB and started grouping the components (ICs) together along with their passives.

(STM32 for example)
and continued until I had the rest of the components laid out. After that, I made a board outline of 50mmx150mm and then started placing the components there. From what I had in mind, I wanted the NFC tag on the opposite side of the USB-C connector and I also wanted the USB-C PPHV line to go through the top away from the other components. I wanted the Bluetooth antenna in a corner away from any noisy components so I decided to place it in the corner opposite of the PPHV line. The screw terminals I wanted in the top and preferably in the center, as well as the OLED and rotary encoder. After playing around with the layout I got something like this:

I started routing a bit but needed to work on Accelerate so I'm gonna take a break lol.
11/19/2025 - PCB Routing
After coming back, I had a thought. There will probably be space under the OLED so I can add in components under it. Although there will be resistors and stuff under it, I can always put a sheet of paper or smth to separate it.


I decided to reorganize the board to edit the space between the components:

After a while of procrastination and burnout, I finally started something:

I still have a bit of routing to go and then I'll send it for review in the KiCad Discord (first time lol) and also the blueprint channel before rendering it :sob:
11/20/2025 - Design Schematic
After working for a bit, I finally finished routing up most of the PCB:

I still have to impedance match the antenna and add in the 3D models and fix the silkscreen but for the most part it's done.
After that I fixed up the silkscreen aligning everything perfectly (ocd)

I entered the lock in call and finished impedance matching, edited the silkscreen, and added a few more aesthetic touches.


11/21/2025 - Change Buck and Heatbed
After posting it in the KiCad Discord I got the feedback to use another buck converter (TPS56339DDC) as electrolytic caps don't like heat so I rewired the buck converter and then routed it up on the PCB.


This gave me more space to put the MOSFET in the middle to dissipate more heat.
Moving on to the hotplate/heatbed, I found out that the design I am basing this off of has this schematic and PCB:


and I found out that these values come from KiCad's calculator:

So to design my own, I wanted to do the same. Looking through JLCPCB's Flexible Heater capabilities, I found out that the thickness of the material can be from 30um to 50um (silicone)

Looking at the voltage drop and power consumption, I only have 20V and 100W to play around with and the 3.3V buck converted needs a minimum of 5V so I have to change the length to make sure that I have at least 5V (with a bit of leeway) to be able to use as much area as I can.
I started researching about Hilbert Curves (very interesting) and also how there is a KiCad plugin to generate it:

I was playing around with it as I am trying to generate curves to fill the space in the heating element.

I then ended up woth this 400mm x 400mm board design AND THE BEST PART IS THAT IT'S ONLY 9 USD ON JLCPCB:

So after making the heatbed and the board I now am going to design a case in OnShape.
11/24/2025 - CAD (Canadian Dollars)

After procrastinating a bit, I decided to make the case. I had in mind to have the bottom with holes for USBcC and also have a space to add in the cables for the temp sensors and heatplate. I also thought about adding in a slope for the NFC section so that it will work for phones that have a limited range.
Then I posted the board in r/PrintedCircuitBoards and also in the KiCad discord and got some feedback for the board. I then had to change out the optocoupler for a gate driver and also added another screw hole and made them more symmetrical.

After that I worked on the case and tried to make it look good:

I also found this cool image because I want the USB-C cable flush with the socket:

Then after that I finished the bottom case

but I didn't know how to connect the top case to it so I will research that later.
After sleeping I thought about using heatset inserts and then also the different types of screws that I can use:

I think a sloted head would look decent as I wanted something that has a cylindrical head.


After a bit I finally finished the CAD!

11/25/2025 1 AM - Blender and BOM
After that I decided to put it in blender and get some nice renders of the PCB and case:




Then I finished up the BOM, created a logo, and cleaned up the README:


11/25/2025 10 AM - Blueprint Banner
This is just to update the blueprint banner after waiting on it to render, I just need to write 150 characters to fill up the requirement so that I can post this.

12/16/2025 - USB-C PD Working + Jingle Bells

So I finally got the PCB and it looks cool and even better was that when I plugged it in, it didn't burn up like Cyberboard V1 (wooo) so then I started trying to turn on the LEDs (first thing you always have to do) and the STM32 kept resetting and I didn't know why until later debugging (commenting out peripherals until it worked) I found out that I had mislabled an input pin as output:


After that I started configuring the USB-C PD controller to get the status of my laptop and aja after a bit of configurint I finally was able to get PDO's (power data objects) that specify what different power options the source has:

Sadly my laptop only provides [email protected] so yea...

moving on, I wanna try and get the speaker running and lookign at the datasheet I found this cool graph:

but nothign telling me at which speeds it's running at so I will make my own driver that can control the PCB duty cycle
After messing around I got jingle bells playing on the board lol.
12/17/2025 - NFC + PWM + Board Temp Sensor + First error
I started getting a driver for the NFC chip and added it in, and also struggled a bit with the I2C address as I kept overwriting it whenever I read / write to the tag.

After that I worked on getting a basic PWM driver for the hotplate and I confirmed that the MOSFET was working.
I tested it with a multimeter at 1 Hz (it was switching lol) and then moved on to the board temp sensor. That was also really simple as there were drivers on Github and at first I found one for the tps116, after reading through the datasheet and this pull request, it was the same driver for the tps119 just with a different device id:

Moving on to the current sensor, I found out that I had wired it wrong:


(VS needed to be connected to 3V3 but luckily the regulator is next to it so I can solder a small wire connecting them:

Anyways that wasn't something critical so I moved onto getting the drivers for the external temperature sensors. These functioned over SPI and on different channels to avoid different data length errors, I then got the drivers:

and got them implemented:

after that it was time for the max6675:

I finished that but I still had a problem with the NFC, it wouldn't let me read or write to it and was unreliable at times so I went to look at the code and found out that it was trying to read and get a checksum of the data while it was being read/wrote (on field detect) and this caused a blocking operation on the storage which resulted in that unreliable behavior. After changing it to wait like 200ms it finally started working and I could get changes in the NFC reliably:

All that's left is to configure the screen and set up a PID algorithm for the heatbed (will finish that once I get the heatbed), get bluetooth to workm and get the flash / lcd working.

SO I took a bit of a break bc I got accepted into MIT and added in custom support to play music so yea lol I'ma sleep now
12/26/2025 - NFC Sounds + Bluetooth + Screen Working
I started in the airport trying to make some misc improvements and thought of making the board beep when an NFC tag is present, It took a little while bit I made it play a little jingle.
(Check my post in #50-days for the vid)
After that I was in another airport heading to blueprint and I was looking through this repo and apparently I needed to flash the bluetooth firmware that I was going to use on the other processor otherwise it wouldn't work. After trying to flash the FUS, I bricked one of the boards because I didn't press and hold the boot button when it was editing the option bytes. But after correctly holding down the boot button, I fixed it and was able to connect to it from my phone:

So prototype happened and then I started working on the OLED screen. I had to solder it and after realizing that I had the wrong type of solder I tried fixing it and had to hold it in a certain position for the screen to work.

after that I got a circle running from this cool library:

.jpeg)
and after a bit I got text and a basic UI although the fonts were wonky and I needed to import more:
.jpeg)
I still have a lot to go but thankfully my heatplate and case is coming in tomorrow so yea, I'll continue working on it.
12/27/2025 - UI + Case + Solder

So I finally got some more fonts in after making a script that converts any ttf/otf font into a bitmap font and I imported it to make this cool menu screen.

I then worked on making a status screen to show the USB-C PD voltage as I can't use serial when connected to a power outlet so yea and I successfully got 20v although it was at 4.5A:
.jpeg)
After a while I got a notification that my case finally came in so I went to get it and found out that everything fit perfectly lol

All that was missing were the heatset inserts and screws. This also as around the time that I couldn't take the bad screen solder so I went out and bought some leaded solder:

And then after that I finally was able to solder correctly and it looked amazing:

I then started to look for ui libraries on the internet and stumbled upon this one:

but the only problem is that I will have to port it to C :(
For the UI, here's what I'm thinking, a main menu screen that says press to start and then you will be sent to a scrolleable menu, it will have these entries:
- Start / Stop
- Status
- Settings
- About
The start stop button will start the hotplate controller and it will send you to a menu here you have to select between holding a temperature or a reflow profile, if you hold a temp then there will be a slider between 1-200C and for the reflow profile you will have the option to select it, no mater which option you select, there will b a confirm screen.
After you confirm, you will b sent to the status screen, this is basically where you can see how the heat plate is running and the temp and current raw and everything that you could possibly need.
In the settings bar you can change the behavior of the NFC or confirm or change the brightness of the OLED, also you can have the option to turn on or off Bluetooth discovery to control the board.
In the about scan it will how the firmware version and the credits.
Now that I have that planned out I will try and connect the hotplate to see how hot it can get:
