Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Een goedkope laserafstandsmeter maken voor Arduino

Componenten en benodigdheden

Arduino Nano R3
× 1
Elecrow OLED 0,96'' 128x64
× 1
X-40 lasermeetlint
× 1
LM2596 DC-DC-module
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
ST-LINK-programmeur

Apps en online services

STMicroelectronics ST-LINK Utility

Over dit project

Snelle en goedkope laserafstandsmetermodule nodig voor uw Arduino-project?

Natuurlijk kunt u voor deze taak gespecialiseerde modules gebruiken, maar de meeste hebben een hoge prijs. VL53L0X/VL53L1X-modules zijn goedkoop, maar ze hebben een zeer groot gezichtsveld.

Dus vond ik een oplossing:het gebruik van een goedkope "X-40" laserbandmaat als laserafstandsmeter. Deze apparaten kosten $ 20 en minder en ze kunnen afstanden tot 40 m meten met een nauwkeurigheid van ~ 3 mm. Maar er zijn twee problemen - er is geen manier om meetwaarden van de band te krijgen en de metingen zijn traag - minder dan 1 Hz.

Om die problemen op te lossen maakte ik reverse engineering van dat lasermeetlint en schreef ik mijn eigen firmware voor de STM32 MCU van de laserafstandsmetermodule. De meetsnelheid was belangrijk voor mij en ik kan ~60 Hz bereiken, maar de maximale stabiele afstand nam af tot ~6 m (het volledige maximale bereik is 37 m, maar ik heb het niet getest).

De nauwkeurigheid van de afstandsmeting kan variëren van 1 mm tot 10 mm, afhankelijk van de doelkleur en afstand.

Afmetingen module:25x13x50 mm.

BELANGRIJKE MEDEDELING:U VERLIES ORIGINELE FIRMWARE, DUS KAN HET APPARAAT LATER NIET ALS LASERBAND METEN!

Merk op dat "X-40" laserbandmaten verschillende revisies van de laserafstandsmetermodule kunnen hebben, en mijn firmware ondersteunt slechts enkele daarvan!

"X-40" is niet de enige naam voor laserbandmaten met dergelijke modules - ik weet dat er verschillende Chinese laserbandmaten met geschikte modules bestaan.

Stap 1:laser meetlint demonteren

Laten we het lasermeetlint demonteren om er een laserafstandsmetermodule uit te halen.

U moet 7 schroeven uit de behuizing losdraaien:

Gedemonteerd lasermeetlint:

U kunt een kleine laserafstandsmetermodule in de behuizing van het apparaat zien. U moet de lintkabels loskoppelen van de module en de module uit de behuizing verwijderen:

Merk op dat de module is gemarkeerd als "701A". Mijn firmware ondersteunt alleen de moduleversies "512A" en "701A". Verschillende gebruikers hebben bevestigd dat "703A"-modules ook werken (ik heb het niet getest).

UPD 11/2019:
Opgelet:er is vastgesteld dat nieuwere "x-40" laserbandmaten worden geleverd met "M88B" -modules. Markering is "88B" op de PCB in de buurt van MCU. Die modules zijn gebaseerd op STM32F0 MCU (het heeft een QFN-32-pakket). Die modules worden niet ondersteund door mijn firmware!

UPD 10/2021:
Let op: ondersteuning van U85B-modules toegevoegd :zie link! Ze worden gebruikt in moderne soorten laserbandmaten.


Als de jouwe module wordt ondersteund, moet je de stroomkabels losmaken van de module.

Stap 2:Laserafstandsmetermodule programmeren

U moet gespecialiseerde firmware naar de MCU van de module schrijven om de benodigde functionaliteit te krijgen.

1. Eerst moet je wat draden solderen voor het programmeren van de MCU. Pinout wordt getoond op de afbeelding:

Sluit pinnen 7-8 van de toetsenbordconnector aan - deze moet worden ingeschakeld.

Lijnen "GND" en "Vbat" moeten worden aangesloten op de stroombron. Het voedingsspanningsbereik is +2,7...+3,3V. Er moet +3,5 V zijn op de "Vdd"-lijn wanneer de module van stroom wordt voorzien.

Lijnen "GND", "SWDIO", "SWCLK", "NRST" moeten worden aangesloten op de ST-LINK programmer. Regel "NRST" is erg belangrijk - de originele firmware van de MCU is vergrendeld, dus deze regel is nodig om de MCU in de programmeermodus te zetten.

Sommige programmeurs hebben deze regel en sommige (goedkope) niet, maar er is een oplossing voor dit probleem.

Ook hebben sommige programmeurs (zoals de originele "ST-LINK/V2") de "Vbat"-lijn nodig om te worden verbonden met de "VCC/TVCC"-lijn van de programmeur.

Voorbeeld van verbindingen (deze programmeur heeft geen "NRST" regel):

2. Installeer het "ST-LINK-hulpprogramma" op de pc. Als je geen ervaring hebt met het gebruik van die software, zijn er veel tutorials op het web.

