Fjärrstyrda webkamera med Arduino, SensorMonkey, jQuery och Justin.tv (2 / 7 steg)
Steg 2: Montera webbkameran, koppla Arduino och ladda upp skiss
Nästa, jag fästa din till toppen av tilt servo är monteringsfäste. I mitt fall hade jag helt enkelt ta bort (skruva) universal tillbehöret basera från botten av webbkameran och skruva enheten i ett av hålen i monteringsfästet. Beroende på din webbkamera, kan du behöva bifoga den på annat sätt (du kan alltid använda tejp om allt annat misslyckas!).
För att stabilisera hela församlingen, jag placera den i plast mini vice och fixa vice till en plan yta (dvs. upp på mitt skrivbord). Igen, beroende på dina komponenter, kan du ha andra krav. Så länge som webbkameran kan pan och tilt utan att falla det är allt som räknas.
Härifrån tråd jag servon till Arduino som visas i bilderna och kopplingsschemat (gjort med Fritzing). Tilt servo är anslutna till analoga pin 0, medan pan servo är ansluten till analoga stift 5. Arduino är ansluten till datorn med en USB kabel och drivs med hjälp av den externa strömförsörjningen genom inbyggda fat jack adapter.
Slutligen, för att kontrollera servon, jag ladda upp följande skiss till Arduino's microcontroller med utvecklingsmiljön:
#include < Servo.h >
Servo pan, tilt;
void setup() {
Pan.attach (A5);
Tilt.attach (A0);
Serial.BEGIN (9600); Öppna den seriella porten.
}
void loop() {
om (Serial.available()) {
byte b = Serial.read();
Mappa hög 4 bitar av inkommande byte att panorera rotationen i grader.
Pan.write (karta (b >> 4, 0, 0, 15 180));
fördröjning (15).
Mappa låg 4 bitar av inkommande byte att luta rotationen i grader.
Tilt.write (karta (b & 0x0F, 0, 0, 15 180));
fördröjning (15).
}
}
Skissen är mycket grundläggande. Det öppnar den seriella porten och läser byte en i taget. Varje byte antas innehålla ett pan och tilt rotation par; de höga 4 bitarna är pan rotation (0 till 15 inclusive) och de låga 4 bitarna är tilt rotation (0 till 15 inclusive). Detta ger 16 olika nivåer (dvs. 24) att välja mellan när det gäller varje dimension av rörelse och gör det enkelt att koda webbkamerans position med hjälp av hexadecimala teckenpar. Varje servo har ett utbud av 0 till 180 grader. Så, till exempel en hexadecimal tecken par 7A innebär 7/15 x 180 (84 grader) på pan axel och 10/15 x 180 (120 grader) på tilt-axeln. En hexadecimal tecken par 00 kodar en 0 graders rotation på båda pan och tilt axlar, medan FF kodar en full 180 graders rotation på både pan och tilt axlar. Mappningen för varje tecken visas nedan:
0 : 0 grader
1 : 12 grader
2 : 24 grader
3 : 36 grader
4 : 48 grader
5 : 60 grader
6 : 72 grader
7 : 84 grader
8 : 96 grader
9 : 108 grader
A : 120 grader
B : 132 grader
C : 144 grader
D : 156 grader
E : 168 grader
F : 180 grader
Om jag behövde finmaskig kontroll av servon rörelse, kunde jag koda pan och tilt rotationer som separata byte. I detta fall, dock med en enda byte endast är ett effektivt sätt att koda samordna systemet för styrning av två servon och ger tillräcklig motion räckvidd för en enkel webbkamera.