According to found issues please read post 56: viewtopic.php?p=56#p56 to avoid malfunctions with interface...
Project was made as Free Hardware under Creative Commons BY-NC-SA 4.0.This means - you can do it yourself, for private use. Commercial use is possible after obtaining the authors' consent.
This article is clue of my topic on Atari.area Forum. Nowadays IoTs are everywhere so why not to use those with Atari? I decided to make interface which can communicate with I2C bus and might be connected with 8 bit parallel 6502 bus.
I found IC which will be very helpfully, his name is PCF8584. This IC might work with two different modes, IMC 6800(0) which should be default and 80XX for others processors. Unfortunately 65C02 is working with little bit difficult time frames so the default mode doesn't work with Atari computer. I decided to build additional decoder for /OE and /WE signals and finally to use the 80XX mode.
It was good decision... it's doesn't matter which method you used. The important is that it's working!

I designed two separately PCB, one for external connection using CART/ECI, second as adapter between CPU and PCF8584. The PCB are very easy to assemble, both are available on http://seeedstudio.com and http://dirtypcbs.com/store/order/204600 ... 6ae6053af1 so if you are interested in to run your own interface please use my project.
Of course I shared the EAGLE files and source code below.
If you have any question, don't be hesitate

version 1.1 PCB: version 1.1 PCBpoly:
version 2.1 (PCB mounted on CPU): Quick User Guide for version 1.1:
The PCB is prepared with full description so assembly process should be very easy. Just iron required elements on PCB. Then you must build IDC plugs on strips (one plug per strip) and connect cables to required signals. Most signals you may find directlu on CPU socket on the bottom PCB side.
Socket X1:
1 - A0
2 - A4
3 - A5
4 - A6
5 - A7
6 - /D5XX (from cartridge socket or memory decoder)
7 - /RTS
8 - /IRQ
9 - R/W
10 - O2
Socket X2:
1 - D0
2 - D1
3 - D2
4 - D3
5 - D4
6 - D5
7 - D6
8 - D7
9 - VCC
10 - GND
JP2 - address selector (1 jumper!)
Socket I2C:
1,3,5,7 - SDA
2,4,6,8 - SCL
JP2 is determining ADDRESS as provided below:
One important note, decoder which I build is not fully decoding, It's mean that you should to expect shadow register. (e.g. $D580, $D582...$D58E are using to address the same PCF register),
If you were avoid any errors you may connect I2C device directly to I2C socket

Update for version 1::
If you are planed to mount any I2C device outside the Atari I would to recommend use little bit modified PCB which contain separately socket in order to power I2c devices:
Quick User Guide for version 2.1:
All required signals are available on CPU sockets so only one signal (/D5XX) you should wire from CART socket or memory decoder IC. Please select address by using 1 jumper (truth table is the same as for version 1.1).
One important note!
There is no possibility to use version 2.1 and close cover for 800XL. If you plan to have closed Atari 800XL - you should to consider to use version 1.1.
I didn't test the interface with XE series, so maybe it's possible for that

That's all, have fun!