Goal: It is open source, and aims to be functionally equivalent to the official hardware. Because it strives to reflect the state-of-the-art, it can serve as a reference design to other people in the community. From my perspective this is very important, since the “official” hardware remains proprietary at this time, and a proper “open” version does not yet exist. (maybe? let me know.)
My design uses slightly cheaper components (with the exception of the MCU itself; I hope to port to a cheaper Arduino-supported microcontroller in the future, namely an STM32 clone or the ESP32).
In this particular implementation I also made some specific changes to tailor to my need, since I will be teaching a high school class using this hardware. Some changes/improvements are explained below:
-
For student handling safety, the battery was chosen to be a hard casing 14500 cylindrical cell instead of the original pouch cell. Furthermore, it has been determined that the protection circuitry (sometimes referred to as the BMS strip) must be an inherent part of the battery itself. For this reason, protection circuitry on the PCB has been omitted.
-
A charge pump regulator has been added to produce a steady 3.3V at high efficiency. This charge pump device has minimalistic circuitry, and will maintain 3.3V no matter whether the input is above or below 3.3V. This is expected to make the device behave consistently over the full range of battery voltages, and shall avoid putting any component under stress.
-
Type-C USB port. This Type-C connector is of the common 16-pin variety and can be soldered either by hand or by stencil.
-
Charging IC has been replaced with 4056. 4056 was chosen for its larger physical size (for easy soldering). Charging current is still fixed at 500mA. Note that the underbelly of the 4056 does not need to make electrical contact for the chip to function; as such, the IC can be comfortably soldered by a beginner.
-
Option to use either the on-board OLED (1.3’’) or an add-on mezzanine 2.42’’ module. This allows students to purchase the larger screen separately off the shelf and “upgrade” their devices with their own money and in their own time. Using a COTS module is appropriate, as the larger screen requires dedicated components, which are already fitted on the module, so this add-on module approach eliminates redundancy.
-
SPI flash is of the traditional wide-body type in order to reduce cost and to ensure interoperability with commercially available flash sockets (flash sockets which use the same footprint as the flash itself). Note that a flash socket is not necessary.
-
Oversized slider switches to ensure low contact resistance and good durability. (not shown in sch)
-
Low battery indicator. Since there is no way to implement it system-wide in software (partially due to how the software is architected), I have included a hardware low battery indicator, which is just an LED that will autonomously flash under low battery conditions. It makes use of the MCU’s exposed AREF voltage. The effectiveness and desirability of this remains to be seen.
-
How display detection is proposed to work (in theory): The 2.42’’ module has two 4.7k pullup resistors hard-wired to the data pins whereas the on-board hardware does not. These resistors should be detectable by the MCU and will help determine the presence of an add-on display module. Software (namely, the bootloader) handles the automatic detection and switching. That’s the gist of it. But if you can think of a better way, please advise.
So I present to you a preliminary schematic. Please do not hesitate to point out any errors and let me know your thoughts about this design.
Arduboy EDU.pdf (452.1 KB)