Talaan ng mga Nilalaman:

Ang pagitan ng isang CMUCam2 sa isang OOPIC: 5 Mga Hakbang
Ang pagitan ng isang CMUCam2 sa isang OOPIC: 5 Mga Hakbang
Anonim

Sundin ang Higit Pa ng may-akda:

Pagkonekta ng dalawang OOBoards nang magkasama gamit ang I2C
Pagkonekta ng dalawang OOBoards nang magkasama gamit ang I2C
Pagkonekta ng dalawang OOBoards nang magkasama gamit ang I2C
Pagkonekta ng dalawang OOBoards nang magkasama gamit ang I2C

Pangkalahatang ideya ng kung paano i-interface ang isang CMUCam2 sa at OOPIC.

Hakbang 1: Paggawa ng Adapter Cable

Paggawa ng Adapter Cable
Paggawa ng Adapter Cable

1. Goto radioshack at bumili ng 2 sa mga ito: Male DB-9 Solder Cup Connector2. solder pin 5 sa konektor A hanggang sa pin 5 sa konektor B (kung titingnan mong mabuti ang konektor, minarkahan ang mga ito) 3. solder pin 2 sa konektor A hanggang sa pin 3 sa konektor B (kung titingnan mong mabuti ang konektor, minarkahan ang mga ito) 4. solder pin 3 sa konektor A hanggang sa pin 2 sa konektor B (kung titingnan mong mabuti ang konektor, minarkahan ang mga ito)

Hakbang 2: Baguhin ang Baud Rate sa CMUCam

Baguhin ang Baud Rate sa CMUCam
Baguhin ang Baud Rate sa CMUCam

Baguhin ang rate ng baud ng CMUCamera sa 9600 baud (magdagdag ng isang lumulukso sa posisyon na 0).

Hakbang 3: Ikonekta ang Standard Programming Cable at Mag-upload ng Code

Ikonekta ang Standard Programming Cable at Mag-upload ng Code
Ikonekta ang Standard Programming Cable at Mag-upload ng Code

Ikonekta ang karaniwang programming cable at i-upload ang iyong code. Narito ang ilang halimbawang code upang makapagsimula ka. Susubaybayan ng code na ito ang paggalaw gamit ang mga utos ng LF at FD. I-toggle nito ang IOLine 7 (naka-hook sa isang LED) at i-mirror ang status ng pagsubaybay na LED sa CMUCam.

