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

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Onderdelen en benodigdheden

OnderdeelAantal
Arduino Nano R31
Elecrow OLED 0.96'' 128x641
X-40 laser afstandsmeter1
LM2596 DC-DC module1

Nodige tools en machines

  • Soldeerbout (generic)
  • ST-LINK programmeerder

Apps en online diensten

  • STMicroelectronics ST-LINK Utility

Over dit project

Heb je een snelle en goedkope laser-afstandsmeter-module nodig voor je Arduino-project?

Natuurlijk kun je gespecialiseerde modules hiervoor gebruiken, maar de meeste hebben een hoge prijs. VL53L0X/VL53L1X modules zijn goedkoop, maar ze hebben een heel groot zichtveld.

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

Om die problemen op te lossen, heb ik reverse engineering gedaan op die laser-afstandsmeter en mijn eigen firmware geschreven voor de STM32 MCU van de laser-afstandsmeter-module. Meet snelheid was belangrijk voor mij en ik kan ~60 Hz bereiken, maar de maximale stabiele afstand daalde tot ~6 m (volledig maximaal bereik is 37 m, maar ik heb het niet getest).

Meetnauwkeurigheid kan variëren van 1 mm tot 10 mm afhankelijk van doelkleur en afstand.

Moduledimensies: 25x13x50 mm.

BELANGRIJKE MEDDELING: JE VERLIEST DE OORSPRONKELIJKE FIRMWARE, DUS HET APPARAAT KAN NIET MEER ALS LASER AFSTANDSMETER GEBRUIKT WORDEN!

Let op dat "X-40" laser-afstandsmeters verschillende revisies van de laser-afstandsmeter-module kunnen hebben, en mijn firmware ondersteunt er alleen enkele!

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

Stap 1: Laser-afstandsmeter demontage

Laten we de laser-afstandsmeter demonteren om de laser-afstandsmeter-module eruit te halen.

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Je moet 7 schroeven uit de behuizing draaien:

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Ontmonterde laser-afstandsmeter:

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Je ziet een kleine laser-afstandsmeter-module in de behuizing. Je moet de lintkabels van de module loskoppelen en de module uit de behuizing halen:

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

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

UPD 11/2019:
Let op: Er is ontdekt dat nieuwere "x-40" laser-afstandsmeters geleverd worden met "M88B" modules. Markering is "88B" op de PCB bij de MCU. Die modules zijn gebaseerd op STM32F0 MCU (het heeft QFN-32 package). Die modules worden NIET ondersteund door mijn firmware!

UPD 10/2021:
Let op: ondersteuning toegevoegd voor U85B modules: zie link! Ze worden gebruikt in moderne typen laser-afstandsmeters.

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar


Als jouw module ondersteund wordt, moet je de voedingslijnen van de module ontlodden.

Stap 2: Laser-afstandsmeter-module programmeren

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

1. Ten eerste moet je enkele draden solderen voor het programmeren van de MCU. De pinout is in de afbeelding getoond:

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Verbind pennen 7-8 van de toetsenbordconnector - dit is nodig voor voeding.

Lijnen "GND" en "Vbat" moeten verbonden worden met de voedingsbron. Spanningbereik is +2.7...+3.3V. Er moet +3.5 V op de "Vdd" lijn zijn wanneer de module gevoed wordt.

Lijnen "GND", "SWDIO", "SWCLK", "NRST" moeten verbonden worden met de ST-LINK programmeerder. Lijn "NRST" is heel belangrijk - de originele firmware van de MCU is vergrendeld, dus deze lijn is nodig om de MCU in programmamodus te brengen.

Sommige programmeerders hebben deze lijn, en sommige (goedkope) niet, maar er is een workaround voor dit probleem.

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

Voorbeeld van verbindingen (deze programmeerder heeft geen "NRST" lijn):

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

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

Je moet de utility configureren (Target -> Settings):

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Als je programmeerder "NRST" output heeft, kun je gewoon de voeding aanzetten en "Target -> Connect" drukken in de utility.

