Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Faire un télémètre laser bon marché pour Arduino

Composants et fournitures

Arduino Nano R3
× 1
Elecrow OLED 0.96'' 128x64
× 1
Ruban à mesurer laser X-40
× 1
Module DC-DC LM2596
× 1

Outils et machines nécessaires

Fer à souder (générique)
Programmeur ST-LINK

Applications et services en ligne

Utilitaire ST-LINK de STMicroelectronics

À propos de ce projet

Besoin d'un module télémètre laser rapide et pas cher pour votre projet Arduino ?

Bien sûr, vous pouvez utiliser des modules spécialisés pour cette tâche, mais la plupart d'entre eux ont un prix élevé. Les modules VL53L0X/VL53L1X sont bon marché, mais ils ont un très grand champ de vision.

J'ai donc trouvé une solution :utiliser un mètre ruban laser "X-40" bon marché comme télémètre laser. Ces appareils coûtent 20 $ et moins et peuvent mesurer des distances jusqu'à 40 m avec une précision d'environ 3 mm. Mais il y a deux problèmes - il n'y a aucun moyen d'obtenir des lectures à partir de la bande et les mesures sont lentes - moins de 1 Hz.

Pour résoudre ces problèmes, j'ai fait de l'ingénierie inverse de ce ruban à mesurer laser et j'ai écrit mon propre micrologiciel pour le MCU STM32 du module télémètre laser. La vitesse de mesure était importante pour moi et je peux atteindre ~60 Hz, mais la distance stable maximale a diminué à ~6 m (la portée maximale totale est de 37 m, mais je ne l'ai pas testée).

La précision de la mesure de distance peut varier de 1 mm à 10 mm selon la couleur de la cible et la distance.

Dimensions du module :25x13x50 mm.

AVIS IMPORTANT :VOUS PERDREZ LE FIRMWARE D'ORIGINE, AINSI L'APPAREIL NE PEUT PAS ÊTRE UTILISÉ COMME RUBAN LASER PLUS TARD !

Notez que les rubans à mesurer laser "X-40" peuvent avoir différentes révisions du module télémètre laser, et mon firmware ne prend en charge que certaines d'entre elles !

"X-40" n'est pas le seul nom pour un ruban à mesurer laser avec de tels modules - je sais qu'il existe plusieurs rubans à mesurer laser chinois différents avec des modules appropriés.

Étape 1 :Démontage du ruban à mesurer laser

Démontons le mètre ruban laser pour en tirer un module télémètre laser.

Vous devez dévisser 7 vis du boîtier :

Mètre à ruban laser démonté :

Vous pouvez voir un petit module télémètre laser à l'intérieur du boîtier de l'appareil. Vous devez déconnecter les câbles plats du module et retirer le module du boîtier :

