업데이트된 기사: https://viktorkirilov.me/post/home-automation-raspberry-pi/
https://youtu.be/wh0OoLUTeM8
저는 어렸을 때부터 전자 장치와 다양한 메커니즘에 관심이 많았습니다. 이전에는 게임 핸들용 핸드 브레이크, 자동차용 맞춤형 LED 타코미터(내 Github 저장소 참조), 음성 제어 LED 등과 같은 Arduino를 사용하여 다양한 소규모 프로젝트를 수행했습니다. 최근에 저는 Raspberry PI 3를 구입했고 모든 IoT 과대광고에 맞춰 집을 자동화하기로 결정했습니다.
나는 javascript와 그 생태계에 대해 꽤 잘 알고 있기 때문에 react native
통해 나만의 전화 앱을 만들고 websockets
통해 NodeJS
백엔드에 연결하기로 결정했습니다. 데이터 구조의 일관성과 앱 성능을 위해 ImmutableJS의 Records를 사용하고 있습니다. 데이터는 JSON 문자열을 통해 클라이언트와 서버 간에 전송되며, 양쪽에서 수신되면 불변 레코드로 다시 변환됩니다. 공유 모듈(클라이언트와 서버 사이)을 별도의 로컬 npm 패키지(home-records 및 home-config)로 분리했습니다. GPIO 제어(라즈베리 핀)를 위해 wiringPi
와 함께 pi-blaster
라이브러리를 사용했습니다. 내 AC에 대한 코드를 찾을 수 없기 때문에 직접 녹음하여 lirc
구성 파일에 추가했습니다. Duckdns
cron은 동적 DNS로 사용됩니다. 내 IP 주소가 주기적으로 변경되고 매번 전체 앱을 다시 컴파일하거나 구성을 변경할 필요가 없기 때문입니다. 서버는 연결된 모든 사용자에게 실시간으로 변경 사항을 브로드캐스트합니다. 전화 앱은 /phone-app 폴더에 있고, 서버는 /server 에 있습니다. 한번 살펴보는 게 어때요?
Raspberry Pi 3
제어 장치입니다. LED 스트립과 같은 고전력 장치는 외부 12V 5A power supply
(PI와 접지 공유)를 통해 전원이 공급됩니다. AC는 950nm 적외선 LED를 통해 제어됩니다. 가열 시스템은 분해를 피할 수 있도록 온도 조절기용 릴레이(켜기 및 끄기)와 서보를 통해 배선됩니다. 흰색 LED 스트립과 RGB 스트립은 모두 IRLZ34N
논리 트랜지스터를 통해 PI에 연결됩니다. 다른 것을 녹음하고 싶은 경우를 대비해 IR 수신기도 있습니다. 온도는 DS18B20 온도 센서를 통해 측정됩니다.
배선은 다음과 같습니다.
저는 다양한 모듈에 대한 모든 종류의 아이디어에 열려 있습니다. 염두에 두고 있는 아이디어가 있다면 이슈 트래커에 추가하고 Idea
로 라벨을 지정해 주시면 감사하겠습니다.