สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: เชื่อมต่อเซ็นเซอร์น้ำกับอนุภาค
- ขั้นตอนที่ 2: เชื่อมต่อแหล่งสัญญาณเตือนภัยกับ Raspberry
- ขั้นตอนที่ 3: กำหนดค่า Apache Server
- ขั้นตอนที่ 4: เปิดใช้งาน CGI บน Apache
- ขั้นตอนที่ 5: ตั้งค่าเว็บเพจ
- ขั้นตอนที่ 6: สร้างสคริปต์สำหรับกล้อง Raspi
วีดีโอ: วิธีทำระบบเตือนภัยตรวจจับน้ำท่วมอัจฉริยะโดยใช้ Raspberry Pi และ Particle Argon: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
การมีเซ็นเซอร์ตรวจจับน้ำท่วมแบบมาตรฐานนั้นยอดเยี่ยมในการป้องกันความเสียหายอย่างใหญ่หลวงต่อบ้านหรือที่ทำงานของคุณ
แต่มันทำให้ยากถ้าคุณไม่อยู่บ้านเพื่อเข้าร่วมการเตือนภัย
แน่นอนคุณสามารถซื้อสมาร์ทเหล่านั้นได้
ระบบเตือนภัยน้ำท่วมนี้จะตรวจจับของเหลวใดๆ และกระตุ้นการแจ้งเตือนและอัปเดตหน้าเว็บเกี่ยวกับน้ำท่วมซึ่งสามารถเข้าถึงได้จากทุกที่ในโลก ไม่ว่าคุณจะกำลังพักผ่อนในวันหยุดหรือแค่ทำงาน และต้องการทราบสถานะบ้านของคุณ
เสบียง
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
บนเขียงหั่นขนม คุณสามารถเชื่อมต่อ Buzzer กับ GPIO pin. ของ Raspberry
ฉันได้เชื่อมต่อปลายออดที่เล็กกว่ากับ GND (PIN 6) และปลายด้านที่ยาวขึ้นเพื่อพิน 7 บนราสเบอร์รี่
ตอนนี้เรียกใช้รหัสเพื่อดู. เราต้องการให้ไฟล์ python นี้ทำงานอยู่ตลอดเวลา เพื่อรับทริกเกอร์จากเว็บเซิร์ฟเวอร์และตอบสนองตามนั้น
หรือคุณสามารถเรียกใช้ไฟล์นี้เมื่อเริ่มต้นระบบบนราสเบอร์รี่ของคุณ ซึ่งคุณสามารถทำได้โดยแก้ไข /etc/systemd
และไฟล์นี้จะอยู่ในโฟลเดอร์ cgi ของเซิร์ฟเวอร์ apache ของคุณ
ฉันได้สร้างไดเร็กทอรีใหม่ flood-cgi ภายใน /var/www/html/ และวางไฟล์.py นี้ ซึ่งจะสื่อสารกับสคริปต์ cgi ของฉัน
ขั้นตอนที่ 3: กำหนดค่า Apache Server
คุณสามารถติดตั้งเซิร์ฟเวอร์ apache ได้โดยพิมพ์ sudo apt-get install apache2
เมื่อติดตั้งแล้ว สามารถยืนยันได้โดยพิมพ์ชื่อโฮสต์ -I
และคุณจะได้รับที่อยู่ IP ในพื้นที่ของคุณและคุณสามารถไปที่เบราว์เซอร์ของคุณและควรเห็นเซิร์ฟเวอร์ทำงานอยู่
ขั้นตอนที่ 4: เปิดใช้งาน 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)
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