- ส่วนประกอบที่จำเป็น
- แผนภูมิวงจรรวม
- การตั้งค่าขวดใน Raspberry Pi สำหรับการควบคุมประตูโรงรถ
- การสร้างสคริปต์ Python สำหรับที่เปิดประตูโรงรถอัจฉริยะ
- การสร้างหน้า HTML สำหรับ Raspberry Pi Webserver
- {{pins.name}} {% ถ้า pins.state ==% จริง} ปัจจุบันคือเปิด
ในยุคของ IoT (Internet of Things) ที่ควบคุมทุกอย่างได้จากระยะไกลโดยใช้สมาร์ทโฟนของคุณทำไมต้องพกกุญแจติดตัวไปด้วย มีเทคโนโลยีมากมายที่รองรับการควบคุมอุปกรณ์แบบไร้สายเช่น RFID, Bluetooth, Wi-Fi, LoRa ก่อนหน้านี้เราได้สร้างสัญญาณเตือนประตูและวงจรควบคุมประตูเพื่อเปิดและปิดประตูแบบไร้สาย:
- ล็อคประตู Arduino RFID
- เครื่องเปิดประตูอัตโนมัติโดยใช้ Arduino
- วงจรสัญญาณเตือนประตูแม่เหล็กโดยใช้ Hall Sensor
- สัญญาณเตือนความปลอดภัยประตูที่ใช้ IoT ควบคุมโดย Google Assistant
ที่นี่ในการกวดวิชานี้เราจะสร้างที่เปิดประตูโรงรถสมาร์ทโดยใช้ราสเบอร์รี่ Pi ที่นี่เว็บเซิร์ฟเวอร์ Raspberry Pi จะถูกสร้างขึ้นเพื่อเปิดและปิดประตูโรงรถโดยใช้สมาร์ทโฟนของคุณ
ส่วนประกอบที่จำเป็น
- บอร์ด Raspberry pi ที่ติดตั้ง Raspbian อยู่
- โมดูลรีเลย์
- การเชื่อมต่อสายไฟ
สันนิษฐานว่า Raspberry Pi ของคุณมีแฟลชระบบปฏิบัติการอยู่แล้วและสามารถเชื่อมต่ออินเทอร์เน็ตได้ หากไม่เป็นเช่นนั้นให้ทำตามบทแนะนำการเริ่มต้นใช้งาน Raspberry Pi ก่อนดำเนินการต่อ ที่นี่เราจะใช้ Rasbian เจสซีติดตั้ง Raspberry Pi 3
ที่นี่ External Monitor โดยใช้สาย HDMI ใช้เป็นจอแสดงผลเพื่อเชื่อมต่อกับ Raspberry Pi หากคุณไม่มีจอภาพคุณสามารถใช้ไคลเอนต์ SSH (Putty) หรือเซิร์ฟเวอร์ VNC เพื่อเชื่อมต่อกับ Raspberry pi โดยใช้แล็ปท็อปหรือคอมพิวเตอร์ เรียนรู้เพิ่มเติมเกี่ยวกับการตั้งค่า Raspberry Pi อย่างไม่ต้องสงสัยที่นี่
แผนภูมิวงจรรวม
เชื่อมต่อกลไกการเปิดประตูโรงรถเข้ากับเอาต์พุตของรีเลย์ ที่นี่เราเพิ่งเชื่อมต่อ LED กับรีเลย์เพื่อการสาธิต
การตั้งค่าขวดใน Raspberry Pi สำหรับการควบคุมประตูโรงรถ
ที่นี่เราได้สร้างเว็บเซิร์ฟเวอร์โดยใช้ Flaskซึ่งมีวิธีการ ส่งคำสั่งจากหน้าเว็บไปยัง Raspberry Pi เพื่อควบคุม Robot ผ่านเครือข่าย Flask ช่วยให้เราสามารถเรียกใช้สคริปต์ python ของเราผ่านหน้าเว็บและเราสามารถส่งและรับข้อมูลจาก Raspberry Pi ไปยังเว็บเบราว์เซอร์และในทางกลับกัน Flask เป็นไมโครเฟรมเวิร์คสำหรับ Python เครื่องมือนี้ใช้ Unicode ที่มีเซิร์ฟเวอร์การพัฒนาและดีบักเกอร์ในตัวการสนับสนุนการทดสอบหน่วยรวมรองรับคุกกี้ที่ปลอดภัยและใช้งานง่ายสิ่งเหล่านี้ทำให้เป็นประโยชน์สำหรับมือสมัครเล่น
เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งขวดใน Raspberry Pi ของคุณ:
sudo apt-get update sudo apt-get install python-pip python-flask
ตอนนี้รันคำสั่ง pip เพื่อติดตั้ง Flask และการอ้างอิง:
sudo pip ติดตั้งกระติกน้ำ
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรมโดยใช้ Flask ได้ที่นี่รวมถึงตรวจสอบโครงการก่อนหน้าของเราที่เราใช้ Flask เพื่อควบคุมหุ่นยนต์ผ่านเว็บเซิร์ฟเวอร์ส่งข้อความจากหน้าเว็บไปยัง Raspberry Pi และส่งค่าน้ำหนักไปยัง Raspberry Pi ใน Smart Container
ตอนนี้เราจะเขียนสคริปต์ python สำหรับเว็บเซิร์ฟเวอร์ประตูโรงรถของเรา
การสร้างสคริปต์ Python สำหรับที่เปิดประตูโรงรถอัจฉริยะ
สคริปต์นี้จะโต้ตอบกับ Raspberry Pi GPIO ของเราและตั้งค่าเว็บเซิร์ฟเวอร์ ดังนั้นนี่คือสคริปต์หลักสำหรับแอปพลิเคชันของเรา สคริปต์ Python ที่สมบูรณ์สำหรับตัวเปิดประตูมีให้ในตอนท้ายที่นี่เราได้อธิบายบางส่วนของมัน
ขั้นแรกสร้างโฟลเดอร์ โฟลเดอร์ที่จำเป็นอื่น ๆ ทั้งหมดควรอยู่ในโฟลเดอร์นี้เท่านั้น เรียกใช้คำสั่งด้านล่างเพื่อสร้างโฟลเดอร์และสร้างไฟล์ python ชื่อ app.py ภายในโฟลเดอร์นี้
mkdir garage_door cd garage_door nano app.py
เพื่อเปิดตัวแก้ไข Nano ที่เราต้องเขียนสคริปต์
เริ่มต้นด้วยการรวมไลบรารีที่สำคัญ
นำเข้า RPi.GPIO เป็น GPIO จาก Flask import Flask, render_template, request app = Flask (__ name__, static_url_path = '/ static')
ตอนนี้สร้างพจนานุกรมเป็น พิน เพื่อเก็บหมายเลขพินชื่อและสถานะพิน คุณสามารถใช้พินมากกว่าหนึ่งพินตามความต้องการของคุณ
หมุด = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
จากนั้นตั้งพินเป็นเอาต์พุตและทำให้ต่ำในตอนแรก
สำหรับพินในพิน: GPIO.setup (พิน, GPIO.OUT) GPIO.output (พิน, GPIO.LOW)
ตอนนี้ทำหน้าที่หลักในการอ่านรัฐขาและเก็บรัฐนี้ในตัวแปร
@ app.route ("/") def main (): สำหรับพินในพิน: pins = GPIO.input (พิน) ..
เราต้องส่งข้อมูลนี้ไปยังหน้า html ของเราเพื่อให้เราสามารถควบคุมสถานะปุ่มอินพุตได้
ส่งคืน render_template ('main.html', ** templateData)
ตอนนี้สร้างฟังก์ชันเพื่อจัดการคำขอจาก URLพร้อมหมายเลขพินและการดำเนินการในนั้น
@ app.route ("/
แปลงพินจาก URL เป็นจำนวนเต็ม
changePin = int (เปลี่ยนพิน)
หากส่วนการทำงานของ URL เป็น "เปิด" ให้ดำเนินการดังต่อไปนี้
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
คุณสามารถคัดลอกสคริปต์ทั้งหมดจากตอนท้ายของบทช่วยสอนนี้และบันทึกโดยใช้ ctrl + x จากนั้นกด Enter เราได้ทำกับสคริปต์ python แล้ว ตอนนี้เราต้องสร้างหน้า HTML เพื่อโต้ตอบกับสคริปต์ python
การสร้างหน้า HTML สำหรับ Raspberry Pi Webserver
ในโฟลเดอร์ Garage_door เดียวกันให้สร้างโฟลเดอร์อื่นชื่อ แม่แบบ และภายในโฟลเดอร์นี้สร้างไฟล์. html โดยใช้คำสั่งด้านล่าง
เทมเพลต mkdir เทมเพลต cd nano main.html
ในโปรแกรมแก้ไขข้อความ นาโน ให้เขียนโค้ด html คุณสามารถแก้ไขไฟล์ ส่วนหนึ่งของหน้าและจัดรูปแบบตามที่คุณเลือก ฉันเพิ่งใช้โครงร่าง css ของบุคคลที่สามโดยใช้แท็กลิงก์ โค้ด HTML ที่สมบูรณ์ได้รับด้านล่าง:
Garage Door เว็บเซิร์ฟเวอร์
{% สำหรับพินในพิน%}{{pins.name}} {% ถ้า pins.state ==% จริง} ปัจจุบันคือเปิด
ส่วนที่สำคัญคือการสร้างปุ่มเพื่อเปิดและปิดประตูและกำหนดสถานะในการ เปิด และ ปิด ปุ่ม ปุ่มจะส่งและดึงข้อมูลสถานะ GPIO จากสคริปต์ python
คุณสามารถใช้โค้ด HTML ที่ระบุข้างต้นในตัวแก้ไขและบันทึกได้ ตอนนี้เว็บเซิร์ฟเวอร์พร้อมเปิดตัวแล้ว
เปิดเทอร์มินัลและไปที่โฟลเดอร์ garage_door และเรียกใช้คำสั่งด้านล่าง
sudo python app.py
เปิดเบราว์เซอร์และป้อนที่อยู่ IP raspberry pi ของคุณแล้วกด Enter ในการค้นหาที่อยู่ IP ของคุณคุณสามารถเรียกใช้คำสั่งด้านล่างในเทอร์มินัล
ชื่อโฮสต์ -I
คุณจะเห็นหน้าแบบนี้
ตรวจสอบให้แน่ใจว่าโมดูลรีเลย์เชื่อมต่อกับราสเบอร์รี่ pi กดปุ่ม เปิด เพื่อเปิดรีเลย์หรือเพื่อเปิดประตูโรงรถ คุณยังสามารถดูสถานะของรีเลย์ ทันทีที่คุณเปิดรีเลย์ข้อความของปุ่มจะเปลี่ยนไป ปิด เพื่อปิดรีเลย์ ตอนนี้เมื่อคุณคลิกปุ่มอีกครั้งรีเลย์จะปิดและข้อความของปุ่มจะเปลี่ยนเป็น เปิด อีกครั้ง
หากต้องการหยุดเซิร์ฟเวอร์ให้กด ctrl + c
ดังนั้นเพียงแค่เชื่อมต่อการถ่ายทอดนี้บางกลไกการเปิดประตูซึ่งมีความพร้อมในตลาดและเริ่มควบคุมประตูโรงรถโดยใช้มาร์ทโฟน
วิดีโอสาธิตได้รับด้านล่าง