Obsah:

Propojení CMUCam2 s OOPIC: 5 kroků
Propojení CMUCam2 s OOPIC: 5 kroků

Video: Propojení CMUCam2 s OOPIC: 5 kroků

Video: Propojení CMUCam2 s OOPIC: 5 kroků
Video: Pavel Callta - Propojeni (Official Video) 2024, Červenec
Anonim

Od arsinioSledovat více od autora:

Spojení dvou OOBardů dohromady pomocí I2C
Spojení dvou OOBardů dohromady pomocí I2C
Spojení dvou OOBardů dohromady pomocí I2C
Spojení dvou OOBardů dohromady pomocí I2C

Přehled toho, jak propojit CMUCam2 a OOPIC.

Krok 1: Výroba kabelu adaptéru

Výroba kabelu adaptéru
Výroba kabelu adaptéru

1. Přejděte na radioshack a kupte 2 z nich: Male DB-9 Solder Cup Connector2. pájet kolík 5 na konektor A na pin 5 na konektor B (pokud se na konektor pečlivě podíváte, jsou označeny) 3. pájejte pin 2 na konektoru A na pin 3 na konektoru B (pokud se na konektor pečlivě podíváte, jsou označeny) 4. připájejte pin 3 na konektor A na pin 2 na konektor B (pokud se na konektor podíváte pozorně, jsou označeny)

Krok 2: Změňte přenosovou rychlost na CMUCam

Změňte přenosovou rychlost na CMUCam
Změňte přenosovou rychlost na CMUCam

Změňte přenosovou rychlost CMUCamery na 9600 baudů (přidejte propojku do polohy 0).

Krok 3: Připojte standardní programovací kabel a nahrajte kód

Připojte standardní programovací kabel a nahrajte kód
Připojte standardní programovací kabel a nahrajte kód

Připojte standardní programovací kabel a nahrajte svůj kód. Zde je příklad kódu, který vám pomůže začít. Tento kód bude sledovat pohyb pomocí příkazů LF a FD. Přepne IOLine 7 (připojený k LED) a zrcadlí LED stavu sledování na CMUCam.

