First off, some answers to questions that may or may not pop up:
Launchpad? Isn't there a development board by Texas Instruments with the same name?
- Yes, of course. However, I didn't know that at the time I was designing and ordering the PCBs for version 1.0 (public knowledge of microcontroller development boards isn’t that widespread where I’m from). I deliberated on Launchpad because I’m very interested in spaceflight and that I also envision this project to one day help people have an easy and cheap starting point to turn their ideas and dreams into reality.
Are you planning to sell these?
- Well, probably. If there is demand I probably will. However, I surely will not be able to sell these at the $2 price mentioned since that only covers the cost of the components and does not include labor and assembly. I’m still assembling boards via hand-soldering so it will take a bit of time and effort to produce.
- Yes, I will release the design files eventually once I'm happy with a version I deem "releasable" or of course (with regards to the first question), I will be obliged to release the design files either way if I put these up for sale since this is indeed a derivative work.
With the rise of technology use and the predicted arrival of Industry 4.0, it has been said that an interdisciplinary workforce will soon be vital as advanced technology becomes more and more integrated into our daily lives. Thus, it becomes apparent that knowledge in technology and programming must become a basic life skill. A great way to help aid in this endeavor is by creating low-cost learning tools for electronics that can be easily accessible to anyone, especially those living in poverty.
The goal of this project is to design and create a low-cost (and probably commercially viable) microcontroller development board that is targeted towards both beginners and experts alike; improves upon the Arduino Uno and Nano; and only costs as little as $2 to manufacture. The board should also be intuitive and easy to use for basic education applications.
This project is probably the first time I've ever designed a PCB (I won't make it a secret that I am relatively new with... all of this). Thus, I had to read up a lot on PCB design, concepts, and stuff regarding working with EDA's. Considering this, I'm very proud of my work and I'm glad to share it all with you.
Special thanks to Spence Konde (DrAzzy) for creating megaTinyCore that enabled the board to have full Arduino IDE support and for being accommodating and friendly in assisting me with all the issues I have encountered along the way and answering some of my (sometimes dumb) questions.
Current Version (Version 1.0)
- Breadboard-friendly pinout
- Micro USB type B connector
- Microchip ATtiny1616
- 20MHz clock speed
- 16kB of flash memory
- 2kb of RAM
- 256 bytes of EEPROM
- 18 I/O pins (1 is currently configured as the reset pin)
- 8 PWM outputs (8-bit resolution)
- 12 analog inputs (10-bit resolution)
- 1 true analog output (0 - 4.3V)
- UPDI programming interface
- 1 UART
- 1 SPI
- 1 I2C
- Configurable custom logic (CCL) pins
- tinyAVR 1-series architecture (similar to the megaAVR 0-series chips on the Arduino Nano Every and Uno WiFi rev2 boards)
- OptibootX bootloader
- CH340G USB to serial converter
- AMS1117 5V LDO voltage regulator
With the first version, I have already achieved (although quite barely) my goal of having a $2 total cost in components, PCB, and shipping fees per unit. The thing to note here though is that it is a unit price - since buying components is always done in bulk and panelizing the PCB is the best way to achieve low unit prices, the $2 price is only true in a production run with a minimum of 100 boards. The version 1.0 board itself isn't that complicated. It's basically a Chinese Nano clone schematic modified to be able to use the ATtiny1616 microcontroller instead (and fix some quirks and cost-cutting measures by replacing/adding components with better ones of course). This means that it also uses a CH340G for USB to serial translation and an AMS1117 for external 7-12V power conversion into 5V. Schematics and design software freely available in the internet made the whole design process quick and easy. I used EasyEDA to create the schematic and PCB design files then got them fabricated through JLCPCB.
Quirks (will be fixed in the next version)
- You can't connect an external power source and USB at the same time
- Even though I wanted to, I couldn't get the auto-selector circuit from the Uno (yes, with the op-amp and all) into this board due to space constraints. While it is more practical to just add a schottky diode between VUSB and the 5V line after the polyfuse, I did not quite like the idea of having "not-5V-5V-output" pins on my board. However, after some considerations and messing around with other similar development boards, I found out it really doesn't matter as most compact boards do that anyway. So, I'd just put a diode in the next version.
- No 3.3V output
- This was also due to space constraints, as I didn't have any space to place another AMS1117 on the board. While the Nano clones that utilize the CH340G do have a 3.3V output, it was connected directly to the "V3" pin of the CH340G which can only output a maximum of 30mA - which is alright for NRF24L01 modules sure, but not enough to power modules like an ESP-8266 so I thought a proper external regulator would've been better anyway. This was when I was finalizing the designs and getting the PCBs ordered. Since then I have found a suitable regulator: The MIC5504, which is both small (SOT-23-5 package) and can output up to 300mA.
- That BIG BIG CRYSTAL
- Honestly, I think it's cute : ). For those that don't agree with me, I will thankfully be transitioning to a smaller CH340E converter chip which does not need an external crystal and comes at a very tiny MSOP-10 package (you're welcome). SMD crystals and oscillators are more expensive so I had to make do with a through-hole package to meet my goal.
- LED doesn't flash during power-on reset
- Believe it or not, it was only recently when I realized Arduino official and compatible boards actually do that (Huh, who knew?? @_@). This was mainly due to a lack of documentation in megaTinyCore (and my lack of knowledge with Optiboot). Apparently, the LED pin in Optiboot is set to the PA7 pin(pin 3 on the board) by default, but I connected the onboard LED to pin 16 for easier trace routing (and to make it similar to the Uno and Nano wherein you can also use PWM). I'll probably fix it when I get the hang of compiling optiboot.