Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Denne opplæringen viser hvordan du lager et enkelt radarsystem ved hjelp av HC-SR04 sensor og Microbit dev board med prosessering og Arduino IDE.
Rekvisita:
- SG90 Mikroservomotor
- Stikkledere (generisk)
- Brødbrett (generisk)
- Magicbit
- USB-A til mikro-USB-kabel
- Ultralydssensor - HC -SR04 (Generisk)
Trinn 1: Historie
I denne opplæringen vil vi lære om hvordan du lager et enkelt radarsystem ved hjelp av Magicbit core dev -bord. For dette formålet bruker vi HC-SR04 ultralydssensor, og for å vise data bruker vi behandlingsmiljø. La oss komme i gang.
Trinn 2: Teori og metodikk
La oss først diskutere hvordan dette fungerer. Prinsippet er veldig enkelt. Først roterer vi sensoren vår rundt vertikal akse i 180 graders område kontinuerlig. Under denne bevegelsen tar vi dataene om avstand til nærmeste objekt fra ultralydsensor i alle vinkler. For denne prosessen bruker vi Magicbit kjernekort. Etterpå må vi etablere forbindelsen til behandlingsmiljøet for å vise dataene våre. Derfor bruker vi seriell kommunikasjonsprotokoll med passende overføringshastighet. Deretter designer vi vårt radarsystemgrensesnitt ved å bruke prosessering IDE. I den IDE konfigurerer vi vår serielle kommunikasjon for å få sanntidsdata via seriell. Så vi kommuniserer i sanntid med Magicbit og viser dataene som sendes fra Magicbit til behandlings -IDE.
Trinn 3: Maskinvareoppsett
For dette prosjektet brukte vi hovedsakelig tre maskinvarekomponenter. De er Magicbit, servomotor og ultralydsensor. Forbindelsen mellom alle disse delene er vist i figuren ovenfor.
Ultralydsensor brukte 3,3 v for oppstart. Derfor brukte vi høyre nedre port på Magicbit -kortet for å koble ultralydssensor til Magicbit. Men servomotor brukes 5V for riktig bruk, derfor brukte vi venstre nedre port for å koble servomotor med Magicbit. I dette tilfellet bruker vi Magic bit servokontaktmodul. Men hvis du ikke har den modulen, kan du bruke tre jumper -ledninger til å koble 5V til 5V, Gnd til Gnd og signalpinne til 26 -pins på magicbit.
Etter å ha bygget kretsen har vi en liten mekanisk del å bygge. sett servokontakt på én side til servomotor ved hjelp av liten mutter. Fest deretter sensoren på kontakten med en L -formet brakett eller på riktig måte. Etter hele systemet fikset vi på brødbrett. Men du kan bruke en annen overflate for å montere servo og Magicbit.
Trinn 4: Programvareoppsett
Programvaresiden er lite kompleks. For riktig forståelse kan du henvise til følgende lenker før du går videre til neste del.
magicbit-arduino.readthedocs.io/en/latest/
hello.processing.org/editor/
La oss se på Arduino IDE -koden og hvordan den koden fungerer.
For å kjøre servo bruker vi ESP32 servobibliotek. Dette biblioteket inkluderer nesten i magic bit board manager i Arduino IDE. For å håndtere ultralydssensor bruker vi newPing -biblioteket. Dette kan lastes ned fra følgende lenke.
bitbucket.org/teckel12/arduino-new-ping/do…
Last ned zip -filen og gå til verktøy> inkluder bibliotek> legg til zip -bibliotek i Arduino. velg nå den nedlastede zip -filen til det nye pin -biblioteket. For kommunikasjon med prosessering brukte vi seriell kommunikasjon med 115200 baudhastighet. Dette er den mest riktige frekvensen for ESP32. I alle vinkler sender vi dataene våre til datamaskinen ved hjelp av denne protokollen. Avstand til nærmeste frontobjekt fra sensoren, rotasjonsretning og rotasjonsvinkel er inkludert i disse dataene. Ved å bruke to for løkker roterer vi servoen vår i to retninger. Mens vi roterte én grad, sendte vi serielle data 4 ganger. Grunnen til det kan du forstå i behandlingen av delforklaringen.
Nå er det på tide å se på behandlingsmiljøet. Dette er Java -basert programmeringsprogramvare. Vi kan skrive skisse av programmet vårt i denne skissen i behandling av IDE. Vi kan også generere visuell utgang fra å kjøre programmet vårt. Du kan også ta utgang som 2D- og 3d -objekter. Ikke bare det, dette kan brukes til bildebehandling og mange flere ting.
I behandlingsskissen først designer vi vårt datavisningsgrensesnitt ved hjelp av enkle grafiske funksjoner. Ved starten av koden etablerer vi vår serielle kommunikasjon ved å inkludere serielle biblioteker. I oppsettfunksjonen må du gjøre noen endringer i henhold til hvilken USB -port du brukte for å koble Magicbit til datamaskinen. du kan sjekke porten din ved hjelp av Arduino IDE når du konfigurerer Arduino IDE for å laste opp koden. Endre deretter navnet på kommandoporten i oppsettdelen i behandlingsskissen. når seriell data er tilgjengelig, utløser Serialevent -funksjonen automatisk. Derfor er hovedlogikken i koden inkludert i seriell hendelse for å forhindre at vinkler og data mangler. når nye data er tilgjengelige, tegner vi en linje i skjermen i henhold til vinkelen vår. På den tiden hvis det ikke er noe objekt detekterer, er hele linjen grønn. Hvis ikke, vil en del av linjen være rød i henhold til avstanden fra sensor til objekt. Også i henhold til rotasjonsretningen tegner vi ytterligere 200 linjer nær den linjen med synkende nivå av grønn farge. mellom hver Main har vi 0,25 graders forskjell. Derfor får vi 4 avlesninger om gangen fra Magicbit i hver graders rotasjon. På grunn av det kan vi lage vakker søkende hånd i skjerm.
Etter å ha lastet opp kodesuksessen helt til magi og angitt maskinvare, velg behandlings -IDE og kjør koden ved å klikke på Kjør -knappen. Nå har du et veldig enkelt radarsystem.
Du kan tilpasse kodene som du ønsker det du vil vise.
Trinn 5: Feilsøking
Behandlingsskissen kjører ikke.
- Vent litt. På grunn av oppstartstiden er avhengig av PC -en og GPU -ytelsen.
- Kontroller at serienummeret er riktig på behandlingsskissen.
- Kontroller at USB -tilkoblingen er riktig festet.
- Kontroller forbindelsen mellom ultralydsensor og Magicbit.
- Åpne den serielle skjermen og kontroller at dataene kommer fra Arduino. Hvis ikke, er problemet din Arduino -kode eller på USB -tilkoblingen.
Servo fungerer ikke.
- Kontroller at USB -tilkoblingen er riktig festet.
- Sjekk ledningene.
- Sjekk at servoen er i god stand.
Trinn 6: Arduino -kode
#inkludere
#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing ekkolodd (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // inkludere servobibliotek int distanse; Servo RadarServo; ugyldig oppsett () {Serial.begin (115200); RadarServo.attach (26); // Definerer hvilken pin som er servomotoren festet forsinkelse (3000); } void loop () {// roterer servomotoren fra 15 til 165 grader for (int i = 0; i <= 180; i ++) {RadarServo.write (i); forsinkelse (50); distance = sonar.ping_cm (); // Kaller en funksjon for å beregne avstanden målt av ultralydsensoren for hver grad for (int j = 0; j0) {pause; } Serial.print (i); // Sender gjeldende grad til Serial Port Serial.print (","); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (j); // Sender gjeldende grad til Serial Port Serial.print ("*"); Serial.print (1); // Sender avstandsverdien til Serial Port Serial.print ("/"); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (avstand); // Sender avstandsverdien til Serial Port Serial.print ("."); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering}} // Gjentar de foregående linjene fra 165 til 15 grader for (int i = 180; i> = 0; i-) {RadarServo.skrive (i); forsinkelse (50); avstand = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {fortsette; } Serial.print (i); // Sender gjeldende grad til Serial Port Serial.print (","); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (j); // Sender gjeldende grad til Serial Port Serial.print ("*"); Serial.print (-1); // Sender avstandsverdien til Serial Port Serial.print ("/"); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering av Serial.print (avstand); // Sender avstandsverdien til Serial Port Serial.print ("."); // Sender tilleggstegn rett ved siden av den forrige verdien som trengs senere i Processing IDE for indeksering}}
}