Close
0%
0%

Internet Connected Boot Dryer

Modifying a Boot Dryer to be controllable via the internet!

Public Chat
Similar projects worth following
I got a MaxxDry boot dryer for super cheap from Goodwill. It is controlled via a heater switch and timer dial, but it won't stay on all the time if the timer is not running, unlike most other boot dryers. This project will modify the MaxxDry and add an ESP32 and use MQTT to control the dryer remotely or set it to always turn on/off at a certain time of day.

This is a boot dryer controller using an ESP32! See the files for all the files you need to make this yourself.

NOTE. THIS PROJECT CAN BE VERY DANGEROUS.

  1. The boot dryer I chose, a MaxxDry, seems to be a fire hazard if the heater is on but the fan is turned off. In the default setup with the analog front panel controls, the dryer cannot be put in a state with the heater on but the fan off. If something happens and the software fails to where the relays are in a dangerous state, it could pose a fire hazard.
  2. This project involves mains wiring and the schematic as it stands does not include fuses or any other safety features. Be careful!

Now, here's a description of all the files so you can make this yourself if you so choose!

The schematic is provided as smart_boot.pdf

smart_boot.csv is the BOM for all the items on the schematic.

I'm not providing a PCB because I don't want liability for poorly designing a PCB that could be dangerous. Please make sure you're building this circuit safely and know what you're doing when it comes to mains voltage and high power heating elements!

smart_boot_esp32.ino and config.json are required for the software bit. config.json holds all the information for connecting to WiFi, an MQTT broker, etc.

flows.json is the Node Red flow setup I used.

So yeah, that's about it! Please comment or message me if you have any questions, and let me know if you build this project yourself!

flows.json

The node red flows that work with MQTT to control the dryer

JavaScript Object Notation (JSON) - 25.34 kB - 06/15/2019 at 00:08

Download

ms-excel - 567.00 bytes - 06/15/2019 at 00:04

Download

config.example.json

A config.json file that needs to be put into SPIFFS for the ESP32 to read and configure everything with. Change all values to your relevant information.

JavaScript Object Notation (JSON) - 286.00 bytes - 06/14/2019 at 23:58

Download

smart_boot_esp32.ino

The Arduino code for the ESP32

ino - 16.11 kB - 06/14/2019 at 23:58

Download

smart_boot.pdf

PDF of the schematic

Adobe Portable Document Format - 59.37 kB - 06/14/2019 at 23:51