& apos ******** mga kaugnay na bagay sa pantalan **** **** Madilim na serialPort Bilang Bagong oSerialPortDim txBuff Bilang Bago oBuffer27 & aposchange ang 27 upang gawing mas malaki / mas maliit ang bufferDim rxBuff Bilang Bagong oBuffer10Dim serialActive_LED Bilang Bagong oDIO1Dim toggleSerial_button As Bagong oDIO1Dim toggleSerial_Event Bilang Bagong oEventDim toggleSerial_Wire Bilang Bagong oWireDim serialReceive_Event Bilang Bagong oEventDim serialReceive_Wire Bilang Bagong oWire at apos ******** debug na kaugnay na mga bagay ******** Dim statLED As New oDIO1 & apos ******** ***** ***** sundin lamang ang gitna ng masa CMUCAM_setOutputMask (2, 3) at aposload ang aming paunang pagkakaiba-iba ng frame CMUCAM_loadDiffFrame () & aposstart ang pagkalkula ng pagkakaiba CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize a status LED statLED. IOLine = 7 statLED.) Wakas Su b & aposprocesses natanggap packetSub processPacket () Dim mx Bilang Byte Dim my As Byte & aposcheck para sa parehong Mx at My na maging 0 & aposgranted kung hindi sila 0, ang lokasyon ay mawawala (ie & aposT 12 34) & aposbut pagkatapos ay nanalo sila at natutugunan ng 0 na pamantayan rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led ay dapat magpikit nang magkakasabay sa pagsubaybay na LED sa camera Kung (mx = "0") At (my = "0") na statLED = 0 Iba pang statLED = 1 Wakas Kung Magwawakas ng Sub at mga apos ***** **** & apos * Mga Pag-andar ng CMU Cam * at mga apos ***** ***** & aposset na ibinigay na humantong sa, off, awtomatikong at aposparam na humantongNum na bilang ng led (0, 1) & aposparam val off, on, auto (0, 1, 2) Function CMUCAM_ledSet (ledNum As Byte, val As Byte) Tulad ng Byte & aposVString wasn & apost na gumagana mismo sa bagong tagatala… at hindi sigurado tungkol sa luma at apostxBuff. VString = "L0 0" & apossetup ang aming command string nang manu-mano txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s tr $ function sucks … kaya ngayon nangyayari ito 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 ang command serial_SendBufferEnd Sub & aposloads ang paunang pagkakaiba frameSub CMUCAM_loadDiffFrame () at i-apossetup ang aming command string nang manu-mano txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff. Location = 2 txBuff. Value = "F" txBuff. Location = Halaga = 13 at ilagay ang utos na serial_SendBufferEnd Sub at mga aposstart na kinakalkula ang mga pagkakaiba ng frame at aposparam threshold (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Madilim na sampu Bilang Byte & apossetup ang aming command string nang manu-mano txBuff. Location = 0 txBuff. Value = "F" txBuff. 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 sampu = thresh / 10 txBuff. Value = serial_toChar (sampu) txBuff. Location = 4 sampu = thresh / 10 txBuff. Value = serial_toChar (thresh-ten) txBuff. Location = 5 txBuff. Value = 1 3 & apossend ang command serial_SendBufferEnd Sub & apossets ang output mask & aposparam packetType na uri ng packet upang mask (0, 1, 2, atbp) tingnan ang pahina 46 at halaga ng mask ng aposparam mask upang mailapat (0-255) Sub CMUCAM_setOutputMask (packetType Bilang Byte, mask As Byte) Madilim na daan-daang Bilang Byte Dim sampu Bilang Byte & apossetup ang aming command string nang manu-mano txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket type txBuff. Lokasyon = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask upang mailapat ang txBuff. Location = 5 daan = mask / 100 txBuff. Value = serial_toChar (daan-daang) txBuff. Location = 6 sampu = (mask-daan-daan) / 10 txBuff. Value = serial_toChar (sampu) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-gatus-sampung) at pagbalik ng aposcarriage txBuff. Location = 8 txBuff. Value = 13 at i-apossend ang utos serial_SendBufferEnd Sub & apos * ***** * & apo s ***** portSub serial_init () & aposinitialize ng isang pindutan upang i-on at i-off ang serial port (i-on upang patakbuhin, i-off sa programa) Mag-link (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize ng isang kaganapan upang buffer ang aming data serialReceive_Wire Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. Operate) = 0 & aposinitialize ang aming serial port serialPort. Baud = cv9600 & aposinitialize ang aming serial status LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait dito hanggang sa ma-aktibo ang aming serial port Habang serialPort. Operate = cvFalse WendEnd Sub para sa mga datos at tatanggapin pagkumpleto ng packSub serialRe ceive_Event_Code () & apos.received nagiging maling kapag ang 4byte buffer ay walang laman Habang (serialPort. Received = cvTrue) & aposcopy ang byte sa aming buffer rxBuff. Value = serialPort. Value & aposcheck para sa pagtatapos ng packet Kung rxBuff. Value = 13 & aposprocess packet processPacket & aposreset ang buffer sa simula rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns on and off the serial port for programmingSub toggleSerial_Event_Code () Kung serialPort. Operate = cvFalse serialPort. Operate = cseFalse serialPort. serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposconverts a single digit number to a characterFunction 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" 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" End Select serial_toChar = retValEnd Function at apos sen ds ang data na nilalaman sa txBuff & apos Tandaan: siguraduhin na ang buffer ay naglalaman ng isang pagbalik ng karwahe (13) sa dulo !! Sub serial serial_endBuffer () & apositerate sa pamamagitan ng, pagpapadala ng bawat byte, magtatapos sa cartery return txBuff. Location = 0 Habang 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & aposmight hindi kailangan ito at apossee kung ito ay isang pagbalik sa karwahe Kung txBuff. Value = 13 & aposbreak palabas ng aming loop Return End Kung & aposgo sa susunod na character txBuff. Location = txBuff. Location + 1 WendEnd Sub

Hakbang 4: Idiskonekta ang Konektor ng Programming

Idiskonekta ang Konektor ng Programming
Idiskonekta ang Konektor ng Programming
Idiskonekta ang Konektor ng Programming
Idiskonekta ang Konektor ng Programming

Kapag na-disconnect ang konektor ng programa, ikabit ang bagong pagpupulong ng cable tulad ng ipinakita sa ibaba. Ang adapter na ginawa sa hakbang 1 ay dapat payagan ang CMUCam na direktang mai-plug sa OOPIC

Hakbang 5: Pindutin ang Button upang Pasimulan ang Serial Communication

Ang pindutan sa IOLine 5 ay magsisimula ng serial na komunikasyon sa pagitan ng CMUCam at ng OOPIC. Dahil ang serial port ay ginagamit para sa parehong programa at CMUCam, marahil ay dapat na may isang kontroladong paraan ng pag-toggling sa pagitan ng dalawa.

Ang programa ay hindi tatakbo hanggang sa ang pindutang ito ay pinindot. Kung pinindot mo muli ang pindutan, ang serial port ay hindi gagana, pinapayagan kang i-program ito. Ipinapakita ng LED sa IOLine 6 ang kasalukuyang katayuan ng serial port (sa ibig sabihin ay aktibo, off nangangahulugang handa na para sa pag-program).

Inirerekumendang: