Innholdsfortegnelse:

Boe-Bot med infrarøde detektorer: 12 trinn (med bilder)
Boe-Bot med infrarøde detektorer: 12 trinn (med bilder)

Video: Boe-Bot med infrarøde detektorer: 12 trinn (med bilder)

Video: Boe-Bot med infrarøde detektorer: 12 trinn (med bilder)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juli
Anonim
Boe-Bot med infrarøde detektorer
Boe-Bot med infrarøde detektorer

Denne instruksen vil demonstrere hvordan du bygger og koder en Boe-Bot som kan navigere i en labyrint ved hjelp av infrarøde detektorer for å unngå hindringer. Dette er en lett å følge veiledning som gir mulighet for enkle modifikasjoner som passer dine behov. Dette krever en grunnleggende forståelse av kretsløp og programmering. Du må ha BASIC Stamp IDE -programvare for dette prosjektet. Gratis å laste ned her. I tillegg til Boe-Bot Robot

Trinn 1: Ressurser

Elektroniske komponenter

Boe -Bot med kontaktkabel Parallax Store - BoeBot Kit

5 Infrarøde LEDs Parallax Store - IR -sendermonteringssett

5 infrarøde skjoldmonteringer

5 infrarøde detektorer Parallax Store - BoeBot IR -mottaker

Motstander

  • (2) 4,7 kΩ ABRA Electronics - 4,7 kΩ
  • (5) 220 Ω ABRA Electronics - 220 Ω
  • (2) 1 kΩ ABRA Electronics - 1 kΩ
  • (5) 2 k ABRA Electronics - 2 kΩ

Assorterte ledninger ABRA Electronics - 22 Gauge Wire

3 lysdioder ABRA Electronics - 5 mm rød LED

Brukerstøtte

Datamaskin

BASIC Stamp Editor - (Freeware)

Verktøy

Wire Cutter ABRA Electronics - Wire Cutter (valgfritt)

Wire Stripper ABRA Electronics - Wire Stripper

Diverse

Vegger (for å bygge labyrint)

Trinn 2: Forstå hvordan infrarød deteksjon fungerer (valgfritt)

Forstå hvordan infrarød deteksjon fungerer (valgfritt)
Forstå hvordan infrarød deteksjon fungerer (valgfritt)

Infrarøde frontlykter

Det infrarøde objektdeteksjonssystemet vi skal bygge på Boe-Bot er som en bils frontlykter på flere måter. Når lyset fra bilens frontlykter reflekterer hindringer, oppdager øynene dine hindringene og hjernen din behandler dem og får kroppen til å lede bilen deretter. Boe-Bot vil bruke infrarøde lysdioder for frontlykter. De avgir infrarød, og i noen tilfeller reflekterer infrarødt av objekter og spretter tilbake i retning Boe-Bot. Øynene til Boe-Bot er de infrarøde detektorene. De infrarøde detektorene sender signaler som indikerer om de oppdager infrarød reflektert fra et objekt eller ikke. Hjernen til Boe-Bot, BASIC Stamp, tar beslutninger og driver servomotorer basert på denne sensorinngangen. Figur 7-1 Objektdeteksjon med IR-lykter IR-detektorene har innebygde optiske filtre som tillater svært lite lys bortsett fra 980 nm infrarød som vi ønsker å oppdage med sin interne fotodiodesensor. Den infrarøde detektoren har også et elektronisk filter som bare lar signaler rundt 38,5 kHz passere. Med andre ord, detektoren leter bare etter infrarødt lys som blinker 38 ganger, 500 ganger i sekundet. Dette forhindrer IR -forstyrrelser fra vanlige kilder som sollys og innendørs belysning. Sollys er likestrøm (0 Hz), og innendørs belysning har en tendens til å blinke av og på enten 100 eller 120 Hz, avhengig av hovedstrømkilden i regionen. Siden 120 Hz er utenfor det elektroniske filterets 38,5 kHz båndpassfrekvens, ignoreres det fullstendig av IR -detektorene.

-Paralax studentguide

Trinn 3: Montering av IR -lysdioder

Montering av IR -lysdioder
Montering av IR -lysdioder

Sett IR -lysdioden inn i den større delen av foringsrøret

Omslutt den klare delen av LED -en med den mindre delen av foringsrøret

Trinn 4: Testing av infrarøde par - krets

Testing av infrarøde par - krets
Testing av infrarøde par - krets
Testing av infrarøde par - krets
Testing av infrarøde par - krets

Før vi går for dypt inn i noe, vil vi teste for å sikre at IR -paret fungerer (En infrarød LED og en infrarød detektor).

Start med å bygge kretsen ovenfor på brødbrettet montert på toppen av Boe-Bot

Trinn 5: Testing av infrarøde par - grunnleggende kode

Selvfølgelig må vi skrive kode for at IR -parene våre skal fungere

For å gjøre dette, bruker vil kommandoen FREQOUT. Denne kommandoen ble designet for lydtoner, men den kan brukes til å produsere frekvenser i det infrarøde området. For denne testen bruker vi kommandoen:

FREQOUT 8, 1, 38500

dette sender en 38,5 kHz frekvens som varer 1 ms til P8. Den infrarøde LED -kretsen som er koblet til P8, sender denne frekvensen. Hvis det infrarøde lyset reflekteres tilbake til Boe-Bot av et objekt i veien, sender den infrarøde detektoren et BASIC-stempel et signal for å fortelle at det reflekterte infrarøde lyset ble oppdaget.

Nøkkelen til å få et IR -par til å fungere er å sende 1 ms 38,5 kHz FREQOUT og umiddelbart lagre IR -detektorens utgang i en variabel.

Dette eksemplet viser lagring av IR -detektorverdien i en bitvariabel som heter irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

IR -detektorens utgangstilstand når den ikke ser at noe IR -signal er høyt. Når IR -detektoren ser harmonien på 38500 Hz reflektert av et objekt, er effekten lav. IR -detektorens utgang forblir bare lav i en brøkdel av et millisekund etter at FREQOUT -kommandoen er ferdig med å sende harmonikken, så det er viktig å lagre IR -detektorens utgang i en variabel umiddelbart etter at du har sendt FREQOUT -kommandoen. Verdien lagret av variabelen kan deretter vises i Debug Terminal eller brukes til navigasjonsbeslutninger av Boe-Bot.

Trinn 6: Testing av infrarøde par - maskinvare + programvare

Testing av infrarøde par - maskinvare + programvare
Testing av infrarøde par - maskinvare + programvare

Nå som du kjenner det grunnleggende, kan vi sette sammen maskinvare og programvare for å teste et par sammen og få tilbakemelding i sanntid fra det IR-paret oppdager

Du kan prøve å lage koden selv, eller bruke koden nedenfor

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft =", BIN1 irDetectLeft PAUSE 100 LOOP

  1. La Boe-Bot være tilkoblet seriekabelen, fordi du bruker DEBUG-terminalen til å teste IR-paret ditt.
  2. Plasser et objekt, for eksempel hånden eller et ark, omtrent en tomme fra det venstre IR -paret
  3. Kontroller at når du plasserer et objekt foran IR -paret, viser Debug Terminal en 0, og når du fjerner objektet foran IR -paret, viser det en 1.
  4. Hvis feilsøkingsterminalen ikke viser de forventede verdiene, kan du prøve trinnene i feilsøkingstrinnet.

Trinn 7: Feilsøking (for problemer med siste trinn)

DEBUG Terminal viser uventede verdier

Kontroller kretsen for kortslutninger, feilplasserte eller manglende kontakter, skadede komponenter, feil motstander eller andre synlige problemer

Sjekk programmet for logiske eller syntaksfeil - Hvis du brukte din egen kode for det siste trinnet, bør du vurdere å bruke den angitte koden

Får alltid 0, selv om det ikke er noen objekter plassert foran Boe-Bot

