สารบัญ:

วิธีทำระบบเตือนภัยตรวจจับน้ำท่วมอัจฉริยะโดยใช้ Raspberry Pi และ Particle Argon: 6 ขั้นตอน
วิธีทำระบบเตือนภัยตรวจจับน้ำท่วมอัจฉริยะโดยใช้ Raspberry Pi และ Particle Argon: 6 ขั้นตอน

วีดีโอ: วิธีทำระบบเตือนภัยตรวจจับน้ำท่วมอัจฉริยะโดยใช้ Raspberry Pi และ Particle Argon: 6 ขั้นตอน

วีดีโอ: วิธีทำระบบเตือนภัยตรวจจับน้ำท่วมอัจฉริยะโดยใช้ Raspberry Pi และ Particle Argon: 6 ขั้นตอน
วีดีโอ: โปรเจค ชุดวัดออกซิเจนในเลือด SPO2 - MAX30105 2024, พฤศจิกายน
Anonim
Image
Image
วิธีการสร้างระบบเตือนภัยตรวจจับน้ำท่วมอัจฉริยะโดยใช้ Raspberry Pi และ Particle Argon
วิธีการสร้างระบบเตือนภัยตรวจจับน้ำท่วมอัจฉริยะโดยใช้ Raspberry Pi และ Particle Argon

การมีเซ็นเซอร์ตรวจจับน้ำท่วมแบบมาตรฐานนั้นยอดเยี่ยมในการป้องกันความเสียหายอย่างใหญ่หลวงต่อบ้านหรือที่ทำงานของคุณ

แต่มันทำให้ยากถ้าคุณไม่อยู่บ้านเพื่อเข้าร่วมการเตือนภัย

แน่นอนคุณสามารถซื้อสมาร์ทเหล่านั้นได้

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

เสบียง

Raspberry pi (ฉันใช้รุ่น 3 B+) รัน raspbian

อนุภาคอาร์กอน

เซ็นเซอร์น้ำโกรฟ

กล้อง Raspi

Buzzer

สายจัมเปอร์

ขั้นตอนที่ 1: เชื่อมต่อเซ็นเซอร์น้ำกับอนุภาค

เชื่อมต่อเซ็นเซอร์น้ำกับอนุภาค
เชื่อมต่อเซ็นเซอร์น้ำกับอนุภาค
เชื่อมต่อเซ็นเซอร์น้ำกับอนุภาค
เชื่อมต่อเซ็นเซอร์น้ำกับอนุภาค

เซ็นเซอร์น้ำมี 4 พิน คือ GND, VCC, NC และ SIG โดยเราจะใช้แค่ 3 ตัวเท่านั้น

ฉันกำลังเชื่อมต่อ SIG pin กับ D2 บน Argon

ตอนนี้คุณสามารถเปิด Particle Web IDE เพื่อเขียนโค้ดและแฟลชไปที่ Argon

ดังนั้นเราจึงลงทะเบียนของเหลวฟังก์ชั่นอนุภาคและกำหนดตัวแปร isFloodPresent ที่สามารถเรียกได้จาก Particle Console และรับค่าบูลีนของ isFloodPresent และยังเรียกฟังก์ชั่น liquid สำหรับการทดสอบจำลองที่ใช้ค่า 1 เป็นอินพุตซึ่งหมายถึงจริงสำหรับน้ำท่วม (น้ำ) ปัจจุบัน.

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

ขั้นตอนที่ 2: เชื่อมต่อแหล่งสัญญาณเตือนภัยกับ Raspberry

เชื่อมต่อแหล่งสัญญาณเตือนภัยกับ Raspberry
เชื่อมต่อแหล่งสัญญาณเตือนภัยกับ Raspberry

บนเขียงหั่นขนม คุณสามารถเชื่อมต่อ Buzzer กับ GPIO pin. ของ Raspberry

ฉันได้เชื่อมต่อปลายออดที่เล็กกว่ากับ GND (PIN 6) และปลายด้านที่ยาวขึ้นเพื่อพิน 7 บนราสเบอร์รี่

ตอนนี้เรียกใช้รหัสเพื่อดู. เราต้องการให้ไฟล์ python นี้ทำงานอยู่ตลอดเวลา เพื่อรับทริกเกอร์จากเว็บเซิร์ฟเวอร์และตอบสนองตามนั้น

หรือคุณสามารถเรียกใช้ไฟล์นี้เมื่อเริ่มต้นระบบบนราสเบอร์รี่ของคุณ ซึ่งคุณสามารถทำได้โดยแก้ไข /etc/systemd

และไฟล์นี้จะอยู่ในโฟลเดอร์ cgi ของเซิร์ฟเวอร์ apache ของคุณ

ฉันได้สร้างไดเร็กทอรีใหม่ flood-cgi ภายใน /var/www/html/ และวางไฟล์.py นี้ ซึ่งจะสื่อสารกับสคริปต์ cgi ของฉัน

ขั้นตอนที่ 3: กำหนดค่า Apache Server

กำหนดค่าเซิร์ฟเวอร์ Apache
กำหนดค่าเซิร์ฟเวอร์ Apache

คุณสามารถติดตั้งเซิร์ฟเวอร์ apache ได้โดยพิมพ์ sudo apt-get install apache2

เมื่อติดตั้งแล้ว สามารถยืนยันได้โดยพิมพ์ชื่อโฮสต์ -I

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

ขั้นตอนที่ 4: เปิดใช้งาน CGI บน Apache

เปิดใช้งาน CGI บน Apache
เปิดใช้งาน CGI บน Apache

คุณสามารถเปิดใช้งาน cgi โดยพิมพ์ sudo a2enmod cgi

โดยค่าเริ่มต้น cgi_bin ของ apache จะอยู่ใน /usr/lib/cgi-bin

นี่คือที่ที่คุณสามารถใส่สคริปต์ cgi ของคุณหลังจากเปิดใช้งาน cgi

เพื่อให้มีผลคุณต้องรีสตาร์ทเซิร์ฟเวอร์ apache

ฉันต้องการไดเร็กทอรีที่กำหนดเองสำหรับสคริปต์ cgi ของฉัน ดังนั้นฉันจึงสร้างไดเร็กทอรีใน /var/www/html/ ที่เรียกว่า flood-cgi

เพื่อเปิดใช้งานไดเร็กทอรีนี้ ฉันต้องสร้างไฟล์ conf โดยพิมพ์

sudo nano /etc/apache2/conf-available/flood-cgi.conf

และเพิ่มคำสั่งตามที่แสดงในภาพหน้าจอ

จากนั้นเปิดใช้งานไดเร็กทอรีนี้โดยพิมพ์

var/www/html $ sudo a2enconf flood-cgi

ตอนนี้คุณสามารถรีสตาร์ทเซิร์ฟเวอร์ apache ของคุณอีกครั้งและ cgi ทั้งหมดจากโฟลเดอร์นี้จะสามารถอ่านได้โดย apache หลังจากได้รับอนุญาต

ขั้นตอนที่ 5: ตั้งค่าเว็บเพจ

ตั้งค่าเว็บเพจ
ตั้งค่าเว็บเพจ

สำหรับบริการเว็บอย่างง่ายนี้ ฉันใช้ HTML, Javascript, CSS, jquery และ ajax

ฉันมีป้ายควบคุมห้าป้ายที่คลิกได้

ในกรณีที่มีการคลิกถ่ายภาพจากหน้าเว็บจะเรียกใช้ฟังก์ชันการคลิกปุ่มรูปถ่ายและฟังก์ชันนี้จะมีลักษณะดังนี้

$("#photobutton").click(function() { var floodDate = วันที่ใหม่();

var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();

$.ajax({

URL: 'flood-cgi/flood_cgi.py', วิธีการ: 'โพสต์', ข้อมูล: { name_for_image: floodImageName }, ความสำเร็จ: ฟังก์ชัน (ข้อมูล) {

การแจ้งเตือน (ข้อมูล สถานะ)

$("#recentpic").attr("src", "flood-cgi/" + floodImageName + ".jpg");

}

})

});

สิ่งนี้จะเรียกสคริปต์ flood_cgi.py เพื่อถ่ายภาพและบันทึกภาพด้วยชื่อที่กำหนดเองซึ่งสร้างโดยวันที่และเวลาปัจจุบันและ ajax จะโหลดขึ้นหน้า

