Tower Camera "Arduino Micro" ระดับ: 4 ขั้นตอน

Tower Camera "Arduino Micro" ระดับ: 4 ขั้นตอน

สารบัญ:

Anonim

ฉันมีกล้องขึ้นไปบนเสาที่ฉันใช้สำหรับการล่าดาวตกวิดีโอ ปัญหาหนึ่งที่ฉันมีคือทำให้แน่ใจว่าหอคอยอยู่ในระดับที่สูงที่สุด จะต้องมีระดับจริงๆเพื่อให้แน่ใจว่าสามารถมองเห็นขอบฟ้าทั้งหมดได้จากเลนส์ฟิชอายในกล้อง

ฉันเคยเห็นเครื่องมือปรับระดับเล็กน้อยต่าง ๆ สำหรับหอคอย แต่ไม่มีใช้งานง่าย ฉันคิดว่าฉันสามารถทำให้เหมาะกับความต้องการของฉันได้มากกว่านี้!

นอกจากนี้หลังจากลมแรงและพายุ บางครั้งหอคอยจะไม่ได้รับการเลเวลและฉันต้องทำให้มันลงมาและติดตั้งอุปกรณ์ปรับระดับของฉันใหม่ สิ่งที่ฉันต้องการคือวิธีแก้ปัญหาที่สามารถติดตั้งที่ด้านบนสุดของหอคอยในตัวเรือนกล้องที่ฉันสามารถมองเห็นได้จากพื้นดินในขณะที่ฉันปรับระดับหอคอย

ฉันมี Arduino Micro ที่ฉันเล่นด้วยและเซ็นเซอร์บางตัวจากชุด Parallax BoeBot ในนั้นฉันมีเข็มทิศและเซ็นเซอร์เอียง

ฉันตัดสินใจที่จะดูว่าฉันสามารถสร้างระดับฟองอิเล็กทรอนิกส์ที่เรียบง่ายเพื่อให้อยู่บนหอคอยและมุมมองจากพื้นดินเมื่อฉันต้องการที่จะยกระดับกล้อง

ในแอปพลิเคชันของฉันฉันใช้สายไฟลงไปที่ด้านล่างหอคอยและเพิ่งต่อแบตเตอรี่เมื่อฉันต้องการใช้ระดับ

ในคำแนะนำนี้ฉันต้องการแสดงให้คุณเห็นวิธีการตั้งค่า arduino แบบง่ายๆที่ใช้ "leveling bubble"

วัสดุ:

ขั้นตอนที่ 1: ชิ้นส่วนที่จำเป็น

ส่วนที่คุณต้องการสำหรับโครงการนี้คือ:

1. Arduino Micro

2มาตรความเร่ง 2125

3. เขียงหั่นขนมขนาดเล็ก

4. ความยาวหลายเส้น

5. ไฟ LED สีแดง 4 ดวงและไฟ LED สีเขียวหนึ่งดวง

ขั้นตอนที่ 2: ทฤษฎีการปฏิบัติน้อย

พื้นหลังเล็กน้อยเกี่ยวกับการทำงานของเซ็นเซอร์เอียง!

ภายในกล่องเล็ก ๆ ของเซ็นเซอร์เป็นแหล่งความร้อนขนาดเล็ก ในแต่ละด้านจะมีเซ็นเซอร์ความร้อนขนาดเล็กที่สามารถตรวจจับความร้อนที่เกิดขึ้นจากตรงกลางของบล็อก ในขณะที่เซ็นเซอร์เอียง ความร้อนนี้เพิ่มขึ้นไปยังเซ็นเซอร์ตัวใดตัวหนึ่งและโดยการเปรียบเทียบค่าที่อุปกรณ์สามารถรับรู้ได้ว่ามุมเอียงหรือไม่

Arduino อ่านข้อมูลนี้และแปลงเป็นการวัด X Y ที่สามารถใช้ส่องสว่างไฟ LED เพื่อระบุทิศทางการเอียง

ขั้นตอนที่ 3: การเชื่อมต่อทั้งหมด!

วาง Arduino Micro ลงบนเขียงหั่นขนมและให้แน่ใจว่าได้ออกจากห้องสำหรับเซ็นเซอร์และไฟ LED ของคุณ

คุณสามารถแยก LED ไปยังบอร์ด "display" แยกต่างหากได้ถ้าต้องการ

