IOT123 - HV ATTINY85 Fuse Resetter

5.9K372

Intro: IOT123 - HV ATTINY85 Fuse Resetter

There are many versions of the ATTINY85 Fuse Resetters on the NET. This is based on the work of diy_bloke (Instructable, the above schematic) and Ralph Bacon (GIT, Youtube video below). The main benefit of this device is sacrificing the reset pin on an ATTINY85 for use as a GPIO.

The main differences with the previous builds are I embed a dedicated Arduino Pro Mini and give a simplified build instruction.

My desk real estate is precious and I did not want to dedicate an UNO for this infrequent process. A separate 12V power supply is needed. I use an unused 4A Switching Mode Power Supply. I understand 12V batteries can be used. A 500mA smooth supply seems a prerequisite.

As a nod to Ralph, I included to optional steps of including a Buzzer and LED indicator.

STEP 1: Materials and Tools

    There is a full Bill of Material and Sourcing list.

    1. 4x6cm Universal PCB (1)
    2. 5V Arduino Pro Mini with male headers (1)
    3. ATTINY85-20PU (1)
    4. 8 Pin DIL IC Socket (1)
    5. 2.1 x 5.5 mm DC Power Supply Jack Socket (1)
    6. BC547 NPN Transistor (1)
    7. 1K resistors (6)
    8. 150R resistor (1)
    9. 5V Buzzer (optional)
    10. LED (optional)
    11. Hookup wire (~12)
    12. Solder and Iron (1)
    13. Strong Cyanoachrylate Adhesive (1)
    14. 12V Power Supply (1)
    15. RTL-232 FTDI chip (1)

    STEP 2: PCB Assembly

      The assembly below suits the power supply I had. The Power Socket and 2P male header can be swapped out with a screw terminal if it suits...

      1. On the top, insert Power Socket (glue to board), 2P header, Arduino Pro Mini, 8P DIL Socket, BC547 and solder off on bottom.
      2. Bend tabs from power socket to 2P pins and solder (+ve to WHITE3).
      3. On the top, trace a 1K resistor into BLUE1 and BLUE2 and solder. Bend lead from BLUE1 onto ORANGE9 and solder.
      4. On the top, trace a 1K resistor into BLUE3 and BLUE3 and solder. Bend lead from BLUE3 onto ORANGE10 and solder.
      5. On the top, trace a 1K resistor into BLUE5 and BLUE6 and solder. Bend lead from BLUE5 onto ORANGE11 and solder.
      6. On the top, trace a 1K resistor into BLUE7 and BLUE8 and solder. Bend lead from BLUE7 onto ORANGE12 and solder.
      7. On the top, trace a 1K resistor into BLUE9 and BLUE10 and solder. Bend lead from BLUE9 onto ORANGE13 and solder.
      8. On the top, trace a 1K resistor into WHITE5 and WHITE6 and solder. Bend lead from WHITE5 onto WHITE3 and solder.
      9. On the bottom, trace a yellow wire into YELLOW5 and BLUE2, and solder.
      10. On the bottom, trace a yellow wire into YELLOW6 and BLUE4, and solder.
      11. On the bottom, trace a yellow wire into YELLOW7 and BLUE6, and solder.
      12. On the bottom, trace a yellow wire into YELLOW2 and BLUE8, and solder.
      13. On the bottom, trace a yellow wire into YELLOW8 and ORANGE8, and solder.
      14. On the bottom, trace a black wire into WHITE2 and WHITE4, and solder.
      15. On the bottom, trace a red wire into WHITE1 and WHITE3, and solder.
      16. On the bottom, trace the lead from WHITE8 to BLUE10, and solder.
      17. On the bottom, trace the lead from WHITE7 to WHITE5, and solder.
      18. On the bottom, trace the lead from WHITE9 to WHITE4, and solder.
      19. On the bottom, trace a black wire into WHITE4 and YELLOW4, and solder.
      20. On the bottom, trace a red wire into WHITE7 and YELLOW1, and solder.
      21. [Buzzer, OPTIONAL] On the top, insert Buzzer into PINK1 and PINK2, solder on bottom.
      22. [Buzzer, OPTIONAL] On the bottom, trace a red wire into PINK1 and PINK3, and solder.
      23. [Buzzer, OPTIONAL] On the bottom, trace a black wire into PINK2 and PINK5, and solder.
      24. [LED, OPTIONAL] On the top, insert LED into PINK6 (short cathode) and PINK7 (long anode), solder on bottom.
      25. [LED, OPTIONAL] On the bottom, bend lead from PINK6 onto YELLOW4, and solder.
      26. [LED, OPTIONAL] On the top, trace a 150ohm resistor into PINK7 and PINK4 and solder.

      STEP 3: Firmware Upload

      The codebase used has passed through a few hands. It has come unmodified from Ralph's GIT.

      The Arduino Pro Mini is conveniently flashed using a FTDI232 USB to TTL converter. Insert the 6P right angle pins from the Mini into the female header of the converter.
      Ensure the 5V setting is chosen on your FTDI232. Follow the instructions here using the code below (use link to GIST).

      STEP 4: Using The​ HV ATTINY85 Fuse Resetter


      1. Ensure the Serial Monitor in the Arduino IDE is set for 9600 baud.
      2. Remove the Voltage selector Jumper from FTDI converter so that all the power is derived from the 12V source.
      3. Plug the 12V power into the board.
      4. Plug the FTDI converter onto the Arduino FTDI pins and then into the USB port of the PC.
      5. Choose the correct COM port in the Arduino IDE.
      6. Open the serial monitor.
      7. Follow the instructions in the serial monitor, inputing your choice (1 or 2) into the text box and hitting enter.

      STEP 5: A Simple Test

      The general workflow for enabling the use of the RESET pin as a GPIO is:

      1. Ensure the reset function is enabled, using this device, so that firmware upload is possible.
      2. Upload the firmware to the ATTINY85 that makes use of the reset pin as a GPIO.
      3. Ensure the reset function is disabled, using this device, so that using the pin as a GPIO does not trigger a reset.

      For this test, for #2 load Examples > 01. Basics > Blink, and change all pin references from 13 to 5. Without the resetting of the fuse bit this would normally reboot the ATTINY85 when setting the pin LOW.

      STEP 6: Next Steps

      I initially went down this road in prototyping some RF24Mesh nodes using the ATTINY85, based on this great article.

      I'm sure having an extra usable pin on the ATTINY85 will be considered at some point.

      2 Comments

      Well done. The one in my blog that you refer to is mainly meant for those who incidentally need to unbrick an attiny13/25/45/85 or reset P1.

      If one plans to do it on a regular base, a build with a dedicated Arduino such as in your project might be a more suitable option

      I updated the reference to you. I like the vertical (Keyes) brick design. My initial reason for the build was to use the PB5 (reset was only usable pin) on https://www.instructables.com/id/IOT123-5PIN-ATTINY85-NRF24L01-BRICK/. The enable/disable process happened every update of the firmware. It is a stable base to extend to the "3 wire" design, with 3 usable pins.