ในกรณี Alarm เราสามารถใช้ฟังก์ชั่นนี้

ฟังก์ชัน callAlarm (alarmType) {

$.ajax({

URL: 'flood-cgi/alarm.cgi', วิธีการ: 'โพสต์'

ข้อมูล: { alarm_type: alarmType }, ความสำเร็จ: ฟังก์ชั่น (ข้อมูล) { การแจ้งเตือน (ข้อมูล)

} ข้อผิดพลาด: ฟังก์ชัน (XMLHttpRequest, textStatus, throwError) { alert(throwError) } });

}

ฟังก์ชัน callAlarm จะถูกเรียกเมื่อคลิกป้ายกำกับ Buzzer

$("#buzzer").click(function() { callAlarm("test");

})

รหัสด้านล่างคือเมื่อคุณต้องการคลิกจำลองน้ำท่วมเช่นเรียก Particle API และเรียกใช้ฟังก์ชันและเปลี่ยนค่าของเหลว 1 และตรวจสอบว่าระบบทั้งหมดทำงานตามที่คาดไว้หรือไม่โดยดำเนินการจำลองเหตุการณ์น้ำท่วม

$("#mockFlood").click(function () { console.log("mock flood has beenร้องขอ");

วาน้ำท่วมVal = 1;

$("#signal2").css("ขนาดตัวอักษร", "เล็ก");

var varName = "isFloodPresent";

var deviceID = "ID อุปกรณ์ของคุณ";

var accessToken = "โทเค็นการเข้าถึงของคุณ";

ถ้า (floodVal) {

$.post("https://api.particle.io/v1/devices/" + deviceID + "/liquid?access_token=" + accessToken, { ของเหลว: floodVal }, ฟังก์ชัน (ข้อมูล สถานะ) {

ถ้า (สถานะ == "สำเร็จ") {

alert("จำลองสถานการณ์น้ำท่วม!!!");

} อื่น {

alert("ขออภัย เกิดปัญหาขึ้น");

}

});

}

});

นี่คือหน้าที่หลักที่คุณต้องใช้ในการเชื่อมต่อกับ Particle Api และราสเบอร์รี่ของคุณ เพื่อให้ Raspberry Pi และอุปกรณ์อนุภาค Argon สามารถสื่อสารกันได้

หมายเหตุ: ฉันต้องการอัปโหลดโค้ดทั้งหมด แต่ไม่อนุญาตให้อัปโหลด.html file

ขั้นตอนที่ 6: สร้างสคริปต์สำหรับกล้อง Raspi

เรากำลังสร้าง.py แบบง่าย ๆ เพื่อจับภาพและจะมีคำอธิบายประกอบของวันที่และเวลาปัจจุบันอยู่ด้วย

จากนั้นเราจะสร้างสคริปต์ cgi flood_cgi.py เพื่อให้เรียกใช้จากเว็บและจะสั่งให้ไฟล์.py ถ่ายภาพ

อย่าลืมเริ่มสคริปต์ cgi ด้วย #! /usr/bin/env python

และยังให้สิทธิ์ apache ในการเรียกใช้ไฟล์เหล่านี้

เซิร์ฟเวอร์ apache ทำงานบน www-data ของผู้ใช้ ดังนั้นเมื่อเราสร้างไฟล์.py หรือ.cgi แล้ว apache จะต้องเป็นเจ้าของไฟล์

sudo chown pi:www-data flood-cgi.py

และอนุญาตให้ดำเนินการ

sudo chmod a+x flood-cgi.py

คุณจะต้องทำเช่นนี้กับไฟล์ทั้งหมดที่ต้องเรียกใช้จากเซิร์ฟเวอร์ apache

หมายเหตุ: การเปิดเผยราสเบอร์รี่ของคุณสู่อินเทอร์เน็ตและการอนุญาตทั้งหมดเหล่านี้ทำให้ราสเบอร์รี่ของคุณเสี่ยงมากสำหรับเหตุผลด้านความปลอดภัย ดังนั้นผู้ใช้และการอนุญาตที่เข้มงวดควรปฏิบัติตามและติดตั้งไฟร์วอลล์เช่นไฟร์วอลล์ที่ไม่ซับซ้อน (ufw)

แนะนำ: