În acest articol se prezintă un sistem de alarmă format dintr-un senzor de prezență și un switch montat pe ușă sau geam. Senzorul de mișcare aprinde și un bec pe timp de noapte cu ajutorul unui fotorezistor. Proiectul are la bază placa de dezvoltare Arduino Uno. Aceasta va comunica cu un telefon sau o tabletă smart (Android sau IOs) pentru control și notificare prin intermediul unei placi Arduino Ethernet Shield.

Arduino comunică cu două servere, astfel:

  • Serverul de notificare PushingBox. Acesta este un site la care te poți loga prin contul google. Aici îți poți seta scenarii și servicii. Notificările care vin de la senzorul PIR sau Switch pot fi definite și trimise, prin intermediul unor servicii gratuite sau plătite, spre dispozitivul smart sau spre contul de mail.

Exemplu: Când senzorul simte mișcare pe telefon apare notificarea >>Mișcare în fața ușii !!

  • Serverul de control netIO. NetIO este un app pentru dispozitivul smart android sau IOs. Această aplicație se plătește. Nu există versiune gratuită. După instalare trebuie să îți faci un cont pe site-ul netIO, unde îți editezi fereastra pentru dispozitiv, setezi conexiunea cu placa arduino prin http sau tcp, dezvolți butoane la care îi atribui diferite funcții, afișezi icoane, setezi background, slider pentru intensitatea unui led prin pinul PWM de pe placa arduino…și alte lucruri.

Exemplu: Atribui unui buton funcția de oprire/pornire a senzorului PIR.

În acest proiect am introdus și posibilitatea folosirii unui zăvor electric care poate fi acționat prin intermediul dispozitivului smart.

Ce ne trebuie pentru realizarea acestui proiect:

Partea Hardware:

  • Arduino Uno
  • Arduino Ethernet Shield
  • Senzor PIR…Am folosit un senzor de pe ebay de dimensiuni mici cu trei pini (5v alimentare, GND și ieșire semnal High/Low)
  • Switch (întrerupător fără reținere)
  • Fotorezistor
  • Rezistor 10K…4buc
  • Modul 4 relee 5v…se găsește pe ebay
  • Stabilizator 5V…LM7805 pentru alimentare modul relee
  • Stabilizator 9V…LM7809 pentru alimentare Arduino
  • 4 condensatori de filtraj pentru stabilizatorul de 5v și 9v…0,1 microF
  • Conector alimentare Arduino tip Jack
  • Actuator 12V (zăvor electric)…Am folosit un actuator de mașină cu 5 fire (2 fire alimentare motor +- și 3 fire pentru switch-ul din interior care comută la împins/tras) pentru a primi notificare când zăvorul este închis/deschis
  • Alimentator 12v…Am folosit o sursă de pe ebay de alimentat leduri la 12V 5A 60W pentru a alimenta și actuatorul.Dacă renunțăm la zăvorul electric, se poate utiliza un simplu transformator de 9v 2A care alimentează placa Arduino. Astfel renunțăm la stabilizatorul de 9v și înlocuim modulul 4 relee cu unul de 2 relee și este mult mai ieftin.
  • Cutie de plastic unde plasăm componentele
  • Dispozitivul smart android sau IOs…telefon sau tabletă cu acces la internet prin wifi sau date mobile
  • Fire

Partea Software:

  • Achiziționarea contracost al app-ului de control netIO pentru android sau IOs
  • Achiziționarea contracost sau Free al unui app de notificare care este compatibil cu serverul pushingBox. (Detalii în secțiunea Programare)
  • Ip static sau domeniu dinamic…pentru legătura dintre arduino și dispozitivul netIO trebuie să existe o conexiune fixă bazată pe un ip care este definit în configurația app-ului de pe dispozitivul smart. Dacă ip-ul se schimbă atunci legătura nu se mai realizează.

Montarea Componentelor:

Realizarea stabilizatoarelor de 5v și 9v după schema prezentată în Figura 1.

figura1

Realizarea montajului fotorezistență după schema prezentată în Figura 2. Fotorezistența se va monta cât mai departe de bec, într-un loc ferit de precipitații și să fie în contact cu lumina zilei.

Montarea întrerupătorului pe ușă/geam și realizarea circuitul după schema prezentată în Figura 3.

Montarea senzorului PIR într-un loc ideal și realizarea circuitul după schema prezentată în Figura 4.

multifig

Montarea zăvorului electric pe ușă și realizarea circuitul după schema prezentată în Figura 5. Trebuie luat în considerare și o variantă de acționare mecanică închis/deschis în cazul în care apare o pană de curent. Asta dacă nu vrei să aștepți lângă ușă până vine curentul sau să o spargi cu toporul în cazul unei defecțiuni neașteptate.

acuator

Plasarea componentelor în interiorul cutiei de plastic achiziționată.

În interior trebuie să încapă:

  • Placa Arduino și cea de internet, plus un spațiu pe înalțime pentru firele cu conectori. Ar fi ideal montarea la extremități și decupaj pentru conectorii de alimentare, usb și cablu utp.
  • Placa Modul 4 Relee cu următoarea configurație:
    • 1 releu pentru un bec 220v/60W
    • 2 relee pentru zăvorul electric (zăvorul trage/împinge prin schimbarea polarității, deci este necesar două relee)
    • 1 releu de rezervă
  • Placa stabilizatoare 5v și 9v cu următoarea configurație:
    • Tensiune intrare 12V
    • Tensiune ieșire 5V pentru alimentare placă relee și opțional senzorul PIR și fotorezistor, acestea se pot conecta și la 5v de pe placa arduino
    • Tensiune ieșire 9V pentru placa Arduino Uno alimentată prin conectorul tip Jack (Conform specificație de alimentare Arduino 7-12V, se poate conecta 12V direct din sursa de tensiune achiziționată dar pentru o bună siguranță eu alimentez Arduino Uno prin stabilizatorul de 9v !!)

La achiziționarea cutiei de plastic trebuie luat în considerare și spațiul necesar pentru firele aferente montajelor.

Sursa de alimentare 12V se montează lângă cutie și ferită de precipitații

Distribuire intrări/ieșiri placa Arduino

Intrări

  • Semnal senzor PIR >> Arduino pin 2
  • Semnal Switch >> Arduino pin 3
  • Semnal fotorezistență >> Arduino analog A1
  • Semnal actuator LOCK >> Arduino pin 5
  • Semnal actuator UNLOCK >> Arduino pin 6

Ieșiri

  • Semnal releu bec220V/60W >> Arduino pin 7
  • Semnal releu actuator LOCK >> Arduino pin 8
  • Semnal releu actuator UNLOCK >> Arduino pin 9

Programare

Arduino Uno

 

netIO

După achiziționare de pe googleplay sau appstore trebuie să îți faci un cont pe site-ul netIO. Aici găsești instrucțiuni și diferite exemple postate de alți useri. Tot aici găsești și secțiunea UI-Designer unde îți faci pagina care apare pe dispozitivul tău. Citește instrucțiunile de configurare.

În continuare prezint niște printscreenuri cu explicații.

netIOmenu1

  netIOmenu2

După ce salvați online pe site deschideți aplicația din dispozitiv și vă logați cu contul user și parola care l-ați făcut pe site-ul netIO. În setările aplicație apăsați Sync și apoi selectați scenariul făcut pe site intitulat Home Control.

Pushing Box

Accesați site-ul PushingBox. Autentificarea se face prin contul Google (click dreapta-sus pe login with google), deci trebuie să ai cont google.

Din bara de sus selectează My Services apoi adaugă un serviciu compatibil cu softul dispozitivului tău (Android sau IOs) dintr-o listă care se va afișa. Unele servicii se plătesc iar altele sunt gratuite. Caută informații despre ele pe google. Pentru început poți utiliza serviciul de Mail. Selectează serviciul de mail. Adaugă nume și cont de mail.

Din bara de sus selectează My Scenario. Crează un scenariu. Exemplu: Mișcare în fața ușii. Apasă Add. Îl poți redenumi oricând. Acestui scenariu i se va atribui un deviceID format din litere și cifre. Acesta trebuie copiat și introdus în codul Arduino aferent scenariului !! (vezi imaginea de mai jos). Pentru mai multe informații accesează API în meniul din bară. Adaugă o acțiune pentru acest scenariu. Adaugă o acțiune utilizând serviciul de mail. Un popup își face apariția. Completează câmpurile Subiect și Body. Picture URL poate fi completat cu un string de la o camera ip, dar este opțional. Ce vei completa în aceste câmpuri va veni pe mail în momentul când senzorul PIR va detecta o mișcare. Repetă pașii pentru a adăuga un alt scenariu aferent codului Arduino.

deviceid

Pentru serviciul PushingBox sunt disponibile 1000 de notificări la 24h.


Acest proiect poate fi dezvoltat trecându-se la un Arduino Mega și adăugându-se mai mulți senzori și switch-uri, un panou cu atenționare acustică și optică în cazul în care nu există conexiune la internet, se poate adăuga un server http hostat pe sd-ul integrat în Ethernet Shield, se poate adauga un timer pentru zăvorul electric pentru a se încuia ușa după un anumit interval, se poate adăuga un card reader pentru a descuia ușa…..se poate.

Cateva poze cu proiectul realizat pe un arduino Mega

Arduino – Home Control
Etichetat pe:                    

17 gânduri despre „Arduino – Home Control

  • 12/12/2014 la 21:11
    Legătură permanentă

    salut si felicitarile mele.si eu am realizat acas aun proiect de control 220v,dar cu raspberry pi.eu m am lovit de problema placii cu relee.Pinii IO dau doar 3.3v si placa are nevoie de 5V.Cum pot da de tine sa ti trimit niste poze cu proiectul?ms(lucky2004alex@yahoo.com)

    Răspunde
    • 13/12/2014 la 00:13
      Legătură permanentă

      Salut si Merci.
      Releele de pe placa au nevoie de 5v pentru a porni dar pe intrarile de pe placa merge si 3V. Ai putea alimenta separat placa de relee cu 5v si cu masa comuna cu Raspberry. Nu stiu cum se alimenteaza Raspberry ca nu am lucrat cu ea, dar stiu sigur ca merge pe Arduino pentru ca eu am alimentat placa separat cu 5v.

      Răspunde
  • 26/12/2014 la 23:04
    Legătură permanentă

    char DEVID3[] = „aici se pune device ID”; // Se completeaza Device ID pentru scenariul Zavor Deschis
    char DEVID4[] = „aici se pune device ID”; // Se completeaza Device ID pentru scenariul Zavor Inchis

    uint8_t pinDevid3 = 5; // actuator LOCK pin 5
    uint8_t pinDevid4 = 6; // actuator UNLOCK pin 6

    boolean pinDevid3State = false; // Salveaza ultima stare pentru DEVID3
    boolean pinDevid4State = false; // Salveaza ultima stare pentru DEVID4

    pinMode (pinDevid3, INPUT); // actuator LOCK pin 5
    pinMode (pinDevid4, INPUT); // actuator UNLOCK pin 6

    pinMode(8, OUTPUT); // releu actuator LOCK pin 8
    pinMode(9, OUTPUT); // releu actuator UNLOCK pin 9

    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);

    // Zavor Electric UNLOCK
    if (digitalRead(pinDevid3) == HIGH && pinDevid3State == false){ // daca switch LOCK e inchis
    if(DEBUG){Serial.println(„Zavor Inchis”);} // pentru print serial
    pinDevid3State = true;
    PIN_state[4] = 0; // salveaza stare pentru netIO
    sendToPushingBox(DEVID3); // trimite notificare serverului PushingBox
    }

    if (digitalRead(pinDevid3) == LOW && pinDevid3State == true){ // daca switch LOCK e deschis
    pinDevid3State = false;
    }

    // Zavor Electric LOCK
    if (digitalRead(pinDevid4) == HIGH && pinDevid4State == false){ // daca switch UNLOCK e inchis
    if(DEBUG){Serial.println(„Zavor Deschis”);} // pentru print serial
    pinDevid4State = true;
    PIN_state[4] = 1; // salveaza stare pentru netIO
    sendToPushingBox(DEVID4); // trimite notificare serverului PushingBox
    }

    if (digitalRead(pinDevid4) == LOW && pinDevid4State == true){ // daca switch UNLOCK e deschis
    pinDevid4State = false;
    }

    // verifica stare zavor electric pentru netIO
    if (strstr(Remote, „zavorstate”)) {
    if (PIN_state[4]==0) { // trimite date la NetIO pentru initializare
    clientApp.println(„zavorstateunlock”);
    }
    if (PIN_state[4]==1) { // trimite date la NetIO pentru initializare
    clientApp.println(„zavorstatelock”);
    }
    }

    // executa datele pentru zavor electric venite de la netIO
    if (strstr(Remote, „zavorlock”)) {
    clientApp.println(„OK”);
    PIN_state[4]=1; // salveaza stare
    digitalWrite(8, LOW);delay(300);digitalWrite(8, HIGH); // actioneaza releu polaritate +
    }
    if (strstr(Remote, „zavorunlock”)) {
    clientApp.println(„OK”);
    PIN_state[4]=0; // salveaza stare
    digitalWrite(9, LOW);delay(300);digitalWrite(9, HIGH); // actioneaza releu polaritate –
    }

    Răspunde
  • Pingback: Concurs Arduino 2014 - www.roroid.ro

  • 22/09/2016 la 14:57
    Legătură permanentă

    Salut,

    As avea nevoie de ajutorul dumneavoastra daca se poate. Am o placa Arduino Mega 2560 cu Ethernet Shield si doresc sa controlez 15 relee ale caror bobina functioneaza la o tensiune de 5V, 72mA.
    Avand in vedere ca 72mA x 15 = 1080mA, curent destul de mare absorbit de pe placa Arduino , as dori sa va intreb cum as putea proceda ?

    Va multumesc si ma scuzati de deranj

    Răspunde
    • 25/09/2016 la 21:20
      Legătură permanentă

      Salut,
      Pentru placa de relee iti trebuie o sursa de 5v separata cu GND comun. In figura 1 al acestui articol este prezentat un stabilizator de 5v. Adica am o sursa de 12v si scot 9v pt arduino si 5v pentru perifericele folosite (module relee, senzori), toate au masa comuna.

      Răspunde

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *