산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

$20 Zigbee 도어 차임

구성품 및 소모품

Arduino Nano R3
× 1
Cree 연결 LED 전구
Cree의 Zigbee LED 조광 가능 스마트 전구
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

내 설정

인터넷에 연결된 홈 자동화 시스템(SmartThings를 통해)을 위한 꽤 광범위한 지그비/z-wave 메시 네트워크가 있습니다. 이 네트워크는 조명을 제어하고 전기 사용량을 모니터링하는 것부터 극단적인 날씨에 대해 경고하고 개에게 먹이를 줄 것을 상기시키는 것까지 모든 작업을 수행합니다.

전체 사용자 인터페이스는 스마트폰 앱을 통해 이루어지며 알림은 앱을 통해 푸시하거나 SMS를 통해 보낼 수 있습니다. 내가 느낀 한 가지 사용 사례는 집 안의 상태 변화(문/창문/금고/문이 열림, 악천후 또는 보육실의 온도가 너무 높음)에 대해 거주자에게 경고하는 친절한 차임입니다.


문제

모션 센서 또는 창/문 센서가 작동할 때 매우 큰 사이렌을 울리는 몇 가지 옵션이 이미 있지만 간단한 문 차임을 찾을 수 없었습니다. 이것은 시중에 나와 있는 거의 모든 가정 보안 시스템의 기본 기능입니다. 그래서 나는 그것이 존재하지 않는다는 사실에 정말 놀랐습니다. 원격 초인종 센서 해킹에 대해 알아보았지만 어렵고/비싼 부분은 내 z-wave/zigbee 메시 네트워크에서 그것을 얻는 것이었습니다. SmartThings에는 [비싼] SONOS 스피커용 API가 있으며 SmartThings에서 IFTTT, Twitter, Wi-Fi 연결 arduino[지나치게 복잡하고 느림]에 이르기까지 여러 통합을 데이지 체인 방식으로 연결하는 사람들을 보았습니다.

요컨대 이러한 솔루션 중 하나는 $40가 넘고 동일한 기능을 더 나은 성능으로 $20 미만으로 사용하고 싶습니다.


Cree Connected LED 전구 입력

Home Depot는 Cree Connected Bulb를 15달러에 판매하며 단연코 제가 가장 좋아하는 스마트 전구입니다. 50달러 미만의 다른 제품은 광출력, 색온도, 밝기 조절 가능 범위, 수명 또는 무선 범위에 근접하지 않습니다.

나는 이미 오래된 스마트 전구를 모두 교체했고 몇 개 남았습니다. 그래서 이제 이 저렴하고 안정적인 하드웨어로 무엇을 더 할 수 있는지 알고 싶습니다. 다른 사람들은 전구를 찢고 모든 지그비 구성 요소가 단일 브레이크 아웃 보드에 있고 3.3v 전원을 사용하고 있음을 발견했습니다. arduino 감각이 따끔 거립니다.

지그비 보드에는 실제로 256KB 플래시 메모리(pdf)가 있는 32비트 ARM Cortex 칩인 Atmel SAMR21이 있습니다. Atmel은 dev SAMR21 보드를 42달러에 판매하므로 이것을 15달러에 구입하는 것은 도둑질입니다.

$20 미만의 하드웨어

SmartThings를 사용한 개념 증명

다음은 arduino에서 상태 변경 모니터를 사용하여 압전 부저에서 톤 "차임"을 트리거하는 빠른 PoC입니다. 전구 조광 및 켜기/끄기 출력 핀은 여전히 ​​작동하며 SmartThings 앱 엔진을 사용하여 원하는 논리를 구축할 수 있습니다.

arduino가 없어도 디지털 핀을 릴레이에 직접 연결하여 거의 모든 것을 켜고 끌 수 있습니다. 이것은 LED 스트립 조명, 차고 문 열기/닫기, 모터/펌프 켜기 등을 구동할 수 있습니다.

SmartThings를 사용한 개념 증명

핀 중 하나가 PWM을 출력하기 때문에 1-100% 사이의 값을 읽도록 매핑된 arduino의 아날로그 I/O 핀 중 하나에 이를 연결할 수 있습니다. SmartThings에서는 이것들을 10% 간격으로 나누어서 켜짐/꺼짐 사이에 11개의 개별 출력을 지그비 보드를 통해 보낼 수 있습니다. 이렇게 하면 열려 있는 문/창문에 따라 다른 경고를 트리거할 수 있습니다.

이것은 단순한 경고나 차임 이상으로 확장될 수 있습니다. 내 창 AC 장치용 arduino 제어 IR 블래스터에 대해 작업하고 있는 또 다른 프로젝트이며 이제 위의 방법을 사용하여 SmartThings와 직접 통합할 수 있으므로 내 존재/점유 센서 및 집 상태를 인식할 것입니다.

또한 모두 3.3v이므로 ATtiny85 및 3.7v 리튬 이온 배터리를 초소형 및 휴대용 패키지로 사용하기에 완벽한 제품입니다. 나는 또한 120v AC에서 3.3v DC로 떨어지기 때문에 전구에서 전원 공급 장치를 유지했으며 의심의 여지없이 향후 프로젝트에 유용할 것입니다.

이 커뮤니티에서 다른 용도로 사용할 수 있다고 확신합니다. 따라서 이를 어떻게 사용하는지 의견을 말하거나 자신만의 버전을 만들고 프로젝트를 게시하세요!

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • DoorChime 스케치
  • 피치스.h
  • DoorChime 스케치C/C++
    DoorChime용 Arduino 스케치
    #include #include "pitches.h"/*Cree Connected LED의 지그비 보드를 사용하여 다른 장치(이 경우 스피커)를 구동할 수 있는 가능성을 위한 PoC로서의 빠른 스케치. Buddy Crotty - 2015년 3월 버전 0.1.2Tom Igoe의 예제 스케치에서 완전히 복사됨:상태 변경 감지(가장자리 감지) toneMelody이 예제 코드는 공개 도메인에 있습니다. http://arduino.cc/en/Tutorial/ButtonStateChange http://arduino.cc/en/Tutorial/ToneZigbee 보드 Cree Connected LED 핀 1 접지 핀 2 3.3Vin 핀 3 PWM 출력 핀 4 디지털 출력 회로:* 8 - 디지털 핀 8의 옴 스피커 * 지그비 보드 핀 4에 연결된 핀 2 */// 이 상수는 변경되지 않습니다. const int buttonPin =2; // 푸시버튼이 연결된 핀 const int speakerPin =8; // 스피커가 연결된 핀 // Variables will change:int buttonPushCounter =0; // 버튼 누름 횟수에 대한 카운터 int buttonState =0; // 버튼의 현재 상태int lastButtonState =0; // 버튼의 이전 상태 // 멜로디의 음표(7nationArmy):int 멜로디[] ={ NOTE_GS2, NOTE_GS2, NOTE_B2, NOTE_GS2, NOTE_FS2, NOTE_E2, NOTE_DS2};// 음표 길이:4 =4분음표, 8 =8분음표 등:int noteDurations[] ={ 4, 8, 8, 8, 8, 3.5, 3};void setup() { // 버튼 핀을 입력으로 초기화합니다. pinMode(buttonPin, INPUT); // LED를 출력으로 초기화:pinMode(speakerPin, OUTPUT);}void loop() { // 푸시버튼 입력 핀 읽기:buttonState =digitalRead(buttonPin); // buttonState를 이전 상태와 비교 if (buttonState !=lastButtonState) { // 상태가 변경된 경우 카운터를 증가시킵니다. if (buttonState ==HIGH) { // 현재 상태가 HIGH이면 버튼이 // 종료됩니다. 꺼짐에서 켜짐으로:buttonPushCounter++; //play tone // 멜로디의 음표를 반복:for (int thisNote =0; thisNote <8; thisNote++) { // 음표 지속 시간을 계산하려면 1초를 // 음표 유형으로 나눈다. //예:4분음표 =1000 / 4, 8분음표 =1000/8 등 int noteDuration =10000 / noteDurations[thisNote]; tone(speakerPin, 멜로디[thisNote], noteDuration); // 음표를 구별하려면 음표 사이의 최소 시간을 설정합니다. // 메모의 지속 시간 + 30%가 잘 작동하는 것 같습니다. int pauseBetweenNotes =noteDuration * .32; 지연(pauseBetweenNotes); // 톤 재생 중지:noTone(speakerPin); } } else { // 현재 상태가 LOW이면 버튼이 // 켜짐에서 꺼짐으로 이동합니다. Serial.println("off"); } // 바운싱을 피하기 위해 약간 지연합니다. delay(50); } // 현재 상태를 마지막 상태로 저장합니다. // 다음에 루프를 통해 lastButtonState =buttonState; // 두 개의 상태가 변경될 때마다 Chime을 켭니다(문이 열릴 때만) // 모듈로 함수는 // 두 숫자의 나머지 부분을 제공합니다. if (buttonPushCounter % 2 ==0) { digitalWrite(speakerPin, HIGH ); } else { digitalWrite(speakerPin, LOW); }}
    pitch.hC/C++
    피치 라이브러리를 사용하여 직접 검색할 필요가 없습니다.
    /************************************ ************* * 공개 상수 ******************************* ******************/#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41#define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52#define NOTE_A1 55#define NOTE_AS1 58#define NOTE_B1 62#define NOTE_C2 65#define NOTE_CS2 69#define NOTE_D2 73#define_82 NOTE_DS2 78#define NOTE_DS2 78#define define NOTE_G2 98#define NOTE_GS2 104#define NOTE_A2 110#define NOTE_AS2 117#define NOTE_B2 123#define NOTE_C3 131#define NOTE_CS3 139#define NOTE_D3 147#define NOTE_D3 147#define NOTE_DS3 NOTE 156# 196#define NOTE_GS3 208#define NOTE_A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311#define NOTE_40 fine NOTE_FS4 370#define NOTE_G4 392#define NOTE_GS4 415#define NOTE_A4 440#define NOTE_AS4 466#define NOTE_B4 494#define NOTE_C5 523#define NOTE_C5 554define NOTE_CS5 554#define NOTE_D5 NOTE 587 740#define NOTE_G5 784#define NOTE_GS5 831#define NOTE_A5 880#define NOTE_AS5 932#define NOTE_B5 988#define NOTE_C6 1047#7#9define NOTE_CS6 1109#define FS3_define NOTE_D6 1175#define NOTE_D6 1175#define 1865 #이 NOTE_B6 1976 #이 NOTE_C7 2093 #을 정의 정의 NOTE_AS6을 정의 NOTE_G6 1568 #이 NOTE_GS6 1661 #이 NOTE_A6 1760 #을 정의 정의 정의 정의 NOTE_CS7을 2217 #이 2349 #이 NOTE_DS7 2489 #을 정의 NOTE_D7을 정의 2637 #이 NOTE_F7 2794 #을 정의 NOTE_FS7 2960 #이 NOTE_G7을 정의 정의 NOTE_E7을 정의 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 4699#define NOTE_DS8

    회로도

    스케치 코드가 있는 DoorChime의 Fritzing 회로도 DoorChime.fzz

    제조공정

    1. 은행 금고
    2. 회전문
    3. 윈드 차임
    4. 전구
    5. 지그비 센서를 사용한 대화형 레이저 프로젝터
    6. Windows IoT:얼굴 인식 도어
    7. 연결하기
    8. 래치 볼트란 무엇입니까?
    9. Jamb 스위치란 무엇입니까?
    10. 자동차 문 손잡이를 고치는 방법