Close
0%
0%

I2C-IO

A simple I2C connected microcontroller for real-world interfacing, distributed computing and edge-style data processing

Public Chat
Similar projects worth following
As much loved are I2C IO devices such as the venerable Phillips PCF8574 and TITCA9534, they are arguably one-trick ponies. What if there was a smart I2C IO controller that could emulate these devices - or be it's own?

So many QWIIC devices are dedicated unto themselves and compute emphasis is placed on a single central processing node. The I2C-IO leverages the familiar Arduino platform and puts real-world interfacing using Molex connectors front and center.

The main purpose of the I2C-IO is to efficiently offload sensor and control computing tasks from the host.
Features:
* Utilizes the economical ATMega 328PB @ 8MHz
* 8 bits of digital I/O on two separate Molex KK series connectors
* QWIIC I2C bus connection
* Can be programmed for controller, receiver or hybrid (controller/receiver) roles
* Can be powered by FTDI serial connection or I2C bus
* Accepts M3 standoffs
* Same footprint as many L298N motor drive controller boards for DC and stepper mot

Boards are available through OSHPark

https://oshpark.com/shared_projects/FhFye5l6

Check out this post for using an actual PCF8574

https://hackaday.com/2008/12/27/parts-8bit-io-expander-pcf8574/

I2CIO v.01.pdf

Schematic

Adobe Portable Document Format - 57.74 kB - 10/09/2020 at 20:47

Preview
Download

I2CIO v.01.sch

Eagle Schematic File

sch - 505.44 kB - 10/09/2020 at 20:51

Download

I2CIO v.01.brd

Eagle Board File

brd - 194.24 kB - 10/09/2020 at 20:51

Download

  • First Code Example

    mdlougheed11/21/2020 at 01:38 0 comments

    A Phillips/NXP PCF8574 8-bit I2C bus digital I/O expander emulator.

    Finally!  After a project hiatus, the first example code is uploaded to GitHub.

    https://github.com/mdlougheed/I2CIO_PCF8574

    This example code will use the I2CIO to emulate an 8-bit I2C digital I/O expander.  Other I/O expanders, such as the TITCA9534. 

    The main idea with this code was to show how to set up a basic I2C receiver device.  Other device possibilities are a sensor preprocessor to reduce raw data to a usable form, offloading that task from the controller device.  How about an I2C connected fault tolerant co-processor array. Or maybe an SD card storage system accessible through I2C.   The possibilities are endless.

  • Built two more I2C-IO & Bootloader Instructions

    mdlougheed11/08/2020 at 20:36 0 comments

    With the success of the first build, I finished stuffing and IR soldering two more I2C-IO.  After programming and verifying the setup for Arduino, I'll hand solder the MOLEX right angle connectors and the terminal block used as a the external ground connection.

    Notes to self on future builds:

    • Use the black version of the JST (SM04B-SRSS-TB) "SH" series connectors used for the QWIIC  I2C.  The natural color tends to age and look a bit "roasty" from the exposure to IR in my SMD oven - even with Kapton tape.  It's purely a cosmetic issue.
       
    • Re-source and continue using the SAMTEC 6-position right-angle SMD connection headers with PCB locator pins.  I used the last of those I had on-hand for the unit shown on the right in the above photo.  The Harwin version (M20-8890645) without the locator pins will work in a pinch, however I like the finish I get by being able to solder in the oven.  Takes the variability away from having to hand-solder.


    I used an Atmel JTAG ICE-3 to program the 328PB's with the Arduino bootloader using Atmel Studio 7.

    • Fuse settings are those used for the LilyPad Arduino board:
      low_fuses=0xFF
      high_fuses=0xDA
      extended_fuses=0x05
       
    • Bootloader (Found in the Arduino hardware files -->  \hardware\arduino\avr\bootloaders\atmega)
      ATmegaBOOT_168_atmega328_pro_8MHz.hex

    That pretty well does it to program the board in Arduino.

  • I2CIO Prototype v0.1

    mdlougheed10/09/2020 at 20:56 0 comments

    I2CIO Prototype is complete.  Eagle files posted.

    I2C device example code will be published on Github

View all 3 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates