Il sensore MCP9808 è uno dei più economici e precisi, ideale per rilevare la temperatura ambientale ed integrarlo con Home Assistant
Il sensore MCP9808 è uno dei sensori di temperatura più adoperati per progetti complessi, in cui è necessario ottenere dati quanto più affidabili. Tipicamente adoperato sia per applicazioni industriali, sia per applicazioni più semplici come l’utilizzo per applicazioni domestiche, il sensore MCP9808 vi permetterà di adoperare l’interfaccia I2C senza troppe noie.
- Acquistalo su Aliexpress: https://s.click.aliexpress.com/e/_onP5mHG
Specifiche
Il sensore di temperatura digitale MCP9808 rileva temperature comprese tra -20°C e +100°C con una precisione di ±0,25°C/±0,5°C (tipica/massima). Permettendo di essere alimentato sia a 3,3V che a 5V, questo sensore è adatto per progetti con dev-board Arduino e con ESP8266/ESP32, sebbene vada ricordato che supporta una tensione minima di 2,7V ed una massima di 5,5V, richiedendo fino ad un massimo di circa 400µA di corrente.
Il sensore MCP9808 possiede 8 pin:
- Vcc: per tensioni di alimentazioni comprese tra i 2,7V e 5,5V
- GND: per il pin del ground
- SCL: Serial Clock, per la gestione del segnale di clock
- SDA: Serial Data, per la trasmissione dei dati
- A0: pin di indirizzo, per cambiare l’indirizzo del sensore nella comunicazione I2C
- A1: pin di indirizzo, per cambiare l’indirizzo del sensore nella comunicazione I2C
- A2: pin di indirizzo, per cambiare l’indirizzo del sensore nella comunicazione I2C
- ALERT: Il pin di uscita dell’avviso di temperatura dell’MCP9808 è un’uscita a scarico aperto. Il dispositivo emette un segnale quando la temperatura ambiente supera il limite di temperatura programmato dall’utente.
Acquistalo:
- Amazon: https://amzn.to/3GWzwgW
- Aliexpress: https://s.click.aliexpress.com/e/_oFe4wMF
Collegamenti
Adoperando l’interfaccia I2C i collegamenti sono piuttosto facili. Basterà collegare il nostro sensore di temperatura MCP9808 come riportato in figura. Il pin Vcc va connesso ai 3,3V, il GND al GND, il pin SDA al pin GPIO4 della ESP32 e il pin SCL al pin GPIO0.
É importante sapere che posso assegnare fino a 8 indirizzi al mio sensore, semplicemente fornendo un segnale ai pin Ao, A1 e A2. Basta quindi collegarli alla dev-board e inviare un segnale digitale per attivarli o disattivarli. Qui in tabella i relativi indirizzi disponibili.
A0 | A1 | A2 | Address |
---|---|---|---|
0 | 0 | 0 | 0x18 |
0 | 0 | 1 | 0x19 |
0 | 1 | 0 | 0x1A |
0 | 1 | 1 | 0x1B |
1 | 0 | 0 | 0x1C |
1 | 0 | 1 | 0x1D |
1 | 1 | 0 | 0x1E |
1 | 1 | 1 | 0x1F |
Codice
Andiamo a creare un nuovo device su ESPHome e chiamiamolo MCP9808. Saltiamo per il momento la connessione e selezioniamo la scheda che dobbiamo programmare (ESP32).
Una volta creato, clicchiamo su EDIT per modificare il codice.
Questo è il codice per configurare una ESP32 per leggere i dati da un sensore MCP9808 e inviarli a Home Assistant tramite ESPHome. Il dispositivo sarà accessibile in rete tramite Wi-Fi e potrà essere aggiornato via OTA (Over-The-Air) senza bisogno di connessione fisica. Potete scaricarlo a questo LINK.
All’inizio, il codice definisce il nome del dispositivo, sia quello tecnico (“mcp9808”) che quello più leggibile per Home Assistant (“MCP9808”).
esphome:
name: mcp9808
friendly_name: MCP9808
Poi si specifica che il microcontrollore utilizzato è un ESP32 e che il firmware verrà compilato usando il framework Arduino, che è più semplice e supportato rispetto ad altre alternative come ESP-IDF.
esp32:
board: esp32dev
framework:
type: arduino
Il codice attiva il logger, che serve a registrare gli eventi e inviare messaggi di debug. Inoltre, viene attivata l’API di ESPHome, che permette a Home Assistant di comunicare con il dispositivo in modo sicuro grazie a una chiave di crittografia.
logger:
api:
encryption:
key: "1fYwYTZjqzLCuY+OfUliKHvm88FGOMo5iUeyDbHako8="
Per evitare di dover collegare il dispositivo fisicamente ogni volta che si vuole aggiornare il firmware, viene attivata la modalità OTA (Over-The-Air), con una password di sicurezza. Inoltre, è presente la funzione captive portal, che permette di riconfigurare il Wi-Fi direttamente da un browser in caso di problemi di connessione.
captive_portal:
ota:
- platform: esphome
password: "e1876d51e0460683b4d6758fd69ff4be"
Per collegarsi alla rete, il codice usa le credenziali Wi-Fi salvate nei secrets di ESPHome (file separato non visibile nel codice). Se la connessione fallisce, il dispositivo crea un hotspot Wi-Fi di emergenza (“Mcp9808 Fallback Hotspot”) con una password predefinita, in modo che sia possibile riconfigurarlo.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Mcp9808 Fallback Hotspot"
password: "PSUpmmJTZRlY"
Trattandosi di un sensore che lavora su interfaccia I2C, questa sezione configura la comunicazione I2C tra l’ESP32 ed il sensore MCP9808, impostando il pin GPIO4 dell’ESP32 come linea SDA ed il pin GPIO0 come linea SCL. La funziona scan abilita la scansione automatica dei dispositivi connessi al bus I2C, verificando quali dispositivi I2C sono collegati e il loro indirizzo.
i2c:
sda: 4
scl: 0
scan: true
id: bus_a
Il sensore viene integrato impostando la comunicazione con I2C, definendo poi le misurazione per Temperatura (in gradi Celsius). Non andiamo ad impostare un indirizzo perché quello di default è 0x18, tuttavia se volessimo cambiare l’indirizzo attivando uno dei pin A0, A1 O A2, dovremmo specificarlo.
sensor:
- platform: mcp9808
name: "Temperatura MCP9808"
i2c_id: bus_a
update_interval: 2s
Salvate e verificate con Validate se il codice è stato scritto correttamente.
Collegate la ESP32 al computer tramite cavo USB, e cliccate su Install.
Conclusa l’installazione, integriamo il device su Home Assistant. Dovrebbe essere arrivata una notifica sulla plancia. In ogni caso, per integrarlo andate su Impostazioni -> Dispositivi e servizi e apparirà il dispositivo MCP9808 da integrare.
Autorizzate la configurazione ed otterrete quanto segue.