& apos ******** objekty související se sériovým portem ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange the 27 to buffer is greater/smallerDim rxBuff As New oBuffer10Dim serialActive_LED As New oDIO1Dim toggleSerial_Button As Nový přepínač oDIO1DimSerial_Event jako nový oEventDim toggleSerial_Wire jako nový oWireDim serialReceive_Event jako nový oEventDim serialReceive_Wire jako nový oWire & apos ******** ladit související objekty ******** Dim statLED jako nový o*** *************************************************************************************** ***************************************************************************************** pouze sledovat těžiště CMUCAM_setOutputMask (2, 3) & aposload náš počáteční rozdíl CMUCAM_loadDiffFrame () & aposstart the Difference Calculation CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize a status LED statLED. IOLine = 7 statLED. Direction = cvO) Konec Su b & aposproceses receive packetsSub processPacket () Dim mx As Byte Dim my As Byte & aposcheck for Mx and My to be 0 & aposgranted if they are 0, the location will be off (ie & aposT 12 34) & aposbut then they won & apost meet the 0 criteria rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe LED by měla blikat souběžně se sledovací LED na kameře If (mx = "0") And (my = "0") statLED = 0 Jinak statLED = 1 Konec IfEnd Sub & apos ************************************ **** & apos*Funkce CMU Cam*& apos ************************************* ******* & apossets the led led on on, off, automatic & aposparam led LED Number number of led (0, 1) & aposparam val off, on, auto (0, 1, 2) Function CMUCAM_ledSet (ledNum As Byte, val As Byte) Protože Byte & aposVString nepracoval přímo v novém kompilátoru … & aposx si není jistý starým & apostxBuff. VString = "L0 0" & apossetup náš příkazový řetězec ručně txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s tr $ funkce naštve … tak teď se to děje txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Value = 13 & aposend the command serial_SendBufferEnd Sub & aposloads the initial difference frameSub CMUCAM_loadDiffFrame () & apossetup our command string manually txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff Hodnota = 13 & aposse the command serial_SendBufferEnd Sub & aposstarts Calculation Frame Differences & aposparam thresh threshold (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim desiatky As Byte & apossetup our command string manually txBuff. Location = 0 txBuff. Value = "F" tx 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 desítky = mlátit/10 txBuff. Value = serial_toChar (desítky) txBuff. Location = 4 desítky = mlátit/10 txBuff. Value = serial_toChar (thresh-desiatky) txBuff. Location = 5 txBuff. Value = 1 3 & apossend the command serial_SendBufferEnd Sub & apossets the output mask & aposparam packetType type of packet to mask (0, 1, 2, etc.) see page 46 & aposparam mask mask value to apply (0-255) Sub CMUCAM_setOutputMask (packetType As Byte, mask As Byte) Dim stovky As Byte Dim dess As Byte & apossetup our command string manually txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket type txBuff. Umístění = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask pro použití txBuff. Location = 5 stovek = maska/100 txBuff. Value = serial_toChar (stovky) txBuff. Location = 6 desítek = (masky-stovky)/10 txBuff. Value = serial_toChar (desítky) txBuff. Location = 7 txBuff. Value = serial_toChar (masky-stovky-desítky) & aposcarriage návrat txBuff. Location = 8 txBuff. Value = 13 & apossend příkaz serial_SendBufferEnd Sub & ************************************************************************************ *& apo s ******************************************************* portSub serial_init () & aposinitialize a button to turn on and off the serial port (turn on run, turn off to program) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button.al Odkaz (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize an event to buffer our data serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. = 0 & aposinitialize our serial port serialPort. Baud = cv9600 & aposinitialize our serial status LED LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & apos zde počkejte, až se aktivuje náš sériový port Zatímco serialPort. Operate = cvFalse WendEnd Sub & aposcopies dokončení paketu Sub subserle ceive_Event_Code () & apos.received se stane falešným, když je 4byte buffer prázdný While (serialPort. Received = cvTrue) & aposcopy the byte to our buffer rxBuff. Value = serialPort. Value & aposcheck for end of packet If rxBuff. Value = 13 & aposprocess packet & aposreset buffer na začátek rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns on and off the serial port for programmingSub toggleSerial_Event_Code () If serialPort. Operate = cvFalse serialPort. O serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & apos převádí jednociferné číslo na znakFactory 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" Případ 3 retVal = "3" Případ 4 retVal = "4" Případ 5 retVal = "5" Případ 6 retVal = "6" Případ 7 retVal = "7" Případ 8 retVal = "8" Případ 9 retVal = "9" Konec Vyberte serial_toChar = retValEnd Funkce & apos sen ds data obsažená v txBuff & apos Poznámka: ujistěte se, že vyrovnávací paměť obsahuje na konci návrat na vozík (13) !! Sub serial_SendBuffer () & apositerate přes, odeslání každého bajtu, konec na carriage return txBuff. Location = 0 Zatímco 1 serialPort. Value = txBuff Hodnota.

Krok 4: Odpojte konektor programování

Odpojte konektor programování
Odpojte konektor programování
Odpojte konektor programování
Odpojte konektor programování

Jakmile je programovací konektor odpojen, připojte novou sestavu kabelu podle obrázku níže. Adaptér vyrobený v kroku 1 by měl umožnit přímé připojení modulu CMUCam k OOPIC

Krok 5: Stisknutím tlačítka inicializujete sériovou komunikaci

Tlačítko na IOLine 5 zahájí sériovou komunikaci mezi CMUCam a OOPIC. Protože je sériový port používán jak pro programování, tak pro CMUCam, pravděpodobně by měl existovat kontrolovaný způsob přepínání mezi nimi.

Program se nespustí, dokud nestisknete toto tlačítko. Pokud tlačítko stisknete znovu, sériový port bude neaktivní, což vám umožní jej naprogramovat. LED na IOLine 6 zobrazuje aktuální stav sériového portu (zapnuto znamená aktivní, vypnuto znamená připraveno k programování).

Doporučuje: