ESP-01 : usi alternativi di RSSI

Normalmente, usiamo il modulino wifi ESP-01 per fare dispositivi che si connettono a Internet ; trasmettiamo o riceviamo informazioni, fondamentalmente per realizzare dei sensori o degli attuatori. C’è un’infinità di applicazioni in giro, alcune ben documentate e originali, altre copie di copie di copie (ricursivo). Da un lato ci sono dei principianti con una preparazione “vergognosa” che si spacciano per “specialisti”, ben consci del fatto che ci sarà sempre in giro su Internet qualcuno che ne capisce meno di loro 🙂 , altri invece sono decisamente “bravi e preparati” e leggere quello che propongono è davvero interessante, anche per un “addetto ai lavori”.

Negli ultimi anni, prodotti come Arduino, ESP8266 e Raspberry PI hanno “rivitalizzato” un settore hobbystico che era praticamente morto, con conseguenze assolutamente positive per tutto il settore dell’elettronica e dell’informatica. Come già detto, però, c’è anche il fattore negativo di tanta gente senza talento che “imbratta i muri”, ma è una contropartita accettabile, pur di vedere di nuovo l’entusiasmo per l’autocostruzione, com’era ai (bei) tempi delle “riviste cartacee”.

Per fare alcune prove che riguardano un’idea che mi è venuta in mente, ho sviluppato un programmino che utilizza una delle “features” del modulino ESP-01 nella versione di firmware con protocollo AT. Lo scopo di questo programma è di fare dei “beep” quando la misura di RSSI (Received Signal Strength Indicator) di un determinato Access Point scende al di sotto di una soglia impostata. Ho deciso di pubblicare l’intera cartella di progetto, contenente sia l’eseguibile sul path /release/Radar.exe, sia il file sorgente in FreeBASIC (con FireFly Visual Designer) sul path /forms/Form1.frm, così chi vorrà potrà modificare / migliorare il software a proprio piacimento. Vediamo la schermata del programma appena lanciato:

Andiamo per punti : (1) è il pulsante per aprire la porta di comunicazione seriale verso il modulino ESP-01 (ho usato lo stesso circuitino presentato qualche tempo fa sul mio sito a questo link). Per prima cosa, premeremo Open e se tutto andrà a buon fine, la porta seriale verrà aperta e la scritta sul pulsante cambierà in Close. Subito dopo premeremo in fila i pulsanti riferiti con (2), (3), (4) e (5). Questi servono per inviare una serie di comandi AT al modulino wifi ESP-01. Per pima cosa si setta la potenza di trasmissione a circa un terzo del massimo possibile (27 su un range da 0 a 82); poi si sceglie di operare come STA (station); poi si chiede di usare, nel comando CWLAP (List Access Points) solo i parametri relativi ad SSID e RSSI (il valore 6 setta i bits 1 e 2, che sono appunto relativi ai due campi indicati). Infine si richiede la lista completa degli Access Points “visibili” dal modulo. Di sotto segue un esempio di tutto quello che compare nella finestra (10) eseguendo le operazioni elencate nell’ordine:

>Open
TX: AT+RFPOWER=27<0x0D><0x0A>
AT+RFPOWER=27

OK
TX: AT+CWMODE=1<0x0D><0x0A>
AT+CWMODE=1

OK
TX: AT+CWLAPOPT=0,6<0x0D><0x0A>
AT+CWLAPOPT=0,6

OK
TX: AT+CWLAP<0x0D><0x0A>
AT+CWLAP

+CWLAP:("MW40Wind_xxxx",-58)
+CWLAP:("DIRECT-Bh-BRAVIA",-86)
+CWLAP:("NETGEAR26",-93)
+CWLAP:("CEM_host",-36)

OK

Una volta visualizzata la lista di AP, potremo fare un “copia” di quello che vogliamo utilizzare e poi incollarlo nel campo riferito dal numero (6). Prenderemo quindi nota anche del valore di RSSI relativo al medesimo AP e lo scriveremo nel campo riferito dal numero (7). A questo punto potremo finalmente premere il bottone Start (8) e il programma comincerà ad inviare una serie di comandi AT+CWLAP=”APcopiato”, che potremo vedere nel campo (9) e quindi verificherà le risposte formite dal modulino. Se il valore di RSSI ricevuto è inferiore (sono numeri negativi !) a quello che abbiamo programmato nel campo (7), allora si sentirà un “beep”. Vediamo una schermata del programma in funzione:

Naturalmente, il valore di RSSI è influenzato da vari fattori e non è costante, ma si mantiene in un certo range. Notate che più il numero si avvicina allo zero, più il segnale è forte ! Se scende a livello di -100 è assente. Con una certa approssimazione e con una sensibilità un po’ scarsina 🙂 potremo usare il modulino Esp-01 come sensore di presenza. Infatti, se qualcuno si piazza nelle vicinanze del modulino, o meglio, sulla linea ideale che unisce il modulino all’Access Point, il segnale diminuirà (sarà assorbito/riflesso dall’individuo) e il computer farà beep ! Lo stesso succederà se prendiamo il computer (supponendo che sia un portatile !) e ci allontaniamo dall’Access Point. E’ da notare che non facciamo una connessione all’AP, ma ci limitiamo a leggere la potenza del segnale ricevuto. Quindi, abbiamo due usi immediati per questo “giocattolo” : un sensore di presenza e un allarme di allontanamento. Naturalmente, il tutto può essere trasportato su un piccolissimo microcontrollore per rendere il lavoro più interessante. Purtroppo, l’utilizzo dei comandi AT rende la cosa un po’ lentina : tipicamente un “beep” ogni due secondi, ma lavorando direttamente nel chip ESP8266 (con gli strumenti giusti) si può fare ben di più ! Sotto la clausola di non assunzione di responsabilità, troverete la cartella di lavoro FBgui_Radar zippata con password. Se non avete Freebasic e Firefly, potete scaricarli gratuitamente ; cercate nel mio sito “links utili” e troverete i collegamenti per il download.

Clausola di non assunzione di responsabilità.
Il programma o software descritto, liberamente prelevabile dal sito, è da considerarsi una “demo” gratuita e pertanto l’autore Emilio P.G. Ficara non fornirà alcun supporto, né si assumerà alcuna responsabilità per ogni eventuale problema, danno o conseguenza che dovesse presentarsi nel download o nell’esecuzione dell’applicazione.

Cliccando questo link per effettuare il download del file implicitamente dichiarate di aver letto e capito la clausola di non assunzione di responsabilità e di accettarla.

Verificate sempre il checksum MD5 dei files che scaricate ! In questo caso deve essere: F6E1617D0E8E7CABC7FD6D1A7BB0B392 ; se è diverso, il file è corrotto o non è quello originale, quindi non scompattatelo e buttatelo via ! Se invece è tutto ok, potete scompattarlo (usate il programma 7Z con la password: eficara).

Potete usare l’eseguibile anche su una chiavetta di memoria USB, in quanto non ha bisogno di installazione.