Spisu treści:
- Kieszonkowe dzieci:
- Krok 1: Potrzebne części
- Krok 2: Mała teoria działania.
- Krok 3: Hooking It All Up!
- Krok 4: Powiedz Ardunio, jak monitorować czujnik
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);
}