Ga naar de inhoud

Communicatie tussen Arduino's middels I2C

Omschrijving

Je kan meerdere I2C Modulen, sensoren op de I2C bus aansluiten, vermits ze een uniek adres hebben. Neem bijv. BME280 (Hygro-, baro-, temperatuur sensor), Memory chips, display’s ect. Ook een Arduino kan werken als zo’n I2C component. Het voordeel is, dat je hem ook een adres kan geven.
Bij deze communicatie via I2C heb je meestal een Master en een of meerdere slaves. Net als dat je meerdere memory’s en displays (dit zijn dan de slaves) op 1 ESP8266 (is dan de Master) kan aansluiten. Zo kan je ook op 1 ESP8266 (Master) meerdere NANO’s (Slave) kan aansluiten.
Zo kan de de NANO’s hun eigen programma met sensoren laten draaien, en vanuit de Master kan je de NANO uitvragen.

Hoe werkt het

In feite heb je 2 lijnen nodig:
SDA: data
SCL: Klok puls
Simple gezegd, de SCL zorgt voor de synchronisatie ‘snelheid’, zo’n puls geeft aan dat er op de SDA lijn data klaar staat.
De master bepaald de Klok puls.
Als je beide lijnen uitleest met een logic analyser, dan ziet dat er zo uit:

Als je meer wilt weten over I2C, dan vind je genoeg op internet. 
Bijv.: How I2C Communication Works & How To Use It with Arduino (howtomechatronics.com)

Hieronder vind je een leuk projectje, 1 Master ESP8266 en 4 Slaves NANO.
Het is een heel eenvoudig programma, de master spreekt een slave aan met hallo, en de slave antwoord terug. Je kan dit zien door de monitor op de master te opnenen.
Omdat de ESP8266 op 3,3 Volt werkt, ziet er een level shifter tussen. (BSS138)
Je kan het 
I2C_Scanner programma gebruiken om de NANO’s te zien.

 

Schema

Downloads