A cheap, extensible, and simple Arduino-compatible development board using ATmega32A.
TruMicro U32 is my own development board based on Atmel ATmega32A microcontroller. It’s fully extensible and built using only through-hole parts. It’s dual (3.3V and 5V) voltages and has a switch to select your desired voltage for VCC of the AVR. Also it’s programmable by its USB connector and uses a small (2KB) bootloader to simulate a software USB device using the V-USB framework. By installing the appropriate driver from “libusb” in Windows, a standard USBasp device will appear and you may easily use “avrdude” to program it. You may also use the Ardiono IDE and write sketches for it and automatically upload them. But since it’s using ATmega32A (40 pins) instead of the standard ATmega328 (28 pins) and its pins are numbered as the original chip (PA1, etc.), you should find the equivalent of standard Arduino pin numbers (digital, analog and PWM) in it and match them to its pins.
The bootloader is configured in an innovative way to let user choose to either directly run his program or enter the USBasp bootloader, using only the “Reset” button. Everytime the bootloader starts, it flips a value in an EEPROM location. Then it checks that if the value is 1, it goes to the bootloader, otherwise it will directly run the user program. So, the first time you press the on-board “Reset” switch, you’ll get into the bootloader, and the next time you’ll get into your own program, and so on…
Also when you power on the board, it always runs the user’s program at first, even if it was at user’s program the last time you powered it off. You must “RESET” the board using its switch once to get to the bootloader. So, cycling the power off and on, never gets you to the bootloader. That’s because when the board is deployed in a real place, the power off/on cycles don’t cause it to go to the bootloader mode. It then always runs the user’s program.
Also, after every programming operation, it re-flips the EEPROM value back to normal and then automatically runs user’s program. By this method, the board always automatically starts the user’s program after successful programming. Also, resetting the board will get you back to the bootloader again and you can re-program the new version of your program. This makes the debugging and re-programming operations much easier.
The board has two right angel connectors on both sides on the edges. One male and the other one female. These connectors are directly connected to each other pin-to-pin and to the microcontroller’s pins. Each extension module has these connectors on its sides too which are connected together. This way, you can connect as many extension modules as you want side by side in any arrangement instead of on top of each other, without the fear of having a tower of shields or them covering each other’s important parts. The board also has conventional connectors to let you add Arduino-like shields and/or use them for your experiments. But their pin count and arrangement are different from Arduino and its shields are not physically compatible with them.
I used ATmega32A instead of the conventional ATmega328 because it has more IO pins. It has 4 full 8-bit GPIO, 8 ADC inputs, etc. I also omitted the USB-to-Serial converter IC and used a software USB bootloader instead to keep the board cheap and use only through-hole parts.
I will send more pictures and details about TruMicro U32 and the extension modules and shields I made for it and the experiments I did with it. The schematics and PCB’s are designed in KiCAD, but they have little problems such as some empty resistor values which make them unready for release. I will work on them and will release them on my GitHub page and/or as a downloadable ZIP file here.
TruMicro U32 is currently on Version 1.1 – Revision B. It means I made 4 other versions before and fixed their problems and improved them step-by-step before finally making this version. It took a lot of work and dedication to reach a complete and bug-free device.
The board is completely homemade and all of its building procedure was done using free software and the toner transfer method at home. I always build my PCB’s at home using my special method for toner transfer which easily gets me clean and fine PCB’s. I will post the exact procedure details someday. Since this board is homemade and built using only through-hole parts, you may easily build one for yourself.
I also made some configuration files to make the Arduino IDE compatible with it. I will upload them too.