- Sensor de recorregut de temps de vol (ToF) VL6180X
- Esquema de connexions
- Addició de biblioteques necessàries per al sensor ToF VL6180
- Programació i explicació de treball
TOF o Temps de vol és un mètode que s’utilitza habitualment per mesurar la distància d’objectes distants mitjançant diversos sensors de mesurament de distància, com ara un sensor ultrasònic. La mesura del temps que pren una partícula, una ona o un objecte per recórrer una distància a través d’un medi s’anomena Temps de vol (TOF). Aquesta mesura es pot utilitzar per calcular la velocitat o la longitud del recorregut. També es pot utilitzar per conèixer la partícula o les propietats del medi, com ara la composició o el cabal. L'objecte viatger es pot detectar directament o indirectament.
Els dispositius de mesura de distància per ultrasons són un dels primers dispositius que utilitzen el principi del temps de vol. Aquests dispositius emeten un pols ultrasònic i mesuren la distància a un material sòlid en funció del temps que ha trigat l’ona a rebotar cap a l’emissor. Hem utilitzat el sensor d’ultrasons en moltes de les nostres aplicacions per mesurar la distància:
- Mesura de distància basada en el sensor ultrasònic i Arduino
- Mesureu la distància amb el sensor d'ultrasons Raspberry Pi i HCSR04
- Com es mesura la distància entre dos sensors ultrasònics
El mètode del temps de vol també es pot utilitzar per estimar la mobilitat dels electrons. En realitat, va ser dissenyat per a la mesura de pel·lícules primes de baixa conductivitat, posteriorment es va ajustar per a semiconductors habituals. Aquesta tècnica s'utilitza per a transistors d'efecte de camp orgànic, així com per a estructures metàl·liques-dielèctriques-metàl·liques. Mitjançant l'aplicació del pols de làser o tensió, es generen les càrregues sobrants.

El principi TOF s’utilitza per mesurar la distància entre un sensor i un objecte. Es mesura el temps que ha passat el senyal per tornar al sensor després de reflectir-se des d’un objecte i s’utilitza per calcular la distància. Diversos tipus de senyals (portadors) com el so i la llum es poden utilitzar amb el principi TOF. Quan s’utilitza TOF per trobar el rang, és molt potent en emetre llum en lloc de so. En comparació amb els ultrasons, proporciona una lectura més ràpida, una precisió més gran i un abast més gran, mantenint el seu baix pes, mida petita i baix consum d'energia.
Aquí, en aquest tutorial, farem servir un sensor VL6180X TOF Range Finder amb Arduino per calcular la distància entre el sensor i l'objecte. Aquest sensor també indica el valor de la intensitat de la llum en LUX.
Sensor de recorregut de temps de vol (ToF) VL6180X
El VL6180 es diferencia d’altres sensors de distància, ja que utilitza un rellotge precís per mesurar el temps que pren la llum per reflectir-se des de qualsevol superfície. Això proporciona a VL6180 un avantatge respecte a altres sensors perquè és més precís i immune al soroll.
El VL6180 és un paquet 3 en 1 que inclou un emissor IR, un sensor de llum ambiental i un sensor d’abast. Es comunica mitjançant una interfície I 2 C. Té un regulador de 2.8V incorporat. Així, fins i tot si connectem una tensió superior a 2,8 V, es reduirà automàticament cap avall sense danyar la placa. Es mesura una distància de fins a 25 cm. S'hi proporcionen dos GPIO programables.

Esquema de connexions
Aquí el Nokia 5110 LCD s’utilitza per mostrar el nivell de llum i la distància. El Nokia 5110 LCD funciona a 3,3 V, de manera que no es pot connectar directament amb pins digitals Arduino Nano. Per tant, afegiu resistències de 10 k en sèrie amb els senyals de dades per protegir les línies de 3,3 V dels pins digitals de 5 V. Obteniu més informació sobre l’ús del Nokia 5110 LCD amb Arduino.

El sensor VL6180 es pot connectar directament a l’Arduino. La comunicació entre el VL6180 i Arduino és I2C. En realitat, el protocol de comunicació I2C combina les millors característiques de SPI i UART. Aquí podem connectar diversos esclaus a un sol mestre i podem tenir diversos amos que controlen un o diversos esclaus. Igual que la comunicació UART, I2C utilitza dos cables per a la comunicació SDA (Serial Data) i SCL (Serial Clock), una línia de dades i una línia de rellotge.
A continuació es mostra el diagrama de circuits per connectar el sensor del telemetre VL6180 ToF amb Arduino :

