Wieża kamery „Arduino Micro” Poziom: 4 kroki

Wieża kamery „Arduino Micro” Poziom: 4 kroki

Spisu treści:

Anonim

Mam kamerę na słupie, którego używam do polowania na meteory. Jednym z problemów, jakie miałem, jest upewnienie się, że wieża jest pozioma na szczycie. Musi być naprawdę poziomo, aby cały horyzont był widoczny dla obiektywu typu „rybie oko” w aparacie.

Widziałem różne małe narzędzia do poziomowania wież, ale żadne nie były łatwe w użyciu. Pomyślałem, że mogę zrobić coś bardziej dopasowanego do moich potrzeb!

Również po silnym wietrze i burzach. Czasami wieża traciła poziom i musiałabym ją sprowadzić i ponownie przymocować sprzęt do poziomowania. Potrzebowałem rozwiązania, które można było ustawić na szczycie wieży w obudowie kamery, które widziałem z ziemi, gdy robiłem niwelację wież.

Miałem Arduino Micro, z którym grałem i niektóre czujniki z zestawu Parallax BoeBot. w nim miałem kompas i czujnik pochylenia.

Postanowiłem sprawdzić, czy uda mi się zbudować prosty poziomica elektroniczna, aby utrzymać ją na wieży i oglądać z ziemi, gdy będę musiał wypoziomować kamerę.

W mojej aplikacji uruchamiam linie energetyczne do dołu wieży i po prostu podłączam baterię, gdy muszę użyć poziomu.

W tym podręczniku chciałbym pokazać, jak skonfigurować prostą „bańkę poziomującą” opartą na arduino

Kieszonkowe dzieci:

Krok 1: Potrzebne części

Części potrzebne do tego projektu to:

1. An Arduino Micro

2.akcelerometr 2125.

3. Mała deska do krojenia chleba

4. Kilka długości drutu.

5. 4 czerwone diody LED i jedna zielona dioda LED

Krok 2: Mała teoria działania.

Trochę informacji o tym, jak działa czujnik przechyłu!

Wewnątrz małego pudełka na czujniku jest małe źródło ciepła. po każdej stronie znajdują się małe czujniki termiczne, które mogą wykrywać ciepło wytwarzane przez środek bloku. gdy czujnik jest przechylony. To ciepło unosi się w kierunku jednego z czujników i porównując wartości, które urządzenie może wykryć, pod jakim kątem jest przechylany.

Arduino odczytuje te dane i przekształca je w pomiar X Y, który może być użyty do podświetlenia diod LED w celu wskazania kierunku pochylenia.

Krok 3: Hooking It All Up!

Umieść Arduino Micro na desce do krojenia chleba i upewnij się, że zostawiłeś trochę miejsca na czujnik i diody LED.

W razie potrzeby można wyłamać diody LED na osobną tablicę „wyświetlacza”.

Podłącz m2125 do Arduino Micro w następujący sposób.

Pin cyfrowy 2 ----- M2125 pin 5 (biały przewód)

Pin cyfrowy 3 ----- M2125 pin 2 (pomarańczowy przewód)

Ground to ----- M2125 pin 3 4 (wszystkie przewody uziemiające są czarne)

5 V do ------ M2125 pin 6 (czerwone przewody)

Środek (zielona dioda) do styku D5 (niebieski przewód na schemacie)

niższy X (czerwona dioda lewa) na pin D8 (fioletowy przewód na schemacie)

górny X (prawa czerwona dioda) do styku D7 (brązowy przewód na schemacie)

górny Y (górna czerwona dioda) do styku D6 (żółty przewód na schemacie)

Dolna Y (dolna czerwona dioda) do styku D13 (zielony przewód na schemacie)

Patrz schemat

Krok 4: Powiedz Ardunio, jak monitorować czujnik

Teraz musimy załadować szkic do arduino, aby mógł monitorować wyjście z naszego czujnika i powiedzieć nam, że wszystko jest na poziomie!

Ten szkic, oprócz podświetlenia diod LED, wyśle ​​również pomiary X Y do szeregowego, jeśli chcesz monitorować dane

Strumień jest podawany w tym formacie: X (wartość x) Y (wartość Y)

TO ZNACZY. X243Y165

każda linia kończy się zwrotem carrage.

________________________________________________

// arduino mikro led poziom wizualny

const int X = 2; // X pin na m2125

const int Y = 3; // Y pin na m2125

void setup () {

// skonfiguruj serial

Serial.begin (9600);

// ustaw szpilki na wyjście dla diod LED

for (int i = 5; i <13; i ++) {

pinMode (i, OUTPUT);

}

pinMode (X, INPUT);

pinMode (Y, INPUT);

}

void loop () {

// odczyt danych pulsu

int pulseX, pulseY;

int accelerationX, accelerationY;

pulseX = pulseIn (X, HIGH);

pulseY = pulseIn (Y, HIGH);

// zmapuj dane między 0 a 500

przyspieszenieX = mapa (pulseX, 3740, 6286, 0, 500);

przyspieszenieY = mapa (pulseY, 3740, 6370, 0, 500);

if (przyspieszenie X> 249 i przyspieszenieX <259 i przyspieszenieY> 249 i przyspieszenieY <259) {

digitalWrite (5,30);

}

inaczej {

digitalWrite (5,0);

}

if (accelerationX <249) {

digitalWrite (8,30);

}

else {digitalWrite (8,0);

}

if (accelerationX> 261) {

digitalWrite (7,30);

}

else {digitalWrite (7,0);

}

if (accelerationY <249) {

digitalWrite (13,30);

}

else {digitalWrite (13,0);

}

if (accelerationY> 261) {

digitalWrite (6,30);

}

else {digitalWrite (6,0);

}

// Wyślij dane do portu szeregowego na wypadek, gdybyśmy chcieli zobaczyć, co jest zgłaszane, a następnie użyć komputera

Serial.print („X”);

Serial.print (accelerationX);

Serial.print („Y”);

Serial.print (przyspieszenieY);

Serial.println ("");

// opóźnij przesyłanie danych, aby nie przekroczyć numeru seryjnego

opóźnienie (90);

}