MODULI: TCA9548A - 4 OLED - DHT11- HC-SR04    

N.B.  Quando si utilizza un OLED (o più), SD ,ecc..  è necessario utilizzare piattaforme con più di 3 kb di RAM.

Ogni OLED utilizza 1K di RAM, poichè ha bisogno di "Bufferizzare" l'intero display.

 Per questa esercitazione ho utilizzato un fishino Mega da 8 kb di Ram  e funziona.

Il Multiplexer I2C TCA9548A permette di utilizzare fino ad 8 diversi dispositivi con lo stesso indirizzo bus I2C .

 Esempio pratico TCA9548A con quattro OLED e sensori vari.

Metodo pratico scolastico per il funzionamento dell'impianto:

  1. Realizzare le linee di Potenza ( 5 volt e la massa GND)
  2. Posizionare le resistenze di PULL UP da 4.7 k
  3. Alimentare i componenti (OLED e DHT11)
  4. Collegare le linee di comando (SDA e SCL)
  5. N.B. le linee devono essere posizionate a "pavimento" per una migliore visione d'insieme dei collegamenti.

Questo è il risultato...

 

 

 

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define OLED_Address 0x3C

Adafruit_SSD1306 oled(1);

#include "Wire.h"

#define TCAADDR 0x70

#include "Ultrasonic.h"

Ultrasonic ultrasonic(2,3); //Trig ==> 2  Echo==> 3

#include "DHT.h"

#define DHTPIN 5

#define DHTTYPE DHT11

//creata una instanza del sensore DHT11

DHT dht(DHTPIN, DHTTYPE);

String distanza;

float h  =0;

float t  =0;

 void tcaselect(uint8_t i) {

  if (i > 7) return;

  Wire.beginTransmission(TCAADDR);

  Wire.write(1 << i);

  Wire.endTransmission();

}

void setup()

{

  dht.begin();

oled.begin(SSD1306_SWITCHCAPVCC, OLED_Address);

Wire.begin();  

}

void loop()

{

h = dht.readHumidity();

t = dht.readTemperature();

distanza=ultrasonic.read();

   tcaselect(0); // SCRITTURA OLED 0

  oled.begin();

  oled.clearDisplay();

  oled.setTextColor(WHITE);

  oled.setCursor(10,0);

  oled.println("Display 0.");

  oled.setCursor(4,11);

  oled.print("UMIDITA' ");

  oled.print(h);

  oled.println(" %");

  oled.display();

      tcaselect(1);// SCRITTURA OLED 1

  oled.begin();

  oled.clearDisplay();

  oled.setTextColor(WHITE);

  oled.setCursor(0,0);

  oled.println("Display 1.");

  oled.setCursor(18,16);

  oled.print("DISTANZA cm.. ");

  oled.println(distanza);

  oled.display();

     tcaselect(2);// SCRITTURA OLED 2

  oled.begin();

  oled.clearDisplay();

  oled.setTextColor(WHITE);

  oled.setCursor(0,0);

  oled.println("Display 2.");

  oled.setCursor(0,19);

   oled.print("TEMPERATURA ");

  oled.println(t);

   oled.display();

     tcaselect(3);// SCRITTURA OLED 3

  oled.begin();

  oled.clearDisplay();

  oled.setTextColor(WHITE);

  oled.setCursor(0,0);

  oled.println("Display 3.");

  oled.setTextSize(2);

  oled.setCursor(0,16);

  oled.println("   MARIO");

  oled.setTextSize(1);

  oled.display();

  delay(4000);

}

 

 

Il Fishino Mega verrà sostituito con l'ESP32 LoRa.

 

CONTINUA....