Notez que le module est marqué comme "701A". Mon firmware ne prend en charge que les versions de module "512A" et "701A". Plusieurs utilisateurs ont confirmé que les modules "703A" fonctionnent également (je ne l'ai pas testé).

UPD 11/2019 :
Attention :Il a été constaté que les nouveaux rubans à mesurer laser "x-40" sont livrés avec des modules "M88B". Le marquage est "88B" sur le PCB près du MCU. Ces modules sont basés sur le MCU STM32F0 (il a le package QFN-32). Ces modules ne sont pas supportés par mon firmware !

UPD 10/2021 :
Attention : ajout de la prise en charge des modules U85B :voir lien ! Ils sont utilisés dans les types modernes de rubans à mesurer laser.


Si votre module est pris en charge, vous devez dessouder les lignes électriques du module.

Étape 2 :Programmation du module télémètre laser

Vous devez écrire un firmware spécialisé sur le MCU du module pour obtenir les fonctionnalités nécessaires.

1. Tout d'abord, vous devez souder des fils pour programmer le MCU. Le brochage est indiqué sur l'image :

Connectez les broches 7-8 du connecteur du clavier - c'est nécessaire pour la mise sous tension.

Les lignes "GND" et "Vbat" doivent être connectées à la source d'alimentation. La plage de tension d'alimentation est de +2,7...+3,3V. Il doit y avoir +3,5 V sur la ligne "Vdd" lorsque le module est alimenté.

Les lignes "GND", "SWDIO", "SWCLK", "NRST" doivent être connectées au programmateur ST-LINK. La ligne "NRST" est très importante - le micrologiciel d'origine du MCU est verrouillé, cette ligne est donc nécessaire pour entrer le MCU en mode de programmation.

Certains programmeurs ont cette ligne, et d'autres (bon marché) ne le sont pas, mais il existe une solution à ce problème.

De plus, certains programmeurs (comme l'original "ST-LINK/V2 ") ont besoin que la ligne "Vbat" soit connectée à la ligne "VCC/TVCC" du programmeur.

Exemple de connexions (ce programmateur n'a pas de ligne "NRST") :

2. Installez "ST-LINK Utility" sur le PC. Si vous n'avez pas l'habitude d'utiliser ce logiciel, il existe de nombreux tutoriels sur le Web.

Vous devez configurer l'utilitaire (Cible -> Paramètres) :

Si votre programmeur a une sortie "NRST", vous pouvez simplement allumer l'appareil et appuyer sur "Target -> Connect" à l'utilitaire.

S'il n'a pas une telle ligne, vous devez suivre ces étapes :

  • Allumez le courant.
  • Connectez la ligne "NRST" du module au GND.
  • Appuyez sur "Cible -> Connecter" à l'utilitaire.
  • Déconnectez rapidement la ligne "NRST" du GND.
  • L'utilitaire doit afficher la connexion

Vous devez obtenir une telle image :

3. Le flash MCU est verrouillé pour la lecture, vous devez donc désactiver la "Protection contre la lecture". Vous perdrez le firmware d'origine à cette étape !

Ouvrez le menu Cible -> "Option Octets". Il doit y avoir de tels paramètres :

Basculez « Protection contre la lecture » ​​sur « Désactivé » et appuyez sur le bouton « Désélectionner tout », puis appuyez sur le bouton « Appliquer ». Essayez de redémarrer le module (en coupant l'alimentation).

Appuyez sur Cible -> Connecter. Il doit y avoir des informations sur la connexion réussie dans la fenêtre du journal et vous devez voir le contenu de la mémoire - rempli de 0xFF. Vous pouvez maintenant charger un firmware personnalisé sur le MCU.

4. Le firmware nécessaire est placé ici :https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

Sélectionnez le fichier HEX approprié pour votre module et téléchargez-le sur le MCU Flash à l'aide de « l'utilitaire ST-LINK ».

Étape 3 :connexion du module télémètre laser à l'Arduino

Vous devez souder un fil ou un connecteur au pad TX de la carte :

Voir le schéma de connexion ci-dessous.

Tout d'abord, vous devez vérifier que le module télémètre fonctionne bien. À cette étape, vous n'avez pas besoin de connecter l'écran OLED à l'Arduino - connectez simplement la ligne TX du module télémètre laser à la ligne TX de l'Arduino et les lignes électriques du module à la source d'alimentation +3V.

Créez un croquis vide et chargez-le sur l'Arduino. Ouvrez "Serial Monitor" sur l'IDE Arduino. Sélectionnez le débit en bauds : 250 000

Si le module télémètre fonctionne correctement, vous obtiendrez les mêmes données :

En fait, il est préférable d'utiliser un convertisseur USB-UART spécialisé pour ce test. Sélectionnez 256000 baudrate dans son utilitaire (c'est un vrai baudrate de x-40 MCU).

Deuxièmement, vous devez assembler le schéma complet avec affichage.

Connectez la ligne TX du module télémètre laser à la ligne RX de l'Arduino (vous devez déconnecter ce fil pendant le chargement du programme sur l'Arduino).

Si tout fonctionne bien, vous obtiendrez le même résultat :

Vous pouvez voir l'affichage avec 3 chiffres :

  • "COUNT" - compteur des valeurs reçues
  • "AMPL" - amplitude du signal. La barre symbolique ("<--->") ci-dessous montre l'amplitude graphiquement (en échelle logarithmique).
  • La plus grande valeur :la distance en mètres et en millimètres.

Étape 4 :Étalonnage du zéro

Après un premier démarrage, le module télémètre laser doit être calibré.

Vous devez placer un objet blanc à une certaine distance du module. Une distance à cet objet deviendra une distance nulle pour le module télémètre. Pour démarrer le processus d'étalonnage, vous devez connecter le clavier du ruban à mesurer laser et appuyer sur le bouton le plus bas. Le module émettra deux bips - au début et à la fin de l'étalonnage (la durée de l'étalonnage est proche de 10 secondes).

Vous pouvez maintenant utiliser ce module télémètre laser.

Liens :

1. Github - résultats d'ingénierie inverse et code source.

2. Habr.com – Article traduit par Google sur le processus de rétro-ingénierie des rubans à mesurer laser.

Désolé pour mon anglais - je viens d'un pays non anglophone.

Code

  • Croquis Arduino
Croquis ArduinoArduino
Aucun aperçu (téléchargement uniquement).
Github
Code pour la bande laserhttps://github.com/iliasam/Laser_tape_reverse_engineering

Schémas

Schéma d'assemblage de la planche à pain

Processus de fabrication

  1. Comment mesurer la qualité de l'air sur OpenSensors
  2. À quoi sert une découpeuse laser ?
  3. Surveillance SMART de la température pour les écoles
  4. Bibliothèque de ports E/S 8 bits pour Arduino
  5. Matrice de clavier de prototypage à 64 touches pour Arduino
  6. TFT Shield pour Arduino Nano - Démarrer
  7. Une entrée analogique isolée pour Arduino
  8. Robot pour une navigation intérieure super cool
  9. Plaidoyer pour la 5G dans le secteur manufacturier