progetto cassaforte (scelta arduino uno o mega).

Salve, vorrei fare un progetto per realizzare una cassaforte in una scatola di alluminio.

Mi chiedevo se mi serve un uno o un mega per implementare:

  • Fotoresistenza - che attiva le chiavi RFid
  • Telecomando ir che fa da alternativa alle chiavi Rfid in caso che non venga riconosciuta o se non si vuole usare.
  • display lcd per vedere se si inseriscono i dati corretti o sbagliati e le info che da la cassaforte.
  • Servo per aprire la cassaforte.
  • 2 led per dire che se è ok, o no.
  • Adattatore wifi per ricevere i log se uno usa la cassaforte, non so se m serva mysql (questo lo so usare).
  • app inventor per comandare la cassaforte via smartphone.

quindi tutto queste cose che voglio implementare mi serve un arduino uno o mega?

Non ricordo come si chiama l'adattatore wifi che aveva anche un forum suo personale.

Vi ringrazio molto e buona giornata.

Come Pin ti basterebbero quelli di una UNO ( mini, nano, etc )

ok , grazie mille con cosa lo hai disegnato lo schema?

vi ringrazio molto e buona fine settimana.

Guarda, ieri sera mi sono voluto un po’ divertire a realizzare quello che dici e ne è venuto fuori il progetto in allegato

apri_porta.pdf (225 KB)

grazie mille ora me lo guardo e poi stasera ti rispondo se va bene..

sto sistemando il computer perché lo installato da zero .. prima di sera .. ti faro sapere

e ti ringrazio moltissimo..

Buona fine settimana.

ok, va bene .. ma non vedo arduino... cosa hai usato?

grazie mille.

Visto che serviva il WiFi, ho usato solo l’ESP8266, in questo caso una NodeMCU tipo Questa , che si programma direttamente con l’IDE di Arduino

Volendo si può usare anche un normale LCD I2C

Cambia un pò lo sketch

Edit: Ecco lo sketch

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266TelegramBOT.h> // https://github.com/Gianbacchio/ESP8266-TelegramBot
#include <SPI.h>
#include <MFRC522.h>  // installare da Library manager
#include <Servo.h>
#include <Wire.h>
#include <PCF8574_HD44780_I2C.h> // https://forum.arduino.cc/index.php?topic=242423.0

PCF8574_HD44780_I2C lcd(0x27, 16, 2); // Assegnare l'indirizzo del proprio LCD I2C
Servo myservo;
#define SS_PIN     15 // SDA-PIN RC522 - pin D8 NodeMCU
#define RST_PIN    10 // RST-PIN RC522 - pin RST NodeMCU
#define Led        16 // pin D0 NodeMCU
#define pin_servo   2 // pin D4 NodeMCU

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

// Initialize Wifi connection to the router
char ssid[] = "xxxxxx";              // your network SSID (name)
char password[] = "xxxxxxx";    // your network key

// Initialize Telegram BOT
#define BOTtoken "xxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxx"  //token of TestBOT
#define BOTname "xxxxxxx"
#define BOTusername "xxxxxxx"
#define Chat_ID "xxxxxxxxxx"
TelegramBOT bot(BOTtoken, BOTname, BOTusername);

int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime;   //last time messages' scan has been done
bool Stato = false;
int num_tentativi = 0 ;

void setup() {
  Serial.begin(115200); // Initialize serial communications
  delay(250);
  lcd.init();           // LCD Initialization
  lcd.backlight();      // Backlight ON
  lcd.clear();          // Clear the display
  lcd.setCursor(0, 0);  // Set the cursor to col 0, row 0
  lcd.print(F("Ciao Mondo"));   // Print the first word
  delay(1000);
  SPI.begin(); // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522
  lcd.clear();
  lcd.print(F("Connecting Wifi"));
  lcd.setCursor(0, 1);
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    lcd.print(".");
  }
  lcd.clear();
  Serial.println("");
  Serial.println(F("WiFi connected"));
  Serial.println(F("IP address: "));
  lcd.println(F("WiFi connected  "));
  Serial.println(F("IP address: "));
  IPAddress ip = WiFi.localIP();
  Serial.println(ip);
  bot.begin();      // launch Bot functionalities
  delay(1000);
  lcd.clear();
  lcd.noBacklight();
  Serial.println(F("Scan for Card and print UID:"));
  myservo.attach(pin_servo); // pin D4 NodeMCU
  myservo.write(10);
  pinMode(Led, OUTPUT);
  digitalWrite(Led, HIGH);
}

