Sommario:

Rileva gli ostacoli in modo asincrono con gli ultrasuoni: 4 passaggi
Rileva gli ostacoli in modo asincrono con gli ultrasuoni: 4 passaggi

Video: Rileva gli ostacoli in modo asincrono con gli ultrasuoni: 4 passaggi

Video: Rileva gli ostacoli in modo asincrono con gli ultrasuoni: 4 passaggi
Video: Il rilevatore di ostacoli ideale per tutti! Recensione Ray di Caretech 2024, Novembre
Anonim
Rileva gli ostacoli in modo asincrono con gli ultrasuoni
Rileva gli ostacoli in modo asincrono con gli ultrasuoni

Sto costruendo per divertimento un robot che voglio muovere autonomamente all'interno di una casa.

È un lavoro lungo e lo sto facendo passo dopo passo.

Questo istruttivo si concentra sul rilevamento degli ostacoli con Arduino Mega

I sensori a ultrasuoni HC-SR04 vs HY-SRF05 sono economici e semplici da usare, ma possono diventare difficili da integrare nel loop del microcontrollore in un robot complesso. Volevo eseguire il rilevamento degli ostacoli in modo asincrono.

_

Ho già pubblicato 3 istruzioni sulle funzionalità di questo robot:

  • Crea il tuo codificatore a ruota
  • Crea il tuo gateway WIFI
  • Usa unità modulo inerziale

E una documentazione sulla combinazione di intelligenza artificiale e ultrasuoni per localizzare il robot.

Passaggio 1: qual è esattamente il problema con i sensori e i microcontrollori a ultrasuoni?

Qual è esattamente il problema con i sensori e i microcontrollori a ultrasuoni?
Qual è esattamente il problema con i sensori e i microcontrollori a ultrasuoni?
Qual è esattamente il problema con i sensori e i microcontrollori a ultrasuoni?
Qual è esattamente il problema con i sensori e i microcontrollori a ultrasuoni?

Attesa sincrona e limitazioni di Arduino

Il codice dei microcontrollori viene eseguito in un ciclo e non supporta il multi-thread. I sensori a ultrasuoni si basano sulla durata del segnale. Questa durata dura fino a 30 m s che è molto lunga da attendere all'interno del loop quando i microcontrollori devono gestire più motori e sensori (ad esempio servomotori e motori DC con encoder a ruota).

Quindi volevo sviluppare un oggetto che funziona in modo asincrono.

Passaggio 2: come funziona?

Come funziona ?
Come funziona ?

È stato progettato per Atmega per il rilevamento degli ostacoli. Supporta fino a 4 sensori a ultrasuoni.

Grazie all'interruzione periodica del tempo, il sistema può monitorare fino a 4 sensori a ultrasuoni. Il codice principale deve solo definire quale sensore attivare con condizione e soglia. Il principale verrà interrotto solo nel caso in cui compaia (condizione, soglia).

Le funzioni principali sono:

  • Alert è il rilevamento degli ostacoli di base e fornisce interrupt se almeno 1 dei 4 sensori rileva una distanza al di sotto della soglia
  • Il monitor è una funzione estesa che fornisce l'interruzione su una combinazione di condizioni di distanza fino a 4 sensori. Le condizioni possibili sono sopra, sotto, uguali o non uguali alle soglie.

Passaggio 3: dettagli tecnici

Utilizzare timer4 in modo che il pin 6 7 8 non possa essere utilizzato come PWM.

Per ogni sensore l'oggetto necessita di un PIN di attivazione e di un PIN di interruzione.

Oltre ai PIN di interruzione dei sensori, l'oggetto necessita di un altro PIN di interruzione per l'utilizzo del software.

Passaggio 4: come implementare?

Come implementare?
Come implementare?

Collegare i sensori come sopra

Scarica da questo repository GitHub

  • EchoObstacleDetection.cpp,
  • EchoObstacleDetection.h
  • EsempioEchoObstacleDetection.ino

Crea la directory EchoObstacleDetection all'interno della tua libreria IDE e sposta i file.cpp e.h

Provalo

Apri EsempioEchoObstacleDetection.ino.

Questo è un semplice esempio di rilevamento di ostacoli eseguito con 2 sensori a ultrasuoni.

L'uscita è diretta sul monitor seriale. Inizialmente stamperà le distanze rilevate dai 2 sensori e poi stamperà avvisi a seconda delle distanze sotto le soglie.

Consigliato: