Tag Archives: I2C

Tiny Graphics Library for ATtiny85 and SH1106 OLED Display

David Johnson-Davies published another great tutorial on how to use the Tiny Graphics Library to plot the outside temperature over 24 hours on a 128×64 OLED display using an ATtiny85.

This small graphics library provides point, line, and character plotting commands for use with an I2C 128×64 OLED display on an ATtiny85.

It supports processors with limited RAM by avoiding the need for a display buffer, and works with I2C OLED displays based on the SH1106 driver chip. These are available for a few dollars from a number of Chinese suppliers.

To demonstrate the graphics library I’ve written a simple application to measure the temperature every 15 minutes over a 24-hour period and display it as a live chart.

Tiny Graphics Library for ATtiny85 – [Link]

RELATED POSTS

Isolated Power Supply for RS485, RS422, RS232, SPI, I2C and Power LAN

Mini Isolated Power Supply is designed for CAN, RS-485, RS-422, RS-232, SPI, I2C, Low-Power LAN applications. The power supply provides +/- 5.50 V DC symmetrical outputs with load current 500mA from 5V DC input. The project is built using SN6505A IC from Texas instruments. The SN6505A is a low-noise, low-EMI push-pull transformer driver, specifically designed for small form factor, isolated power supplies. It drives low profile, center-tapped transformers 5 V DC power supply. Ultra-low noise and EMI are achieved by slew rate control of the output switch voltage and through Spread Spectrum Clocking (SSC). The SN6505 consists of an oscillator followed by a gate drive circuit that provides the complementary output signals to drive ground referenced N-channel power switches. The device includes two 1-A Power-MOSFET switches to ensure start-up under heavy loads. The internal protection features include a 1.7A current limiting, under-voltage lockout, thermal shutdown, and break-before-make circuitry. SN6505 includes a soft-start feature that prevents high inrush current during power up with large load capacitors.

Isolated Power Supply for RS485, RS422, RS232, SPI, I2C and Power LAN – [Link]

IDT Announces High Performance MEMS Relative Humidity & Temperature Sensor

California based company, Integrated Device Technology (IDT) has recently announced their new HS300x family of MEMS high-performance relative humidity (RH) and temperature sensors of dimension 3.0 × 2.41 × 0.8 mm DFN-style 6-pin LGA. Currently, there are four devices in this family—the HS3001, HS3002, HS3003, and HS3004. They are all the same from the view of functionality but differ slightly in terms of the accuracy of their relative humidity and temperature measurements.

Development board for ITD MEMs sensors

The highlighted feature of this new lineup is that they do not require any user calibration. HS300x family of ICs has calibration and compensation logic integrated into the devices. These ICs output their fully corrected data using standard I2C protocols making the measured data from the sensors is rather easy.

As a side note, Relative humidity (RH) is the ratio of the partial pressure of water vapor to the equilibrium vapor pressure of water at a given temperature. As the entire output consists of only four bytes of data, calculating the corresponding relative humidity in percent and temperature in degrees Celsius is very easy.

Although the HS300x sensors operate as slave devices on the I2C bus (supporting clock frequencies from 100 kHz to 400 kHz), only one HS300x IC can be connected directly to a single I2C bus. To connect multiple sensors to a single I2C bus, an I2C multiplexer/switch has to be used. It would have been easier if IDT had dedicated the unused pin as an optional I2C address input bit, which would allow two HS300x devices to be connected to a single I2C bus.

If you’re interested in testing these ICs prior to incorporating them into a design, SDAH01 or SDAH02 evaluation kit can come handy. Although both kits utilize the HS3001 sensor, the SDAH01 kit outputs the measured data to a PC while the SDAH02 displays the data on an LCD screen.

DAC Shield For Arduino Nano using MCP4725

This project features an easy to use Digital to Analog converter (DAC) shield for Arduino Nano. The project is built using MC4725 12Bit DAC IC over I2C communication. The shield directly seats on Arduino Nano and also can be used as stand-alone DAC converter that can be connected to other micro-controller board with help of 5 pin header connector. Output is 0-5V. PCB jumper J1 provided to select the address in case of using multiple modules on the same I2C .

Shield also provided with high current driver circuit, which converters voltage to current and can be used to drive Laser diode or LED. Maximum possible load 500mA.

DAC Shield For Arduino Nano using MCP4725 – [Link]

TSL2540 Ambient Light Sensor matches eye-response

TSL2540: Other Product Document (English)

