อัปเดตบทความ: https://viktorkirilov.me/post/home-automation-raspberry-pi/
https://youtu.be/wh0OoLUTeM8
ตั้งแต่เด็กๆ ฉันหลงใหลเกี่ยวกับระบบอิเล็กทรอนิกส์และกลไกประเภทต่างๆ ก่อนหน้านี้ ฉันเคยทำโปรเจ็กต์เล็กๆ ต่างๆ กับ Arduino เช่น เบรกมือสำหรับพวงมาลัยสำหรับเล่นเกม เครื่องวัดความเร็วรอบแบบ LED แบบกำหนดเองสำหรับรถยนต์ของฉัน (ดู repo github ของฉัน) LED ที่ควบคุมด้วยเสียง และอื่นๆ เมื่อเร็วๆ นี้ ฉันซื้อ Raspberry PI 3 และในบรรดาผู้สนใจ IoT ทั้งหมด ฉันตัดสินใจเริ่มทำให้บ้านของฉันเป็นแบบอัตโนมัติ
เนื่องจากฉันค่อนข้างคุ้นเคยกับจาวาสคริปต์และระบบนิเวศของมัน ฉันจึงตัดสินใจสร้างแอปโทรศัพท์ของตัวเองผ่าน react native
และเชื่อมต่อผ่าน websockets
กับแบ็กเอนด์ NodeJS
ฉันใช้บันทึกของ ImmutableJS เพื่อความสอดคล้องของโครงสร้างข้อมูลและประสิทธิภาพของแอป ข้อมูลจะถูกส่งระหว่างไคลเอนต์และเซิร์ฟเวอร์ผ่านสตริง JSON ซึ่งจะถูกแปลงกลับไปเป็นบันทึกที่ไม่เปลี่ยนรูปเมื่อได้รับจากทั้งสองด้าน ฉันได้แยกโมดูลที่ใช้ร่วมกัน (ระหว่างไคลเอนต์และเซิร์ฟเวอร์) ออกเป็นแพ็คเกจ npm ในเครื่องแยกต่างหาก - home-records และ home-config สำหรับการควบคุม GPIO (พินของราสเบอร์รี่) ฉันใช้ไลบรารี pi-blaster
ร่วมกับ wiringPi
เนื่องจากฉันไม่พบรหัสสำหรับ AC ของฉัน ฉันจึงบันทึกมันด้วยตัวเองและเพิ่มลงในไฟล์กำหนดค่า lirc
Duckdns
cron ใช้เป็น DNS แบบไดนามิก เนื่องจากที่อยู่ IP ของฉันเปลี่ยนแปลงเป็นระยะ และฉันไม่จำเป็นต้องคอมไพล์แอปใหม่ทั้งหมดหรือเปลี่ยนการกำหนดค่าในแต่ละครั้ง เซิร์ฟเวอร์จะถ่ายทอดการเปลี่ยนแปลงไปยังผู้ใช้ที่เชื่อมต่อทั้งหมดแบบเรียลไทม์ แอพโทรศัพท์อยู่ในโฟลเดอร์ /phone-app เซิร์ฟเวอร์อยู่ใน /server ทำไมไม่ลองดูล่ะ?
Raspberry Pi 3
เป็นหน่วยควบคุม อุปกรณ์กำลังสูง เช่น แถบ LED ได้รับพลังงานจาก 12V 5A power supply
ภายนอก (กราวด์ที่ใช้ร่วมกันกับ PI) กระแสไฟ AC ถูกควบคุมผ่าน LED อินฟราเรด 950 นาโนเมตร ระบบทำความร้อนต่อสายผ่านรีเลย์ (เปิดและปิด) และเซอร์โวสำหรับเทอร์โมสตัทเนื่องจากฉันหลีกเลี่ยงการแยกชิ้นส่วน ทั้งแถบ LED สีขาวและแถบ RGB เชื่อมต่อผ่านทรานซิสเตอร์แบบลอจิคัล IRLZ34N
กับ PI นอกจากนี้ยังมีตัวรับสัญญาณ IR ไว้ด้วยเผื่อฉันต้องการบันทึกอย่างอื่น วัดอุณหภูมิโดยใช้เซ็นเซอร์อุณหภูมิ DS18B20
การเดินสายไฟมีลักษณะดังนี้:
ฉันเปิดรับแนวคิดทุกประเภทเกี่ยวกับโมดูลต่างๆ หากคุณมีแนวคิดอยู่ในใจ เราจะขอบคุณหากคุณเพิ่มมันลงในเครื่องมือติดตามปัญหาและติดป้ายกำกับว่าเป็น Idea