สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
- ขั้นตอนที่ 2: เตรียม Raspberry Pi สำหรับ 433 MHz
- ขั้นตอนที่ 3: ตั้งค่าเซิร์ฟเวอร์บ้านอัจฉริยะ
- ขั้นตอนที่ 4: ตั้งค่าไคลเอนต์
- ขั้นตอนที่ 5: บทสรุป
วีดีโอ: บ้านอัจฉริยะโดย Raspberry Pi: 5 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
มีผลิตภัณฑ์หลายอย่างที่ทำให้แฟลตของคุณฉลาดขึ้น แต่ส่วนใหญ่เป็นโซลูชันที่เป็นกรรมสิทธิ์ แต่ทำไมคุณต้องเชื่อมต่ออินเทอร์เน็ตเพื่อเปลี่ยนไฟด้วยสมาร์ทโฟนของคุณ นั่นเป็นเหตุผลหนึ่งที่ทำให้ฉันสร้างโซลูชันบ้านอัจฉริยะของตัวเอง
ฉันตั้งโปรแกรมแอปพลิเคชันเซิร์ฟเวอร์ที่ทำงานบน Raspberry Pi นี่คือโปรเจ็กต์โอเพ่นซอร์สที่ใช้จาวาที่ให้คุณกำหนดค่าแฟลตและเชื่อมต่อไคลเอนต์หลายตัวและ 'หน่วยที่ควบคุมได้' ฉันแสดงวิธีแก้ปัญหาที่จัดการสวิตช์แหล่งจ่ายไฟ rc เล่นเพลงและวิดีโอบน Raspberry Pi แสดงสถานะบนกระจกอัจฉริยะและสามารถควบคุมโดยแอพ Android และแอพ Pebble สองแอพ แหล่งที่มาโฮสต์บน github
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
ในการตั้งค่าบ้านอัจฉริยะ คุณต้องมี 'ส่วนผสม' ต่อไปนี้
- Raspberry Pi อย่างน้อยรุ่น 2 B
- ผู้ส่ง 433 MHz ประมาณนี้
- สายจัมเปอร์ 3 สายเชื่อมต่อ Raspberry Pi และผู้ส่ง
- ซ็อกเก็ตควบคุมวิทยุบางตัวที่ 433 MHz
- สมาร์ทโฟน Android เพื่อเรียกใช้แอพไคลเอนต์
นอกจากนี้ คุณสามารถขยาย Smart Home ด้วยไคลเอนต์และยูนิตเสริมเพิ่มเติมเช่นนี้
- นาฬิกาอัจฉริยะ Pebble
- Smart Mirror ดูโครงการนี้
-
แถบ LED ควบคุม 433 MHz ดูนี่
ขั้นตอนที่ 2: เตรียม Raspberry Pi สำหรับ 433 MHz
ในขั้นตอนต่อไปนี้ คุณต้องเข้าถึงบรรทัดคำสั่งบน Raspberry Pi ในการเข้าถึงคุณสามารถอ่านคำแนะนำนี้
เชื่อมต่อเครื่องส่ง 433 MHz กับ Raspberry Pi ดังรูปด้านบน
- GND (ผู้ส่ง) 6 GND (ราสปี)
- VCC (ผู้ส่ง) 2 +5V (raspi)
- DATA (ผู้ส่ง) 11 GPIO 17 (raspi)
โปรดเชื่อมต่อเสาอากาศ 17 ซม. เข้ากับพิน ANT (ผู้ส่ง) ที่เพิ่มสัญญาณอย่างมีนัยสำคัญ
เนื่องจากเราต้องการไลบรารี่จากที่เก็บ git อื่น เราจึงต้องติดตั้ง git
sudo apt-get ติดตั้ง git-core -y
ในการตั้งค่า Raspberry Pi สำหรับการสื่อสาร 433 MHz เราจำเป็นต้องมีไลบรารีสายไฟ Pi เพื่อการจัดการ GPIO ที่ดียิ่งขึ้น
โคลน git git://git.drogon.net/wiringPi
cdสายไฟPi./build
จากนั้นเราต้องการไลบรารีที่ใช้โปรโตคอลแหล่งจ่ายไฟ rc โดยทั่วไป
โคลน git git://github.com/dabastynator/rcswitch-pi.git
cd rcswitch-pi ทำให้ cp ส่ง /usr/bin/
คำสั่ง 'ส่ง' ช่วยให้คุณสามารถส่งรหัสเพื่อสลับอุปกรณ์จ่ายไฟที่มีอยู่ส่วนใหญ่ได้
ในการตั้งค่า Smart Home ของฉันฉันยังมีแถบ rc LED ที่อธิบายโดยคำสั่งนี้: https://www.instructables.com/id/RC-controlled-LED… ในการตั้งค่าสีสำหรับแถบ LED นี้ คุณต้องมีไฟล์ปฏิบัติการส่งอื่นที่ช่วยให้คุณ เพื่อส่งค่าจำนวนเต็มใด ๆ (ที่เข้ารหัสสี)
ดังนั้น ให้คอมไพล์ sendInt.cpp ใน rcswitch-pi repo และย้ายไปที่ /usr/bin/sendInt
sudo g++ sendInt.cpp -o /usr/bin/sendInt /home/pi/rcswitch-pi/RCSwitch.o -I/home/pi/rcswitch-pi -lwiringPi
ตอนนี้คุณควรจะสามารถส่งคำสั่ง rc ด้วยสองไฟล์ปฏิบัติการ /usr/bin/send และ /usr/bin/sendInt
ขั้นตอนที่ 3: ตั้งค่าเซิร์ฟเวอร์บ้านอัจฉริยะ
ก่อนอื่นคุณต้องติดตั้งหลายแพ็คเกจ แอปพลิเคชัน Smart Home ใช้จาวาและทำงานได้ดีกับ openjdk-11 ฉันไม่แน่ใจเกี่ยวกับสภาพแวดล้อมรันไทม์ของ Java อื่นๆ mplayer เป็นเครื่องเล่นเพลงบรรทัดคำสั่งที่เรียบง่าย omxplayer ใช้กราฟิก Raspberry Pi สำหรับการเข้ารหัสวิดีโอ ดังนั้นจึงควรใช้สำหรับวิดีโอ จำเป็นต้องใช้โปรแกรมมดเพื่อสร้างแอปพลิเคชันจาวา
sudo apt-get ติดตั้ง mplayer omxplayer openjdk-11-jdk ant -y
ตั้งค่าไดเร็กทอรีสำหรับไฟล์ jar และสำหรับบันทึก
sudo mkdir /opt/neo
sudo chown pi:pi /opt/neo mkdir /home/pi/Logs
กำหนดค่าสคริปต์เริ่มต้นเพื่อเริ่มแอปพลิเคชันโดยอัตโนมัติเมื่อบูต ดังนั้นให้คัดลอกสคริปต์สมาร์ทโฮมที่แนบมาลงในไดเร็กทอรี /etc/init.d/ ฉันยังสร้างสคริปต์ใน /usr/bin/ ซึ่งไพพ์คำสั่งไปยังสคริปต์ที่แนบมาด้วย ดังนั้นฉันเพียงแค่ป้อนสมาร์ทโฮมไปที่คอนโซลเพื่อรันคำสั่ง.
sudo cp สมาร์ทโฮม /etc/init.d/smart-home
sudo chmod +x /etc/init.d/smart-home sudo sh -c "echo '#! /bin/bash' > /usr/bin/smart-home" sudo sh -c "echo '/etc/init. d/smart-home \$1' >> /usr/bin/smart-home" sudo chmod +x /usr/bin/smart-home sudo update-rc.d smart-home defaults
ถึงเวลาชำระเงินที่เก็บและสร้างแอปพลิเคชัน หากคุณไม่ต้องการคอมไพล์ด้วยตนเอง คุณสามารถดาวน์โหลด smarthome.jar ที่แนบมาและย้ายไปที่ /opt/neo/
โคลน git [email protected]:dabastynator/SmartHome.git
ant -f SmartHome/de.neo.smarthome.build/build.ant build_remote cp SmartHome/de.neo.smarthome.build/build/jar/* /opt/neo/
ลองเริ่มสมาร์ทโฮมและตรวจสอบไฟล์บันทึก ในการเข้าถึง GPIO แอปพลิเคชันต้องเริ่มต้นโดย sudo
sudo smart-home start
cat Logs/smarthome.log
คุณควรเห็นข้อความแสดงข้อผิดพลาด ไม่มีไฟล์การกำหนดค่า ซึ่งชี้ให้เราไปยังขั้นตอนถัดไป ที่เก็บมี readme ที่อธิบายไฟล์คอนฟิกูเรชัน คุณสามารถดูสิ่งนี้ได้อย่างสวยงามที่ github:
คัดลอก xml นี้ไปที่ /home/pi/controlcenter.xml จากนั้นตั้งค่าตำแหน่งสำหรับเซิร์ฟเวอร์สื่อของคุณและเปลี่ยนเนื้อหาตามที่คุณต้องการ เมื่อคุณกำหนดค่าเสร็จแล้วและรีสตาร์ทบ้านอัจฉริยะ (sudo smart-home restart) คุณควรเห็นเนื้อหาต่อไปนี้ใน smarthome.log
24.05-08:26 REMOTE INFORMATION โดย de.neo.smarthome.cronjob. CronJob@15aeb7ab: กำหนดเวลางาน cron
24.05-08:26 REMOTE INFORMATION โดย [trigger.light]: รอ 79391760 ms สำหรับการดำเนินการ 24.05-08:26 RMI INFORMATION โดย Add web-handler (5061/ledstrip) 24.05-08:26 RMI INFORMATION โดย Add web-handler (5061) /action) 24.05-08:26 ข้อมูล RMI โดยเพิ่มตัวจัดการเว็บ (5061/mediaserver) 24.05-08:26 ข้อมูล RMI โดยเพิ่มตัวจัดการเว็บ (5061/สวิตช์) 24.05-08:26 ข้อมูล RMI โดยเพิ่มตัวจัดการเว็บ (5061/controlcenter) 24.05-08:26 RMI INFORMATION โดยเริ่มเว็บเซิร์ฟเวอร์ด้วยตัวจัดการ 5 (localhost:5061) 24.05-08:26 REMOTE INFORMATION โดย Controlcenter: เพิ่ม 1. ชุดควบคุม: MyUnit (xyz) …
เว็บเซิร์ฟเวอร์กำลังทำงาน:-)
ขั้นตอนที่ 4: ตั้งค่าไคลเอนต์
ไคลเอนต์ Android บนสมาร์ทโฟน
ที่เก็บ git สำหรับแอปพลิเคชันบ้านอัจฉริยะยังมีซอร์สสำหรับไคลเอ็นต์ Android ดังนั้นคุณจึงสามารถคอมไพล์ได้ด้วยตัวเอง แต่ฉันแนบ APK สำหรับขั้นตอนนี้ ซึ่งทำให้ง่ายขึ้น ครั้งแรกที่คุณเริ่มแอป ระบบจะถามหาเซิร์ฟเวอร์จากคุณ เช่นเดียวกับในภาพแรกด้านบน ป้อน URL ของเซิร์ฟเวอร์และโทเค็นความปลอดภัย
ที่ควรจะเป็น ตอนนี้คุณสามารถเข้าถึงเซิร์ฟเวอร์และควบคุมแฟลตของคุณ เล่นเพลง และดูวิดีโอจากระยะไกลบน Raspberry Pi ของคุณ โปรดทราบว่าคุณสามารถเพิ่มวิดเจ็ตลงในหน้าจอหลักได้ ซึ่งจะทำให้สวิตช์และการควบคุมเพลงเข้าถึงได้ง่ายขึ้น
ลูกค้า Smartwatch Pebble
ซอร์สสำหรับไคลเอนต์ Pebble ทั้งสองโฮสต์บน GitHub แอปหนึ่งแสดงไฟล์เพลงที่กำลังเล่นอยู่: https://github.com/dabastynator/PebbleRemoteMusic… สิ่งนี้ยังช่วยให้คุณหยุดชั่วคราว/เล่นและเพิ่มระดับเสียงขึ้น/ลง
แอปที่สองทริกเกอร์สามการกระทำ: https://github.com/dabastynator/PebbleControl ชื่อทริกเกอร์คือ: mobile.come_home mobile.leaving และ mobile.go_to_bed หากคุณกำหนดกฎเหตุการณ์สำหรับทริกเกอร์นี้ใน configuration-xml คุณจะทริกเกอร์โดยนาฬิกา
เป็นโอเพ่นซอร์สทั้งหมด แต่คุณไม่จำเป็นต้องคอมไพล์เอง ฉันยังแนบแอปเพบเบิลมาด้วย ดาวน์โหลด PBW ด้วยสมาร์ทโฟนของคุณ โทรศัพท์ของคุณควรติดตั้งไว้บนนาฬิกาของคุณ แอป Pebble ต้องมีการกำหนดค่าเพื่อพูดคุยกับเซิร์ฟเวอร์ ฉันแนบภาพหน้าจอว่าการตั้งค่าของฉันเป็นอย่างไร
ลูกค้าสมาร์ทวอทช์ Garmin
นอกจากนี้ยังมีไคลเอนต์สำหรับ Garmin Smartwatches แอพนี้มีอยู่ใน garmin connect app-store และสามารถติดตั้งได้ที่นี่:
apps.garmin.com/en-US/apps/c745527d-f2af-4…
ลูกค้าสมาร์ทมิเรอร์
ฉันได้สร้างคำแนะนำที่อธิบายวิธีสร้าง Smart Mirror แล้ว ดู https://www.instructables.com/id/Smart-Mirror-by-R… นี้ ซอร์สโค้ดโฮสต์บน github ด้วย: https:// github.com/dabastynator/SmartMirror ซอฟต์แวร์ของ Smart Mirror อ่านการกำหนดค่าจากไฟล์ smart_config.js ที่ไม่ได้เป็นส่วนหนึ่งของที่เก็บ git เนื้อหาของไฟล์การกำหนดค่าควรมีลักษณะดังนี้:
var mOpenWeatherKey = 'คีย์ open-wheather ของคุณ';
var mSecurity = 'โทเค็นความปลอดภัยของคุณ';
คุณต้องปรับสองบรรทัดแรกของไฟล์ smart_mirror.js เพื่อระบุที่อยู่ IP ของเซิร์ฟเวอร์ Smart Home และตำแหน่งเพื่อให้ได้สภาพอากาศที่เหมาะสม
ลูกค้ามากขึ้น
แอปพลิเคชันเซิร์ฟเวอร์เป็นเว็บเซิร์ฟเวอร์ที่เรียบง่าย สิ่งนี้ทำให้คุณสามารถทริกเกอร์การดำเนินการจากไคลเอนต์ใดๆ ที่คุณต้องการโดยการโทรผ่านเว็บแบบง่ายๆ ในวิดีโอสาธิตฉันแสดงตัวจัดการแอป Android ร่วมกับ AutoVoice สิ่งนี้ทำให้ฉันสามารถทริกเกอร์เหตุการณ์ด้วยคำสั่งเสียงง่ายๆ ตัวอย่างเช่น "ok google ได้เวลานอน" สามารถเรียก mobile.go_to_bed แต่คุณสามารถโทรผ่านเว็บได้เช่นจาก IFTTT แล้วแถบไฟ LED กะพริบสีเหลืองสำหรับการแจ้งเตือนทางอีเมลล่ะ
คุณสามารถขอเซิร์ฟเวอร์สำหรับการโทรทางเว็บที่เป็นไปได้เช่นลิงก์ต่อไปนี้ (แทนที่ ip, พอร์ตและโทเค็นด้วยการกำหนดค่าของคุณ)
localhost:5061/controlcenter/api?token=secu…
localhost:5061/action/api?token=security-to…
localhost:5061/mediaserver/api?token=securi…
localhost:5061/switch/api?token=security-to…
localhost:5061/ledstrip/api?token=security-…
ขั้นตอนที่ 5: บทสรุป
ยังมีคุณลักษณะบางอย่างที่จะนำไปใช้: เนื่องจากเซิร์ฟเวอร์มีไคลเอ็นต์ web-api แบบง่าย ๆ จึงทำการสำรวจจำนวนมาก เพื่อลดการสำรวจ ฉันต้องการการรวม MQTT เพื่อการแจ้งเตือนที่ดีขึ้น นอกจากนี้ อุปกรณ์จ่ายไฟ wifi ควรทำงานได้อย่างน่าเชื่อถือมากกว่าอุปกรณ์จ่ายไฟ rc เนื่องจาก rc เป็นเพียงการสื่อสารทางเดียว
มันทำให้การพัฒนาโครงการนี้สนุกมาก และมันค่อนข้างเจ๋งที่จะควบคุมแฟลตด้วยอุปกรณ์ต่างๆ แม้ว่าการเชื่อมต่ออินเทอร์เน็ตจะหยุดทำงาน
แนะนำ:
จอแสดงผลเกม LED ทำจากไม้ที่ขับเคลื่อนโดย Raspberry Pi Zero: 11 ขั้นตอน (พร้อมรูปภาพ)
จอแสดงผล LED สำหรับเล่นเกมแบบไม้ที่ขับเคลื่อนโดย Raspberry Pi Zero: โปรเจ็กต์นี้ใช้จอแสดงผล LED แบบ WS2812 ขนาด 20x10 พิกเซลที่มีขนาด 78x35 ซม. ซึ่งสามารถติดตั้งได้ง่ายในห้องนั่งเล่นเพื่อเล่นเกมย้อนยุค เมทริกซ์เวอร์ชันแรกนี้สร้างขึ้นในปี 2016 และสร้างขึ้นใหม่โดยคนอื่นๆ อีกหลายคน ประสบการณ์นี้
Borderlands Raspberry Pi: 9 ขั้นตอน (พร้อมรูปภาพ)
Borderlands Raspberry Pi: วันหนึ่งฉันอยู่ในร้านเกมและเห็นอุปกรณ์ประกอบฉาก Borderlands ในส่วนการกวาดล้างราคา $20 และอดใจไม่ไหวที่จะซื้อมัน หลังจากนั้นประมาณหนึ่งสัปดาห์ ฉันก็คิดกับตัวเองว่า นั่นคือตอนที่การผจญภัยของฉันเริ่มที่จะ
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-