Il sensore ad ultrasuoni AJ‑SR04M è adatto per la misurazione di distanze e molto apprezzato nel DIY. Andiamo ad integrarlo in Home Assistant tramite la programmazione in ESPHome.
L’AJ‑SR04M è un sensore ad ultrasuoni impermeabile progettato per misurare distanze in condizioni ambientali difficili, come ambienti umidi o all’aperto. È una versione robusta e resistente dell’ormai noto HC‑SR04 e si presta particolarmente bene per applicazioni come la misurazione del livello dell’acqua, il rilevamento di ostacoli nei robot o l’uso in sistemi di parcheggio. Grazie alla sua compatibilità con tensioni di 3,3 V e 5 V può essere facilmente integrato con microcontrollori come Arduino, ESP32 ed ESP8266. La sua capacità di funzionare in modalità pulse o seriale lo rende estremamente versatile.
- Acquistalo su Amazon: https://amzn.to/3UrGfTv
- Acquistalo su Aliexpress: https://s.click.aliexpress.com/e/_oonboue
Specifiche tecniche
Il sensore AJ‑SR04M è progettato per misurare distanze grazie agli ultrasuoni e si distingue per la sua capacità di operare in ambienti difficili grazie alla sonda completamente impermeabile. Funziona con una tensione di alimentazione compresa tra 3 e 5,5 volt, il che lo rende compatibile sia con microcontrollori a 5 V come Arduino, sia con dispositivi a 3,3 V come ESP32 ed ESP8266. Questo lo rende estremamente versatile per vari tipi di progetti.

Il consumo di corrente del sensore varia in base alla modalità e allo stato di attività. Durante il funzionamento normale il consumo si attesta tra gli 8 e i 40 mA, mentre in modalità standby, quando non sta effettuando misure, il consumo cala drasticamente fino a 20-40 μA. Questa caratteristica lo rende adatto anche a progetti alimentati a batteria, dove l’efficienza energetica è importante.

Il sensore opera a una frequenza ultrasonica di 40 kHz, tipica dei moduli di questo tipo, e offre un raggio di rilevamento che parte da circa 20 centimetri e può raggiungere i 450 centimetri nelle versioni standard. Alcune versioni potenziate dell’AJ‑SR04M possono arrivare fino a 600 o addirittura 800 centimetri, a seconda del produttore e delle condizioni operative (ad esempio in ambienti aperti senza ostacoli laterali). La precisione è buona per la maggior parte delle applicazioni hobbistiche e semi-professionali: l’errore massimo dichiarato si aggira intorno a ±1 centimetro, mentre la risoluzione (cioè il più piccolo cambiamento di distanza che può rilevare) è di circa 1-2 millimetri.

L’angolo di rilevamento del sensore è piuttosto ampio, compreso generalmente tra i 45 e i 75 gradi, il che significa che il cono ultrasonico copre una zona piuttosto estesa davanti alla sonda. Questo può essere un vantaggio in applicazioni come il monitoraggio del livello di un liquido in un serbatoio, dove si vuole avere un rilevamento uniforme, ma potrebbe rappresentare un limite in applicazioni in cui servono misure molto precise su piccoli oggetti o in spazi ristretti.
Il sensore può lavorare correttamente in un ampio intervallo di temperature, generalmente da -15°C a +60°C, e la sonda è costruita in materiale robusto (alluminio e resina sigillante) per resistere agli agenti atmosferici. La parte sensibile è collegata alla scheda di controllo tramite un cavo che solitamente è lungo circa 2,5 metri, permettendo un certo grado di flessibilità nell’installazione.
Infine, il sensore supporta diverse modalità di uscita: la classica modalità con impulsi di durata proporzionale alla distanza (compatibile con l’HC‑SR04), oppure un’uscita seriale che può trasmettere il dato in formato ASCII o codificato. La modalità operativa si seleziona mediante specifiche resistenze saldate sulla scheda (ad esempio una resistenza da 47 kΩ per la modalità pulse, una da 120 kΩ per la modalità seriale).
Collegamenti
Il collegamento dell’AJ‑SR04M a una ESP32 tramite ESPHome è piuttosto semplice. Il sensore dispone di quattro connessioni: VCC, GND, TRIG e ECHO. Per il nostro progetto collegheremo VCC al pin di alimentazione della ESP32 a 3,3 V o 5 V a seconda della disponibilità, GND al comune della scheda, TRIG al GPIO4 e ECHO al GPIO0. La sonda deve essere montata in modo che abbia campo libero davanti a sé per permettere una rilevazione corretta, e i collegamenti vanno eseguiti con cavi di buona qualità per evitare interferenze, soprattutto nel caso di cavi più lunghi.

Codice
Andiamo a creare un nuovo device su ESPHome e chiamiamolo AJ‑SR04M. 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 AJ‑SR04M 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 (“ajsr04”) che quello più leggibile per Home Assistant (“AJ‑SR04M”).
esphome:
name: ajsr04m
friendly_name: AJ‑SR04M
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: "cWEiSBVWcthRadkAQkTWRw/qmGHgPFPHsVmwJyGH/BU="
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.
ota:
- platform: esphome
password: "1f7c6ea7300729258a51f5e14fe8694d"
captive_portal:
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 (“Ajsr04M Fallback Hotspot”) con una password predefinita, in modo che sia possibile riconfigurarlo.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Ajsr04M Fallback Hotspot"
password: "c7aQxajFGzAb"
Il sensore è collegato al pin GPIO4 dell’ESP32 come Echo, mentre al pin GPIO0 come Trigger, ripetendo la misurazione ogni secondo. Il timeout indica quanto tempo (espresso in millisecondi) il microcontrollore aspetta il segnale di ritorno (echo). Impostiamo, inoltre, l’unità di misura in metri (m).
sensor:
- platform: ultrasonic
trigger_pin: GPIO4
echo_pin: GPIO0
name: "Distanza AJ-SR04M"
update_interval: 1s
timeout: 3m
unit_of_measurement: "m"
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 AJ‑SR04M da integrare.

Autorizzate la configurazione ed otterrete quanto segue.











