Misuratore di altezza persone: differenze tra le versioni
imported>Galessandroni m Galessandroni ha spostato la pagina Misuratore di altezza persone. a Misuratore di altezza persone senza lasciare redirect: Titolo con punto |
(Nessuna differenza)
|
Versione attuale delle 07:37, 31 mar 2022
Template:Lavori in corsoTemplate:Risorsa
Questa pagina descrive come realizzare un misuratore d'altezza per le persone tramite l'utilizzo di Arduino, di un sensore ad ultrasuoni, e di un display LCD.
Descrizione del progetto

Abbiamo realizzato questo progetto con lo scopo di creare un misuratore per l'altezza delle persone, e per farlo ci siamo serviti dei seguenti componenti:
- sensore ad ultrasuoni;
- display LCD.
Il funzionamento è il seguente:
Una volta posto il sensore a un'altezza di , questo effettua la misurazione dell'altezza dell'individuo eseguendo la sottrazione tra la distanza in cui è situato e il capo della persona oggetto della misurazione.
La scheda effettua la sottrazione tra la il posizionamento () e la misurazione effettuata dal sensore di prossimità. Infine, il risultato dell'operazione (l'altezza della persona) viene visualizzato sul display.
| Componente | Note |
|---|---|
| Sensore a utrasuoni | HC SR-04 |
| Display LCD | |
| Modulo | I2C |
Schema di montaggio
Di seguito lo schema di montaggio di un misuratore d'altezza realizzato con un sensore a ultrasuoni. Come mostrato nella figura l'altezza di una persona verrà visualizzata su un display LCD.

Schema elettrico
Successivamente viene mostrato lo schema elettrico del misuratore di altezza delle persone:

Codice
Qui di seguito viene mostrato il codice che permette il funzionamento del progetto.
#include <LiquidCrystal_I2C.h>
// pin del sensore di prossimita'
#define triggerPort 7
#define echoPort 8
// dimensione display
#define righeDisp 4
#define colonneDisp 20
#define boud 9600
const int maxAltezza = 220; // in cm
// velocita' del suono in cm/s
int altezzapersona;
int r; // echo in cm
long duration; // tempo dell'eco in us
// settaggio del modulo I2C per il display
LiquidCrystal_I2C lcd(0x27, colonneDisp, righeDisp);
// connessione display (pin)
void setup() {
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
Serial.begin( boud );
Serial.println( "Sensore ultrasuoni: ");
lcd.begin();
lcd.clear();
lcd.print("Altezza:");
lcd.setCursor(18 , 0);
lcd.print("cm");
lcd.setCursor(16, 0);
lcd.print(' ');
lcd.setCursor(17, 0);
lcd.print(' ');
}
void loop() {
//porta l'uscita del trigger a livello basso
digitalWrite( triggerPort, LOW );
//invia un impulso di 10 us al trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
duration = pulseIn( echoPort, HIGH );
r = 0.034 * duration / 2;
// Invia i dati alla porta seriale
Serial.print( "durata: " );
Serial.print( duration );
Serial.print( " , " );
Serial.print( "Altezza: " );
// evitando errori dovuti a nani
if( duration < 38000 ) {
}
Serial.print( r ); Serial.println( "cm" );
// posiziono il cursore alla colonna 13 e riga 0
if(altezzapersona > 1){
lcd.setCursor(13, 0);
lcd.print(altezzapersona = maxAltezza - r);
}
if(altezzapersona <= 99 && altezzapersona > 9){
lcd.setCursor(13, 0);
lcd.print(altezzapersona = maxAltezza - r);
lcd.setCursor(15, 0);
lcd.print(" ");
}
if(altezzapersona <= 9){
lcd.setCursor(13, 0);
lcd.print(altezzapersona = maxAltezza - r);
lcd.setCursor(14, 0);
lcd.print(" ");
}
delay(500);
}
Espansioni Suggerite
Tra le espansioni suggerite si segnala la possibilità di aggiungere un pulsante che faccia attivare la misurazione solo dopo che viene premuto, in maniera tale da ottenere una misurazione più accurata.
Inoltre si potrebbe anche aggiungere un sensore di peso per la creazione di una bilancia, e fare in modo che il display visualizzi se una persona è in sovrappeso, peso forma o sottopeso.