Tour de caméra "Arduino Micro" Niveau: 4 étapes

Tour de caméra "Arduino Micro" Niveau: 4 étapes

Table des matières:

Anonim

J'ai une caméra sur un poteau que j'utilise pour la chasse au météore vidéo. L’un des problèmes que j’ai eu à faire est de s’assurer que la tour est au même niveau. Il doit être vraiment de niveau pour s'assurer que tout l'horizon est visible par l'objectif fisheye de la caméra.

J'ai vu divers petits outils de mise à niveau pour les tours mais aucun n'était facile à utiliser. Je pensais pouvoir en fabriquer un plus adapté à mes besoins!

Aussi après le vent fort et les tempêtes. Parfois, la tour devenait mal nivelée et je devais la ramener et rattacher mon équipement de nivellement. J'avais besoin d'une solution pouvant être installée au sommet de la tour dans le boîtier de la caméra, que je pouvais voir depuis le sol tout en nivelant les tours.

J'avais joué avec un Arduino Micro et des capteurs d'un kit BoeBot de Parallax. à l'intérieur, j'avais un compas et un capteur d'inclinaison.

J'ai décidé de voir si je pouvais construire un simple niveau à bulle électronique pour rester sur la tour et voir du sol lorsque j'avais besoin de mettre la caméra à niveau.

Dans mon application, je dirige les lignes électriques jusqu'au bas de la tour et connecte une batterie lorsque je dois utiliser le niveau.

Dans cette instructable, je voudrais vous montrer comment mettre en place une simple "bulle de mise à niveau" basée sur un arduino

Provisions:

Étape 1: Pièces nécessaires

Les pièces dont vous aurez besoin pour ce projet sont:

1. Un micro Arduino

2un accéléromètre 2125

3. une petite planche à pain

4. Plusieurs longueurs de fil.

5. 4 DEL rouges et une DEL verte

Étape 2: Un peu de théorie de l'opération.

Un peu de contexte sur le fonctionnement du capteur d'inclinaison!

À l'intérieur de la petite boîte sur le capteur se trouve une source de chaleur infime. de chaque côté se trouvent de petits capteurs thermiques capables de détecter la chaleur générée par le milieu du bloc. comme le capteur est incliné. Cette chaleur monte vers l'un des capteurs et, en comparant les valeurs, l'appareil peut détecter l'angle d'inclinaison.

L'Arduino lit ces données et les convertit en une mesure X Y pouvant être utilisée pour allumer des voyants indiquant le sens d'inclinaison.

Étape 3: Tout brancher!

Placez le Arduino Micro sur la planche à pain et assurez-vous de laisser un peu de place pour votre capteur et vos voyants.

Vous pouvez séparer les voyants sur une carte d'affichage séparée si nécessaire.

Connectez le m2125 à l’Arduino Micro de la manière suivante.

Broche numérique 2 ----- M2125 broche 5 (fil blanc)

Broche numérique 3 ----- M2125 broche 2 (fil orange)

Mise à la terre à ----- M2125 broches 3 4 (tous les fils de terre sont en noir)

5volts à ------ M2125, broche 6 (fils rouges)

Centre (led verte) sur la broche D5 (fil bleu sur le schéma)

X inférieur (led rouge gauche) jusqu'à la broche D8 (fil violet sur le schéma)

X supérieur (Led rouge droite) jusqu'à la broche D7 (fil marron sur le schéma)

Y supérieur (led rouge du haut) à la broche D6 (fil jaune sur le schéma)

Y inférieur (led rouge en bas) à la broche D13 (fil vert sur le schéma)

Voir schéma

Étape 4: Expliquez à Ardunio comment surveiller le capteur

Nous devons maintenant charger un dessin dans l’arduino pour qu’il puisse contrôler la sortie de notre capteur et nous dire que tout est au niveau!

En plus d’allumer les LED, cette esquisse produira également les mesures X Y en série si vous souhaitez surveiller les données.

Le flux sort dans ce format: X (xvalue) Y (Yvalue)

C'EST À DIRE. X243Y165

chaque ligne se termine par un retour de carrosserie.

________________________________________________

// niveau visuel arduino micro led

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

const int Y = 3; // broche Y sur m2125

void setup() {

// mettre en place une série

Serial.begin (9600);

// définit les broches à afficher pour les leds

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

pinMode (i, OUTPUT);

}

pinMode (X, INPUT);

pinMode (Y, INPUT);

}

boucle vide () {

// lire les données du pouls

int pulseX, pulseY;

int accélerationX, accélérationY;

pulseX = pulseIn (X, HIGH);

impulsionY = impulsionIn (Y, HAUT);

// mappe les données entre 0 et 500

accelerationX = carte (pulseX, 3740, 6286, 0, 500);

accélérationY = carte (impulsionY, 3740, 6370, 0, 500);

if (accélérationX> 249 et accélérationX <259 et accélérationY> 249 et accélérationY <259) {

écriture numérique (5,30);

}

autre {

écriture numérique (5,0);

}

si (accélérationX <249) {

digitalWrite (8,30);

}

else {digitalWrite (8,0);

}

si (accélérationX> 261) {

écriture numérique (7,30);

}

else {digitalWrite (7,0);

}

si (accélérationY <249) {

digitalWrite (13,30);

}

else {digitalWrite (13,0);

}

si (accélérationY> 261) {

écriture numérique (6,30);

}

else {digitalWrite (6,0);

}

// Envoie les données à la série au cas où nous aimerions voir ce qui est rapporté et l'utilisation possible par un ordinateur ultérieurement

Serial.print ("X");

Serial.print (accelerationX);

Serial.print ("Y");

Serial.print (accélérationY);

Serial.println ("");

// retarde le flux de données pour ne pas dépasser le numéro de série

retarder (90);

}