Spisu treści:
- Krok 1: Zasoby
- Krok 2: Zrozumienie, jak działa wykrywanie podczerwieni (opcjonalnie)
- Krok 3: Montaż diod LED IR
- Krok 4: Testowanie par podczerwieni - obwód
- Krok 5: Testowanie par podczerwieni - kod podstawowy
- Krok 6: Testowanie par podczerwieni - sprzęt + oprogramowanie
- Krok 7: Rozwiązywanie problemów (w przypadku problemów z ostatnim krokiem)
- Krok 8: Druga para IR
- Krok 9: Wykrywanie zakłóceń podczerwieni (opcjonalnie)
- Krok 10: Dodawanie większej liczby par IR
- Krok 11: Pięć par IR - obwód
- Krok 12: Pięć par IR - kod
Wideo: Boe-Bot z detektorami podczerwieni: 12 kroków (ze zdjęciami)
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Ta instrukcja pokaże, jak zbudować i zakodować Boe-Bota, który może poruszać się po labiryncie za pomocą detektorów podczerwieni, aby omijać przeszkody. Jest to łatwy do naśladowania przewodnik, który pozwala na łatwe modyfikacje dostosowane do Twoich potrzeb. Wymaga to podstawowej wiedzy na temat obwodów i programowania. Do tego projektu potrzebne będzie oprogramowanie BASIC Stamp IDE. Bezpłatnie do pobrania tutaj. Jak również robot Boe-Bot
Krok 1: Zasoby
Części elektroniczne
Boe-Bot z kablem połączeniowym Parallax Store - BoeBot Kit
5 Parallax Store LED na podczerwień - zestaw montażowy nadajnika IR
5 zestawów osłon na podczerwień
5 detektorów podczerwieni Parallax Store - BoeBot IR Receiver
Rezystory
- (2) 4,7 kΩ Elektronika ABRA - 4,7 kΩ
- (5) 220 Ω Elektronika ABRA - 220 Ω
- (2) 1 kΩ Elektronika ABRA - 1 kΩ
- (5) Elektronika 2 k ABRA - 2 kΩ
Różne okablowanie ABRA Electronics - przewód o przekroju 22
Elektronika ABRA 3 LED - 5mm czerwona dioda LED
Wsparcie
Komputer
BASIC Edytor stempli - (Darmowy)
Narzędzia
Przecinak do drutu ABRA Electronics - przecinak do drutu (opcja)
Ściągacz izolacji ABRA Electronics - Ściągacz izolacji
Różne
Ściany (do budowy labiryntu)
Krok 2: Zrozumienie, jak działa wykrywanie podczerwieni (opcjonalnie)
Reflektory na podczerwień
System wykrywania obiektów na podczerwień, który zbudujemy na Boe-Bocie, pod wieloma względami przypomina reflektory samochodu. Kiedy światło reflektorów samochodu odbija się od przeszkód, twoje oczy wykrywają przeszkody, a mózg je przetwarza i sprawia, że twoje ciało odpowiednio prowadzi samochód. Boe-Bot użyje diod LED na podczerwień do reflektorów. Emitują podczerwień, a w niektórych przypadkach podczerwień odbija się od obiektów i odbija z powrotem w kierunku Boe-Bota. Oczy Boe-Bota to detektory podczerwieni. Detektory podczerwieni wysyłają sygnały wskazujące, czy wykrywają podczerwień odbitą od obiektu. Mózg Boe-Bota, BASIC Stamp, podejmuje decyzje i obsługuje serwomotory w oparciu o dane wejściowe czujnika. Rysunek 7-1 Wykrywanie obiektów za pomocą reflektorów IR Detektory IR mają wbudowane filtry optyczne, które przepuszczają bardzo mało światła, z wyjątkiem podczerwieni 980 nm, którą chcemy wykryć za pomocą wewnętrznego czujnika fotodiodowego. Detektor podczerwieni ma również filtr elektroniczny, który przepuszcza tylko sygnały o częstotliwości około 38,5 kHz. Innymi słowy, wykrywacz szuka tylko podczerwieni, która włącza się i wyłącza 38 500 razy na sekundę. Zapobiega to zakłóceniom podczerwieni z popularnych źródeł, takich jak światło słoneczne i oświetlenie wewnętrzne. Światło słoneczne to interferencja prądu stałego (0 Hz), a oświetlenie wewnętrzne ma tendencję do włączania i wyłączania z częstotliwością 100 lub 120 Hz, w zależności od głównego źródła zasilania w regionie. Ponieważ 120 Hz znajduje się poza częstotliwością przepustową filtra elektronicznego 38,5 kHz, jest całkowicie ignorowane przez detektory IR.
-Przewodnik dla studentów Paralax
Krok 3: Montaż diod LED IR
Włóż diodę IR do większej części obudowy
Zamknąć przezroczystą część diody LED mniejszą częścią obudowy
Krok 4: Testowanie par podczerwieni - obwód
Zanim zagłębimy się w cokolwiek, przetestujemy, aby upewnić się, że para podczerwieni działa (jedna dioda podczerwieni i jeden detektor podczerwieni).
Zacznij od zbudowania powyższego obwodu na płytce stykowej zamontowanej na górze Boe-Bota
Krok 5: Testowanie par podczerwieni - kod podstawowy
Oczywiście będziemy musieli napisać kod, aby nasze pary IR działały
W tym celu użyje polecenia FREQOUT. To polecenie zostało zaprojektowane dla tonów audio, jednak może być użyte do wytwarzania częstotliwości w zakresie podczerwieni. Do tego testu użyjemy polecenia:
CZĘSTOTLIWOŚĆ 8, 1, 38500
to wyśle do P8 częstotliwość 38,5 kHz, która trwa 1 ms. Obwód diody podczerwieni podłączony do P8 będzie nadawał tę częstotliwość. Jeśli światło podczerwone zostanie odbite z powrotem do Boe-Bota przez obiekt na jego drodze, detektor podczerwieni wyśle sygnał BASIC Stamp, aby poinformować go, że odbite światło podczerwone zostało wykryte.
Kluczem do działania pary IR jest wysłanie 1 ms częstotliwości 38,5 kHz FREQOUT i natychmiastowe zapisanie wyjścia detektora IR w zmiennej.
Ten przykład pokazuje przechowywanie wartości detektora IR w zmiennej bitowej o nazwie irDectectLeft
CZĘSTOTLIWOŚĆ 8, 1, 38500
irDetectLeft = IN9
Stan wyjścia detektora podczerwieni, gdy nie widzi sygnału podczerwieni, jest wysoki. Gdy detektor podczerwieni widzi harmoniczną 38500 Hz odbitą przez obiekt, jego moc wyjściowa jest niska. Sygnał wyjściowy detektora IR pozostaje niski tylko przez ułamek milisekundy po zakończeniu polecenia FREQOUT, wysyłając harmoniczną, dlatego ważne jest, aby zapisać sygnał wyjściowy detektora IR w zmiennej natychmiast po wysłaniu polecenia FREQOUT. Wartość przechowywana przez zmienną może być następnie wyświetlana w terminalu debugowania lub wykorzystywana do decyzji nawigacyjnych przez Boe-Bota.
Krok 6: Testowanie par podczerwieni - sprzęt + oprogramowanie
Teraz, gdy znasz już podstawy, możemy połączyć sprzęt i oprogramowanie, aby przetestować parę razem i uzyskać informacje zwrotne w czasie rzeczywistym na temat tego, co wykrywa para podczerwieni
Możesz spróbować zrobić kod samodzielnie lub skorzystać z poniższego kodu
' {$STAMP BS2}
' {$PBASIC 2.5} irDetectLeft Bit VAR DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft = ", BIN1 irDetectLeft PAUZA 100 PĘTLA
- Pozostaw Boe-Bot podłączony do kabla szeregowego, ponieważ będziesz używać terminala DEBUG do testowania pary IR.
- Umieść przedmiot, taki jak dłoń lub kartka papieru, około cala od lewej pary podczerwieni
- Sprawdź, czy po umieszczeniu obiektu przed parą podczerwieni terminal debugowania wyświetla 0, a po usunięciu obiektu przed parą podczerwieni wyświetla 1.
- Jeśli terminal debugowania nie wyświetla oczekiwanych wartości, wypróbuj kroki opisane w kroku Rozwiązywanie problemów.
Krok 7: Rozwiązywanie problemów (w przypadku problemów z ostatnim krokiem)
DEBUG Terminal wyświetla nieoczekiwane wartości
Sprawdź obwód pod kątem zwarć, zagubionych lub brakujących złączy, uszkodzonych komponentów, nieprawidłowych rezystorów lub innych widocznych problemów
Sprawdź program pod kątem błędów logicznych lub składniowych - Jeśli w ostatnim kroku użyłeś własnego kodu, rozważ użycie dostarczonego kodu
Zawsze otrzymuje 0, nawet jeśli przed Boe-Botem nie ma żadnych przedmiotów
Sprawdź, czy w pobliżu znajdują się jakieś obiekty, które odbijają sygnał podczerwony. Przyczyną mógł być stół przed Boe-Botem. Przenieś Boe-Bota na otwartą przestrzeń, aby dioda podczerwieni i detektor nie odbijały się od pobliskich obiektów.
Odczyt wynosi 1 w większości przypadków, gdy przed Boe-botem nie ma żadnego obiektu, ale czasami miga do 0
Mogą występować zakłócenia pochodzące z pobliskiego światła fluorescencyjnego; Wyłącz wszystkie znajdujące się w pobliżu lampy fluorescencyjne i powtórz testy. Jeśli problem będzie się powtarzał, krok 9 może go ujawnić
Krok 8: Druga para IR
Teraz, gdy masz już program dla lewego IR, twoja kolej, aby utworzyć obwód i zaprogramować prawą parę IR
- Zmień deklarację DEBUG, tytuł i komentarze, aby odnosiły się do właściwej pary IR.
- Zmień nazwę zmiennej z irDetectLeft na irDetectRight. Musisz to zrobić w czterech miejscach programu.
- Zmień argument Pin polecenia FREQOUT z 8 na 2.
- Zmień rejestr wejściowy monitorowany przez zmienną irDetectRight z IN9 na IN0.
- Powtórz kroki testowe w tym ćwiczeniu dla właściwej pary IR; z obwodem diody IR podłączonym do P2 i czujką podłączoną do P0.
Krok 9: Wykrywanie zakłóceń podczerwieni (opcjonalnie)
Niezależnie od tego, czy masz problemy z wykrywaniem sygnałów, które nie powinny być wykrywane, czy też planujesz zademonstrować wykrywanie podczerwienią w innej lokalizacji, możesz chcieć przetestować pod kątem zakłóceń.
Koncepcja tego programu testującego jest dość prosta, wykrywasz sygnały w podczerwieni bez wysyłania ich.
Możesz użyć dokładnie tego samego obwodu, ale będziesz musiał zmienić kod. możesz napisać własny kod, ale możesz użyć kodu podanego poniżej:
' {$STAMP BS2}
' {$PBASIC 2.5} Bit VAR irDetectLeft DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 LUB IN0 = 0 TO DEBUG „Wykryto zakłócenia” PRZERWA 100 PĘTLA
Jeśli wystąpią zakłócenia, określ prawdopodobne źródło i wyłącz je/usuń lub przenieś miejsce, w którym obsługujesz Boe-Bota.
Krok 10: Dodawanie większej liczby par IR
Jeśli potrzebujesz większej dokładności ruchu Boe-Bota, możesz dodać więcej par IR. 3 Znacznie poprawia wydajność w porównaniu do dwóch; możesz użyć pary środkowej, aby wyszukać bezpośrednią przeszkodę i użyć dwóch bocznych czujników podczerwieni, aby określić, o ile skręcić. Jednak wadą konstrukcji 3 par podczerwieni jest to, że możesz wiedzieć, kiedy ślizgasz się po ścianie, ponieważ środkowa para podczerwieni służy do wykrywania przeszkód. Aby rozwiązać ten problem, możesz dodać parę IR z każdej strony o wysokiej wartości rezystancji - dlatego sygnał podczerwieni zostanie wykryty tylko wtedy, gdy Boe-Bot znajduje się blisko boku lub ściany pod łagodnym kątem.
Krok 11: Pięć par IR - obwód
Zachowaj ostrożność, kierując dwie diody podczerwieni na bok, ponieważ ich skręcenie może spowodować zetknięcie się przewodów i zwarcie.
Krok 12: Pięć par IR - kod
Możesz spróbować zaprogramować Boe-Bota przed użyciem tego kodu:
' {$STAMP BS2}' {$PBASIC 2.5} 'Kod wykrywania pięciu par IR 'Matthew Shaw '8 maja 2019 (wersja 7) 'Wykrywanie obiektów i podstawowe przetwarzanie logiczne w celu rozwiązania labiryntów
irDetectLeft VAR Bit „Zmienna dla lewej”
irDetectCentre VAR Bit 'Zmienna dla środka irDetectRight Bit VAR 'Zmienna dla prawej strony irDetectLSide VAR Bit 'Zmienna dla lewej strony irDetectRSide VAR Bit 'Zmienna dla prawej strony irDetectLSideFar Bit 'Zmienna dla lewej strony niska rezystancja irDetectRSideFar VAR dla prawej strony 'Zmienna
mLoop VAR słowo
Lmotor PIN 15 „Lewy silnik jest podłączony do pinu 14, impulsy przechodzą tutaj”
Rmotor PIN 14 'prawo = 15
'prędkości są -> 650-750-850
LFast CON 850 „Stała dla lewego silnika przy pełnej prędkości RFast CON 650 „Stała dla prawego silnika przy pełnej prędkości
LStop CON 750 „Stała dla lewego silnika przy pełnej prędkości”
RSstop CON 650 „Stała dla prawego silnika przy pełnej prędkości”
LMid CON 830 „Stała dla lewego silnika przy średniej prędkości”
RMid CON 700 „Stała dla prawego silnika przy średniej prędkości”
LSlow CON 770 'Stała dla lewego silnika przy minimalnej prędkości
RSlow CON 730 „Stała dla prawego silnika przy minimalnej prędkości”
LRev CON 650 „Stała dla lewego silnika przy pełnej prędkości na biegu wstecznym”
RRev CON 850 „Stała dla lewego silnika przy pełnej prędkości na biegu wstecznym”
FREQOUT 7, 1, 38500 „lewa strona”
irDetectLeft = IN8
FREQOUT 6, 1, 38500 „centrum”
irDetectCentre = IN5
FREQOUT 3, 1, 38500 „prawa strona”
irDetectPrawo = IN2
FREQOUT 10, 1, 38500 „Zamknij w lewo”
irDetectLSside = IN11
FREQOUT 1, 1, 38500 „prawo Zamknij”
irDetectRSside = IN0
CZĘSTOTLIWOŚĆ 9, 1, 38500
irDetectLSsideFar = IN11
FREQOUT 4, 1, 38500 „prawa strona”
irDetectRSsideFar = IN0
JEŚLI irDetectLSide = 0 AND irDetectRSide = 0 TO główne POLECENIE URUCHAMIANIA machnij rękami obok dwóch bocznych detektorów, aby uruchomić program
Główny:
WSTRZYMAJ 1000 ZROBIĆ
PULSOUT Lmotor, LFast „lewy silnik pracuje z pełną prędkością”
Silnik PULSOUT, RFast „Prawy silnik pracuje z pełną prędkością”
FREQOUT 6, 1, 38500 „centrum”
irDetectCentre = IN5
FREQOUT 10, 1, 38500 „Zamknij w lewo”
irDetectLSside = IN11
FREQOUT 1, 1, 38500 „prawa strona”
irDetectRSside = IN0
JEŚLI irDetectLSide = 0 ORAZ irDetectRSide = 1 TO
DO PULSOUT Lsilnik, LFast
FREQOUT 6, 1, 38500 „centrum”
irDetectCentre = IN5 JEŻELI irDetectCentre = 0 TO cent
FREQOUT 10, 1, 38500 „Zamknij w lewo”
irDetectLSside = IN11
FREQOUT 3, 1, 38500 „prawa strona”
irDetectPrawo = IN2
PĘTLA DO irDetectLSide = 1 LUB irDetectRSide = 0
ELSEIF irDetectLSide = 1 AND irDetectRSide = 0 THEN
DO Rmotor PULSOUT, RFast
FREQOUT 6, 1, 38500 „centrum”
irDetectCentre = IN5 JEŻELI irDetectCentre = 0 TO cent
FREQOUT 10, 1, 38500 „Zamknij w lewo”
irDetectLSside = IN11
FREQOUT 3, 1, 38500 „prawa strona”
irDetectPrawo = IN2
PĘTLA DO irDetectLSide = 0 LUB irDetectRSide = 1
„ENDIF”
JEŚLI irDetectCentre = 0 TO 'START
FREQOUT 7, 1, 38500 „lewa strona irDetectLeft = IN8”
FREQOUT 6, 1, 38500 „centrum”
irDetectCentre = IN5
CZĘSTOTLIWOŚĆ 3, 1, 38500
irDetectPrawo = IN2
PAUZA 1000 „pauza, aby pokazać wykryty sygnał”
IF (irDetectLeft = 1 AND irDetectRight = 0) THEN 'ocenić czas trwania
GOSUB skręt w lewo
ELSEIF (irDetectLeft = 0 ORAZ irDetectRight = 1) THEN
GOSUB skręt w prawo
ELSEIF (irDetectLeft = 1 ORAZ irDetectRight = 1) THEN
GOSUB turnZdecyduj
W PRZECIWNYM RAZIE
GOSUB turnReverse
ENDIF
ENDIF 'END
PĘTLA
KOŃCZYĆ SIĘ
Skręć w lewo:
DO PULSOUT Lmotor, LRev CZĘSTOTLIWOŚĆ 8, 1, 38500 irDetectLeft = IN9 CZĘSTOTLIWOŚĆ 5, 1, 38500 irDetectCentre = IN4 CZĘSTOTLIWOŚĆ 2, 1, 38500 irDetectRight = IN0 PĘTLA DO IN0 = 1 POWRÓT
Skręć w prawo:
DO PULSOUT Rmotor, RRev CZĘSTOTLIWOŚĆ 8, 1, 38500 irDetectLeft = WE9 CZĘSTOTLIWOŚĆ 5, 1, 38500 irDetectCentre = WE4 CZĘSTOTLIWOŚĆ 2, 1, 38500 irDetectRight = WE0 PĘTLA DO WE9 = 1
POWRÓT
TurnReverse:
FOR mLoop = 0 do 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, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = PĘTLA IN0 DO IN9 = 1
POWRÓT
turnDecide: 'wykorzystuje mniejszy opór, aby widzieć dalej
CZĘSTOTLIWOŚĆ 9, 1, 38500
irDetectLSsideFar = IN11
FREQOUT 4, 1, 38500 „prawa strona”
irDetectRSsideFar = IN0
IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) THEN ' ocenia czas trwania
GOSUB skręt w lewo
ELSEIF (irDetectLSideFar = 0 AND irDetectRSideFar = 1) THEN
GOSUB skręt w prawo
ELSEIF (irDetectLSideFar = 1 AND irDetectRSideFar = 1) THEN
GOSUB skręt w lewo
W PRZECIWNYM RAZIE
GOSUB turnReverse
ENDIF
POWRÓT