Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

$20 Zigbee deurbel

Componenten en benodigdheden

Arduino Nano R3
× 1
Cree Connected LED-lamp
Zigbee LED dimbare slimme lamp van Cree
× 1

Apps en online services

Arduino IDE

Over dit project

Mijn instellingen

Ik heb een behoorlijk uitgebreid zigbee/z-wave mesh-netwerk voor mijn met internet verbonden domoticasysteem (via SmartThings) dat alles doet, van het regelen van mijn lichten en het bewaken van het elektriciteitsverbruik tot het waarschuwen voor extreem weer en het eraan herinneren dat ik de honden moet voeren.

De volledige gebruikersinterface verloopt via een smartphone-app en waarschuwingen kunnen via de app worden gepusht of via sms worden verzonden. Een gebruiksvoorbeeld dat volgens mij door de kieren is geglipt, is een vriendelijke bel om bewoners te waarschuwen voor veranderingen in het huis (deuren/ramen/kluizen/poorten openen, slecht weer of te hoge temperatuur in de kinderkamer).


Het probleem

Er zijn al een paar opties om een ​​super luide sirene te laten afgaan wanneer een bewegingssensor of raam-/deursensor wordt geactiveerd, maar ik kon geen eenvoudig deurbelgeluid vinden. Dit is een basiskenmerk van zowat elk huisbeveiligingssysteem dat er is, dus ik was echt verrast toen ik ontdekte dat het niet bestond. Ik heb gekeken naar het hacken van een externe deurbelsensor, maar het moeilijke / dure deel was om het op mijn z-wave / zigbee mesh-netwerk te krijgen. SmartThings heeft een API voor SONOS-luidsprekers [duur], en ik heb gezien dat mensen meerdere integraties van SmartThings tot IFTTT tot Twitter in een serie schakelden met een wifi-verbonden arduino [te ingewikkeld en traag].

Al met al zou elk van deze oplossingen meer dan $ 40 kosten en ik wil dezelfde functionaliteit hebben met betere prestaties voor minder dan $ 20.


Betreed de Cree Connected LED-lamp

Home Depot verkoopt de Cree Connected Bulb voor $ 15 en ze zijn verreweg mijn favoriete slimme lamp. Niets anders onder de $ 50 komt in de buurt in lichtopbrengst, kleurtemperatuur, dimbaar bereik, levensduur of draadloos bereik.

Ik heb al mijn oude slimme lampen hiervoor verwisseld en had er nog een paar over, dus nu wil ik zien wat ik nog meer kan doen met deze goedkope en betrouwbare hardware. Anderen hebben de lampen afgebroken en ontdekten dat alle zigbee-componenten zich op een enkel breakout-bord bevinden en 3,3 V-stroom gebruiken ... mijn arduino-zintuigen tintelen.

Het blijkt dat het zigbee-bord eigenlijk een Atmel SAMR21 heeft, een 32-bits ARM Cortex-chip met 256 KB flash-geheugen (pdf). Atmel verkoopt een SAMR21-ontwikkelaarsbord voor $ 42, dus het is een koopje om dit voor $ 15 te krijgen.

Minder dan $ 20 aan hardware

Proof of Concept met SmartThings  

Hier is een snelle PoC die een statusveranderingsmonitor op een arduino gebruikt om een ​​"chime" toon op een piëzo-zoemer te activeren. De dim- en aan/uit-uitgangspinnen van de lamp werken nog steeds, en met behulp van de SmartThings-app-engine kan ik elke logica bouwen die ik wil.

Zelfs zonder arduino kun je de digitale pin direct op een relais aansluiten om zo ongeveer alles aan/uit te zetten. Dit kan LED-stripverlichting aansturen, garagedeuren openen/sluiten, motoren/pompen inschakelen, enz.

Proof of Concept met SmartThings

Omdat een van de pinnen PWM uitvoert, kan ik dat koppelen aan een van de analoge I / O-pinnen op een Arduino die is toegewezen om waarden tussen 1-100% te lezen. In SmartThings zijn deze opgedeeld in intervallen van 10%, dus tussen dat en aan/uit heb ik 11 verschillende uitgangen die ik via het zigbee-bord kan sturen. Dit zou het mogelijk maken om verschillende waarschuwingen te activeren op basis van welke deur/raam open is.

Dit kan verder gaan dan alleen een waarschuwing of gong. Een ander project Ik werk aan een Arduino-gestuurde IR-blaster voor mijn raam-AC-units, en nu ik rechtstreeks met SmartThings kan integreren met behulp van de bovenstaande methode, zal het op de hoogte zijn van mijn aanwezigheids- / aanwezigheidssensoren en huisstatus.

Omdat dit allemaal 3,3 V is, is het ook een perfecte use-case voor een ATtiny85 en 3,7 V Li-Ion-batterijen voor een superklein en draagbaar pakket. Ik heb ook de voeding van de lamp behouden, omdat deze 120v AC naar 3,3v DC laat vallen en ongetwijfeld van pas zal komen voor toekomstige projecten.

Ik weet zeker dat deze community andere toepassingen kan bedenken, dus geef alsjeblieft commentaar op hoe je dit zou gebruiken of bouw zelfs je eigen versie en post het project!

Code

  • DoorChime-schets
  • pitches.h
DoorChime SketchC/C++
Arduino Sketch for DoorChime
#include #include "pitches.h"/*Quick sketch as PoC voor de levensvatbaarheid van het gebruik van Cree Connected LED's zigbee board om andere apparaten aan te sturen (in dit geval een luidspreker). Buddy Crotty - maart 2015versie 0.1.2Volledig gekopieerd van Tom Igoe's voorbeeldschetsen:Statusveranderingsdetectie (randdetectie) toneMelodyDeze voorbeeldcode is in het publieke domein. http://arduino.cc/en/Tutorial/ButtonStateChange http://arduino.cc/en/Tutorial/ToneZigbee board van Cree Connected LED pin 1 massa pin 2 3.3Vin pin 3 PWM Out pin 4 Digital Out circuit:* 8 -ohm speaker op digitale pin 8 * Pin 2 aangesloten op zigbee board pin 4 */// deze constante verandert niet:const int buttonPin =2; // de pin waaraan de drukknop is bevestigdconst int speakerPin =8; // de pin waaraan de luidspreker is bevestigd // Variabelen zullen veranderen:int buttonPushCounter =0; // teller voor het aantal drukken op de knop in buttonState =0; // huidige status van de buttonint lastButtonState =0; // vorige status van de knop// noten in de melodie (7nationArmy):int melodie[] ={ NOTE_GS2, NOTE_GS2, NOTE_B2, NOTE_GS2, NOTE_FS2, NOTE_E2, NOTE_DS2};// nootduur:4 =kwartnoot, 8 =achtste noot, enz.:int noteDurations[] ={4, 8, 8, 8, 8, 3.5, 3};void setup() { // initialiseer de knoppin als invoer:pinMode(buttonPin, INPUT); // initialiseer de LED als een output:pinMode (speakerPin, OUTPUT);}void loop () {// lees de ingangspin van de drukknop:buttonState =digitalRead (buttonPin); // vergelijk de buttonState met zijn vorige status if (buttonState! =lastButtonState) {// als de status is veranderd, verhoog de teller if (buttonState ==HOOG) { // als de huidige status HOOG is, dan de knop // wend van uit naar aan:buttonPushCounter++; // speel toon // herhaal de noten van de melodie:for (int thisNote =0; thisNote <8; thisNote++) { // om de nootduur te berekenen, neem één seconde // gedeeld door het noottype. // bijv. kwartnoot =1000 / 4, achtste noot =1000/8, enz. int noteDuration =10000 / noteDurations[thisNote]; toon (speakerPin, melodie [thisNote], noteDuration); // om de noten te onderscheiden, stel een minimum tijd tussen hen in. // de duur van de notitie + 30% lijkt goed te werken:int pauseBetweenNotes =noteDuration * .32; vertraging (pauzeTussenNotes); // stop het afspelen van de toon:noTone (speakerPin); } } else { // als de huidige status LAAG is, ging de knop // van aan naar uit:Serial.println("off"); } // Stel een beetje uit om stuiterende vertraging te voorkomen (50); } // sla de huidige staat op als de laatste staat, // voor de volgende keer door de lus lastButtonState =buttonState; // zet de Chime aan elke twee toestandsveranderingen (alleen als de deur opengaat) // de modulo-functie geeft je de rest van // de deling van twee getallen:if (buttonPushCounter % 2 ==0) { digitalWrite(speakerPin, HIGH ); } else { digitalWrite (speakerPin, LOW); }}
pitches.hC/C++
pitches-bibliotheek zodat u er niet zelf naar hoeft te zoeken
/********************************* *************** * Openbare constanten ****************************** ****************/#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 NOTE_DS2 78#define NOTE_E2 82#define NOTE_F2 87#define NOTE_F2_FS2 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_DS3 156#define NOTE_E3 165#define NOTE_F3 175#define NOTE_F3 175#define NOTE_F3 175#define NOTE_F3 175#define NOTE_F3 175 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_E4 330#define NOTE_F4 349#de 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_CS5 554#define NOTE_D5 587#define NOTE_DS5 622#define NOTE_E5 659 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#define NOTE_CS6 1109#define NOTE_D6 1175#define NOTE_DS6 1245#define NOTE_E6 13619#define NOTE_E6 13619#define NOTE_C6 13619#define NOTE_C6 13619#define NOTE_C6 1047#define NOTE_CS6 1109 define NOTE_G6 1568#define NOTE_GS6 1661#define NOTE_A6 1760#define NOTE_AS6 1865#define NOTE_B6 1976#define NOTE_C7 2093#define NOTE_CS7 2217#define NOTE_D7 2349#define NOTE_DS7 2489#define NOTE_E7 2637#define NOTE_F7FS 2794#define NOTE_F7FS 2794#define NOTE_F7FS 2794 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 4978

Schema's

Fritzing-schakelingsschema van DoorChime met schetscode DoorChime.fzz

Productieproces

  1. Bankkluis
  2. Draaideur
  3. Windgong
  4. Gloeilamp
  5. Z-Wave vs. Zigbee
  6. Interactieve laserprojector met Zigbee-sensoren
  7. Windows IoT:deur met gezichtsherkenning
  8. Verbinding maken
  9. Wat is een dagschoot?
  10. Wat is een Jamb Switch?
  11. Hoe de deurklink van uw auto te repareren?