In questo articolo esploriamo un progetto che legge un termometro analogico a lancetta e restituisce una lettura digitale, sfruttando un Raspberry Pi per acquisire immagini e tecniche di computer vision per interpretare la posizione della lancetta e leggere la temperatura.
Il sistema è composto da tre script scritti in Python:
- Get_image: acquisisce l’immagine del termometro utilizzando un Raspberry Pi dotato di PiCamera.
- Calibrate: esegue la configurazione iniziale per determinare il centro della lancetta e garantire una lettura accurata.
- ThermoVision: analizza l’immagine per identificare la lancetta, calcolarne l’angolo e tradurlo nella temperatura indicata dal termometro.
1. Acquisizione dell’immagine
Il primo script utilizza la libreria Picamera2 per catturare l’immagine e prepararla per l’elaborazione.
Nella mia configurazione, il Raspberry Pi scatta la foto e la invia a un computer remoto per l’analisi, in quanto il Raspberry Pi 2 utilizzato non dispone di sufficienti risorse per elaborare l’immagine localmente.
Come funziona:
- L’immagine viene catturata e ridimensionata a 640×480 pixel per ottimizzare il trasferimento.
- Il file viene salvato localmente e poi trasferito al server tramite SFTP, utilizzando la libreria Paramiko.

2. Calibrazione
Per garantire una corretta lettura, la prima volta che si configura il sistema è necessario calibrare la posizione della lancetta. L’utente deve selezionare il centro della lancetta sull’immagine del termometro.
Questo processo avviene tramite un’interfaccia grafica che:
- Mostra l’immagine acquisita.
- Registra le coordinate del centro selezionato e le salva in un file di configurazione in formato JSON.
Queste informazioni saranno utilizzate negli step successivi per identificare con precisione la lancetta del termometro.
3. Analisi dell’immagine con Computer Vision
Lo script principale, ThermoVision, elabora l’immagine per calcolare la temperatura indicata dal termometro. Questo avviene utilizzando tecniche di computer vision basate sulla libreria SciKit-Image.
Fasi del processo:
- Pre-elaborazione: L’immagine viene ridimensionata e filtrata per ridurre il rumore. Viene applicata la trasformata di Hough probabilistica per identificare tutte le linee presenti nell’immagine.
- Identificazione della lancetta: Tra tutte le linee rilevate, il sistema riconosce quella che rappresenta la lancetta, basandosi sul fatto che questa parte dal centro indicato durante la calibrazione.
- Calcolo dell’angolo: Una volta identificata la lancetta, lo script calcola il suo angolo rispetto all’orizzontale.
- Conversione in temperatura: L’angolo viene tradotto in temperatura utilizzando due valori di riferimento inseriti in configurazione: angoli noti con le rispettive temperature indicati sul termometro.

Conclusioni
Questo progetto dimostra come sia possibile combinare hardware a basso costo, come un Raspberry Pi, con tecniche di computer vision per digitalizzare strumenti analogici. La modularità degli script rende il sistema altamente adattabile:
- Può essere configurato per leggere altri strumenti a lancetta.
- Può essere integrato con applicazioni IoT per registrare e monitorare dati in tempo reale.
Con questo approccio, è possibile trasformare semplici strumenti analogici in sistemi intelligenti, ampliandone le funzionalità e integrandoli in sistemi di controllo remoto e home automation.