[This project is obsoleted and not supported]
The Micro Internet of Things Gateway (uIoT) is a Atmega328 + ENC28J60 solution, one of many using this combination of hardware, but still unique with its miniature size (38mm x 28 mm and 15 mm in height). The original board is designed by Simon K. and I have his permission to develop it further and sell my version to hobbyists. My revisions so far include adding a micro USB plug for power purposes and re-shuffling the header so plain rectangular shields can be created more easily.
I have also developed a shield that plugs on top the uIoT and adds a RFM12B connectivity, a Micro SD card slot, a LED and FTDI connector option.
You can set the fuses to run on the internal RC oscillator at 8Mhz, this is my recommended setup. To achieve this, I use a modified OptiBoot Bootloader optimised for 38.4kbps baud. The modified and compiled version can be downloaded from my github repository. The full guide of how to modify and re-compile Optboot is detailed on the Arduino forums here.
In order to compile Arduino sketches to work for this modified bootloder we need to add a new entry in Arduino’s boards.txt.
atmega328_384_8.name=ATmega328 Optiboot @ 38,400baud w/ 8MHz Int. RC Osc. atmega328_384_8.upload.protocol=arduino atmega328_384_8.upload.maximum_size=30720 atmega328_384_8.upload.speed=38400 atmega328_384_8.bootloader.low_fuses=0xE2 atmega328_384_8.bootloader.high_fuses=0xDE atmega328_384_8.bootloader.extended_fuses=0x05 atmega328_384_8.bootloader.path=optiboot atmega328_384_8.bootloader.file=optiboot_atmega328_384_8.hex atmega328_384_8.bootloader.unlock_bits=0x3F atmega328_384_8.bootloader.lock_bits=0x0F atmega328_384_8.build.mcu=atmega328p atmega328_384_8.build.f_cpu=8000000L atmega328_384_8.build.core=arduino atmega328_384_8.build.variant=standard
Now we just need to select board > ATmega328 Optiboot @ 38,400baud w/ 8MHz Int. RC Osc in Arduino IDE when compiling sketches.
The board can be clocked via the CLKOUT pin of the ENC28J60, meaning it can run on 6.25Mhz or 12.5Mhz depending on how you set the prescaler. Upon power-up, the board always starts on 6.25Mhz and with small modification to the EtherCard library, you can run on 12.5Mhz. In this case the board requires custom entries in the boards.txt, if you plan to use it in the Arduino IDE; see here, here and here
The board uses digital 10 as CS for the ENC28J60
The shield uses non-conventional pin for selecting the RFM12B module, that also requires changing 3 lines in the Jeelib’s RFM12.cpp definitions; I would include a modified version in the examples on github to eliminate the need for change by the end user.
The header layout is as follows:
Check all my posts on the uIoT gateway.
Eagle design files and example sketches on github