Sommario:
- Passaggio 1: realizzazione del cavo adattatore
- Passaggio 2: modifica la velocità di trasmissione su CMUCam
- Passaggio 3: collegare il cavo di programmazione standard e caricare il codice
- Passaggio 4: scollegare il connettore di programmazione
- Passaggio 5: premere il pulsante per inizializzare la comunicazione seriale
Video: Interfacciare una CMUCam2 a un OOPIC: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:05
Di arsinioFollow More dell'autore:
Panoramica su come interfacciare una CMUCam2 a e OOPIC.
Passaggio 1: realizzazione del cavo adattatore
1. Vai a radioshack e acquista 2 di questi: connettore maschio DB-9 Solder Cup2. saldare il pin 5 del connettore A al pin 5 del connettore B (se si guarda bene il connettore, sono contrassegnati)3. saldare il pin 2 del connettore A al pin 3 del connettore B (se si guarda bene il connettore, sono contrassegnati)4. saldare il pin 3 del connettore A al pin 2 del connettore B (se si guarda bene il connettore, sono contrassegnati)
Passaggio 2: modifica la velocità di trasmissione su CMUCam
Modificare la velocità di trasmissione di CMUCamera a 9600 baud (aggiungere un ponticello alla posizione 0).
Passaggio 3: collegare il cavo di programmazione standard e caricare il codice
Collega il cavo di programmazione standard e carica il tuo codice. Ecco un esempio di codice per iniziare. Questo codice terrà traccia del movimento utilizzando i comandi LF e FD. Commuterà IOLine 7 (collegato a un LED) e rispecchierà il LED di stato di tracciamento su CMUCam.
&apos******** oggetti relativi alla porta seriale ********Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 &aposcambia 27 per rendere il buffer più grande/più piccoloDim 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 ******** debug di oggetti correlati ******** Dim statLED As New oDIO1&apos ******** **************************************&apos* Subroutine generiche *&apos****** ****************************************Sub main &aposinitialize tutto main_init &imposta la nostra maschera di output su segui solo il centro di massa CMUCAM_setOutputMask(2, 3) &aposcarica il nostro frame della differenza iniziale CMUCAM_loadDiffFrame() &aposavvia il calcolo della differenza CMUCAM_startDiffCalc(10)End SubSub main_init &aposinitialize a LED di stato statLED. IOLine = 7 statLED. Direction = cvOutput &aposinitialit nostro serial_init)Fine Su b&aposprocesses ha ricevuto i pacchettiSub processPacket() Dim mx As Byte Dim my As Byte &aposcontrolla che sia Mx che My siano 0 &aposconcesso se non sono 0, la posizione sarà disattivata (cioè &aposT 12 34) &aposma poi hanno vinto&apost soddisfano i criteri 0 rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value &apostthe led dovrebbe lampeggiare all'unisono con il LED tracking sulla telecamera If (mx = "0") And (my = "0") statLED = 0 Else statLED = 1 End IfEnd Sub&apos********************************************* ****&apos* Funzioni della camma CMU *&apos**************************************** *******&imposta il led indicato su on, off, automatic&aposparam ledNum numero di led (0, 1)&aposparam val off, on, auto (0, 1, 2)Funzione CMUCAM_ledSet(ledNum As Byte, val As Byte) Poiché Byte &aposVString funzionava correttamente nel nuovo compilatore… &aposnon sono sicuro del vecchio &apostxBuff. VString = "L0 0" &apossetup la nostra stringa di comando manualmente txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 &aposthe s La funzione tr$ fa schifo… quindi ora sta succedendo 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 il comando serial_SendBufferEnd Sub&aposcarica la differenza iniziale frameSub CMUCAM_loadDiffFrame() &apssetup la nostra stringa di comando manualmente txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff. Value = 13 &apsend il comando serial_SendBufferEnd Sub&aposstarts calcola le differenze di frame&aposparam soglia soglia (0-9)Sub CMUCAM_startDiffCalc(thresh As Byte) Dim tens As Byte &apossetup la nostra stringa di comando manualmente txBuff. Location = 0 txBuff. Value = "F." t 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = " " txBuff. Location = 3 decine = thresh/10 txBuff. Value = serial_toChar(tens) txBuff. Location = 4 decine = thresh/10 txBuff. Value = serial_toChar(thresh-decine) txBuff. Location = 5 txBuff. Value = 1 3 &apprende il comando serial_SendBufferEnd Sotto&imposta la maschera di output&aposparam packetType tipo di pacchetto da mascherare (0, 1, 2, ecc.) vedi pagina 46&aposparam mask valore maschera da applicare (0-255)Sub CMUCAM_setOutputMask(packetType As Byte, mask As Byte) Dim centinaia As Byte Dim ten As Byte &apossetup la nostra stringa di comando manualmente 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 per applicare txBuff. Location = 5 centinaia = mask/100 txBuff. Value = serial_toChar(centinaia) txBuff. Location = 6 decine = (maschera-centinaia)/10 txBuff. Value = serial_toChar(decine) txBuff. Location = 7 txBuff. Value = serial_toChar(maschera-centinaia-decine) &aposcarriage return txBuff. Location = 8 txBuff. Value = 13 &aprendo il comando serial_SendBufferEnd_SendBuffer *********************************************&apos* Subroutine seriali generali *&apo s**************************************************&aposinizializza il seriale portSub serial_init() &aposinitialize un pulsante per attivare e disattivare la porta seriale (accendi per eseguire, spegni per programmare) 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 &aposinitialize un evento per bufferizzare i nostri dati serialReceive_Wire. Input. Link(serialPort. Received) serialReceive_Wire. Output. Link(serialReceive_Event. Operate) serialReceiveBposiaRX bufferReceive_WireTrueRX = 0 &aposinitialize la nostra porta seriale serialPort. Baud = cv9600 &aposinitialize il nostro LED di stato seriale serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput &aposaspetta qui fino a quando la nostra porta seriale non viene attivata While serialPort. Operate = cvFalse WendEnd Sub&aposcopie i dati nel nostro buffer di ricezione e controlla completamento del pacchettoSub serialRe ceive_Event_Code() &apos.received diventa falso quando il buffer di 4 byte è vuoto While(serialPort. Received = cvTrue) &aposcopia il byte nel nostro buffer rxBuff. Value = serialPort. Value &aposcontrolla la fine del pacchetto If rxBuff. Value = 13 &aposprocess pacchetto processPacket() &aposreimposta il buffer all'inizio rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub&Attiva e disattiva la porta seriale per la programmazioneSub toggleSerial_Event_Code() If serialPort. Activte = cvFalse serialPort. Operate = cvLEDTrue serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub&converte un numero a una cifra in un characterFunction serial_toChar(inVal As Byte) As Byte Dim retVal As Byte Seleziona Case inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" Caso 3 retVal = "3" Caso 4 retVal = "4" Caso 5 retVal = "5" Caso 6 retVal = "6" Caso 7 retVal = "7" Caso 8 retVal = "8" Caso 9 retVal = "9" End Select serial_toChar = retValEnd Function&apos sen ds i dati contenuti in txBuff&apos Nota: assicurati che il buffer contenga un ritorno a capo (13) alla fine!!Sub serial_SendBuffer() &apositerate attraverso, inviando ogni byte, termina al ritorno a capo txBuff. Location = 0 Mentre 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 &apospot potrebbe non essere necessario &apossee se fosse un ritorno a capo If txBuff. Value = 13 &aposbreak out of our loop Return End If &aposvai al carattere successivo txBuff. Location = txBuff. Location + 1 WendEnd Sub
Passaggio 4: scollegare il connettore di programmazione
Una volta scollegato il connettore di programmazione, collegare il nuovo gruppo cavi come mostrato di seguito. L'adattatore realizzato nel passaggio 1 dovrebbe consentire il collegamento diretto di CMUCam all'OOPIC
Passaggio 5: premere il pulsante per inizializzare la comunicazione seriale
Il pulsante su IOLine 5 avvierà la comunicazione seriale tra CMUCam e OOPIC. Poiché la porta seriale viene utilizzata sia per la programmazione che per CMUCam, probabilmente dovrebbe esserci un modo controllato per alternare tra i due.
Il programma non verrà eseguito finché non si preme questo pulsante. Se premi nuovamente il pulsante, la porta seriale si disattiverà, permettendoti di programmarla. Il LED su IOLine 6 visualizza lo stato corrente della porta seriale (acceso significa attivo, spento significa pronto per la programmazione).
Consigliato:
COME INTERFACCIARE UN BUZZER PASSIVO CON ARDUINO: 4 Passaggi
COME INTERFACCIARE UN BUZZER PASSIVO CON ARDUINO: Fare suoni su arduino è un progetto interessante, questo può essere realizzato utilizzando diversi moduli e dispositivi a seconda del progetto e delle scelte. In questo progetto, esamineremo il modo in cui puoi emettere suoni con un cicalino. Cicalino usato da ho
Tutorial per interfacciare il sensore bussola HMC5883L con Arduino: 10 passaggi (con immagini)
Tutorial per interfacciare il sensore bussola HMC5883L con Arduino: Descrizione HMC5883L è una bussola digitale a 3 assi utilizzata per due scopi generali: misurare la magnetizzazione di un materiale magnetico come un ferromagnete, oppure misurare la forza e, in alcuni casi, la direzione del campo magnetico in un punto in s
Tutorial: come calibrare e interfacciare la cella di carico con Arduino UNO: 3 passaggi
Tutorial: come calibrare e interfacciare la cella di carico con Arduino UNO: Ciao ragazzi, vi mostreremo il tutorial: come calibrare e interfacciare la cella di carico o il modulo di bilanciamento HX711 con Arduino UNO. Descrizione del modulo di bilanciamento HX711: questo modulo utilizza 24 convertitore A/D di precisione. Questo chip è progettato per un'alta pre
Come interfacciare il joystick a doppio asse con Arduino Uno: 5 passaggi
Come interfacciare il joystick a doppio asse con Arduino Uno: Qui andremo ad interfacciare un joystick a due assi con arduino uno. Questo joystick ha due pin analogici per l'asse x e l'asse y e un pin digitale per l'interruttore
Come interfacciare una matrice LED 8x8 guidata MAX7219 con il microcontrollore ATtiny85: 7 passaggi
Come interfacciare una matrice LED 8x8 guidata MAX7219 con il microcontrollore ATtiny85: Il controller MAX7219 è prodotto da Maxim Integrated è un driver di visualizzazione a catodo comune di ingresso/uscita seriale compatto che può interfacciare i microcontrollori a 64 LED singoli, display LED numerici a 7 segmenti fino a 8 cifre, display grafico a barre