Télémètre Arduino

 

Ce télémètre permet de mesurer des distances et utilise un capteur laser. Ce projet comporte une carte Arduino reliée à un afficheur OLED et un capteur de distance.

 

bouton violet Le projet

J'utilise un capteur de distance VL53L1X sur une carte Breakout de Sparkfun qui permet des mesures de 40 mm à 4 m. Il se connecte au bus I2C.

La carte Arduino sert à la programmation d'un Atmega328 qui sera placé sur une petite carte avec son circuit oscillant. Pour rendre le télémètre autonome, j'utilise 2 batteries LR03 et un convertisseur élévateur réglable en sortie à 5 V. Le tout se loge dans un boîtier au couvercle transparent de chez Diptal.

bouton violet Les composants

bouton violetUn télémètre autonome

Une carte Arduino et une plaque de connexions ce n'est pas très pratique pour effectuer une mesure de distance.
Pour mettre en boîtier, je réalise le montage suivant et je soude le tout sur une plaque d'epoxy pastillée.
Le schéma structurel permet de mieux comprendre le câblage.
L'atmega328 possède un bootloader. Il se programme, placé sur le support à 28 broches de la carte Arduino, puis on le retire et on le place sur le montage définitif.
Pour graver le bootloader dans l'artmega328, je vous propose 3 méthodes.


Pour intégrer tous les composants dans le boitier Diptal, j'ai réalisé 2 pièces support à l'imprimante 3D. 2 découpes sont à prévoir dans le boîtier pour la mise en place d'un interrupteur et une fenêtre pour le capteur.
Pour la fixation des pièces dans le boîtier, j'utilise un peu de colle thermofusible.

la mise en boitier support OLED support capteur
 
Fichiers au format .STL

bouton violetLe montage

J'utilise une carte Arduino pour le développement en réalisant les connections suivantes sur plaque d'essai. Attention au capteur de distance qui doit être alimenté en 3,3 V.

bouton violetLe programme

Le programme mesure la distance et l'affiche en mm dans un rectangle. Il faut charger les bibliothèques U8g2lib et Sparkfun_VL53L1X dans l'environnement Arduino.

       
//  ****  Mesure de distance  **** //
// Jmd mai 2021 //
// radar avec VL53L1X et Oled //

#include  < Arduino.h >
#include < U8g2lib.h >
#include < Wire.h >
#include "SparkFun_VL53L1X.h"
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
//Optional interrupt and shutdown pins.
#define SHUTDOWN_PIN 2
#define INTERRUPT_PIN 3

SFEVL53L1X distanceSensor(Wire, SHUTDOWN_PIN, INTERRUPT_PIN);

void setup(void)
{
  Wire.begin();
  u8g2.begin();

  Serial.begin(19200);
  Serial.println("VL53L1X Qwiic Test");

  if (distanceSensor.init() == false)
    Serial.println("Sensor online!");

}
void loop(void)
{
  distanceSensor.startRanging(); //Write configuration bytes to initiate measurement
  int distance = distanceSensor.getDistance(); //Get the result of the measurement from the sensor
  distanceSensor.stopRanging();

  Serial.print("Distance(mm): ");
  Serial.print(distance);

  Serial.println();

  u8g2.clearBuffer();          // clear the internal memory
  u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
  u8g2.drawStr(30,10,"Distance:"); // write something to the internal memory
  u8g2.drawStr(85,63,"JMD");
  u8g2.setFont(u8g2_font_unifont_t_symbols);
  u8g2.drawGlyph(115, 63, 0x00a9); 
  u8g2.drawLine(30, 12, 80, 12);
  u8g2.drawFrame(25,25,70,20); // draw a box 
  u8g2.setCursor(30,40);
  u8g2.print(distance);
  u8g2.drawStr(70,40,"mm");
  u8g2.sendBuffer();          // transfer internal memory to the display
  delay(200);  
}