Arduino Lightning Detector W / กราฟเวลาจริง: 3 ขั้นตอน (พร้อมรูปภาพ)

Arduino Lightning Detector W / กราฟเวลาจริง: 3 ขั้นตอน (พร้อมรูปภาพ)

สารบัญ:

Anonim

Hi! นี่เป็นคำสั่งแรกของฉันและฉันจะชอบข้อเสนอแนะ!

โครงการนี้เริ่มต้นหนึ่งวันเมื่อฉันรู้สึกเบื่อ ฉัน Googled 'โครงการ Arduino' และสิ่งนี้เกิดขึ้นในสนามเด็กเล่น Arduino

บันทึก: นี่ไม่ใช่ความคิดดั้งเดิมของฉันฉันค้นพบมันในสนามเด็กเล่น Arduino แต่นี่เป็นบทความต้นฉบับ: http://runtimeprojects.com/2016/02/a-lightning-detector-for-arduino/ ฉันได้ทำการแก้ไขโครงการซึ่งฉันคิดว่าอาจทำให้ดีขึ้น

คุณต้องการ:

  1. x1 Arduino

    (ฉันเริ่มจาก Uno แต่ลงเอยด้วยการใช้ Micro)

  2. x1 เขียงหั่นขนม

    (ในที่สุดคุณก็สามารถใช้ Perfboard ได้ฉันเดา)

  3. x4-7 สายจัมเปอร์

    (เพื่อเชื่อมต่อส่วนประกอบ)

  4. x1 แรงดัน Divider Circut

    คุณมีสองทางเลือก:

    1. x1 โพเทนชิออมิเตอร์
    2. ตัวต้านทาน x3
      1. x2 10K โอห์ม
      2. x1 3.3M โอห์ม

วัสดุ:

ขั้นตอนที่ 1: ความรู้สายฟ้าพื้นหลัง

เมื่อเกิดฟ้าผ่ามันจะปลดปล่อยพลังงานหลายชนิด คนส่วนใหญ่รู้ว่ามันปล่อยแสงและเสียง แต่ Lightning ยังปล่อยคลื่นวิทยุโดยเฉพาะในช่วง VLF (ความถี่ต่ำมาก) ไปยังช่วง LF (ความถี่ต่ำ) หรือประมาณ 3 ถึง 300 KHz ด้วย Arduino สามารถจับความถี่ได้ประมาณ 7 KHz ซึ่งอยู่ภายในขอบเขตความถี่ที่ปล่อยออกมา

ด้วยโครงการนี้เราควรจะสามารถรับสายฟ้าผ่าภายในระยะเวลาประมาณ 12.5 ไมล์ (20 กิโลเมตร)

ขั้นตอนที่ 2: วงจร

คำเตือน: สายฟ้าผ่าสามารถทำให้เกิดกระแสทั้งบวกและลบในสายดังนั้นโปรดปฏิบัติตามคำแนะนำอย่างระมัดระวัง 100% แน่ใจว่าตัวแบ่งแรงดันไฟฟ้าของคุณกำลังทำงานเพื่อหลีกเลี่ยงความเสียหายของ Arduino

วงจรนั้นง่ายมาก ส่วนที่ซับซ้อนที่สุดเรียกว่าตัวแบ่งแรงดันไฟฟ้าเพื่อป้องกัน Arduino ของเราไม่ให้เสียหายจากกระแสที่เกิดจากสายฟ้าผ่า

การเลือกพิษของคุณ: Voltage Dividers

มีวิธีการที่แตกต่างกันสองสามวิธีที่คุณสามารถใช้ตัวแบ่งแรงดันไฟฟ้าในวงจรของคุณ

ตัวเลือกที่ 1: ตัวต้านทาน

ถ้าคุณจะใช้ตัวต้านทานคุณจะต้องแนบมันดังในรูปที่ 2

ตัวเลือก 2: โพเทนชิออมิเตอร์

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

ขั้นตอนที่ 3: รหัส

มีโปรแกรมที่แตกต่างกันสองโปรแกรมที่ทำงานสำหรับการทำงานปกติ

ดาวน์โหลดรหัสและแผนภาพวงจรของฉันจาก Github

  1. Arduino

    โปรแกรม Arduino นั้นง่ายมาก

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

    Serial.begin (115200); // ตั้งค่าการสื่อสารแบบอนุกรมที่ 115200 baud

    pinMode (A4, INPUT); // กำหนดขาอะนาล็อก 4 เป็นอินพุต

    }

    void loop () {

    Serial.println (analogRead (A4)); // พิมพ์ค่าจากขา A4 ไปยังพอร์ตอนุกรม

    }

  2. การประมวลผล

    โปรแกรมประมวลผลมีความซับซ้อนกว่าเล็กน้อย

    นำเข้าการประมวลผล.serial. *;

    อนุกรม myPort; // พอร์ตอนุกรม

    int xPos = 1; // ตำแหน่งแนวนอนของกราฟลอยใน Byte = 0;

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

    // กำหนดขนาดหน้าต่าง (หมายเหตุ: สามารถปรับขนาดสำหรับหน้าจอของคุณ):

    ขนาด (1,000, 750);

    // แสดงรายการพอร์ตอนุกรมที่มีอยู่ทั้งหมด

    // หากใช้การประมวลผล 2.1 หรือใหม่กว่าให้ใช้ Serial.printArray ()

    println (Serial.list ());

    // เปิดพอร์ตใด ๆ ที่คุณใช้อยู่

    // เปลี่ยน 0 เป็น # ในรายการที่คุณใช้ (-1)

    myPort = new Serial (สิ่งนี้, Serial.list () 0, 115200);

    // อย่าสร้าง serialEvent () เว้นแต่คุณจะได้ตัวอักษรขึ้นบรรทัดใหม่:

    myPort.bufferUntil (' n');

    // set inital background:

    พื้นหลัง (0);

    }

    โมฆะวาด () {

    // วาดเส้น:

    จังหวะ (127, 34, 255);

    เส้น (xPos, height, xPos, height - inByte);

    // ที่ขอบของหน้าจอกลับไปที่จุดเริ่มต้น:

    if (xPos> = width) {

    xPos = 0;

    พื้นหลัง (0);

    }

    อื่น {

    // เพิ่มตำแหน่งแนวนอน:

    xPos ++;

    }

    }

    ถือเป็นโมฆะ serialEvent (Serial myPort) {

    // รับสตริง ASCII:

    String inString = myPort.readStringUntil (' n');

    if (inString! = null) {

    // ตัดส่วนที่เหลือออกจากช่องว่าง:

    inString = trim (inString);

    // แปลงเป็น int และแมปเป็นความสูงของหน้าจอ:

    inByte = float (inString);

    println (inByte);

    inByte = map (inByte, 0, 1023, 0, ความสูง);

    }

    }