Spisu treści:
- Krok 1: Wykonanie kabla adaptera
- Krok 2: Zmień szybkość transmisji na CMUCam
- Krok 3: Podłącz standardowy kabel do programowania i kod przesyłania
- Krok 4: Odłącz złącze programujące
- Krok 5: Naciśnij przycisk, aby zainicjować komunikację szeregową
Wideo: Połączenie CMUCam2 z OOPIC: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:33
Autor: arsinioŚledź Więcej autora:
Omówienie sposobu podłączenia CMUCam2 do i OOPIC.
Krok 1: Wykonanie kabla adaptera
1. Idź do radioshack i kup 2 z nich: Złącze męskie DB-9 Solder Cup2. przylutuj pin 5 na złączu A do pinu 5 na złączu B (jeśli przyjrzysz się uważnie złączu, są oznaczone)3. przylutuj pin 2 na złączu A do pinu 3 na złączu B (jeśli przyjrzysz się uważnie złączu, są oznaczone)4. przylutuj pin 3 na złączu A do pinu 2 na złączu B (jeśli przyjrzysz się uważnie złączu, są oznaczone)
Krok 2: Zmień szybkość transmisji na CMUCam
Zmień szybkość transmisji CMUCamera na 9600 bodów (dodaj zworkę do pozycji 0).
Krok 3: Podłącz standardowy kabel do programowania i kod przesyłania
Podłącz standardowy kabel do programowania i prześlij swój kod. Oto przykładowy kod na początek. Ten kod będzie śledzić ruch za pomocą poleceń LF i FD. Przełącza IOLine 7 (podłączony do diody LED) i odzwierciedla diodę LED stanu śledzenia na CMUCam.
& apo ******** obiekty związane z portem szeregowym ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & apozmień 27, aby bufor był większy/mniejszyDim rxBuff As New oBuffer10Dim serialActive_LED As New oDIO1Dim toggleSerial_Button As Nowy oDIO1Dim toggleSerial_Event jako nowy oEventDim toggleSerial_Wire jako nowy oWireDim serialReceive_Event jako nowy oEventDim serialReceive_Wire jako nowy oWire&apos******** debuguj powiązane obiekty ********Dim statLED jako nowy oDIO1&apos******** ****************************************&apos* Ogólne podprogramy *&apos****** ****************************************Sub main &aposiinitialize wszystko main_init &ustaw naszą maskę wyjściową na podążaj tylko za środkiem masy CMUCAM_setOutputMask(2, 3) &apozaładuj naszą początkową ramkę różnicy CMUCAM_loadDiffFrame() &aporozpocznij obliczanie różnicy CMUCAM_startDiffCalc(10)End SubSub main_init &aposiinitialize diody LED statusu statLED. IOLine = 7 statLED. Direction = cvOutput &aposinitialize our)Koniec Niedz b&aposprocesy odebrane pakietySub processPacket() Dim mx As Byte Dim my As Byte &apossprawdź, czy zarówno Mx, jak i My mają wartość 0. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value &apostać powinna migać zgodnie z diodą LED śledzenia na kamerze If (mx = "0") i (my = "0") statLED = 0 Inaczej statLED = 1 End IfEnd Sub&apos******************************************* ****&apos* Funkcje kamery CMU *&apos*************************************** *******&ustawia podaną diodę led na on, off, automatic&aposparam ledNum liczba diod led (0, 1)&aposparam val off, on, auto (0, 1, 2) Funkcja CMUCAM_ledSet(ledNum As Byte, val As Byte) Ponieważ Byte &aposVString działał&apost w nowym kompilatorze… &nie jestem pewien co do starego &apostxBuff. VString = "L0 0" &aposstaw ręcznie nasz ciąg poleceń txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 &aposthe s Funkcja tr$ jest do niczego… więc teraz to się dzieje = 13 &uzyskaj polecenie serial_SendBufferEnd Sub&aposładuj początkową różnicę frameSub CMUCAM_loadDiffFrame() &austaw ręcznie nasz ciąg poleceń txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F"ufftxBuff. Wartość = 13 &wyślij polecenie serial_SendBufferEnd Sub&aposrozpoczyna obliczanie różnic ramek&aposparam próg thresh (0-9)Sub CMUCAM_startDiffCalc(thresh As Byte) Dim dziesiątki As Byte &aposstaw ręcznie nasz ciąg poleceń txBuff. Location = 0 txBuff. Value = "F." 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = " " txBuff. Location = 3 dziesiątki = thresh/10 txBuff. Value = serial_toChar(dziesiątki) txBuff. Location = 4 dziesiątki = thresh/10 txBuff. Value = serial_toChar(thresh-dziesiątki) txBuff. Location = 5 txBuff. Value = 1 3 &użyj polecenia serial_SendBufferEnd Sub&aposstawia maskę wyjścia&aposparam typ pakietu typ pakietu do zamaskowania (0, 1, 2, itd.) patrz strona 46&aposparam wartość maski do zastosowania (0-255)Sub CMUCAM_setOutputMask(packetType As Byte, mask As Byte) Przyciemnij setki As Byte Dim dziesiątki As Byte &apossetup nasz ciąg poleceń ręcznie txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = " " &typ pakietu txBuff. Location = 3 txBuff. Value = serial_toChar(packetType) txBuff. Location = 4 txBuff. Value = " " &aposmaska, aby zastosować txBuff. Location = 5 setek = maska/100 txBuff. Value = serial_toChar(sets) txBuff. Location = 6 dziesiątek = (masek-setki)/10 txBuff. Value = serial_toChar(dziesiątki) txBuff. Location = 7 txBuff. Value = serial_toChar(maska-setki-dziesiątki) &aposcarriage return txBuff. Location = 8 txBuff. Value = 13 ********************************************* i apos* Ogólne podprogramy szeregowe *&apo s************************************************** i apozycjalizuje numer seryjny portSub serial_init() &aposiinitialize przycisk do włączania i wyłączania portu szeregowego (włącz, aby uruchomić, wyłącz, aby zaprogramować) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link(toggleSerial_Button. Value) toggleSerial_Wire. Output. Link(toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue &aposiinitialize zdarzenia w celu buforowania naszych danych serialReceive_Wire. Input. Link(serialPort. Received) serialReceive_Wire. Output. Link(serialReceive_Event. Operate) bufor RX. Trupositiale. = 0 &aposiinitialize naszego portu szeregowego serialPort. Baud = cv9600 &aposiinitialize naszej diody LED stanu szeregowego serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput &aposczekaj tutaj, aż nasz port szeregowy zostanie aktywowany While serialPort. Operate = cvFalse WendEnd Sub&aposcopies dane do naszego bufora odbioru i sprawdzania zakończenie pakietuSub serialRe ceive_Event_Code() &apos.received staje się fałszywe, gdy bufor 4bajtowy jest pusty While(serialPort. Received = cvTrue) &aposkopia bajtu do naszego bufora rxBuff. Value = serialPort. Value &aposcheck na koniec pakietu If rxBuff. Value = 13 &aposprocess pakiet processPacket() &apozresetuj bufor do początku rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub&aposwłącza i wyłącza port szeregowy do programowaniaSub toggleSerial_Event_Code() If serialPort. Operate = cvFalse serialPort. Operate = cvTrue ElActive_LED serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub&aposkonwertuje jednocyfrową liczbę na znakFunction serial_toChar(inVal As Byte) As Byte Dim retVal As Byte Select Case inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" Przypadek 3 retVal = "3" Przypadek 4 retVal = "4" Przypadek 5 retVal = "5" Przypadek 6 retVal = "6" Przypadek 7 retVal = "7" Przypadek 8 retVal = "8" Przypadek 9 retVal = „9” End Select serial_toChar = funkcja retValEnd&apos sen ds dane zawarte w txBuff&apos Uwaga: upewnij się, że bufor zawiera na końcu znak powrotu karetki (13)!!Sub serial_SendBuffer() &apositerate przez, wysyłając każdy bajt, koniec po powrocie karetki txBuff. Location = 0 While 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 &może nie potrzebować tego &może nie potrzebować, jeśli był to powrót karetki If txBuff. Value = 13 &aposbreak out z naszej pętli Return End If &aposprzejść do następnego znaku txBuff. Location = txBuff. Location + 1 WendEnd Sub
Krok 4: Odłącz złącze programujące
Po odłączeniu złącza programowania, podłącz nowy zespół kabla, jak pokazano poniżej. Adapter wykonany w kroku 1 powinien umożliwiać bezpośrednie podłączenie CMUCam do OOPIC
Krok 5: Naciśnij przycisk, aby zainicjować komunikację szeregową
Przycisk na IOLine 5 uruchomi komunikację szeregową pomiędzy CMUCam i OOPIC. Ponieważ port szeregowy jest używany zarówno do programowania, jak i do CMUCam, prawdopodobnie powinien istnieć kontrolowany sposób przełączania między nimi.
Program nie zostanie uruchomiony, dopóki ten przycisk nie zostanie naciśnięty. Jeśli ponownie naciśniesz przycisk, port szeregowy stanie się nieaktywny, co pozwoli Ci go zaprogramować. Dioda LED na IOLine 6 wyświetla aktualny stan portu szeregowego (włączony oznacza aktywny, wyłączony oznacza gotowy do programowania).
Zalecana:
Nadajnik Flysky RF zasilany przez USB + połączenie sygnału przewodowego z komputerem + bezpłatne oprogramowanie symulatora: 6 kroków
Transmiter Flysky RF zasilany przez USB + połączenie sygnału przewodowego z komputerem PC + bezpłatne oprogramowanie symulatora: Jeśli jesteś podobny do mnie, będziesz chciał przetestować swój nadajnik RF i nauczyć się przed rozbiciem swojego drogiego samolotu/drona RF. Zapewni to dodatkową zabawę, jednocześnie oszczędzając mnóstwo pieniędzy i czasu. Aby to zrobić, najlepszym sposobem jest podłączenie nadajnika RF do Ciebie
Esp8266 Połączenie Firebase: 10 kroków
Esp8266 Połączenie Firebase: Aby rozpocząć ten projekt, potrzebujesz następujących komponentów: esp8266 (NodeMcu v3 Lua) konto google (firebase) Możesz kupić esp8266 tutaj: amazon.com aliexpress.com
Połączenie wyciągu oparów i zasilacza: 11 kroków (ze zdjęciami)
Kombinacja wyciągu oparów i zasilacza: W tym podręczniku będę tworzyć wyciąg oparów z kombinacją zasilacza stołowego. Cały projekt mieści się w drewnianej podstawie wykonanej ze złomu budowlanego, który posiadałem. Zasilanie wentylatora i modułu zasilającego jest dostarczane z zewn
Połączenie czujnika wizyjnego Micro:bit MU i płytki Zip: 9 kroków (ze zdjęciami)
Połączone Micro:bit MU Vision Sensor i Zip Tile: W tym projekcie połączymy czujnik wizyjny MU z płytką Kitronik Zip Tile. Wykorzystamy czujnik wizyjny MU do rozpoznawania kolorów i pokazania go na Zip Tile. Zamierzamy wykorzystać niektóre techniki, których używaliśmy przed
Czujnik wizyjny Micro:bit MU - połączenie szeregowe i ekran OLED: 10 kroków
Micro:bit MU Vision Sensor - Połączenie szeregowe i ekran OLED: To jest mój trzeci przewodnik po czujniku wizyjnym MU. Do tej pory próbowaliśmy używać MU do rozpoznawania kart z liczbami i kształtami, ale aby zbadać nasz czujnik MU w bardziej złożonym projekcie, chcielibyśmy uzyskać lepsze wyniki. Nie możemy uzyskać tak wielu informacji