Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Jeg bygger for moro skyld en robot som jeg vil flytte autonomt inne i et hus.
Det er et langt arbeid, og jeg gjør trinn for trinn.
Dette instruerbare fokuset på gjenkjenning av hindringer med Arduino Mega
Ultralydsensorer HC-SR04 vs HY-SRF05 er billige og enkle å bruke, men kan bli vanskelige å integrere i mikrokontrollersløyfen i en kompleks robot. Jeg ønsket å kjøre hindringsdeteksjon på en asynkron måte.
_
Jeg har allerede publisert 3 instrukser om funksjonene til denne roboten:
- Lag din hjulkoder
- Lag din WIFI -gateway
- Bruk treghetsmodulenhet
Og en dokumentasjon om å kombinere kunstig intelligens og ultralyd for å lokalisere roboten.
Trinn 1: Hva er problemet med ultralydsensorer og mikrokontrollere?
Synkron ventetid og Arduino -begrensninger
Mikrokontrollerkoden kjøres i en sløyfe og støtter ikke flertråd. Ultralydsensorer er basert på signalvarighet. Denne varigheten varer opptil 30 m s som er veldig lang å vente på inne i sløyfen når mikrokontrollerne må håndtere flere motorer og sensorer (for eksempel servo- og likestrømsmotorer med hjulkodere).
Så jeg ønsket å utvikle et objekt som kjører asynkront.
Trinn 2: Hvordan fungerer det?
Den er designet for Atmega for gjenkjenning av hindringer. Den støtter opptil 4 ultralydsensorer.
Takket være periodisk tidsavbrudd kan systemet overvåke opptil 4 ultralydsensorer. Hovedkoden må bare definere hvilken sensor som skal aktiveres med tilstand og terskel. Hoveddelen vil bare bli avbrutt i tilfelle (tilstand, terskel) vises.
Hovedfunksjonene er:
- Varsel er den grunnleggende hinderdeteksjonen og gir avbrudd hvis minst 1 av de 4 sensorene oppdager en avstand under terskelen
- Monitor er en utvidet funksjon som gir avbrudd på en kombinasjon av avstandstilstand på opptil 4 sensorer. De mulige forholdene er over, under, like eller ikke lik terskler.
Trinn 3: Tekniske detaljer
Bruk timer4 så pin 6 7 8 ikke kan brukes som PWM.
For hver sensor trenger objektet en utløserkode og en avbruddskode.
På toppen av sensorene avbryter PIN -koder objektet trenger en annen avbrutt PIN for programvarebruk.
Trinn 4: Hvordan implementere?
Koble sensorene som ovenfor
Last ned fra dette GitHub -depotet
- EchoObstacleDetection.cpp,
- EchoObstacleDetection.h
- EksempelEchoObstacleDetection.ino
Lag EchoObstacleDetection -katalogen inne i IDE -biblioteket og flytt.cpp og.h
Test det
Åpne eksempelEchoObstacleDetection.ino.
Dette er et enkelt eksempel på gjenkjenning av hindringer med 2 ultralydsensorer.
Utgangen er rettet på seriell skjerm. Først vil den skrive ut avstander som er oppdaget av de to sensorene, og deretter skrive ut varsler avhengig av avstander under terskler.