Innholdsfortegnelse:
- Trinn 1: Lag adapterkabelen
- Trinn 2: Endre overføringshastigheten på CMUCam
- Trinn 3: Koble til standard programmeringskabel og opplastingskode
- Trinn 4: Koble fra programmeringskontakten
- Trinn 5: Trykk på knappen for å initialisere seriell kommunikasjon
Video: Grensesnitt mellom en CMUCam2 og en OOPIC: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Av arsinioFølg Mer av forfatteren:
Oversikt over hvordan du kobler en CMUCam2 til og OOPIC.
Trinn 1: Lag adapterkabelen
1. Gå til radioshack og kjøp 2 av disse: Hann DB-9 Loddekopp-kontakt2. loddestift 5 på kontakt A til pinne 5 på kontakt B (hvis du ser nøye på kontakten, er de merket) 3. loddestift 2 på kontakt A til pinne 3 på kontakt B (hvis du ser nøye på kontakten, er de merket) 4. loddestift 3 på kontakt A til pinne 2 på kontakt B (hvis du ser nøye på kontakten, er de merket)
Trinn 2: Endre overføringshastigheten på CMUCam
Endre overføringshastigheten til CMUCamera til 9600 baud (legg til en jumper til posisjon 0).
Trinn 3: Koble til standard programmeringskabel og opplastingskode
Koble til standard programmeringskabel og last opp koden. Her er noen eksempler på kode for å komme i gang. Denne koden vil spore bevegelse ved hjelp av LF- og FD -kommandoene. Den vil bytte IOLine 7 (koblet til en LED) og speile statusen for sporingsstatus på CMUCam.
& apos ******** serieportrelaterte objekter ******** 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 ******** feilsøkingsrelaterte objekter ******** Dim statLED As New oDIO1 & apos ***** ******** ***** ****** ***** følg bare massesenteret CMUCAM_setOutputMask (2, 3) & aposload vår første differensramme CMUCAM_loadDiffFrame () & aposstart differensberegningen CMUCAM_startDiffCalc (10) Avslut SubSub main_init & aposinitialiser en status -LED statLED. IOLine = 7 statLED. Dirizein c) Avslutt Su b & aposprosesser mottatte pakker Subprosess Packet () Dim mx As Byte Dim my As Byte & aposcheck for både Mx og My å være 0 & aposgrant hvis de ikke er 0, vil plasseringen være av (dvs. & aposT 12 34) & aposbut da vant og apost oppfyller 0 -kriteriene rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe LED skal blinke i takt med sporings -LED -en på kameraet Hvis (mx = "0") Og (my = "0") statLED = 0 Ellers statLED = 1 Slutt IfEnd Sub & apos ***************************************** **** & apos*CMU Cam Functions*& apos *************************************** ******* & apossets den gitte ledet til på, av, automatisk og aposparam led Antall led (0, 1) & aposparam val av, på, auto (0, 1, 2) Funksjon CMUCAM_ledSet (ledNum As Byte, val As Byte) Ettersom Byte & aposVString ikke & apost fungerte akkurat i den nye kompilatoren … & aposn ikke sikker på den gamle & apostxBuff. VString = "L0 0" & apossetup vår kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s tr $ -funksjonen suger … så nå skjer dette 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 kommandoen serial_SendBufferEnd Sub & aposloads den første differansen frameSub CMUCAM_loadDiffFrame () & apossetup vår kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff.uffx. Value = 13 & apossend kommandoen serial_SendBufferEnd Sub & aposstarts som beregner rammeforskjeller og aposparam-terskelgrense (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim tens As Byte & apossetup our command string Manual txBuff. Location = 0 txBuff. Value = "F" txBuff. 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 tiere = tresker/10 txBuff. Value = serial_toChar (tiere) txBuff. Location = 4 titalls = tersk/10 txBuff. Value = serial_toChar (thresh-tens) txBuff. Location = 5 txBuff. Value = 1 3 & apossend kommandoen serial_SendBufferEnd Sub & apossets the output mask & aposparam packType type 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 hundrevis As Byte Dim tens As Byte & apossetup vår kommandostreng manuelt 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 for å bruke txBuff. Location = 5 hundre = maske/100 txBuff. Value = serial_toChar (hundrevis) txBuff. Location = 6 tens = (mask-hundrevis)/10 txBuff. Value = serial_toChar (tens) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-hundred-tens) & aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & apendend the command serial_SendBufferEnd Sub & apos* ********************************************* og apos*Generelle serieprogrammer *& apo s *********************** ***** portSub serial_init () og aposinitialisere en knapp for å slå på og av serieporten (slå på for å kjøre, slå av for å programmere) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerialOB. Lenke (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue og aposinitialisere en hendelse for å buffere dataene våre serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. Operate. Operate. Operate. Operate. Operate_Event. Operate. Operate_Event. Operate. OperateReserve_Orseri. Reserver. Reserver. Reser. Reser_Reser. Resj. Resj. Reser. Resj. Reser). = 0 & aposinitialiser vår serielle port serialPort. Baud = cv9600 & aposinitialiser vår serielle status LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait her til vår serielle port blir aktivert Mens serialPort. Operate = cvFalse WendEnd Sub og mottar buffer og apotek pakkefylling Sub -serieRe ceive_Event_Code () & apos.received blir falsk når 4 -bytes buffer er tom Mens (serialPort. Received = cvTrue) & aposkopier byten til bufferen vår rxBuff. Value = serialPort. Value & aposcheck for slutten av pakken Hvis rxBuff. Value = 13 & aposacket -pakke) & aposetter tilbakestill bufferen til begynnelsen rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns på og av seriell port for programmeringSub toggleSerial_Event_Code () If serialPort. Operate = cvFalse serialPort. Type = cctiveForseAlle = cv serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposkonverterer et ett siffer tall til en characterFunction serial_toChar (inVal som Byte) Som Byte Dim retVal Som Byte Velg 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 Velg serial_toChar = retValEnd Funksjon & apos sen ds dataene i txBuff & apos Merk: sørg for at bufferen inneholder en vognretur (13) på slutten !! Sub serial_SendBuffer () & apositerer gjennom, send hver byte, slutt på vognreturen txBuff. Location = 0 Mens 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & apos kan ikke trenge dette & apossee hvis det var en vognretur Hvis txBuff. Value = 13 & aposbreak out of our loop Return End If & aposgo to the next character txBuff. Location = txBuff. Location + 1 WendEnd Sub
Trinn 4: Koble fra programmeringskontakten
Når programmeringskontakten er koblet fra, fest den nye kabelenheten som vist nedenfor. Adapteren som ble laget i trinn 1, bør gjøre det mulig å koble CMUCam direkte til OOPIC
Trinn 5: Trykk på knappen for å initialisere seriell kommunikasjon
Knappen på IOLine 5 starter den serielle kommunikasjonen mellom CMUCam og OOPIC. Siden serieporten brukes til både programmering og CMUCam, bør det sannsynligvis være en kontrollert måte å veksle mellom de to.
Programmet vil ikke kjøre før du trykker på denne knappen. Hvis du trykker på knappen igjen, blir den serielle porten inaktiv, slik at du kan programmere den. Lysdioden på IOLine 6 viser gjeldende seriell portstatus (på betyr aktiv, av betyr klar for programmering).
Anbefalt:
Forskjellen mellom (alternativ strøm og likestrøm): 13 trinn
Forskjellen mellom (alternativ strøm og likestrøm): Alle vet at elektrisitet stort sett er likestrøm, men hva med en annen type elektrisitet? Kjenner du Ac? Hva står AC for? Er det brukbart da DC? I denne studien vil vi vite forskjellen mellom elektrisitetstyper, kilder, anvendelser
RS485 Mellom Arduino og Raspberry Pi: 7 trinn
RS485 Mellom Arduino og Raspberry Pi: For skolen må jeg lage et prosjekt. Jeg velger å lage en smart drivhuskontroller fullstendig kontrollert av en bringebærpi. Sensorene vil bli drevet av en arduino uno. I løpet av månedene som følger vil jeg legge ut fremstillingen av dette prosjektet trinn ved
Øk klaring mellom kobberplanet og signalsporet: 3 trinn
Øk klaring mellom kobberplanet og signalsporet: Jeg er en hobbyist, og jeg designer Printed Circuit Boards (PCB) for blogger og Youtube -videoer. Jeg bestilte min PCB online fra LionCircuits. Det er et indisk selskap, og de har en automatisert plattform for produksjon. Den vurderer automatisk Ger
Grensesnitt mellom 3-akse gyroskopsensor BMG160 med partikkel: 5 trinn
Grensesnitt for 3-akset gyroskopsensor BMG160 med partikkel: I dagens verden er mer enn halvparten av ungdommen og barna glad i spill, og alle som er glad i det, fascinert av de tekniske aspektene ved spill, vet viktigheten av bevegelsesføling i dette domenet. Vi ble også overrasket over det samme
Hei Blynk! Grensesnitt mellom SPEEEduino og Blynk -appen: 5 trinn
Hei Blynk! Grensesnitt mellom SPEEEduino og Blynk-appen: Hva er SPEEEduino? SPEEEduino er et Wi-Fi-aktivert mikrokontrollerkort basert rundt Arduino-økosystemet, bygget for lærere. SPEEEduino kombinerer formfaktoren og mikrokontrolleren til Arduino med ESP8266 Wi-Fi SoC, noe som gjør