Indholdsfortegnelse:

Boe-Bot med infrarøde detektorer: 12 trin (med billeder)
Boe-Bot med infrarøde detektorer: 12 trin (med billeder)

Video: Boe-Bot med infrarøde detektorer: 12 trin (med billeder)

Video: Boe-Bot med infrarøde detektorer: 12 trin (med billeder)
Video: ШАКШУКА. 30 ЛИТРОВ КАЗАН ОБЖИГ. ЛЮБИМАЯ ЕДА. Одесса Arkhimus 2024, Juli
Anonim
Boe-Bot med infrarøde detektorer
Boe-Bot med infrarøde detektorer

Denne instruktive vil demonstrere, hvordan man bygger og koder en Boe-Bot, der kan navigere i en labyrint ved hjælp af infrarøde detektorer for at undgå forhindringer. Dette er en let at følge vejledning, der giver mulighed for nemme ændringer, der passer til dine behov. Dette kræver en grundlæggende forståelse af kredsløb og programmering. Du skal have BASIC Stamp IDE -software til dette projekt. Gratis til download her. Samt Boe-Bot Robot

Trin 1: Ressourcer

Elektroniske komponenter

Boe -Bot med stik kabel Parallax Store - BoeBot Kit

5 Infrarøde LED's Parallax Store - IR -sendermonteringssæt

5 Infrarøde skjoldmonteringer

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

Modstande

  • (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Ω

Assorterede ledninger ABRA Electronics - 22 gauge Wire

3 lysdioder ABRA Electronics - 5 mm rød LED

Support

Computer

BASIC Stamp Editor - (Freeware)

Værktøjer

Wire Cutter ABRA Electronics - Wire Cutter (valgfrit)

Wire Stripper ABRA Electronics - Wire Stripper

Diverse

Vægge (til at bygge labyrint)

Trin 2: Forstå hvordan infrarød detektion fungerer (valgfrit)

Forståelse af hvordan infrarød detektion fungerer (valgfrit)
Forståelse af hvordan infrarød detektion fungerer (valgfrit)

Infrarøde forlygter

Det infrarøde objektdetekteringssystem, vi bygger på Boe-Bot, er som en bils forlygter i flere henseender. Når lyset fra en bils forlygter afspejler forhindringer, registrerer dine øjne forhindringerne og din hjerne behandler dem og får din krop til at lede bilen i overensstemmelse hermed. Boe-Bot vil bruge infrarøde lysdioder til forlygter. De udsender infrarød, og i nogle tilfælde reflekterer den infrarøde genstande og hopper tilbage i retning af Boe-Bot. Boe-Bots øjne er de infrarøde detektorer. De infrarøde detektorer sender signaler, der angiver, om de registrerer infrarød reflekteret fra et objekt. Boe-Bots hjerne, BASIC Stamp, træffer beslutninger og driver servomotorer baseret på denne sensorindgang. Figur 7-1 Objektregistrering med IR-forlygter IR-detektorerne har indbyggede optiske filtre, der tillader meget lidt lys undtagen den 980 nm infrarøde, som vi ønsker at detektere med dens interne fotodiodesensor. Den infrarøde detektor har også et elektronisk filter, der kun tillader signaler omkring 38,5 kHz at passere igennem. Med andre ord leder detektoren kun efter infrarød, der blinker 38 og 500 gange i sekundet. Dette forhindrer IR -interferens fra almindelige kilder som sollys og indendørs belysning. Sollys er DC -interferens (0 Hz), og indendørs belysning har en tendens til at blinke til og fra ved enten 100 eller 120 Hz, afhængigt af hovedstrømkilden i regionen. Da 120 Hz er uden for det elektroniske filter 38,5 kHz båndpasfrekvens, ignoreres det fuldstændigt af IR -detektorerne.

-Paralax Elevguide

Trin 3: Montering af IR -lysdioder

Montering af IR LED'er
Montering af IR LED'er

Indsæt IR -LED'en i den større del af kabinettet

Omslut den klare del af LED'en med den mindre del af huset

Trin 4: Test af infrarøde par - kredsløb

Test af infrarøde par - kredsløb
Test af infrarøde par - kredsløb
Test af infrarøde par - kredsløb
Test af infrarøde par - kredsløb

Inden vi går for dybt ind i noget, vil vi teste for at sikre, at IR -parret fungerer (En infrarød LED og en infrarød detektor).

Start med at bygge ovenstående kredsløb på brødbrættet monteret oven på din Boe-Bot

Trin 5: Test af infrarøde par - grundlæggende kode

Selvfølgelig skal vi skrive kode for at vores IR -par fungerer

For at gøre dette vil vil bruge kommandoen FREQOUT. Denne kommando er designet til lydtoner, men den kan bruges til at producere frekvenser i det infrarøde område. Til denne test bruger vi kommandoen:

FREQOUT 8, 1, 38500

dette sender en 38,5 kHz frekvens, der varer 1 ms til P8. Det infrarøde LED -kredsløb, der er forbundet til P8, sender denne frekvens. Hvis det infrarøde lys reflekteres tilbage til Boe-Bot af et objekt i dets vej, sender den infrarøde detektor et BASIC-stempel et signal for at lade det vide, at det reflekterede infrarøde lys blev registreret.

Nøglen til at få et IR -par til at fungere er at sende 1 ms 38,5 kHz FREQOUT og straks gemme IR -detektorens output i en variabel.

Dette eksempel viser lagring af IR -detektorværdien i en bitvariabel ved navn irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

IR -detektorens udgangstilstand, når den ikke ser noget IR -signal, er højt. Når IR -detektoren ser den harmoniske 38500 Hz reflekteret af et objekt, er dens output lav. IR -detektorens output forbliver kun lav i en brøkdel af et millisekund, efter at FREQOUT -kommandoen er færdig med at sende harmonikken, så det er vigtigt at gemme IR -detektorens output i en variabel umiddelbart efter afsendelse af FREQOUT -kommandoen. Værdien, der er gemt af variablen, kan derefter vises i Debug Terminal eller bruges til navigationsbeslutninger af Boe-Bot.

Trin 6: Test af infrarøde par - hardware + software

Test af infrarøde par - hardware + software
Test af infrarøde par - hardware + software

Nu hvor du kender det grundlæggende, kan vi sammensætte hardware og software for at teste et par sammen og få feedback i realtid fra det, IR-paret registrerer

Du kan prøve at lave koden selv eller bruge koden herunder

'{$ STAMP BS2}

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

  1. Lad Boe-Bot være forbundet til det serielle kabel, fordi du vil bruge DEBUG Terminal til at teste dit IR-par.
  2. Placer et objekt, f.eks. Din hånd eller et ark papir, cirka en tomme fra det venstre IR -par
  3. Kontroller, at når du placerer et objekt foran IR -parret, viser fejlfindingsterminalen et 0, og når du fjerner objektet foran IR -parret, viser det et 1.
  4. Hvis fejlfindingsterminalen ikke viser de forventede værdier, kan du prøve trinene i fejlfindingstrinet.

Trin 7: Fejlfinding (ved problemer med sidste trin)

DEBUG Terminal viser uventede værdier

Kontroller kredsløbet for kortslutninger, fejlplacerede eller manglende stik, beskadigede komponenter, forkerte modstande eller andre synlige problemer

Kontroller programmet for logiske eller syntaksfejl - Hvis du brugte din egen kode til det sidste trin, kan du overveje at bruge den medfølgende kode

Får altid 0, selvom der ikke er nogen genstande, er placeret foran Boe-Bot

Kontroller, om der er objekter i nærheden, der afspejler det infrarøde signal. Bordet foran Boe-Bot kan være årsagen. Flyt Boe-Bot ind i det åbne rum, så IR-lysdioden og detektoren ikke kan reflektere genstande i nærheden.

Læsning er 1 det meste af tiden, når der ikke er noget objekt foran Boe-Bot, men flimrer til 0 lejlighedsvis

Der kan være interferens fra et fluorescerende lys i nærheden; Sluk lysrør i nærheden, og gentag dine tests. Hvis problemet vedvarer, afslører trin 9 muligvis problemet

Trin 8: Andet IR -par

Andet IR -par
Andet IR -par

Nu hvor du har programmet til venstre IR, er det din tur til at lave kredsløbet og programmere det rigtige IR -par

  1. Skift DEBUG -sætning, titel og kommentarer for at henvise til det rigtige IR -par.
  2. Skift variabelnavnet fra irDetectLeft til irDetectRight. Du bliver nødt til at gøre dette fire steder i programmet.
  3. Skift kommandoen FREQOUT's Pin -argument fra 8 til 2.
  4. Skift inputregisteret, der overvåges af irDetectRight -variablen fra IN9 til IN0.
  5. Gentag testtrinnene i denne aktivitet for det rigtige IR -par; med IR LED -kredsløbet tilsluttet P2 og detektoren tilsluttet P0.

Trin 9: Registrering af infrarød interferens (valgfrit)

Registrering af infrarød interferens (valgfrit)
Registrering af infrarød interferens (valgfrit)

Uanset om du oplever problemer med at opdage signaler, der ikke bør registreres, eller du planlægger at demonstrere din IR -detektion på et andet sted, kan du teste for interferens.

Konceptet med dette testprogram er ret enkelt, du registrerer for infrarøde signaler uden at sende noget ud.

Du kan bruge nøjagtig samme kredsløb, men du bliver nødt til at ændre koden. du kan vælge at skrive din egen kode, men du kan bruge den angivne kode herunder:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 ELLER IN0 = 0 DEREN DEBUGERER "Interference detekteret" PAUSE 100 LOOP

Hvis du oplever interferens, skal du bestemme den sandsynlige kilde og slukke den/fjerne den eller flytte, hvor du driver din Boe-Bot.

Trin 10: Tilføjelse af flere IR -par

Tilføjelse af flere IR -par
Tilføjelse af flere IR -par

Hvis du ønsker mere nøjagtighed i bevægelsen af din Boe-Bot, kan du tilføje flere IR-par. 3 Forbedrer ydeevnen kraftigt i forhold til to; du kan bruge et midterpar til at scanne efter en direkte forhindring og bruge to side -IR'er til at bestemme, hvor meget der skal drejes. Imidlertid er undergangen ved 3 IR -pardesignet, at du måske ved, når du glider mod en væg, fordi det midterste IR -par bruges til at opdage forhindringer. For at løse dette problem kan du tilføje et IR-par til hver side med en høj modstandsværdi-derfor vil infrarødt signal kun blive detekteret, hvis Boe-Bot er tæt på siden eller en væg i en svag vinkel.

Trin 11: Fem IR -par - kredsløb

Fem IR -par - kredsløb
Fem IR -par - kredsløb

Vær forsigtig, når du leder de to IR -lysdioder på siden, da vridning af dem kan få ledningerne til at røre ved og forårsage kortslutning.

Trin 12: Fem IR -par - kode

Fem IR -par - Kode
Fem IR -par - Kode

Du vil måske prøve at programmere din Boe-Bot, før du bruger denne kode:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Five IR Pair Deatection Code' Matthew Shaw '8. maj 2019 (version 7)' Registrering af objekter og grundlæggende logisk behandling til løsning af labyrinter

irDetectLeft VAR Bit 'Variabel til venstre

irDetectCentre VAR Bit 'Variabel til center irDetectRight VAR Bit' Variabel til højre irDetectLSide VAR Bit 'Variabel til venstre side irDetectRSide VAR Bit' Variabel til højre side irDetectLSideFar VAR Bit 'Variabel til lav side modstand irDetectRSideFar VAR Bit' Variabel til højre side

mLoop VAR Word

Lmotor PIN 15 'Den venstre motor er forbundet til pin 14, pulser går igennem her

Rmotor PIN 14 'højre = 15

'hastigheder er-> 650-750-850

LFast CON 850 'Conastant til venstre motor ved fuld hastighed RFast CON 650' Conastant til højre motor ved fuld hastighed

LStop CON 750 'Conastant til venstre motor ved fuld hastighed

RStop CON 650 'Conastant til højre motor ved fuld hastighed

LMid CON 830 'Konastant til venstre motor ved mellemhastighed

RMid CON 700 'Conastant til højre motor ved medium hastighed

LSlow CON 770 'Konastant til venstre motor ved minimumshastighed

RSlow CON 730 'Conastant til højre motor ved minimumshastighed

LRev CON 650 'Conastant til venstre motor ved fuld hastighed i bakgear

RRev CON 850 'Konastant til venstre motor ved fuld hastighed i bakgear

FREQOUT 7, 1, 38500 'venstre side

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'center

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'højre side

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Venstre Luk

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'højre Luk

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'højre side

irDetectRSideFar = IN0

HVIS irDetectLSide = 0 OG irDetectRSide = 0 DERNE vender hovedstartkommandoen med dine hænder forbi de to sidedetektorer for at starte programmet

Vigtigste:

PAUSE 1000 DO

PULSOUT Lmotor, LFast 'venstre motor kører på fuld hastighed

PULSOUT Rmotor, RFast 'Højre motor kører på fuld hastighed

FREQOUT 6, 1, 38500 'center

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Venstre Luk

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'højre side

irDetectRSide = IN0

HVIS irDetectLSide = 0 OG irDetectRSide = 1 SÅ

GØR PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'center

irDetectCentre = IN5 IF irDetectCentre = 0 SÅ cent

FREQOUT 10, 1, 38500 'Venstre Luk

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'højre side

irDetectRight = IN2

LOOP TIL irDetectLSide = 1 ELLER irDetectRSide = 0

ELSEIF irDetectLSide = 1 OG irDetectRSide = 0 SÅ

DO PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'center

irDetectCentre = IN5 IF irDetectCentre = 0 SÅ cent

FREQOUT 10, 1, 38500 'Venstre Luk

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'højre side

irDetectRight = IN2

LOOP TIL irDetectLSide = 0 ELLER irDetectRSide = 1

'AFSLUT HVIS

HVIS irDetectCentre = 0 SÅ START

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

FREQOUT 6, 1, 38500 'center

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'pause for at vise signal registreret

HVIS (irDetectLeft = 1 OG irDetectRight = 0) Vurder derefter varigheden

GOSUB drej til venstre

ELSEIF (irDetectLeft = 0 OG irDetectRight = 1) SÅ

GOSUB til højre

ELSEIF (irDetectLeft = 1 OG irDetectRight = 1) SÅ

GOSUB turnDecide

ANDET

GOSUB turnReverse

AFSLUT HVIS

ENDIF 'END

LOOP

ENDE

Drej 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 TIL IN0 = 1 RETURN

Drej til højre:

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

VEND TILBAGE

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

VEND TILBAGE

turnDecide: 'bruger lavere modstand til at se videre

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'højre side

irDetectRSideFar = IN0

HVIS (irDetectLSideFar = 1 OG irDetectRSideFar = 0) SÅ evaluer varigheden

GOSUB drej til venstre

ELSEIF (irDetectLSideFar = 0 OG irDetectRSideFar = 1) SÅ

GOSUB til højre

ELSEIF (irDetectLSideFar = 1 OG irDetectRSideFar = 1) SÅ

GOSUB drej til venstre

ANDET

GOSUB turnReverse

AFSLUT HVIS

VEND TILBAGE

Anbefalede: