For a long time I have wanted to try my luck with PCB fabrication – and with the growing interest in my Firefly Remote, I choose to design a complete PCB with all needed circuitry and components. The PCB should be able to replace all other electronics, which made some requirements:
- Everything needs to be powered from a single Lithium battery (3,7V)
- Should be able to fully recharge the attached battery
- Microprocessor needs to have the same specifications as an Atmega328 (or better)
- Supports Arduino IDE
- Reprogrammable though a USB port
Power
The original Firefly Remote is based on an Arduino Nano (5V, 16Mhz) and the whole thing is powered by a 3.7V Lipo battery boosted by a 5V step-up converter. To simplify the circuit and eliminate any potential electromagnetic noise coming from the switching coil in the voltage booster I choose to make the entire project 3.3V. This makes it possible to discard the whole 5V step-up circuit and introduce a much simpler solution; a 3.3V voltage regulator. I have chosen to use the LDO voltage regulator called MIC5219 (SOT-23) with a peak current of 500mA.
In addition to being able to drain the battery, a method of charging is also needed. Charging Lithium batteries is best done with a charge regulator so that the voltage cuts off if the battery is full. To do this I have chosen the regulator called MCP73831 (SOT-23).
Microprocessor
The Arduino Nano is based on the Atmega328 which is a good all-around microprocessor, however, it lacks native USB support and has a relatively small amount of SRAM (2KB). To achieve USB support a Serial Converter chip is therefore needed, which takes up space and complicates the build quite a deal. The Atmel series is quite big, and these chips aren’t the only ones supporting the Arduino IDE. However, because of my lagging experience with other than Atmel chips, I chose to use the less but still know processer called Atmega32u4. This microprocessor comes with a “stunning” 2.5KB of SRAM and of course native USB support.
The Arduino Nano has a clock frequency of 16 MHz, however, this frequency is not sustainable at voltages lower than 4.5V. The Atmega32u4 works in a similar way, and while it is possible to run the Atmega32u4 at 16 MHz with 3.3V it is not recommended, instead, an 8 MHz clock will be used.
PCB
To make sure that the Atmega32u4 is correctly wired I chose to base the schematic on an Arduino Pro Micro and the Adafruit Feather 32u4 Basic Proto which conveniently uses the same chip. To further develop the schematic I found an example from the Atmega32u4’s datasheet of how to power the chip as a “Self-powered application”:
The final schematic and PCB design are made in Altium Designer, a piece of software I have been using a lot lately.
The complete schematic can be downloaded here: Remote schematic.