ams (Graz, Austria) has posted details of the TSL2540, a very-high sensitivity light-to-digital converter. Evaluation kit is available:

The TSL2540 is a very-high sensitivity light-to-digital converter that approximates the human eye response to light intensity under varying lighting conditions and transforms this light intensity to a digital signal output capable through a 1.8V I²C interface. The ALS sensor features 2 output channels, a visible channel and an IR channel. The visible channel has a photodiode with a photopic Interferometric UV and IR blocking filter and the IR channel has a photodiode with an IR pass filter.

TSL2540 Ambient Light Sensor matches eye-response – [Link]

Real Time Clock On 20×4 I2C LCD Display with Arduino

Sometimes it may be necessary to use a display while making a hardware project, but the size and the type of the display may vary according to the application. In a previous project, we used a 0.96″ I2C OLED display, and in this project we will have an I2C 20×4 character display.

This tutorial will describe how to use 20 x 4 LCD display with Arduino to print a real-time clock and date.

Real Time Clock On 20×4 I2C LCD Display with Arduino – [Link]

DI2C -The Differential Version of I2C

In serial interface world, there are differential and non-differential protocols. The most famous one of differential interfaces is USB besides HDMI and others, while I2C is a non-differential one.
Joshua Vasquez from Hackaday decided to use DI2C (differential version of I2C) to communicate with a string of BNO055 sensor boards (a smart 9-DOF sensor with I2C interface).

If you’re not familiar with differential communication, the method behind it is straightforward; the line has two channels (positive and negative), where each line has the same signal but with an opposite voltage. The receiver then will calculate the difference between them. Mathematically:

Vb = -Va, So:
Vout = Va – Vb = Va – (-Va)

Image Source: Hackaday

Now, what if there was a noise?. The noise will affect almost identically on both signals with the same voltage level. As a result the receiver can omit the noise in the output.

Image Source: Hackaday

Back to I2C; Joshua used PCA9615 chip from NXP which is a bridge between the normal 2-wire I2C-bus and the 4-wire DI2C-bus.

PCA9615 Block Diagram.
PCA9615 Block Diagram. DSCLP and DSCLM are the clock plus/minus input/output respectively. While DSDAP and DSDAM are the datat plus/minus input/output.

As an use case; Joshua used DI2C to build an IMU Noodle for modeling a piece of foam twisting and turning in a 3D space simulator using data comes from a string of cards contain the BNO055 sensor and PCA9615 bridge.

PCA9615 was used in each Joshua’s card to bridge the normal I2C signals to DI2C ones. By bridging I2C to DI2C, PCA9615 makes the capability of using longer cables and I2C more rugged in noisy environments.

(a) PCA9615 Application Diagram (b) Ribbon-cable Connectors. (c) BNO055 with PCA9615 Module.

The PCB design files (KiCAD) and firmware can be downloaded from Joshua’s repository on Github. Moreover, Joshua mentioned important tips to setup DI2C in your next design. You can see these tips in his blog post on Hackaday.

IMU Noodle in Action

20×4 I2C Character LCD display with Arduino Uno

Our friends on educ8s.tv published a new video! Check it out.

Hello guys, I am Nick and welcome to educ8s.tv a channel that is all about DIY electronics projects with Arduino, Raspberry Pi, ESP8266 and other popular boards. Subscribe to the channel now if you don’t want to miss any future videos. In this video we are going learn how to use this inexpensive character LCD display with Arduino. After we learn how to use the display we are going to build something useful. A simple real time clock. Let’s start.

20×4 I2C Character LCD display with Arduino Uno [Link]

LTM9100 – Anyside™ High Voltage Isolated Switch Controller with I²C

The LTM9100 μModule is an all-in-one solution for controlling, protecting, and monitoring high voltage power supplies up to 1000VDC. A 5kVRMS galvanic isolation barrier separates the digital interface from the switch controller, driving an external N-channel MOSFET or IGBT switch. Isolated digital measurements of load current, bus voltage, and temperature are accessed via the I2C/SMBus interface, enabling power and energy monitoring of the high voltage bus. The LTM9100 saves design time, certification effort, and board area by wrapping all the needed functionality, including digital telemetry and isolated power, in a compact BGA package.

LTM9100 – Anyside™ High Voltage Isolated Switch Controller with I²C – [Link]

Basics of most common communication protocols

circuitbasics.com has published a series of tutorials on the most popular communication protocols, like UART, I2C, SPI etc. Check them on the links below.