เชื่อมต่อ m2125 เข้ากับ Arduino Micro ด้วยวิธีต่อไปนี้

Digital Pin 2 ----- M2125 pin 5 (สายสีขาว)

Digital Pin 3 ----- M2125 pin 2 (สายสีส้ม)

กราวด์เพื่อ ----- M2125 หมุด 3 4 (สายดินทั้งหมดเป็นสีดำ)

5 volts ถึง ------ M2125 pin 6 (สายสีแดง)

กึ่งกลาง (LED สีเขียว) เพื่อปัก D5 (เส้นลวดสีน้ำเงินบนไดอะแกรม)

X ต่ำ (ไฟ LED สีแดงซ้าย) ไปยังขา D8 (เส้นสีม่วงบนไดอะแกรม)

บน X (ไฟ LED สีแดงขวา) เพื่อพิน D7 (เส้นลวดสีน้ำตาลบนไดอะแกรม)

Y บน (ไฟ LED สีแดงด้านบน) เพื่อพิน D6 (เส้นลวดสีเหลืองบนไดอะแกรม)

ลด Y (ไฟ LED สีแดงด้านล่าง) ลงที่ขา D13 (สายสีเขียวบนแผนภาพ)

ดูแผนภาพ

ขั้นตอนที่ 4: บอก Ardunio วิธีตรวจสอบเซ็นเซอร์

ตอนนี้เราจำเป็นต้องอัพโหลดภาพร่างไปที่ arduino ดังนั้นมันจะสามารถตรวจสอบผลลัพธ์จากเซ็นเซอร์ของเราและบอกให้เรารู้ว่ามันอยู่ในระดับ!

ภาพร่างนี้นอกจากแสงไฟ LED แล้วจะส่งสัญญาณการวัด X Y ไปยังอนุกรมหากคุณต้องการตรวจสอบข้อมูล

สตรีมฟีดในรูปแบบนี้: X (xvalue) Y (Yvalue)

IE X243Y165

แต่ละบรรทัดจะจบลงด้วยการคืนรถ

________________________________________________

// arduino micro led ระดับภาพ

const int X = 2; // X pin บน m2125

const int Y = 3; // Y พินบน m2125

การตั้งค่าเป็นโมฆะ () {

// ตั้งค่าอนุกรม

Serial.begin (9600);

// กำหนดพินเป็นเอาท์พุทสำหรับไฟ LED

สำหรับ (int i = 5; i <13; i ++) {

pinMode (i, OUTPUT);

}

pinMode (X, INPUT);

pinMode (Y, INPUT);

}

void loop () {

// อ่านในข้อมูลชีพจร

int pulseX, pulseY;

การเร่งความเร็ว int, การเร่งความเร็ว

pulseX = pulseIn (X, HIGH);

pulseY = pulseIn (Y, HIGH);

// แม็พข้อมูลกับ 0 ถึง 500

AccelerX = แผนที่ (pulseX, 3740, 6286, 0, 500);

การเร่งความเร็ว = แผนที่ (ชีพจร Y, 3740, 6370, 0, 500);

ถ้า (การเร่งความเร็ว X> 249 และการเร่งความเร็ว X <259 และการเร่งความเร็ว> 249 และการเร่งความเร็ว <259) {

digitalWrite (5,30);

}

อื่น {

digitalWrite (5,0);

}

ถ้า (การเร่งความเร็ว X <249) {

digitalWrite (8,30);

}

อื่น {digitalWrite (8,0);

}

ถ้า (การเร่งความเร็ว X> 261) {

digitalWrite (7,30);

}

อื่น {digitalWrite (7,0);

}

ถ้า (การเร่งความเร็ว <249) {

digitalWrite (13,30);

}

อื่น {digitalWrite (13,0);

}

if (เร่งความเร็ว> 261) {

digitalWrite (6,30);

}

อื่น {digitalWrite (6,0);

}

// ส่งข้อมูลไปยังซีเรียลในกรณีที่เราต้องการดูสิ่งที่ถูกรายงานและใช้พีซีในภายหลัง

Serial.print ("X");

Serial.print (accelerationX);

Serial.print ("Y");

Serial.print (accelerationY);

Serial.println ("");

// หน่วงข้อมูลฟีดให้เราไม่ใช้งานเกินอนุกรม

ล่าช้า (90);

}