Als die lijn er niet is, moet je deze stappen doen:

  • Zet de voeding aan.
  • Verbind "NRST" lijn van de module met GND.
  • Druk "Target -> Connect" in de utility.
  • Snel "NRST" lijn loskoppelen van GND.
  • Utility moet de verbinding tonen

Je moet zo'n plaatje krijgen:

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

3. MCU flash is vergrendeld voor lezen, dus je moet "Read Out Protection" uitschakelen. Je verliest de originele firmware bij deze stap!

Open Target -> "Option Bytes" menu. Er moeten dergelijke instellingen zijn:

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Zet "Read Out Protection" op "Disabled" en druk op "Unselect all" knop, dan druk op "Apply" knop. Probeer de module te herstarten (door voeding los te koppelen).

Druk Target -> Connect. Er moet informatie over succesvolle verbinding in het log-venster staan en je moet geheugeninhoud zien - gevuld met 0xFF. Nu kun je aangepaste firmware naar de MCU flash laden.

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

Selecteer geschikte HEX-bestand voor jouw module en download het naar de MCU Flash met "ST-LINK utility".

Stap 3: Laser-afstandsmeter-module verbinden met de Arduino

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

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Zie het verbindingsschema hieronder.

Ten eerste moet je controleren of de afstandsmeter-module goed werkt. In deze stap hoef je het OLED-display niet aan de Arduino te koppelen - verbind gewoon de TX-lijn van de laser-afstandsmeter-module met de TX-lijn van de Arduino, en de voedingslijnen van de module met de +3V voedingsbron.

Maak een lege sketch en laad het naar de Arduino. Open "Serial Monitor" in de Arduino IDE. Selecteer baudrate: 250000

Als de afstandsmeter-module goed werkt, krijg je dezelfde data:

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

Ten tweede, moet je het volledige schema met display samenstellen.

Verbind de TX-lijn van de laser-afstandsmeter-module met 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:

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Je ziet een display met 3 getallen:

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

Stap 4: Nulkalibratie

Na een eerste start, moet de laser-afstandsmeter-module gekalibreerd worden.

Je moet een wit object op een bepaalde afstand van de module plaatsen. De afstand tot dit object wordt de nulafstand voor de afstandsmeter-module. Om het kalibratieproces te starten, moet je het toetsenbord van de laser-afstandsmeter aansluiten en de onderste knop indrukken. De module piept twee keer - aan het begin van de kalibratie en aan het einde (kalibratieduur is ongeveer 10 seconden).

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Nu kun je deze laser-afstandsmeter-module gebruiken.

Links:

  1. Github - reverse engineering resultaten en broncode.
  2. Habr.com - Google-vertaling van artikel over reverse engineering proces van laser-afstandsmeter.

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

Code

Arduino sketch

No preview (download only).

Github

Code voor de laser-afstandsmeter: https://github.com/iliasam/Laser_tape_reverse_engineering

Schema's

Breadboard montage schema

DIY Goedkope Laser Afstandsmeter voor Arduino – Snel, Betrouwbaar & Betaalbaar

Productieproces

  1. Luchtkwaliteit meten met OpenSensors: Een Arduino & Python Handleiding
  2. Slim Temperatuurmonitoring Systeem voor Scholen: Nauwkeurig, Real-time en Beveiligd
  3. Efficiënte 8-bit IO-poort bibliotheek voor Arduino – Uitbreiding digitale controle
  4. Arduino 64-toets Prototoetsenbord Matrix – Bouw een Aangepast Toetsenbord met Shift Registers
  5. Hoogwaardige 2,8″ TFT Shield voor Arduino Nano – 320×240 SPI Display
  6. Geïsoleerde analoge ingangsschakeling voor Arduino bouwen
  7. Betaalbare Arduino Ademcontroller met USB-MIDI-integratie
  8. DC-motorbeheersing onder de knie: Expert Tips & Trucs met PID-regeling
  9. Slim Indoor Navigatie Robot Kit voor Arduino Projecten
  10. Lasersnijder Toepassingen: Van Hout Tot Luchtvaart
  11. Waarom 5G Essentieel is voor Moderne Slimme Productie