Main task – advanced communication between multiple Arduinos using I2C bus.
Main problem – most online tutorials covers just one blinking LED with almost no practical use. Slave just executes ONE and SAME function every time Master asks about it. I’d like to outsource slave Arduinos for zillions of tasks.
Proposed solution – simple protocol which enables to send any number of commands to Slave, opposing single return from simple Wire.onRequest();
Simple I2C protocol for advanced communication between Arduinos - [Link]
Some time ago, I stumbled upon an article about 25¢ I²C adapter. I usually use my Raspberry Pi to interface with I²C devices, but having it right on my notebook seemed like quite useful thing, so I decided to build a project around it. Altough the mentioned article says that I²C is not supported on Intel cards on Linux (all of this was tested on Dell Latitude E5530 which does have Intel HD4000), I decided to try anyway. A lot has probably changed since 2008 when it was written.
TWILight – VGA I²C breakout board - [Link]
I’ve been looking for ways to control my Service droid robot, my Service droid robot has an ATmega2560 (with Arduino bootloader) and a Raspberry Pi. My goal is to control it over wifi. But I wanted to start with some more simpler things first. I’ve recently found some python code on letsmakerobots.com that lets me sent data over I2C from a Raspberry Pi to a micro controller.
Before getting this to work you need to configure I2C on the Raspberry Pi. Adafruit has written a nice guide how to do this. I also installed the python-SMBus package: sudo apt-get install python-smbus.
Controlling an Arduino through a Rapsberry Pi webserver - [Link]
Digispark Pro – The tiny Arduino IDE ready, usb and mobile dev board and ecosystem – cheap enough to leave in any project! Wi-fi, BLE, and 25+ shields!
Serial over USB debugging, USB programmable, 14 i/o, SPI, I2C, UART, USB Device Emulation, Mobile Development Ready, Optional BT, BLE, Mesh, and Wi-Fi.
The super small, dirt cheap, always open source, Arduino compatible, USB (and Mobile and Wireless!) development (and production) platform, and follow-up to the original Digispark.
Easier to use, more pins, more program space, more features, more reliable – supporting the entire existing Digispark ecosystem of 25+ shields and adding Wi-Fi, Bluetooth, BLE shields and more! Ready for all your projects – including mobile hardware development! All still super affordable!
The Digispark Pro Ecosystem is the cheapest, Arduino compatible development platform for Mobile and Wireless hardware development.
Digispark Pro – tiny, Arduino ready, mobile & usb dev board! - [Link]
Inter-Integrated Circuit or I²C is a multimaster serial single-ended computer bus invented by Philips Semiconductor Division, today NXP Semiconductors. This technology is used in attaching low-speed peripherals to a motherboard, embedded system, mobile phones, or other digital electronic devices.
One family of devices under I2C is the Philips Semiconductors Gunning Transceiver Logic Translator Voltage Clamp (GTL-TVC), a family of bi-directional low-voltage translators, is designed in a BiCMOS process for protecting the sensitive I/Os on new advanced sub micron components. The GTL-TVC devices offer protection from over -voltage and electrostatic discharge applied by older legacy devices and translate the VIH and VOH switching levels.The GTL-TVC devices can also be used to interface between devices I/O’s operating at different voltage levels.
This circuit uses the GTL2010PW 10-bit bidirectional low-voltage translator which provides high-speed voltage translation with low ON-state resistance and minimal propagation delay. The device allows bidirectional voltage translations between 1.0 V and 5.0 V without use of a direction pin. This allows the use of different bus voltages on each source to drain channel so that a 1.5 V device can communicate with 2.5 V, 3.3 V or 5V devices without any additional protection. The circuit shows how the GTL2010 can be used in an application where two ASIC’s I2C ports (left side) operating at 1.5 V can interface to higher voltage devices (right side) operating at 3.3V and 5.0 V. One of the ASIC ports (MDDC on S1 & S2) only needs to interface with 5V I2C devices. The other ASIC port (MI2C on S3 & S4 and S5 & S6) needs to interface with both 3.3 V SMBus and 5.0 V I2C devices.
- GTL2010PW 10-bit bidirectional low-voltage translator
- 1KΩ General Purpose Resistors – 2 Units
- 2.2KΩ General Purpose Resistors – 4 Units
- 200KΩ General Purpose Resistor
1.5V I2C Bus to 3.3V SMBus and 5.0V I2C Bus - [Link]
Raj @ embedded-lab.com
I2C or IIC (Inter-Integrated Circuit) is a simple bidirectional serial interface, which requires only 2 signal lines for data transfer. It was originally developed by Philips in 1980′s to provide easy on-board communications between a CPU and various peripheral chips in a TV set. Today, it is widely used in varieties of embedded systems to connect many low speed peripherals, such as external EEPROMs, sensors, LCD drivers, port expanders, real-time clocks, etc, to the host microcontroller. In this tutorial, we will explore the chipKIT Wire Library for establishing an I2C communication link between the chipKIT Uno32 board and two I2C sensors. The Uno32 board receives the sensor outputs through the I2C link and displays the results on the serial monitor window on the computer screen.
chipKIT Tutorial 6: Inter-Integrated Circuit (I2C) communication - [Link]
The MAX31629 I2C digital thermometer and real-time clock (RTC) integrates the critical functions of a real-time clock and a temperature monitor in a small-outline 8-pin TDFN package. Communication to the device is accomplished through an I2C interface. The wide power-supply range and minimal power requirement of the device allow for accurate time/temperature measurements in battery-powered applications. The digital thermometer provides 9-bit to 12-bit temperature readings that indicate the temperature of the device.
MAX31629 – I2C Digital Thermometer and Real-Time Clock - [Link]
The PCA9508 is a CMOS integrated circuit that supports hot-swap with zero offset and provides level shifting between low voltage (down to 0.9 V) and higher voltage (2.7 V to 5.5 V) for I2C-bus or SMBus applications. While retaining all the operating modes and features of the I2C-bus system during the level shifts, it also permits extension of the I2C-bus by providing bidirectional buffering for both the data (SDA) and the clock (SCL) lines, thus enabling two buses of 400 pF. Using the PCA9508 enables the system designer to isolate two halves of a bus for both voltage and capacitance, and perform hot-swap and voltage level translation. Furthermore, the dual supply pins can be powered up in any sequence; when any of the supply pins are unpowered, the 5 V tolerant I/O are high-impedance.
PCA9508 has B-side and A-side bus drivers. The 2.7 V to 5.5 V bus B-side drivers behave much like the drivers on the PCA9515A device, while the adjustable voltage bus A side drivers drive more current and incur no static offset voltage. This results in a LOW on the B-side translating into a nearly 0 V LOW on the A side.
The hot swap feature allows an I/O card to be inserted into a live backplane without corrupting the data and clock buses. Control circuitry prevents the backplane from being connected to the card until a stop command or bus idle occurs on the backplane without bus contention on the card. Zero offset output voltage allows multiple PCA9508s to be put in series and still maintains an excellent noise margin.
- PCA9508D CMOS integrated circuit (3 units)
- BUS Master
- Slave 400kHz (3 units)
- 10kΩ Resistor (6 units)
- Ground Source
Hot swap level translating I2C repeater - [Link]
luca @ lucadentella.it build a nice app that let you configure an RTC chip using a PC GUI and your Arduino board. The system is composed by two elements, the PC GUI written in C# and a sketch running on Arduino. The RTC is connected on the Arduino using I2C interface and Arduino is connected to PC using a simple serial protocol.
I chose to use the Adafruit’s RTClib library to talk with the DS1307 chip, that is for sure one of the most used RTC in the hobbistic world. The connection between the IC and Arduino is established using the I2C bus.
RTCSetup – configure an RTC chip using your PC - [Link]
LED drivers are electrical devices that regulate the power of LEDs. What makes them different from conventional power supplies is their ability to respond to the ever-changing need of LEDs in a circuit by supplying a constant amount of power as electrical properties change with temperature.
The PCA9622 is an I2C-bus controlled 16-bit LED driver optimized for voltage switch dimming and blinking 100 mA Red/Green/Blue/Amber (RGBA) LEDs. Each LED output has its own 8-bit resolution (256 steps) fixed frequency individual PWM controller that operates at 97 kHz with a duty cycle that is adjustable from 0 % to 99.6 % to allow the LED to be set to a specific brightness value. An additional 8-bit resolution (256 steps) group PWM controller has a fixed frequency of 190 Hz and an adjustable frequency between 24 Hz to once every 10.73 seconds with a duty cycle that is adjustable from 0 % to 99.6 % that is used to either dim or blink all LEDs with the same value.
These LED drivers are based on system-centric, mixed-signal LED driver technology for backlighting and solid-state lighting (SSL) applications. This broad-based and rapidly growing market includes LCD TVs, PC monitors, specialty panels (industrial, military, medical, avionics, etc.) and general illumination for the commercial, residential, industrial and government market segments. LED drivers utilize a proprietary and patented combination of analog and digital circuit techniques and power control schemes.
- PCA9622 I2C-bus controlled 16-bit LED driver
- 2C-BUS/SMBus MASTER
- Resistor 10kΩ ( 27 units)
- LED (88 units)
- Voltage Source 40Vdc
- Voltage Source 5Vdc
I2C Bus Controlled LED Drivers for backlighting and SSL applications – [Link]