- Connecteu el pin RST de la pantalla LCD al pin 6 d'Arduino mitjançant la resistència de 10K.
- Connecteu el pin CE de la pantalla LCD al pin 7 d'Arduino mitjançant la resistència de 10K.
- Connecteu el pin DC de la pantalla LCD al pin 5 d'Arduino mitjançant la resistència de 10K.
- Connecteu el pin DIN de la pantalla LCD al pin 4 d'Arduino mitjançant la resistència de 10K.
- Connecteu el pin CLK de la pantalla LCD al pin 3 d'Arduino mitjançant la resistència de 10K.
- Connecteu el pin VCC de la pantalla LCD al pin de 3,3 V d’Arduino.
- Connecteu el pin GND de la pantalla LCD al GND d'Arduino.
- Connecteu el pin SCL del VL6180 al pin A5 d'Arduino
- Connecteu el pin SDA del VL6180 al pin A4 d'Arduino
- Connecteu el pin VCC del VL6180 al pin d'Arduino de 5V
- Connecteu el pin GND de VL6180 al pin GND d'Arduino


Addició de biblioteques necessàries per al sensor ToF VL6180
S’utilitzaran tres biblioteques en la interfície del sensor VL6180 amb Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 és una biblioteca per a pantalles LCD monocromes Nokia 5110. Aquestes pantalles utilitzen SPI per a la comunicació. Es necessiten quatre o cinc pins per connectar aquesta pantalla LCD. A continuació es mostra l’enllaç per descarregar aquesta biblioteca:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
La biblioteca Adafruit_GFX per a Arduino és la biblioteca de gràfics bàsics per a pantalles LCD, que proporciona una sintaxi comuna i un conjunt de primitius gràfics (punts, línies, cercles, etc.). Cal combinar-lo amb una biblioteca específica de maquinari per a cada dispositiu de visualització que fem servir (per gestionar les funcions de nivell inferior). A continuació es mostra l’enllaç per descarregar aquesta biblioteca:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 és la biblioteca Arduino amb la funcionalitat bàsica del sensor VL6180. El VL6180 consisteix en un emissor IR, un sensor d’abast i un sensor de llum ambiental que es comuniquen a través d’una interfície I2C. Aquesta biblioteca us permet llegir la distància i les sortides de llum del sensor i emet les dades mitjançant una connexió en sèrie. A continuació es mostra l’enllaç per descarregar aquesta biblioteca:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Afegiu totes les biblioteques una per una anant a Sketch >> Inclou biblioteca >> Afegiu biblioteca.ZIP a Arduino IDE. A continuació, pengeu la biblioteca que heu baixat dels enllaços anteriors.

De vegades no caldrà afegir llibreries de cable i SPI, però si teniu un error, descarregueu-les i afegiu-les al vostre IDE Arduino.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programació i explicació de treball
Al final d’aquest tutorial es dóna un codi complet amb un vídeo de treball; aquí expliquem el programa complet per entendre el funcionament del projecte.
En aquest programa, la majoria de les parts les gestionen les biblioteques que hem afegit, de manera que no us haureu de preocupar.
A la part de configuració , configureu la velocitat de transmissió com a 115200 i inicialitzeu la biblioteca de cables per a I2C. A continuació, comproveu si el sensor VL6180 funciona o no, si no funciona, mostreu un missatge d'error.
A la part següent estem configurant la pantalla, podeu canviar el contrast al valor desitjat aquí. Estic configurant-la com a 50
configuració nul·la () { Serial.begin (115200); // Inicieu la sèrie a 115200bps Wire.begin (); // Inicia el retard de la biblioteca I2C (100); // retard. if (sensor.VL6180xInit ()! = 0) { Serial.println ("FAILED INITALIZE"); // Inicialitzar el dispositiu i comprovar si hi ha errors }; sensor.VL6180xDefautSettings (); // Carregueu la configuració predeterminada per començar. retard (1000); // retardar 1s display.begin (); // init done // podeu canviar el contrast per adaptar la pantalla // per a la millor visualització. display.setContrast (50); display.display (); // mostrar splashscreen display.clearDisplay (); }
A la configuració de la part del bucle buit, les instruccions per mostrar els valors a la pantalla LCD. Aquí mostrem dos valors, un és el "Nivell de llum ambiental en lux" (un lux és en realitat un lumen per metre quadrat d'àrea) i el segon és "Distància mesurada en mm". Per mostrar diferents valors en una pantalla LCD, definiu la posició de cada text que s'ha de mostrar a la pantalla LCD mitjançant "display.setCursor (0,0);".
bucle buit () { display.clearDisplay (); // Obteniu el nivell de llum ambiental i informeu a LUX Serial.print ("Nivell de llum ambiental (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (NEGRE); display.setCursor (0,0); display.println ("Nivell de llum"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Obteniu Distància i informe en mm Serial.print ("Distància mesurada (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (NEGRE); display.setCursor (0, 24); display.println ("Distància (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); retard (500); }
Després de carregar el programa, obriu el monitor sèrie i hauria de mostrar la sortida tal com es mostra a continuació.

Els telèfons VL6180 TOF s’utilitzen en telèfons intel·ligents, dispositius portàtils de pantalla tàctil, tauletes, portàtils, dispositius de joc i electrodomèstics / dispositius industrials.
Aquí mostrem el nivell de llum ambiental en lux i la distància en mm.

Trobeu el programa complet i el vídeo de demostració a continuació. Comproveu també com es mesura la distància mitjançant el sensor d'ultrasons i el nivell de llum mitjançant el sensor de llum ambiental BH1750.