U moet het hulpprogramma configureren (Doel -> Instellingen):

Als uw programmeur een "NRST" -uitvoer heeft, kunt u gewoon de stroom aanzetten en bij het hulpprogramma op "Target -> Connect" drukken.

Als het zo'n regel niet heeft, moet u die stappen uitvoeren:

  • Zet de stroom aan.
  • Verbind de "NRST" lijn van de module met de GND.
  • Druk op "Target -> Connect" bij het hulpprogramma.
  • Snel de "NRST"-lijn loskoppelen van de GND.
  • Hulpprogramma moet de verbinding tonen

Je moet zo'n foto hebben:

3. MCU-flash is vergrendeld voor lezen, dus u moet "Leesbeveiliging" uitschakelen. Bij deze stap verliest u de originele firmware!

Open het menu Doel -> "Optiebytes". Er moeten dergelijke instellingen zijn:

Schakel "Leesbeveiliging" naar "Uitgeschakeld" en druk op de knop "Alles deselecteren" en druk vervolgens op de knop "Toepassen". Probeer de module opnieuw op te starten (door de stroom uit te schakelen).

Druk op Doel -> Verbinden. Er moet informatie zijn over een succesvolle verbinding in het logvenster en u moet de geheugeninhoud zien - gevuld met 0xFF. Nu kunt u aangepaste firmware naar de MCU laden.

4. De benodigde firmware wordt hier geplaatst:https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

Selecteer een geschikt HEX-bestand voor uw module en download het naar de MCU Flash met behulp van het "ST-LINK-hulpprogramma".

Stap 3:Laser-afstandsmetermodule aansluiten op de Arduino

U moet een draad of een connector aan de TX-pad op het bord solderen:

Zie het aansluitschema hieronder.

Allereerst moet u controleren of de meetzoekermodule goed werkt. Bij deze stap hoeft u het OLED-scherm niet op de Arduino aan te sluiten - sluit gewoon de TX-lijn van de laserafstandsmetermodule aan op de TX-lijn van de Arduino en de voedingskabels van de module op de +3V-stroombron.

Maak een lege schets en laad deze in de Arduino. Open "Serial Monitor" op de Arduino IDE. Selecteer baudrate:250000

Als de meetzoekermodule goed werkt, krijgt u dezelfde gegevens:

Het is zelfs beter om voor deze test een gespecialiseerde USB-UART-converter te gebruiken. Selecteer 256000 baudrate in het hulpprogramma (het is de echte baudrate van x-40 MCU).

Ten tweede moet je het volledige schema met display samenstellen.

Sluit de TX-lijn van de laserafstandsmetermodule aan op de RX-lijn van de Arduino (je moet die draad loskoppelen tijdens het laden van het programma naar de Arduino).

Als alles goed werkt, krijg je hetzelfde resultaat:

U kunt het display zien met 3 cijfers:

  • "COUNT" - teller van de ontvangen waarden
  • "AMPL" - amplitude van het signaal. Symbolische balk ("<--->") hieronder geeft de amplitude grafisch weer (in logaritmische schaal).
  • De grootste waarde - afstand in meters en millimeters.

Stap 4:Nulkalibratie

Na een eerste start moet de laserafstandsmetermodule worden gekalibreerd.

Je moet een wit object op een bepaalde afstand van de module plaatsen. Een afstand tot dit object wordt een nulafstand voor de meetzoekermodule. Om het kalibratieproces te starten, moet u het toetsenbord van het lasermeetlint aansluiten en op de laagste knop drukken. De module piept twee keer - aan het begin van de kalibratie en aan het einde (de duur van de kalibratie is bijna 10 seconden).

Nu kunt u deze laserafstandsmetermodule gebruiken.

Links:

1. Github - resultaten en broncode reverse-engineering.

2. Habr.com - Google vertaald artikel over reverse engineering proces van laser meetlint.

Sorry voor mijn Engels - ik kom uit een niet Engels sprekend land.

Code

  • Arduino-schets
Arduino schetsArduino
Geen voorbeeld (alleen downloaden).
Github
Code voor de lasertapehttps://github.com/iliasam/Laser_tape_reverse_engineering

Schema's

Schema voor breadboard-montage

Productieproces

  1. Hoe de luchtkwaliteit op OpenSensors te meten
  2. Waarvoor wordt een lasersnijder gebruikt?
  3. SMART temperatuurbewaking voor scholen
  4. 8-bit IO-poortbibliotheek voor Arduino
  5. 64-Key Prototyping Keyboard Matrix voor Arduino
  6. TFT Shield voor Arduino Nano - Start
  7. Een geïsoleerde analoge ingang voor Arduino
  8. Arduino Breath Controller voor goedkoop (USB-MIDI)
  9. Tricks voor het besturen van gelijkstroommotoren
  10. Robot voor supercoole indoornavigatie
  11. Een pleidooi houden voor 5G in de productie