COntrollare lo stato del garage? Si può?

Salve a tutti! Ho quasi completato il mio progetto!

*Accendere le luci di casa
*Aprire il portone
*Aprire il garage

Tutto con il mio android + asterisk, grazie a voi!!!!!!!!!

L'unica cosa che mi è venuta in mente è:
Come faccio a sapere se il garage è aperto o chiuso?
Esempio...vado fuori città e dimentico il garage aperto. Posso vedere dalla pagina web di arduino se il garage è aperto?

Mi sono documentato un po e se non erro, mi servono le AnalogInput no??
Correggetemi se sbaglio!
Ho anche un sensore magnetico, ma non so dove collegarlo...(su arduino). Su input? vedo A0 A1 A2 A3 etc..

Questo è il mio codice per adesso:

#include <string.h>
#include <SPI.h>
#include <Ethernet.h>
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
byte ip[] = { 192, 168, 1, 30 }; 
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
Server server(80);

String readString; 

boolean PORTONE = false; 
boolean LED2ON = false; 
boolean LED3ON = false; 
 
void setup(){
  
  Ethernet.begin(mac, ip, gateway, subnet);
  
  pinMode(2, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);    
  
  Serial.begin(9600);
  digitalWrite(2, HIGH);
   digitalWrite(8, HIGH);
    digitalWrite(7, HIGH);

  
}
 
void loop(){
  
  Client client = server.available();
  
  if (client) {
    boolean currentLineIsBlank = true;
    
    while (client.connected()) {
      if (client.available()) {  
        char c = client.read();
        readString.concat(c);   
        if (c == '\n' && currentLineIsBlank) {
          Serial.print(readString);
         
         //PORTONE CASA//
         
          if(readString.indexOf("L=1") > 0) {
            digitalWrite(2, LOW);
            delay(500);
            digitalWrite(2, HIGH);
            PORTONE = true;      
          }
       
       /* if(readString.indexOf("L=01") > 0) {
          //led has to be turned OFF
          digitalWrite(2, LOW); // set the LED OFF
          LED1ON = false;
        }*/
        
        
        
       /* if(readString.indexOf("L=2") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(7, HIGH); // set the LED on
          LED2ON = true;
          }else{
          //led has to be turned OFF
          digitalWrite(7, LOW); // set the LED OFF
          LED2ON = false;
        }
        if(readString.indexOf("L=3") > 0) {//lets check if LED should be lighted
          //led has to be turned ON
          digitalWrite(8, HIGH); // set the LED on
          LED3ON = true;
          }else{
          //led has to be turned OFF
          digitalWrite(8, LOW); // set the LED OFF
          LED3ON = false;
        }*/
        
        // INIZIO DICHIARAZIONE PAGINA HTML
        
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        client.print("<html><head><title>ARDUINO Controllo via WEB</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
        
        //PORTONE CASA
        client.println("<hr />");
        client.println("<h1>Portone Casa</h1>");
        client.println("
");
        //STAMPA STATO OPERAZIONE
        client.print("<span>ESEGUITO: </span>");
 
          if (PORTONE) {
              client.println("<span style='color:green'>SI</span>");
            }
            else
            {
              client.println("<span style='color:grey'>NO</span>");
          }
        client.print("<h2><a href='/?L=1'>APRI</a>");
        
        client.println("<hr />");
        
        //Secondo led
        client.println("<h1>LED2</h1>");
        client.println("
");
        //printing LED status
        client.print("<span>STATO LED: </span>");
 
          if (LED2ON) {
              client.println("<span style='color:green'>ON</span>");
            }
            else
            {
              client.println("<span style='color:grey'>OFF</span>");
          }
        client.print("<h2><a href='/?L=2'>ON</a> | <a href='/?L=02'>OFF</a></h2>");
        client.println("<hr />");
        
        //terzo led
         client.println("<h1>LED3</h1>");
        client.println("
");
        //printing LED status
        client.print("<span>STATO LED: </span>");
 
          if (LED3ON) {
              client.println("<span style='color:green'>ON</span>");
            }
            else
            {
              client.println("<span style='color:grey'>OFF</span>");
          }
        client.print("<h2><a href='/?L=3'>ON</a> | <a href='/?L=03'>OFF</a></h2>");
 
        client.println("</body></html>");
 
        //clearing string for next read
        readString="";
        //stopping client
        client.stop();
 
        } 
    } }
  } 
}

Ci sto ancora lavorando... SPero che qualcuno mi possa aiutare...Grazie a tutti

Puoi usare un sensore magnetico (Reed) ed usarlo come input digitale usando il debounce e collegandolo opportunamente allo stesso modo potresti usare un MicroSwitch, poi dipende dalla porta/portone del tuo garage ma dattargli un sensore non è difficile :slight_smile:

Devi montare un sensore di posizione del portone del garage. Bastano 2 interuttori (microswitch) che vedono se il portone é aperto o chiuso. Se nessuno dei due é attuato vuol dire che il portone si muove o é bloccato in mezzo. I 2 interuttori li colleghi al Arduino come se fossero 2 pulsanti. Ciao Uwe

OK grazie per le risposte!

Io ho già il sensore magnetico! Solo che una persona mi aveva detto di collegarlo su INPUT ANALOG. È errato?

Poi dipende anche da come si chiude. Ha una saracinesca che va solo col motore? Qundi quando è giù è "chiuso"?
Ha un basculante che ha una mandata di chiusura?
Ecc...

Insomma, va analizzata la cosa e capito come individuare la chiusura.

Puoi usarlo con una lettura analogica ma non ha un gran senso quando puoi farlo più semplicemente leggendolo digitalmente :slight_smile:

Allora, questo è il mio garage:

Con la chiave posso aprirlo, basta girandola... è della BFT. Mio paadre mi ha detto che ha già il sensore magnetico.. e voleva sapere solo dove si collegava (su arduino) gli avevano detto su INPUT ANALOG..

In parole semplici, come citato nel primo post, appena vado su http://iparduino vorrei vedere:

STATO GARAGE: APERTO / CHIUSO... almeno cosi non lo dimentico aperto ^^

Darà un segnale di chiuso o aperto, basta un pin digitale. Devi solo controllare la tensione per evitare di bruciare l'ingresso se è più di 5V.

Cioè? non ho ben capito... il sensore magnetico quindi dove lo collego? in quale pin? A0 ? A1?

Se è un sensore magnetico sarà un contatto reed, ossia un contatto che, con l'avvicinarsi di una calamita, si apre o chiude (a seconda del tipo che è).
Quindi fa passare o meno la corrente. Per leggere il segnale non importa usare unpin analogico, basta un pin digitale. Controlla solo che la tensione del segnale rientri nei valori supportati da Arduino (0-5V).

Dalla foto e dagli elementi che la compongono sembra una serranda avvolgibile, quindi il magnete che dici di avere non appartiene ai circuiti di controllo della centralina BFT, ma a qualche antifurto o servizi alternativi. I dispositivi di finecorsa su serrande avvolgibili sono sempre contenuti e tarati all'interno dell'allbero motore tramite viti senza fine (in poche parole lassù in alto dove si avvolge la serranda).

Semplifica il tutto se non sei certo di cosa fanno quei componenti e monta un magnete dalla parte opposta collegata ad arduino, otterrai un contatto pulito senza troppi studi e senza danneggiare quello che già funziona correttamente.

ciao

Semplifica il tutto se non sei certo di cosa fanno quei componenti e monta un magnete dalla parte opposta collegata ad arduino, otterrai un contatto pulito senza troppi studi e senza danneggiare quello che già funziona correttamente.

1.Ok ma dove lo connetto?
2.Quanto deve essere la corrente? 5V massimo?

Pin digitale (già detto 2 volte ;))
Ti serve un alimentatorino per avere 5V e con quello colleghi il reed ad un pin di Arduino.

collegalo su una digital input, alla fine è un pulsante con la sual resistenzina di pull-up
(questa è la terza ) ahahahahha

perchè Leo un alimentatore 5v? è un contatto pulito da sbattere direttamente su una input port, ci mette solo una resistenza di pull-up giusto per le correnti bagasce :slight_smile: :smiley: :smiley:

const int buttonPin = 2;

int buttonState = 0;

void setup()
{
pinMode(buttonPin, INPUT);
}

void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
//la serranda è chiusa
}
else
{
//la serranda è aperta
}
}

Mica so dove ha l'Arduino, lui :stuck_out_tongue:
Se ce l'ha in garage, allora sì.

Mi sa che così lo confomdiamo ancora di più :slight_smile:

Un contatto chiuso è un contatto a 4 metri come a 200mt

Già noti che sono in due, il padre ha i fili in mano e il figlio scrive su dettatura
Non ti confermano se è una serranda basculante o avvolgibile
Non ti confermano se hanno un impianto di allarme
Non si sa cosa sia quel magnete

Molto difficile aiutare telegraficamente

Ok. Ma allora a che serve analog Input? Arduino e nella mia stanza. Dietro il garage. Gli ho passato già i fili. Quindi il sensore magnetico lo attacco al punto digitale 13 e dovrebbe andare con il codice postato precedentemente?

analog
in ingresso lo usi per segnali che possono avere un range di valori, per esempio una fotoresistenza, che darà come input un valore variabile in base alla luce

digitale
in ingresso lo usi per segnali che possono avere un valore di 0 oppure di 1 (acceso/spento)

(d'accordo, spiegazione semplificata ma spero efficace)

Quindi se usi un interruttore magnetico, avrai 2 possibili valori, 1 o 0.
Ergo ti basta un pin digitale.

Non usare il pin 13 perchè viene utilizzato dalla Ethernet Shield .
Qui :

puoi leggere che i pin utilizzati dallo shield eth sono 4, 10, 11, 12, 13

Il codice che ha postato pablos71 è completo e già utilizzabile

E' già tre volte che gli dico che deve usare un pin digitale.... :sweat_smile:

Il codice va adattato secondo la logica del reed, se è del tipo normalmente aperto o normalmente chiuso.
Ma anche questo non si sa. Poi non si sa se intende usare il sensore che già c'è e non si sa a che tensioni questo sensore lavori.