Sjekk om det er objekter i nærheten som reflekterer det infrarøde signalet. Bordet foran Boe-Bot kan være årsaken. Flytt Boe-Bot til et åpent rom, slik at IR-lysdioden og detektoren ikke kan reflektere gjenstander i nærheten.

Lesing er 1 mesteparten av tiden når det ikke er noe objekt foran Boe-Bot, men blinker til 0 av og til

Det kan være interferens fra et fluorescerende lys i nærheten; Slå av lysrør i nærheten og gjenta testene. Hvis problemet vedvarer, kan trinn 9 avsløre problemet

Trinn 8: Andre IR -par

Andre IR -par
Andre IR -par

Nå som du har programmet for venstre IR, er det din tur til å lage kretsen og programmere det riktige IR -paret

  1. Endre DEBUG -setningen, tittelen og kommentarene for å referere til det riktige IR -paret.
  2. Endre variabelnavnet fra irDetectLeft til irDetectRight. Du må gjøre dette på fire steder i programmet.
  3. Endre FREQOUT -kommandoens Pin -argument fra 8 til 2.
  4. Endre inngangsregisteret som overvåkes av variabelen irDetectRight fra IN9 til IN0.
  5. Gjenta testtrinnene i denne aktiviteten for det riktige IR -paret; med IR LED -kretsen koblet til P2 og detektoren koblet til P0.

Trinn 9: Oppdage infrarød interferens (valgfritt)

Oppdage infrarød interferens (valgfritt)
Oppdage infrarød interferens (valgfritt)

Enten du opplever problemer med å oppdage signaler som ikke bør oppdages, eller du planlegger å demonstrere IR -deteksjonen din på et annet sted, kan det være lurt å teste for interferens.

Konseptet med dette testprogrammet er ganske enkelt, du oppdager for infrarøde signaler uten å sende noen ut.

Du kan bruke nøyaktig samme krets, men du må endre koden. du kan velge å skrive din egen kode, men du kan bruke koden nedenfor:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 ELLER IN0 = 0 DERE DEBUG "Interference detect" PAUSE 100 LOOP

Hvis du opplever forstyrrelser, må du finne den sannsynlige kilden og slå den av/fjerne den eller flytte fra stedet der du bruker Boe-Bot.

Trinn 10: Legge til flere IR -par

Legger til flere IR -par
Legger til flere IR -par

Hvis du ønsker mer nøyaktighet i bevegelsen til Boe-Bot, kan det være lurt å legge til flere IR-par. 3 Forbedrer ytelsen sterkt sammenlignet med to; du kan bruke et senterpar til å søke etter et direkte hinder, og bruke to side -IR for å bestemme hvor mye du skal snu. Imidlertid er undergangen til 3 IR -pardesignet at du kanskje vet når du glir mot en vegg, fordi IR -senteret i midten brukes til å oppdage hindringer. For å løse dette problemet kan du legge til et IR-par på hver side med en høy motstandsverdi-derfor vil infrarødt signal bare oppdages hvis Boe-Bot er nær siden eller en vegg i en svak vinkel.

Trinn 11: Fem IR -par - krets

Fem IR -par - krets
Fem IR -par - krets

Vær forsiktig når du retter de to IR -lysdiodene på siden, da vridning av dem kan føre til at ledningene berøres og forårsake kortslutning.

Trinn 12: Fem IR -par - kode

Fem IR -par - kode
Fem IR -par - kode

Det kan være lurt å prøve å programmere Boe-Bot før du bruker denne koden:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Five IR Pair Deatection Code' Matthew Shaw '8. mai 2019 (versjon 7)' Deteksjon for objekter og grunnleggende logisk behandling for å løse labyrinter

irDetectLeft VAR Bit 'Variabel for venstre

irDetectCentre VAR Bit 'Variable for center irDetectRight VAR Bit' Variable for right irDetectLSide VAR Bit 'Variable for left side irDetectRSide VAR Bit' Variable for right side irDetectLSideFar VAR Bit 'Variable for left side low resistance irDetectRSideFar VAR Bit' Variable for right side

mLoop VAR Word

Lmotor PIN 15 'Venstre motor er koblet til pin 14, pulser går gjennom her

Rmotor PIN 14 'høyre = 15

'hastigheter er-> 650-750-850

LFast CON 850 'Conastant for venstre motor ved full hastighet RFast CON 650' Conastant for høyre motor ved full hastighet

LStop CON 750 'Conastant for venstre motor i full hastighet

RStop CON 650 'Conastant for høyre motor ved full hastighet

LMid CON 830 'Conastant for venstre motor ved middels hastighet

RMid CON 700 'Conastant for høyre motor ved middels hastighet

LSlow CON 770 'Conastant for venstre motor ved minimumshastighet

RSlow CON 730 'Conastant for høyre motor ved minimumshastighet

LRev CON 650 'Conastant for venstre motor ved full hastighet i revers

RRev CON 850 'Konastant for venstre motor ved full hastighet i revers

FREQOUT 7, 1, 38500 'venstre side

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'senter

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'høyre side

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Venstre Lukk

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'høyre Lukk

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'høyre side

irDetectRSideFar = IN0

HVIS irDetectLSide = 0 OG irDetectRSide = 0 DERE veier hovedstartkommandoen med hendene forbi de to sidedetektorene for å starte programmet

Hoved:

PAUSE 1000 DO

PULSOUT Lmotor, LFast 'venstre motor går på full hastighet

PULSOUT Rmotor, RFast 'Høyre motor går på full hastighet

FREQOUT 6, 1, 38500 'senter

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Venstre Lukk

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'høyre side

irDetectRSide = IN0

IF irDetectLSide = 0 OG irDetectRSide = 1 DA

GJØR PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'senter

irDetectCentre = IN5 IF irDetectCentre = 0 DA SENT

FREQOUT 10, 1, 38500 'Venstre Lukk

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'høyre side

irDetectRight = IN2

LOOP TIL irDetectLSide = 1 ELLER irDetectRSide = 0

ELSEIF irDetectLSide = 1 OG irDetectRSide = 0 DA

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'senter

irDetectCentre = IN5 IF irDetectCentre = 0 DA SENT

FREQOUT 10, 1, 38500 'Venstre Lukk

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'høyre side

irDetectRight = IN2

LOOP TIL irDetectLSide = 0 ELLER irDetectRSide = 1

'SLUTT OM

IF irDetectCentre = 0 SÅ STARTER DU

FREQOUT 7, 1, 38500 'venstre side irDetectLeft = IN8

FREQOUT 6, 1, 38500 'senter

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'pause for å vise signal oppdaget

IF (irDetectLeft = 1 AND irDetectRight = 0) Vurder deretter varigheten

GOSUB turnLeft

ELSEIF (irDetectLeft = 0 OG irDetectRight = 1) DA

GOSUB turnRight

ELSEIF (irDetectLeft = 1 OG irDetectRight = 1) DA

GOSUB turnDecide

ELLERS

GOSUB turnReverse

SLUTT OM

SLUTT SLUTT

LØKKE

SLUTT

ta til venstre:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP INTIL IN0 = 1 RETURN

ta til høyre:

DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP INTIL IN9 = 1

KOMME TILBAKE

turnReverse:

FOR mLoop = 0 TIL 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSE 20 NEXT DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, FREQOUT 5, 1, 38500 irDetectRight = IN0 LOOP TIL IN9 = 1

KOMME TILBAKE

turnDecide: 'bruker lavere motstand for å se videre

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'høyre side

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) Vurder deretter varigheten

GOSUB turnLeft

ELSEIF (irDetectLSideFar = 0 OG irDetectRSideFar = 1) DA

GOSUB turnRight

ELSEIF (irDetectLSideFar = 1 OG irDetectRSideFar = 1) DA

GOSUB turnLeft

ELLERS

GOSUB turnReverse

SLUTT OM

KOMME TILBAKE

Anbefalt: