Martin's corner on the web

[OBSOLETE] Micro Internet of Things Gateway (uIoT)

> Wiki Home > [OBSOLETE] Micro Internet of Things Gateway (uIoT)

[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.

I have adapted optiboot and 2boots bootloaders for the uIoT, but using these only makes sense if you have the shield on (because of the FTDI connector)

The header layout is as follows:

uIoT_pins

Check all my posts on the uIoT gateway.

Eagle design files and example sketches on github