Table of Contents

Laborator 04. Interfețele SPI și I2C

În laboratorul de astăzi vom lucra cu două interfețe foarte des intâlnite în domeniul IoT, mai exact interfața SPI și interfața I2C.

SPI

Interfața SPI (Serial Peripheral Interface) este o interfața serială dezvoltată in anul 1979 de către Motorola.

Interfața SPI folosește patru semnale (conexiuni):

Cel mai mare avantaj al conexiunii SPI este comunicația full-duplex, dar un dezavantaj este faptul că necesita 4 fire/pini către periferice, plus incă un fir/pin pentru fiecare periferic adăugat.

I2C

Interfața I2C (Inter-Integrated Circuit) este tot o interfața serială, dezvoltată în anul 1982 de către Philips Semiconductor, ce permite conectarea perifericelor folosind doar două fire/pini.

Marele avantaj este numărul scăzut de conexiuni, indiferent de câte periferice sunt inter-conectate, dar comunicația este half-duplex.

Exerciții

Ex. 1

Vom folosi simulatorul Wokwi pentru a converti un proiect deja existent, de la o plăcuța Arduino Uno la ESP32. Vom folosi ca referință acest proiect, de la care vom copia codul (disponibil și aici) și îl vom ajusta pentru plăcuța ESP32.

Dar mai întâi, folosiți imaginea de mai jos cu pinout-ul de la Arduino pentru a urmări traseele de la Arduino Uno către periferice, și identificați urmării pini de pe Arduino:

Ex. 2

Creați un proiect nou in Wokwi și alegeți plăcuța ESP32. Adăugați componentele de la proiectul luat ca referință cu ajutorul butonului “Add”.

MAX7219

https://docs.wokwi.com/parts/wokwi-max7219-matrix

MAX7219 este o matrice de LED-uri formată din 4 blocuri 8×8. Funcționează peste interfața SPI iar cu ajutorul bibliotecii “Parola” de la MajicDesigns este foarte ușor de creat text si animații ale textului.

Adăugați modulul MAX7219 din Wokwi cu un click pe butonul “Add”, iar apoi selectând “LED Dot Matrix (MAX7219)”.

DHT22

https://docs.wokwi.com/parts/wokwi-dht22

DHT22 este un senzor de temperatură și umiditate care are nevoie doar de un singur fir conectat la orice pin GPIO de pe plăcuță. După ce conectați firul la plăcuță, ajustați valoarea constantei “DHTPIN” la noul pin GPIO (ex. GPIO 5).

DS1307

https://docs.wokwi.com/parts/wokwi-ds1307

DS1307 este un modul de la care putem lua ora și data curentă (RTC - Real Time Clock). Funcționează peste I2C iar adresa dispozitivului este 0x68.

Faceți modificările necesare codului pentru a rula simularea la fel ca și în proiectul original cu Arduino Uno. Pentru a determina ce pini puteti folosi, consultati pinout-ul de mai jos al unui ESP32 similar celui din simulator.

Alternativ, puteti folosi urmatoarele 2 resurse pentru a determina pinii pentru SPI si I2C.

Ex. 3

Adaugati o animație nouă pe afișajul LED cu textul “IoThings”.

Resurse