สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
โปรเจ็กต์นี้เกิดขึ้นเมื่อฉันจะออกจากบ้านไปทำงานและไปถึงที่นั่นได้ครึ่งทาง เพียงเพื่อจะตื่นตระหนกอยู่ครู่หนึ่ง ซึ่งฉันจำไม่ได้ว่าปิดประตูโรงรถแล้วหรือยัง บางครั้งฉันก็เชื่อว่าไม่มี และหันกลับมาเพียงเพื่อยืนยันว่าฉันได้ปิดประตูโรงรถแล้วจริงๆ ตอนนี้ฉันไปทำงานสาย 30 นาที…เยี่ยมมาก เมื่อฉันซื้อบ้านเป็นของตัวเอง ฉันคิดว่าตอนนี้ถึงเวลาที่ฉันจะทำอะไรก็ได้ที่เปิดประตูโรงรถ แล้วความคิดนี้ก็เกิดขึ้น
เสบียง
- Raspberry Pi - ฉันคิดว่าทุกรุ่นควรจะใช้งานได้ ตราบใดที่มันสามารถรัน Django, NGINX และ gunicorn ได้ ฉันใช้ Raspberry Pi 3 B+ คุณอาจต้องเปลี่ยนแปลงบางสิ่งหากคุณมีเวอร์ชันอื่น - (https://www.adafruit.com/product/3775)
- การ์ด microSD (สำหรับ
- สายแพ 40 พินสำหรับพิน GPIO - (https://www.adafruit.com/product/1988)
- บอร์ดฝ่าวงล้อม GPIO 4 พิน - (https://www.adafruit.com/product/2029)
- บอร์ดรีเลย์ Opto-Isolated สำหรับ >20v DC - (https://www.amazon.com/gp/product/B07M88JRFY)
- แผ่น Perma-Proto ขนาดครึ่งแผ่น - (https://www.adafruit.com/product/1609)
- สายต่อ (~24-20 AWG) - (https://www.amazon.com/dp/B01LH1FYHO)
- สวิตช์กกแม่เหล็ก - (https://www.amazon.com/gp/product/B076GZDYD2)
- ฝาครอบกันฝุ่น Raspberry Pi HDMI - (https://www.amazon.com/gp/product/B07P95RNVX)
- ฝาครอบกันฝุ่น Raspberry Pi Ethernet - (https://www.amazon.com/gp/product/B01I814D0U)
- ฝาปิดกันฝุ่น USB Raspberry Pi (4) - (https://www.amazon.com/gp/product/B074NVHTF9)
- แหล่งพลังงาน Raspberry Pi (ขึ้นอยู่กับรุ่นของ Raspberry Pi ที่คุณใช้)
- เคส Raspberry Pi - (https://www.amazon.com/gp/product/B07QPCPK8G)
- แจ็ค 3.5 มม. - (https://www.amazon.com/gp/product/B00OGLCR3W)
- สกรู/ข้องอ M2.5 สำหรับแผงยึด - (https://www.amazon.com/dp/B0721SP83Q)
- สาย 18 AWG - (https://www.amazon.com/gp/product/B07TL9XK2K)
- อะคริลิคใส 3 มม. - (https://www.amazon.com/gp/product/B07RY4X9L3)
- การเข้าถึงเครื่องตัดเลเซอร์
ขั้นตอนที่ 1: ประกอบ RPi
เขียนการ์ด microsd ด้วยภาพ raspbian ล่าสุดที่คุณเลือก (https://www.raspberrypi.org/documentation/installation/installing-images/) จากนั้นประกอบบอร์ดในเคส และติดสายแพก่อนปิดฝาเคสให้แน่น จากนั้นเพิ่มพอร์ตฝุ่น
ขั้นตอนที่ 2: ตัดและประกอบกล่องควบคุม
คุณจะต้องหาสถานที่ที่จะให้คุณตัดกล่องของคุณออกด้วยเครื่องตัดเลเซอร์ มองหาพื้นที่ผลิตในพื้นที่หรือทางออนไลน์สำหรับสถานที่ที่สามารถตัดอะคริลิกได้ หรือคุณอาจใช้กล่องโปรเจ็กต์ประเภทอื่นร่วมกับตัวเลือกที่เหมาะสมก็ได้ อย่าลืมเพิ่มตัวต้านทาน 330 โอห์มระหว่างสาย 3.3v และขั้ว COM ของสวิตช์กก ไม่. เทอร์มินัลจะกลับไปที่พิน GPIO ที่เลือก
ต่อรีเลย์ด้วย 5v ไปที่ DC+, GND ถึง DC- และพิน GPIO ที่เลือกไปที่ IN
ขั้วที่เปิดประตูโรงรถจะเชื่อมต่อกับรีเลย์ที่ COM และ NO
ขั้นตอนที่ 3: Mount Reed Switches และ Run Cable
ตรวจสอบให้แน่ใจว่าสายเคเบิลของคุณไม่กีดขวางการเดินทางของประตู ต่อเข้ากับสกรูสองตัวเดียวกันกับที่ปุ่มติดผนังของคุณเชื่อมต่อเพื่อเปิดประตู
ขั้นตอนที่ 4: เชื่อมต่อ Raspberry Pi กับ Wifi
และตรวจสอบให้แน่ใจว่าคุณสามารถ SSH ไปยัง raspberry pi ของคุณ เพื่อให้คุณสามารถตั้งค่าเว็บเซิร์ฟเวอร์ได้ จากนั้นคุณสามารถติดตั้งในโรงรถของคุณ และส่วนที่เหลือสามารถทำได้จากคอมพิวเตอร์ของคุณ
ขั้นตอนที่ 5: ติดตั้งและกำหนดค่าซอฟต์แวร์
บน Raspberry Pi ให้ติดตั้ง Django ด้วยคำสั่ง:
- `sudo apt update`
- `sudo apt ติดตั้ง python3-pip`
- `sudo pip3 ติดตั้ง django`
จากนั้นติดตั้ง NGINX และ gunicorn
- `sudo apt ติดตั้ง nginx`
- `sudo pip3 ติดตั้ง gunicorn`
ติดตั้งโมดูล python สร้างโปรเจ็กต์ django สร้างการโยกย้าย และกำหนดค่า settings.py
- คัดลอก tarball ไปที่ /srv
- ติดตั้งโดยใช้ `sudo pip3 ติดตั้ง django-smart-carhole-0.1.tar.gz`
- สร้างโครงการ django ด้วย `sudo django-admin startproject my_smart_garage`
- `cd my_smart_garage/`
- แก้ไขไฟล์ settings.py ที่ /srv/my_smart_garage/my_smart_garage/setting.py
- เพิ่มที่อยู่ IP ของ raspberry pi หรือชื่อโฮสต์ใน ALLOWED_HOSTS
- เพิ่ม 'door_control' ในรายการ INSTALLED_APPS
- แก้ไข TIME_ZONE ในเขตเวลาของคุณ
- เพิ่มการตั้งค่าต่อไปนี้ที่ส่วนท้ายของไฟล์: RPI_SENSOR_PIN, RPI_RELAY_PIN, IP_WHITELIST_DOORCONTROL และกรอกค่าที่เกี่ยวข้อง ดูภาพสำหรับตัวอย่าง
- เพิ่ม "path('door_control/', include('door_control.urls')), " ใน /srv/my_smart_garage/my_smart_garage/urls.py ในรายการ urlpatterns
- เพิ่ม ', รวม' ลงในบรรทัดการนำเข้าที่ด้านบนสุดสำหรับไลบรารี django.urls ดูภาพสำหรับตัวอย่าง
- โยกย้ายแอพด้วย 'sudo python3 Manage.py migrate'
- ทดสอบเพื่อให้แน่ใจว่าสิ่งต่าง ๆ ทำงานโดยการรันเซิร์ฟเวอร์ทดสอบด้วย: `python3 Manage.py runserver 0.0.0.0:8000`
- ไปที่ราสเบอร์รี่ pi ของคุณดังนี้:
- คุณควรจะพบกับหน้าเหมือนที่แสดง
ตอนนี้ได้เวลาตั้งค่าเพื่อให้เว็บเซิร์ฟเวอร์ทำงานโดยอัตโนมัติ
- ก่อนอื่นให้ปิดการใช้งานโหมดแก้ไขข้อบกพร่องในไฟล์ setting.py
- ยกเลิกหมายเหตุเซิร์ฟเวอร์_names_hash_bucket_size 64 ใน /etc/nginx/nginx.conf
- คัดลอกไฟล์ gunicorn ไปที่ /etc/systemd/system/gunicorn.service
- คัดลอกไฟล์ nginx ไปที่ /etc/nginx/conf.d/smart_carhole.conf
- เริ่มทั้งสองกระบวนการ
- systemctl เปิดใช้งาน gunicorn.service
- systemctl start gunicorn.service
- systemctl เปิดใช้งาน nginx.service