void loop() {
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    bot.getUpdates(bot.message[0][1]);   // launch API GetUpdates up to xxx message
    Bot_ExecMessages();   // reply to message with Echo
    Bot_lasttime = millis();
  }
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    delay(50);
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    delay(50);
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "CD E5 A2 CC" || content.substring(1) == "33 21 E6 A4") //change here the UID of the card/cards that you want to give access
  {
    Serial.println(F("Authorized access"));
    Serial.println();
    lcd.backlight();      // Backlight ON
    lcd.clear();          // Clear the display
    lcd.setCursor(0, 0);
    lcd.print(F("   Accesso"));
    lcd.setCursor(0, 1);
    lcd.print(F(" autorizzato"));
    digitalWrite(Led, LOW);
    num_tentativi = 0 ;
    bot.sendMessage(Chat_ID, "Apertura Porta", "");
    myservo.write(150);
    delay(3000);
    myservo.write(10);
    digitalWrite(Led, HIGH);
    lcd.noBacklight();    // Spegne display
    lcd.clear();          // Clear the display
  }
  else   {
    Serial.println(F(" Access denied"));
    bot.sendMessage(Chat_ID, "Tentativo di accesso fallito", "");
    lcd.backlight();      // Accende display
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(F(" Accesso negato"));
    lcd.setCursor(0, 1 );
    lcd.print(F(" Tentativo "));
    num_tentativi++ ;
    if (num_tentativi > 3 ) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(F("Accesso Bloccato"));
      bot.sendMessage(Chat_ID, "Accesso Bloccato", "");
      delay(10000);
    }
    else {
      lcd.print(num_tentativi);
    }
    delay(3000);
    lcd.noBacklight();
    lcd.clear();          // Clear the display
  }
}

/********************************************
   EchoMessages - function to Echo messages
 ********************************************/
void Bot_ExecMessages() {
  for (int i = 1; i < bot.message[0][0].toInt() + 1; i++)      {
    bot.message[i][5] = bot.message[i][5].substring(1, bot.message[i][5].length());
    //    Serial.println();
    //    Serial.println(bot.message[i][4]); // Visualizza Chat_ID
    //    Serial.println(bot.message[i][5]); // Visualizza comando inviato
    //    Serial.println();
    if (bot.message[i][5] == "apri" ) {
      digitalWrite(Led, LOW);
      myservo.write(150);
      bot.sendMessage(bot.message[i][4], "Porta aperta", "");
      //      delay(3000);
      //      myservo.write(10);
      //      digitalWrite(Led,HIGH);
    }
    if (bot.message[i][5] == "chiudi" ) {
      myservo.write(10);
      digitalWrite(Led, HIGH);
      bot.sendMessage(bot.message[i][4], "Porta chiusa", "");
    }
    if (bot.message[i][5] == "aiuto") {
      bot.sendMessage(bot.message[i][4], "Elenco comandi", "" );
      bot.sendMessage(bot.message[i][4], "/apri : Apre la porta", "" );
      bot.sendMessage(bot.message[i][4], "/chiudi : Chiude la porta", "" );
      bot.sendMessage(bot.message[i][4], "/stato : Stato della porta", "" );
    }
    if (bot.message[i][5] == "stato") {
      String wellcome = "Porta " + (String)(digitalRead(Led)  ? "Chiusa" : "Aperta") ;
      bot.sendMessage(bot.message[i][4], wellcome, "");
    }
  }
  if ( Stato == false )    {
    //Serial.println( "C'e' stato un Reset" );
    bot.sendMessage(Chat_ID, "C'e' stato un Reset", "");
    Stato = true ;
  }
  bot.message[0][0] = "";   // All messages have been replied - reset new messages
}

ha, cosi è ottimo…ora mi guardo bene il codice… e poi ti faro sapere.

ok, mi è arrivato il kit.. ma ora vorrei se è possibile una modifica.. sia nel codice e nello frtizing ..

vorrei tutto senza andar online e con l'arduino uno compatibile.

Non so se mi protesti fare questo favore.

I miei componenti sono:
Rfid
relè
led
display lcd.

Perché essendo che sto studiando ora l'elettronica fuori scuola perché ho già 35 anni e io la scuola lo finita a 18 anni.. vorrei se mi facessi un pdf con le istruzioni.

ti ringrazio moltissimo.

scusa, ho anche il servo gs90.

buona serata.

Non è per cattiveria, ma quello che chiedi è una cosa trita e ritrita, prova a cercare su google "arduino rfid apriporta" e vedrai quanti esempi vengono fuori.
Oltretutto mi pare che nella libreria del Rfid ci sia già un esempio di controllo accessi

SistemaL:
vorrei se mi facessi un pdf con le istruzioni.

>SistemaL : … ti prego di considerare che, purtroppo qui NON funziona così …
… qui nessuno scrive software per conto terzi o realizza schemi su ordinazione, ma si aiuta chi viene qui a correggere/ottimizzare il software che lui scrive o gli schemi che lui realizza :slight_smile:

Se non hai mai sviluppato su Arduino, o hai sviluppato molto poco, puoi cominciare con studiare QUESTO proseguire con QUESTO e/o acquistare qualche buon libro (es. QUESTO) … dopo di che puoi cominciare a scrivere il tuo programma, metterlo qui (… mi raccomando, sempre racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> … primo a sinistra) e chiedere aiuto sui punti che non ti funzionano o che non capisci.

Guglielmo

ok, tutto ok.. faccio come dice "gpb01" e ringrazio molto anche "Brunello" per il nome della ricerca su google.

per gpb01 grazie per i pdf .. ora me li leggo subito..

grazie mille e mi metto allo studio ed imparo a programmare.

Buona serata.

Alla fine hai abbandonato il progetto cassaforte con bluetooth?
Ne avevamo parlato qui:

no, non lo abbandonato.. ma lo farò più avanti... quando sono in grado di farlo..

grazie mille e buona domenica.