Innehållsförteckning:

Gränssnitt mellan en CMUCam2 och en OOPIC: 5 steg
Gränssnitt mellan en CMUCam2 och en OOPIC: 5 steg

Video: Gränssnitt mellan en CMUCam2 och en OOPIC: 5 steg

Video: Gränssnitt mellan en CMUCam2 och en OOPIC: 5 steg
Video: Пример работы API zabbix в командной строке sheel Linux Bash, Windows Batch с использованием Curl 2024, November
Anonim

Av arsinioFölj mer av författaren:

Ansluter två OOBoards tillsammans med I2C
Ansluter två OOBoards tillsammans med I2C
Ansluter två OOBoards tillsammans med I2C
Ansluter två OOBoards tillsammans med I2C

Översikt över hur du kopplar en CMUCam2 till och OOPIC.

Steg 1: Gör adapterkabeln

Tillverkning av adapterkabel
Tillverkning av adapterkabel

1. Gå till radioshack och köp 2 av dessa: DB-9 hanlödkoppkoppling 2. lödstift 5 på kontakt A till stift 5 på kontakt B (om du tittar noga på kontakten är de märkta) 3. lödstift 2 på kontakt A till stift 3 på kontakt B (om du tittar noga på kontakten är de märkta) 4. lödstift 3 på kontakt A till stift 2 på kontakt B (om du tittar noga på kontakten är de märkta)

Steg 2: Ändra överföringshastigheten på CMUCam

Ändra överföringshastigheten på CMUCam
Ändra överföringshastigheten på CMUCam

Ändra överföringshastigheten för CMUCamera till 9600 baud (lägg till en bygel till position 0).

Steg 3: Anslut standardprogrammeringskabeln och uppladdningskoden

Anslut standardprogrammeringskabeln och uppladdningskoden
Anslut standardprogrammeringskabeln och uppladdningskoden

Anslut den vanliga programmeringskabeln och ladda upp din kod. Här är några exempelkoder för att komma igång. Denna kod spårar rörelse med LF- och FD -kommandon. Det kommer att växla IOLine 7 (ansluten till en LED) och spegla spårningsstatus -LED på CMUCam.

& apos ******** serieportrelaterade objekt ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange the 27 to make the buffer greater/smallerDim rxBuff As New oBuffer10Dim serialActive_LED As New oDIO1Dim toggleSerial_Button As New oDIO1Dim toggleSerial_Event As New oEventDim toggleSerial_Wire As New oWireDim serialReceive_Event As New oEventDim serialReceive_Wire As New oWire & apos ******** felsökningsrelaterade objekt ******** Dim statLED Som nya oDIO1 & apos ***** ************************************* och apos*Generiska underprogram*och apos ****** *** följ endast masscentrum CMUCAM_setOutputMask (2, 3) & aposload vår initiala differensram CMUCAM_loadDiffFrame () & aposstart differensberäkningen CMUCAM_startDiffCalc (10) Avsluta SubSub main_init & aposinitialisera en status -LED statLED. IOLine = 7 statLED. Dirizein) Avsluta Su b & aposprocesser mottagna paket SubprocessPaket () Dim mx As Byte Dim my As Byte & aposcheck för att både Mx och My ska vara 0 & aposgranteras om de inte är 0, platsen kommer att vara av (dvs. & aposT 12 34) & aposbut då vann de och apost uppfyller 0 -kriterierna rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led bör blinka i samklang med spårningslampan på kameran Om (mx = "0") Och (my = "0") statLED = 0 Annat statLED = 1 Avsluta IfEnd Sub & apos ****************************************** **** & apos*CMU Cam -funktioner*& apos **************************************** ******* & apossets den givna ledde till on, off, automatic & aposparam ledNum antal led (0, 1) & aposparam val off, on, auto (0, 1, 2) Function CMUCAM_ledSet (ledNum As Byte, val As Byte) Eftersom Byte & aposVString inte & apost fungerade rätt i den nya kompilatorn … & apos inte säker på den gamla & apostxBuff. VString = "L0 0" & apossetup vår kommandosträng manuellt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s tr $ -funktionen suger … så nu händer detta txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Value = 13 & apossend kommandot serial_SendBufferEnd Sub & aposloads den initiala differens frameSub CMUCAM_loadDiffFrame () & apossetup vår kommandosträng manuellt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff.uffx. Value = 13 & apossend kommandot serial_SendBufferEnd Sub & aposstarts som beräknar ramdifferenser & aposparam tröskelgräns (0-9) Sub CMUCAM_startDiffCalc (trösk som byte) Dim tio As Byte & apossetup vår kommandosträng manuellt txBuff. Location = 0 txBuff. Value = "F" txBuff. 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 tior = trösk/10 txBuff. Value = serial_toChar (tio) txBuff. Location = 4 tior = trösk/10 txBuff. Värde = serial_toChar (tröskel) txBuff. Location = 5 txBuff. Value = 1 3 & apossend kommandot 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 hundratals As Byte Dim tens As Byte & apossetup vår kommandosträng manuellt txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket type txBuff. Location = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask för att tillämpa txBuff. Location = 5 hundra = mask/100 txBuff. Value = serial_toChar (hundratals) txBuff. Location = 6 tior = (mask-hundratals)/10 txBuff. Value = serial_toChar (tens) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-hundred-tens) & aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & öppna kommandot serial_SendBufferEnd Sub & apos* ********************************************* och apos*Allmänna serieprogram *& apo s ********************************************** portSub serial_init () & aposinitialisera en knapp för att slå på och av serieporten (slå på för att köra, stäng av för att programmera) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button.). Länka (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue och aposinitialisera en händelse för att buffra våra data serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. Operate. Operate. Operate. Operate_Event. Operate_Event. OperateReceive_Event. OperateReceive_Event. OperateReserve_OfficeReserve_OfficeReserve_OfficeReserve_OfficeReserve_Office) = 0 & aposinitialisera vår seriella port serialPort. Baud = cv9600 & aposinitialisera vår seriella status LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait här tills vår seriella port aktiveras medan serialPort. Operate = cvFalse WendEnd Sub och mottar vår buffert och mottar vår buffert och mottar vår buffert paketet kompletteringSub serialRe ceive_Event_Code () & apos.received blir falsk när 4 -bytesbufferten är tom Medan (serialPort. Received = cvTrue) & aposkopierar byten till vårt buffert rxBuff. Value = serialPort. Value & aposcheck för slutet av paketet om rxBuff. Value = 13 & aposprocess packet & aposåterställ bufferten till början rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns på och av serieporten för programmeringSub toggleSerial_Event_Code () If serialPort. Operate = cvFalse serialPort. Trans = A serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposkonverterar ett enkelsiffrigt nummer till en characterFunction serial_toChar (inVal som byte) som byte Dim retVal som byte Välj fall inVal fall 0 retVal = "0" fall 1 retVal = "1" fall 2 retVal = "2" Case 3 retVal = "3" Case 4 retVal = "4" Case 5 retVal = "5" Case 6 retVal = "6" Case 7 retVal = "7" Case 8 retVal = "8" Case 9 retVal = "9" Slut Välj serial_toChar = retValEnd -funktion & apos sen ds data som finns i txBuff & apos Obs! Se till att bufferten innehåller en vagnretur (13) i slutet !! Sub serial_SendBuffer () & apositerera igenom, skicka varje byte, slut på vagnretur txBuff. Location = 0 Medan 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & kan inte behöva detta & apossee om det var en vagnretur Om txBuff. Value = 13 & aposbreak ur vår loop Return End If & aposgo till nästa tecken txBuff. Location = txBuff. Location + 1 WendEnd Sub

Steg 4: Koppla bort programmeringsanslutningen

Koppla bort programmeringsanslutningen
Koppla bort programmeringsanslutningen
Koppla bort programmeringsanslutningen
Koppla bort programmeringsanslutningen

När programmeringskontakten har kopplats bort, fäst den nya kabelmonteringen enligt nedan. Adaptern som gjordes i steg 1 ska göra att CMUCam kan anslutas direkt till OOPIC

Steg 5: Tryck på knappen för att initiera seriell kommunikation

Knappen på IOLine 5 startar den seriella kommunikationen mellan CMUCam och OOPIC. Eftersom serieporten används för både programmering och CMUCam, borde det förmodligen finnas ett kontrollerat sätt att växla mellan de två.

Programmet körs inte förrän den här knappen trycks in. Om du trycker på knappen igen blir serieporten inaktiv så att du kan programmera den. Lysdioden på IOLine 6 visar den aktuella seriella portstatusen (på betyder aktiv, av betyder redo för programmering).

Rekommenderad: