I2C – Ticklish Techs https://www.ticklishtechs.net a mostly .NET but also some other cool techs blog Thu, 13 Aug 2020 18:45:26 +0000 en-US hourly 1 https://wordpress.org/?v=5.7.11 Push buttons as input https://www.ticklishtechs.net/2013/01/27/push-buttons-as-input/ Sun, 27 Jan 2013 11:49:32 +0000 http://www.ticklishtechs.net/?p=393 imageTo control the lights in a house or in my own apartment switches and buttons near the doors in the wall are a very useful thing.

Even if my home automation can be controlled by ethernet, mobile phone, timers, you name it, it will be most convenient to use normal switches, too. I was lucky to rewire the whole apartment and I decided to  put a separate wire for each switch to a central place where my home automation controller will be placed.

I will use push buttons instead of on/off-switches. Push buttons can be used for multiple commands. Starting with turning a light on or off, you can program it to do different actions when pressing just for a short or a longer time. Or you can do a continues action as long as the button is pressed down.

But first of all the signal from the buttons needs to be received by my micro controller. I will use 12V DC for all buttons, to avoid higher power like 110V or 220V AC. To protect the electronics and don’t get trouble with long wires at all I use optocouplers. Basically the 12V from the push button just turns on a small LED within the optocoupler from where the signal takes its way.

The schematics

The signals itself are received by a PCF8574 I/O-chip. This chip comes with 8 digital I/O ports and an I2C interface. The microcontroller can query the state of all I/O ports using the I2C interface. As a bonus the chip triggers an interrupt each time any input signal is changed.

digitalin

There is nothing fancy at the schematics, just read it from right to left. At the very right you will find 8 inputs for the 12 V from my pushbuttons (and the GND used with this signal). Following by the optocouplers. To use more or less then 12 V just adjust the resistors value. The rest of the schemantics are just pull up and down resistors and some more connectors for the I2C bus.
The board will be build in a way to chain multiple of this boards together. The I2C bus goes from one to another.
By using the solder jumpers SJ1, SJ2, SJ3 you can select one out of eight addresses. Each board comes with its own interrupt on connector JP2.

The board

As above you can find the connectors to the push buttons on the right. You will see the two quad optocoupler chips in the middle and the I2C I/O chip at the left.

digitalinbrd

I have four of this boards connected with nearly 32 push buttons. They all share the I2C bus which is connected from one to another (see the small white, red, green and yellow wires at the bottom). But each provides its own interrupt signal. So for the whole installation the microcontroller only needs four IRQ ports and one I2C bus.

IMG_3111_crop

The code

Will be the topic of my next post. Stay tuned.

What is this all about

If you find this post interesting, have a look at the other posts in my homeautomation category within this blog. Especially the first and the second post describe what this is all about.

The schematics and boards (created with EAGLE) and all source code is or will be available on github: https://github.com/irgendwienet/homeautomation

]]>
Power, I2C and DMX https://www.ticklishtechs.net/2013/01/06/power-i2c-and-dmx/ Sun, 06 Jan 2013 13:22:21 +0000 http://www.ticklishtechs.net/?p=379 The first board for my home automation project needs to provide everybody with Power (5V DC). This is the main purpose of this board and because this is a very basic requirement it’s the first to be described here.

But this board handles two more jobs:

  1. create 5V DC from input voltage of 12V DC
  2. convert a 3,3V I2C bus to an I2C bus capable of speaking with 5V components
  3. driver for the DMX signals

Power

Here’s nothing special. Just a P3596L-5.0 step-down DC/DC converter, two capacitors, an inductor and a diode.

06-01-2013 13-32-58

I2C

The microcontroller I’m using only has 3,3V output pins even if they are 5V tolerant you cannot connect 5V I2C components. But the rest of my setup is build with 5V components so I have so power up the I2C-Bus accordingly.

Luckily there is a chip that does the exact same thing: the PCA9306 a dual bidirectional I2C bus voltage-level translator.

It just needs a 3,3V (I get this directly from the microcontroller board) and 5V current and the input I2C bus. No big deal at all.

06-01-2013 13-59-50

DMX

DMX is a protocol used on stages for controlling lights. I use the same for dimming my LEDs in the whole apartment. Today I will not go in much details about the protocol or the software side.

On the wire DMX is just a symmetric RS-485 signal on three wires (called + / – / GND).

I use a simple SN75176 differential bus transceiver chip but since DMX is only sending in one direction there is no need in using the receiving side of the chip. The control ports are hard wired for sending and it gets its signal from an UART of my microcontroller.

On my board I put three of the same chips to create three physical separated busses with the same signal.

Again, here is less magic involved:

06-01-2013 14-06-32

The Board

06-01-2013 14-07-25

From left to right: Power / I2C / DMX

What is this all about

If you find this post interesting, have a look at the other posts in my homeautomation category within this blog. Especially the first and the second post describe what this is all about.

The schematics and boards (created with EAGLE) and all source code is or will be available on github: https://github.com/irgendwienet/homeautomation

]]>