Preview
Download

  • 1 × MaxxDry Boot Dryer Can also use any boot dryer with a fan and heater
  • 1 × All items in BOM file (smart_boot.csv)

  • Some Changes Coming

    mark2 days ago 0 comments

    So after discovering the horrible AC isolation problems, I've redesigned the thing slightly and ordered new PCB's. I'll update when they arrive and I've had a chance to test them out!

  • In Which I Learn the Importance of AC Isolation

    mark2 days ago 0 comments

    So this could very well be why the board is flipping out sometimes when I turn on the fan.

    This is present on all IO pins, all over the board, everywhere, all the time. Whoops.

  • It Werks!

    mark3 days ago 0 comments

    So turns out, I made a big mistake.

    I didn't realize that RX goes to TX and TX goes to RX, not RX to RX and TX to TX. I was misreading some schematics and was very confused.

    But it works!

    However, the relay footprints still need fixing (I just bodged it for now), it needs better AC isolation design/fusing, and I'm still not sure why it occasionally browns out. I'm using an 800mA 3.3V regulator and it's drawing, at most, 120mA. Maybe I need bigger capacitors on the power rails. 

    I've discovered something about this heater - the heater itself is never meant to be on without the fan. If air is not being forced over the heater, it gets incredibly hot and starts to glow and smoke slightly. That's a problem if the fan fails, for sure. I've added code to ensure that the heater is never on without the fan, but still.

    I'm going to be testing it for a while to ensure that it doesn't become a fire hazard.

    There are a few worries with this thing:

    Like I said, I haven't figured out why the 3.3V sometimes drops out, and it can occasionally get into a state where it keeps browning out forever and never comes back up. This could result in a state where the heater is on and the fan is not, which is a hazard.

    So yeah, it works! Over the coming hours/days I'll be uploading everything that you would need to recreate this project, along with lots of warnings about possible safety hazards!

  • New boards! They don't work!

    mark4 days ago 0 comments

      Welp

      got new boards that don't work

      1. Switch footprints are wrong. The two pins the switch contacts are wired to be across are actually common with each other.
      2. The relay footprints are wrong. The way it's wired has the switch where the coil is and vice versa. My fuckup on the schematic symbol.
      3. After bodging the relay problem, the 3.3V regulator drops out for some reason, only giving like 2V
      4. Also the auto-reset circuitry doesn't work.

      Time to test and redesign, wheeeee

  • An incredibly weird issue with ESP32 SSL

    mark06/09/2019 at 05:03 1 comment

      I write this in the hopes that if anyone else has this problem, they might stumble upon this post (or the StackOverflow question I made, or the GitHub issue I created...) to help them since it's so bizarre and incredibly hard to tell what the problem is.

      My situation is as such: I have my Mosquitto instance secured with a LetsEncrypt certificate. I want to connect my ESP32 to this instance, so I need the CA root certificate to send along using `WiFiSecureClient`. There are two options.

      1. Hardcode the certificate into the microcontroller code.
      2. Use SPIFFS to put the certificate file on the ESP32 and load it dynamically.

      I had done the first route successfully, but I really dislike hardcoding things, so I wanted to do the latter.

      This ended up being much more difficult than I assumed it would be.

      My original code was as such:

      if(!SPIFFS.begin(true)) {
        Serial.println("Error mounting SPIFFS.");
      }
      
      File file = SPIFFS.open("/root.cer");
        
      if(!file) {
        Serial.println("Error opening the file.");
      }
          
      String ca_cert = file.readString();
          
      Serial.println("CA Root certificate: ");
      Serial.print(ca_cert);
        
      espClient.setCACert(ca_cert.c_str());
      file.close();

      Seems simple enough.

      Nope.

      It didn't work.

      I performed every check in the book to see if the hardcoded certificate and the one loaded as a file were the same thing, and they were. Every single equality test I could think of returned that they were, in fact, the exact same string.

      However, there's one little note in the Arduino documentation for .c_str():

      Note that this gives direct access to the internal String buffer and should be used with care.

      Now normally "used with care" applies to situations where you are modifying this string buffer, or trying to use it after the string has been destroyed, etc. Apparently this warning applies to this case as well.

      For some reason, using the following code fixed things:

      char *dest;
        
      dest = (char *)malloc(sizeof(char) * (ca_cert.length()+1));
      strcpy(dest, ca_cert.c_str());
        
      espClient.setCACert(dest);
       

       I have no idea why this works, unless for some reason setCACert tries to modify the pointer it's provided.

      But hey, it works. And I can finally stop ripping my hair out over this.

  • Schematic Revision C

    mark06/08/2019 at 14:48 0 comments

    So, some changes had to be made since the first PCB didn't work. The problems were:

    • The programming didn't function at all. I wasn't able to program the board using the serial connector with only RX/TX (and maybe because it was an FTDI chipset, not the CP2102). 
    • The relay footprints were totally wrong, I got them from DigiKey and reported the issue, they corrected it and sent me updated footprints.

    The changes I made were:

    • Use a fully-enclosed AC/DC converter I ordered from eBay. This doesn't require any external circuitry unlike the module I had previously purchased.
    • Add auto-reset circuitry.
    • Change the programming connector to accept the extra serial pins to provide reset signals.
    • Add LED's that were part of the original, but that I left off of the circuit I had manufactured. These LEDs will be external to the board so they are realized using 2-pin connectors.

    Check out the Rev C schematic file to see the new and improved design! I've ordered PCB's and hopefully they'll work.

    Once I have completely-working PCB's, I'll be providing Gerber/CAD files for them.

  • PCB Progress!

    mark06/05/2019 at 23:31 0 comments

    So, I have the PCB's all done and assembled and... they don't work.

    Read more »

  • Node Red Complete!

    mark05/29/2019 at 00:58 0 comments

    So, implementing the Node Red flows for this project is completed! See the flows.json file for importing them yourself. Here's the dashboard!

    Keep reading for how it's all done...

    Read more »

  • Important Note Regarding This Project & Mains

    mark05/27/2019 at 23:33 0 comments

    This project has a (120V) mains input on it. This PCB was also designed with very little mains isolation. If you decide to construct this PCB yourself, be INCREDIBLY CAREFUL. The PCB could be incredibly dangerous if hooked up to mains and you don't know what you're doing.

    Be warned.

  • Creating the "Smart" Bit

    mark05/26/2019 at 02:04 0 comments

    Shown in smart_boot.pdf is the first iteration of the schematic for the controller. I'm using two ALQ3F12 relays for switching the heater and fan, and a NUD3112 dual inductive load driver, which is specifically made for switching 12V inductive loads (aka the relay coils). This chip is incredibly inexpensive and makes things easier than doing my own relay driving with transistors and diodes. To get the required 12V and 3.3V for the circuit, a PBO-1-S12 AC-DC converter is used. This is a SIP AC-DC converter that is compact and requires a bit of external circuitry, most of which is optional. An ESP32-WROOM-32 is being used as the microcontroller, and will allow for all sorts of connected funtimes. Shown below is an image of the PCB that I'm getting manufactured. 

    Please ignore the woeful lack of isolation between mains and low voltage sections of the board. I could have done much better, but it'll work. My main goal was to be as compact as possible, since I don't have much space inside of the boot warmer to place the circuitry. I've ordered the boards, all the parts have already arrived, but we'll see if this works!

View all 11 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates