OM/YL Online  

   

Login  

   

donazione  

 
   Donazione a sostegno e per lo
      sviluppo
del Club Italiano
                Modi Digitali
               Psktrentunisti

   

MultiTrans  

   
   
Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Antifurto semplice con Arduino

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1156

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 581
  • Ringraziamenti ricevuti 102
  • Karma: 44
Per Soulribel:
Ho provato ad inserire la SD nello sketch dell'antifurto, per provare. In modo da avere un report dell'ora e dell'allarme scattati.
Non funziona.....
I collegamenti della SD sono i seguenti:
MOSI = Pin 11 (Nella versione Arduino MEGA il 50);
MISO = Pin 12 (Nel MEGA 51);
CLK (a volte troverete SCK) = Pin 13 (Nel MEGA 52);
CS = Pin 4 (Se doveste avere errori provate il 10, modificandolo anche nello sketch, oppure nel MEGA il 53);
GND = GND;
VCC = 5V (se non indicato diversamente dal venditore).

Ecco lo sketch non funzionante (funziona l'allarme ma non memorizza i dati su SD)
#include <SD.h>
#include <SPI.h>
#include "Pitches.h"
#include <VirtualWire.h>
#include <Wire.h>
#include <RTClib.h> 
#include <PCF8574_HD44780_I2C.h>
#include <dht.h>
#define dht_dpin A0 
PCF8574_HD44780_I2C lcd(0x27,20,4);
dht DHT;
RTC_DS1307 RTC;
const int setpin = 6;
boolean statepin = 0;
char buffer1[20];
char buffer2[20];
int ledPin1 = 8; 
int ledPin = 7;
int relePin = 6;
int RX_DIO_Pin = 5;
const int Buzzer = 9;
unsigned int Data;
int note = NOTE_A4;
int note1 = NOTE_C4;
File mioFile;
void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(relePin, OUTPUT);
  pinMode(10,OUTPUT);
 
 Serial.begin(9600);
 Serial.println("Avvio la comunicazione seriale");
    if(!SD.begin(10))
    {
     Serial.println("avvio SD fallito....");
      return;
    }
    Serial.println("avvio SD completato");
    if(SD.exists("Rapporto antifurto.txt"))
    {
      Serial.println("Rapporto antifurto.txt esiste e contiene..");
      mioFile = SD.open("Rapporto antifurto.txt",FILE_READ); 
      while(mioFile.available());
      {
        Serial.print((char)(mioFile.read()));
      }
    }
    else
    {
      Serial.println("Rapporto non esiste, lo creo ora");
      mioFile = SD.open("Rapporto antifurto.txt",FILE_WRITE);
    }
    pinMode (6, INPUT);
    digitalWrite (6, HIGH); 
 Wire.begin();
       RTC.begin();
       lcd.init();     
  lcd.backlight(); 
  lcd.setCursor(0,0);
  lcd.print("  Antifurto IZ3ZLU ");
  lcd.setCursor(0,2);
  lcd.print("Data - ");
  lcd.setCursor(0,3);
  lcd.print("Ora  - ");
  if (! RTC.isrunning()) {
  RTC.adjust(DateTime(__DATE__, __TIME__)); 
 }

  delay(300);//Let system settle
  Serial.println("Humidità e temperatura\n\n");
  delay(700);//Wait rest of 1000ms recommended delay before


 
  vw_set_rx_pin(RX_DIO_Pin);
  vw_setup(1000);
  vw_rx_start(); 

}
void loop(){

      statepin = digitalRead (setpin);
      if (statepin == LOW)
      RTC.adjust(DateTime(__DATE__, __TIME__));


 DateTime now = RTC.now();
      sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
      lcd.setCursor(0,2);
      lcd.print( buffer1 );
      sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());
      lcd.setCursor(0,3);
      lcd.print( buffer2 );
      delay(500);
      DHT.read11(dht_dpin);
  lcd.setCursor(0,0);
  lcd.print("Umidita':          %");
  lcd.setCursor(13,0);
  lcd.print(DHT.humidity);
  lcd.setCursor(0,1);
  lcd.print("Temperatura:       C");
  lcd.setCursor(13,1);
  lcd.print(DHT.temperature);
  Serial.print("Umidità = ");
  Serial.print(DHT.humidity);
  Serial.print("%  ");
  Serial.print("Temperatura = ");
  Serial.print(DHT.temperature); 
  Serial.println("C  ");
  delay(500);
  
  uint8_t Buffer_Size = 2;
  unsigned int Data;
  uint8_t RxBuffer[Buffer_Size];
  if (vw_get_message(RxBuffer, &Buffer_Size)){
  Data = RxBuffer[0] << 8 | RxBuffer[1];

 }


 if(Data==2403){

   lcd.setCursor(10,2);
   lcd.print("All.Intern"); 
   Serial.println(Data);
   digitalWrite(ledPin, HIGH);   //Accendiamo il LED
   digitalWrite(relePin, HIGH);
   tone(Buzzer, note, 2000);
   delay(4000);
   lcd.setCursor(10,2);
   lcd.print("          ");
   digitalWrite(ledPin, LOW);
   digitalWrite(relePin,LOW);
   mioFile.write("Allarme Interno\n");
   mioFile.write( buffer1 );
   mioFile.write( buffer2 );



}

 if(Data==1501){
    lcd.setCursor(10,3);
    lcd.print("All.Estern"); 
    Serial.println(Data);
    digitalWrite(ledPin1, HIGH);   //Accendiamo il LED
    digitalWrite(relePin, HIGH);
    tone(Buzzer, note1, 2000);
    delay(1000);
    digitalWrite(relePin,LOW);
    delay(4000);
    lcd.setCursor(10,3);
    lcd.print("          ");
    digitalWrite(ledPin1, LOW);
    mioFile.write("Allarme Esterno\n");
    mioFile.write( buffer1 );
    mioFile.write( buffer2 );

}
}

Ultima modifica: 3 Anni 11 Mesi fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
I seguenti utenti ringraziano:: soulribel

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1157

  • soulribel
  • Avatar di soulribel
  • OFFLINE
  • Moderatore
  • Messaggi: 100
  • Ringraziamenti ricevuti 22
  • Karma: 22
mi è impossibile testare dovrei realizzare un sistema come il tuo per verificare il corretto funzionamento, a grandi linee sembra corretto lo sketch, hai visto se ti crea la cartella o se la sd viene caricata e riconosciuta da arduino? solo ora noto che l'adattatore che ho io ovvero il catalex v1.0 può essere alimentato fino a 5v anche se il suo funzionamento è a 3.3v visto che monta un regolatore di tensione prima prova farei quella li alimentalo come da datasheet a 3,3v ( ripeto secondo lo schema ha un regolatore sulla shield)

Questa immagine è nascosta ai visitatori. Prego accedi o registrati per visualizzarli.


poi anche se hai messo un blocco per la sd in caso di malfunzionamento il programma dell'antifurto va avanti ma la sd no quindi verifica se la legge e se riesce almeno a crearti la cartella
Ultima modifica: 3 Anni 11 Mesi fa da soulribel.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1158

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 581
  • Ringraziamenti ricevuti 102
  • Karma: 44
Non mi crea proprio la cartella.. Io ho inserito lo sketch che ho trovato in rete facendo un'unica modifica.
Praticamente ho messo i comandi che scriveranno nella SD nel void loop dopo ogni IF.
In questo modo se accade una cosa mi scrive una cosa e se ne accade un'altra ne scrive un'altra.. Ho caricato lo sketch "Card info" che è sugli esempi e mi dice che la SD è collegata bene e può essere scritta e letta.... oggi riprovo.
Intanto grazie.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
I seguenti utenti ringraziano:: soulribel

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1159

  • soulribel
  • Avatar di soulribel
  • OFFLINE
  • Moderatore
  • Messaggi: 100
  • Ringraziamenti ricevuti 22
  • Karma: 22
se non ti crea la cartella c'è qualche inghippo nel setup, dal seriale potresti vederlo, infatti dovrebbe riportarti se legge e riconosce la sd se tenta di creare la cartella o in quale punto dello sketch si blocca. Fammi sapere IZ3ZLU cosa vedi nel monitor seriale :)
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1160

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 581
  • Ringraziamenti ricevuti 102
  • Karma: 44
Modificato lo sketch prima di leggere la tua risposta...
Ora crea il file Log.txt se non lo trova altrimenti da conferma che esiste già... fin qui tutto bene.
Appare anche su seriale che sta scrivendo su SD e da il DONE alla fine, ma se inserisco la SD sul pc e apro Log.txt non c'è scritto niente... Allego nuovo sketch dove ho evidenziato con due frecce il punto in cui deve scrivere su SD dopo l'IF del primo allarme:
#include <SPI.h>
#include <SD.h>
#include "Pitches.h"
#include <VirtualWire.h>
#include <Wire.h>
#include <RTClib.h> 
#include <PCF8574_HD44780_I2C.h>
#include <dht.h>
#define dht_dpin A0 
PCF8574_HD44780_I2C lcd(0x27,20,4);
dht DHT;
RTC_DS1307 RTC;
const int setpin = 6;
boolean statepin = 0;
char buffer1[20];
char buffer2[20];
int ledPin1 = 12; 
int ledPin = 11;
int relePin = 10;
int RX_DIO_Pin = 5;
const int Buzzer = 9;
unsigned int Data;
int note = NOTE_A4;
int note1 = NOTE_C4;
File myFile;

void setup(){
  
 Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Inizializzo SD card...");

  if (!SD.begin(4)) {
    Serial.println("inizializzazione fallita!");
    return;
  }
  Serial.println("inizializzazione OK.");

  if (SD.exists("Log.txt")) {
    Serial.println("Log.txt esiste.");
  }
  else {
    Serial.println("Log.txt non esiste.");
    Serial.println("Creo Log.txt...");
  }

  myFile = SD.open("Log.txt", FILE_WRITE);
  myFile.close();

    pinMode (6, INPUT);
    digitalWrite (6, HIGH); 
 Wire.begin();
       RTC.begin();
       lcd.init();     
  lcd.backlight(); 
  lcd.setCursor(0,0);
  lcd.print("  Antifurto IZ3ZLU ");
  lcd.setCursor(0,2);
  lcd.print("Data - ");
  lcd.setCursor(0,3);
  lcd.print("Ora  - ");
  if (! RTC.isrunning()) {
  RTC.adjust(DateTime(__DATE__, __TIME__)); 
 }

  delay(300);//Let system settle
  Serial.println("Humidità e temperatura\n\n");
  delay(700);//Wait rest of 1000ms recommended delay before


  pinMode(ledPin, OUTPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(relePin, OUTPUT);
  vw_set_rx_pin(RX_DIO_Pin);
  vw_setup(1000);
  vw_rx_start(); 

}
void loop(){

      statepin = digitalRead (setpin);
      if (statepin == LOW)
      RTC.adjust(DateTime(__DATE__, __TIME__));


 DateTime now = RTC.now();
      sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
      lcd.setCursor(0,2);
      lcd.print( buffer1 );
      sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());
      lcd.setCursor(0,3);
      lcd.print( buffer2 );
      delay(500);
      DHT.read11(dht_dpin);
  lcd.setCursor(0,0);
  lcd.print("Umidita':          %");
  lcd.setCursor(13,0);
  lcd.print(DHT.humidity);
  lcd.setCursor(0,1);
  lcd.print("Temperatura:       C");
  lcd.setCursor(13,1);
  lcd.print(DHT.temperature);
  Serial.print("Umidità = ");
  Serial.print(DHT.humidity);
  Serial.print("%  ");
  Serial.print("Temperatura = ");
  Serial.print(DHT.temperature); 
  Serial.println("C  ");
  delay(500);
  
  uint8_t Buffer_Size = 2;
  unsigned int Data;
  uint8_t RxBuffer[Buffer_Size];
  if (vw_get_message(RxBuffer, &Buffer_Size)){
  Data = RxBuffer[0] << 8 | RxBuffer[1];

 }


 if(Data==2403){

   lcd.setCursor(10,2);
   lcd.print("All.Intern"); 
   Serial.println(Data);
   digitalWrite(ledPin, HIGH);   //Accendiamo il LED
   digitalWrite(relePin, HIGH);
   tone(Buzzer, note, 2000);
   delay(4000);
   lcd.setCursor(10,2);
   lcd.print("          ");
   digitalWrite(ledPin, LOW);
   digitalWrite(relePin,LOW);
---------------------------------------------------------------------------   
-----------> Serial.print("Writing to Log.txt...");                        \
   File myFile = SD.open("Antifurto Interno",FILE_WRITE);                  \
    Serial.println("done.");}                                              \
    myFile.close();<-----------------------------------------------------


  myFile = SD.open("Log.txt");
  if (myFile) {
    Serial.println("Log.txt:");
    
    while (myFile.available()) {
      Serial.write(myFile.read());
   
    myFile.close();
 }

 if(Data==1501){
    lcd.setCursor(10,3);
    lcd.print("All.Estern"); 
    Serial.println(Data);
    digitalWrite(ledPin1, HIGH);   //Accendiamo il LED
    digitalWrite(relePin, HIGH);
    tone(Buzzer, note1, 2000);
    delay(1000);
    digitalWrite(relePin,LOW);
    delay(4000);
    lcd.setCursor(10,3);
    lcd.print("          ");
    digitalWrite(ledPin1, LOW);
    tone(Buzzer, note, 20);
    myFile = SD.open ("Allarme Esterno",FILE_WRITE);
}
}
}
Ultima modifica: 3 Anni 11 Mesi fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Antifurto semplice con Arduino 3 Anni 11 Mesi fa #1161

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 581
  • Ringraziamenti ricevuti 102
  • Karma: 44
Questo è ciò che appare sul monitor seriale, temperatura e umidità danno 0 in quanto non è collegato il sensore:


Questa immagine è nascosta ai visitatori. Prego accedi o registrati per visualizzarli.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.805 secondi
Powered by Forum Kunena
   
   
© PSKTRENTUNISTI ITALIAN CLUB (PIC)