Sensore di temperatura ed umidità AM2320 i2c


Informatica / mercoledì, Febbraio 5th, 2020

La maggior parte delle guide che trattano dei sensor idi temperatura, di solito sono per i sensori DHT, ma se come me avete comprato i sensori AM2320 di temperatura e umidità (io li ho comprati su AliExpress), vi tornerò utile questa guida! Il sensore AM2320 ha una connessione i2C e una portata di 20m.

Collegamenti

La connessione è abbastanza semplice, necessita ovviamente di alimentazione sui pin 1 e 3, il pin 2 e 4 serviranno per la gestione dei dati.Collega i pin come da figura. Io l’ho collegato sui 3,3V del Raspberry Pi senza resistenze, senza problemi.

Raccolta ed invio dati

L’idea è semplice, raccogliere i dati dal sensore AM2320 tramite i2c ed inviarli al nostro server MQTT.

MQTTCi sono molti server (chiamati broker) per raccogliere i messaggi MQTT, personalmente ho trovato molto semplice mosquitto, il quale mette a dispozione un’ area per i test , ma sei libero di trovare il tuo preferito.
Per l’installazione del server MQTT esegui questo codice sul server che farà da broker (ricevitore), nel mio caso RaspberryPi.

apt update; apt install -y mosquitto

Libreria Python

Di librerie ce ne sono varie, ma personalmente ho usato quella di mcauser installandola semplicemente con pip3.

pip3 install micropython-am2320

Lettura dati

Prepariamo il nostro script Python 3 per una semplice lettura dei dati del sensore.

import am2320
from machine import I2C, Pin
i2c = I2C(scl=Pin(5), sda=Pin(4))
sensor = am2320.AM2320(i2c)
sensor.measure()
print(sensor.temperature())
print(sensor.humidity())

Invio dati

Una volta raccolti i dati, vogliamo inviarli tramite il protocollo MQTT al nostro broker, cioè il server MQTT installato prima.

Per farlo sfrutteremo il client MQTT PAHO-MQTT della Eclipse, installandolo tramite

pip3 install paho-mqtt

Integriamo invio nel nostro script

import paho.mqtt.publish as publish
msgs = [{'topic':"temperatura", 'payload':"sensor.temperature()"}, ("umidita", "sensor.humidity()", 0, False)]publish.multiple(msgs, hostname="localhost")

Gestione dei dati

Ben fatto: abbiamo un server, abbiamo un client che invia i dati, ora manca solo un modo per visualizzarli. I sistemi sono molteplici, una guida la trovi qui Gestione da Node-RED , ed un altro modo è la gestione tramite app dello smartphone IoT MQTT Panel  .

Note

Per attivare la modalita i2c è necessario verificare che usando

sudo raspi-config

nel menù 

interfacing option -> i2c

[Immagine: Schermata_del_2018_07_30_16_25_51.png]

sia abilitata la modalità

Riferimenti

Datasheet AM2320

Sensori wireless con Raspberry Pi e ESP8266, tramite MQTT

Scopriamo insieme Node-RED. Grandi progetti IOT in pochi minuti!

Crea la tua Dashboard con RaspberryPi

piGarden e piGardenWeb: realizza il tuo impianto di irrigazione con Raspberry Pi