Buenas, ✔️ Cómo utilizar el MODULO SD ✔️ ARDUINO // IngeDonManual - YouTube
Con este video de youtube me estoy guiando para utilizar un micro SD Pero no entiendo y no se como definir los pines diferentes,
EN EL MINUTO 1:35 Del video asi que si alguno me puede ayudar diciendo como realizo eso de los pine se lo agradeceria mucho graciassssss.
Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.
Bien, un poco lioso ese video, deberias leer el articulo del mismo autor, LINK, algo más claro con conexiones y códigos para descargar.
En ese tutorial te indica que conectes el modulo SD de la siguiente forma:
CS - (PIN10)
SCK - (PIN13)
MOSI - (PIN11)
MISO - (PIN12)
VCC - (5V)
GND - (GND)
Si lo conectas de esta forma en el video te dice que es la inicialización por defecto y no debes cambiar nada:
// dentro del setup.
SD.begin();
Si cambiaras el pin CS, ( chip select), a otro pin, ( los otros son la comunicacion SPI y no los puedes cabiar), tienes que inicializar la SD indicándole ese cambio. Si por ejemplo lo cambias al pin 4, el autor en sus códigos la inicializa en el setup de la siguiente manera:
Serial.print("Iniciando SD ...");
if (!SD.begin(4)) {
Serial.println("No se pudo inicializar");
return;
}
Serial.println("inicializacion exitosa");
Saludos.
Listo, pero en el caso en el que los
SCK - (PIN13)
MOSI - (PIN11)
MISO - (PIN12)
No tengo ocupados con un lector RFID, Que puedo hacer al respecto?
Porque necesito el micro SD que guarde los ID Tag del RFID.
Nada, compartirlos con el RFI, esos pines forman el bus de comunicaciones SPI, es el arduino con en pin CS el que seleccionara la SD o el RFID, obiamente el pin CS ha de ser distinto para cada módulo e inicializado según la instrucción de su librería.
Para el caso de la SD conectando su CS al pin 4 ya hemos visto que es:
SD.begin(4);
Algo similar tendras que hacer con el RFID indicando a que pin va conectado su CS, para ello mira los ejemplos de su libreria.
Listo perdona tanta preguntadera es que soy nuevo en esto de arduino y tengo un proyecto importante del colegio.
Ya probé El lector rfid y el SD a la vez
SD.begin(4)
Esto está claro.
Y el Rfid está
#define PIN_CS 10
Y funciona a la perfección.
Pero me podrías indicar cómo hago para definir el Pin Mosi al pin 5 para poder conectar la SD.
No puedes cambiar el pin MISO a cualquier otro, solo se puede usar el pin 12.
MISO, MOSI y SCK son pines comunes a todos los dispositivos que conectes para comunicarse por SPI.
Ya te lo ha explicado @anon90500195 léete este TUTORIAL es de lo mejor que puedes encontrar
Listo hermanos lo lei muchas gracias, por último ya que no se pueden codificar ni cambiar los pines, que hago para poder conectar los dos dispositivos a ambos tiempo?, Puedo multiplicarlos con una protoboard?
Por supuesto
Creo que no has entendido algo, o a mi me lo parece
La interface SPI permite tener muchos dispositivos.
Tu Lector RFID y la SD puede compartir MOSI, MISO, SCK y tener cada uno un Chip select o sea un chip que lo habilita diferente.
Cuando usas la SD pones en LOW dicho pin. cuando usas el lector RFID pones el LOW el otro pin. Cuando no usas ninguno levantas a HIGH. De hecho las librerías lo hacen por ti.
De hecho ya entiendo más, mi única duda era como conectarlos pero ya me quedo claro que los puedo poner con una protoboard, osea paso el pin ejemplo 12 a la protoboard y ahi si puedo conectar el Jumper del rfid y del SD
Correcto, nada más simple.
Bueno chicos con su ayuda logre poner a funcionar el rfid y el sd al tiempo, pero ahora tengo un dilema que es que no encuentro algun video o tutorial que me explique como poder guardar los datos e intentado con uno que pone de ejemplo de sensor DHT11 De humedad y temperatura pero la verdad se me ha sido complicado entonces alguno tiene un video o algun lugar donde me den un tutorial al respecto con el rfid, gracias.
Y que quieres guardar, porque RFID no vas a guardar en una SD o si?
Ahora caigo, quieres guardas los ID de cada tarjeta para luego poder compararlos no?
Lo que quiero hacer es que guarde el registro de IDS en la SD y si es posible que solo guarde los que están registrados no sé si me pueda ayudar
Pero hombre, que tal si te pones a buscar tutoriales de RFID y ves como se trabaja con este dispositivo?.
Lo mismo con la SD, guardando datos de cualquier tipo.
Y no hablo de un video o dos.
Hay que sentarse e ir aprendiendo paso a paso.
Entre ambos irá surgiendo una idea que al principio sera torpe pero iras puliendo con tu aprendizaje. Pero acá a cada paso estas perdido.
Creo que te has metido en algo que te supera y se debe a que pretendes atacar cosas que desconoces.
Tomatelo con calma.
Prueba como se usa la SD. Guarda datos, cualquier cosa, el tiempo, coloca un boton pulsador y presiona y almacena cuando lohiciste y luege léelo. Y ahi tienes ya un buen avance.
Luego estudia las RFID, detecta tarjetas nuevas, comparalas con existentes.
Dominados los dos campos podras hacer algo que tenga coherencia.
De lo contrario te sugiero que busques códigos en este foro, hay algun hilo parecido si mal recuerdo, pero intenta poner algo de tu parte para aprender.
Gracias por los consejos he estado probando videos y he llegado a un error que lo he intentado solucionar pero nada
#include <SPI.h> // incluye libreria interfaz SPI
#include <SD.h> // incluye libreria para tarjetas SD
#include <DHT.h> // incluye libreria DHT de Adafruit
#include <DHT_U.h> // incluye libreria Adafruit Unified Sensor
#define SENSOR 4 // constante SENSOR en pin digital 4 (señal de DHT11)
int TEMPERATURA; // variable para almacenes valor de temperatura
int HUMEDAD; // variable para almacenar valor de humedad
#define SSpin 10 // Slave Select en pin digital 10
archivo de archivo; // objeto archivo del tipo File
DHT DHT(SENSOR, DHT11); // objeto dht del tipo DHT en pin 4 y modelo DHT11
configuración vacía () {
Serial.begin(9600); // inicializa monitor serie a 9600 bps
dht.begin(); // inicializacion de sensor
Serial.println("Inicializando tarjeta..."); // texto en ventana de monitor
if (!SD.begin(SSpin)) { // inicializacion de tarjeta SD
Serial.println("fallo en inicializacion !");// si falla se muestra el texto correspondiente y
devolver; // se sale del setup() para finalizar el programa
}
Serial.println("inicializacion correcta"); // texto de inicializacion correcta
archivo = SD.open("datos.txt", FILE_WRITE); // apertura para lectura/escritura de archivo datos.txt
si (archivo) {
for (int i=1; i < 31; i++){ // el bucle se repite 30 veces
TEMPERATURA = dht.readTemperature(); // almacena en valor variable leido de temperatura
HUMEDAD = dht.leerHumedad(); // almacena en valor variable leido de humedad
archivo.print(i); // escribe en tarjeta el valor del indice
archivo.print(","); // escribe en tarjeta una coma
archivo.print(TEMPERATURA); // escribe en tarjeta el valor de temperatura
archivo.print(","); // escribe en tarjeta una coma
archivo.println(HUMEDAD); // escribe en tarjeta el valor de humedad y salto de linea
Serial.imprimir(i); // escribe en monitor el valor del indice
Serie.imprimir(","); // escribe en monitor una coma
Serial.print(TEMPERATURA); // escribe en monitor el valor de temperatura
Serie.imprimir(","); // escribe en monitor una coma
Serial.println(HUMEDAD); // escribe en monitor el valor de la humedad y salto de linea
retraso (1000); // demora de 1 segundo
}
archivo.close(); // cierre de archivo
Serial.println("escritura correcta"); // texto de escritura correcto en serie de monitores
} más {
Serial.println("error en apertura de datos.txt"); // texto de falla en apertura de archivo
}
}
void loop() { // funcion loop() obligatoria de declarar pero no utilizada
// nada por aqui
}
Con esta libreria de Youtube de arduino para todos me estoy guiando y juntandolo con el rfid pero tengo un problema que es que en esta parte de la programacion
si (archivo) {
for (int i=1; i < 31; i++){ // el bucle se repite 30 veces
TEMPERATURA = dht.readTemperature(); // almacena en valor variable leido de temperatura
HUMEDAD = dht.leerHumedad(); // almacena en valor variable leido de humedad
No me detecta la clase de RFID asi que adjunto mi codigo de RFID.
#include <SD.h>
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
#define SS_PIN 10
#define RST_PIN 9
#define beep_pin 8
#define green_pin 7
#define red_pin 6
#define SK_pin 4
File archivo;
int TARJETA; // variable para almacenar valor de temperatura
MFRC522 mfrc522(SS_PIN, RST_PIN); // Creamos Sensor De Tarjeta MFRC522 Instancia
LiquidCrystal_I2C lcd(0x27,16,2); // Creamos Pantalla LCD Instancia
void setup()
{
Serial.begin(9600); // Initiate a serial communication
Serial.println("Inicializando tarjeta ..."); // texto en ventana de monitor
if (!SD.begin(4)) { // inicializacion de tarjeta SD
Serial.println("fallo en inicializacion !");// si falla se muestra texto correspondiente y
return; // se sale del setup() para finalizar el programa
}
Serial.println("inicializacion correcta"); // texto de inicializacion correcta
archivo = SD.open("datos.txt", FILE_WRITE); // apertura para lectura/escritura de archivo datos.txt
pinMode(beep_pin,OUTPUT);
digitalWrite(beep_pin,LOW);
pinMode(green_pin,OUTPUT);
digitalWrite(green_pin,LOW);
pinMode(red_pin,OUTPUT);
digitalWrite(red_pin,LOW);
lcd.begin(16, 2);
lcd.setCursor(3, 1);
lcd.backlight();
lcd.print("Iniciando...");
lcd.setCursor(3, 0);
lcd.print("Bienvenidos");
delay(1500);
lcd.clear();
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
Serial.println("Acerca la tarjea al sensor porfavor...");
Serial.println();
}
void loop()
{
digitalWrite(beep_pin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pase La Tarjeta");
lcd.setCursor(0, 1);
lcd.print("Porfavor....");
delay(300);
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
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 (archivo) {
for (int i=1; i < 31; i++){ // bucle repite 30 veces
TARJETA = mfrc522.readTARJETA(); // almacena en variable valor leido de temperatura
archivo.print(i); // escribe en tarjeta el valor del indice
archivo.print(","); // escribe en tarjeta una coma
archivo.print(TARJETA); // escribe en tarjeta el valor de temperatura
Serial.print(i); // escribe en monitor el valor del indice
Serial.print(","); // escribe en monitor una coma
Serial.print(TARJETA); // escribe en monitor el valor de temperatura
delay(1000); // demora de 1 segundo
if (content.substring(1) == "B3 4F BB 20") //change here the UID of the card/cards that you want to give access
{
digitalWrite(beep_pin,HIGH);
lcd.setCursor(0, 0);
lcd.print("ID : ");
lcd.print(content.substring(1));
lcd.setCursor(0, 1);
lcd.print("ID Registrado");
Serial.println("ID Registrado");
digitalWrite(green_pin, HIGH);
delay(700);
delay(700);
digitalWrite(green_pin, LOW);
}
}
archivo.close(); // cierre de archivo
Serial.println("escritura correcta"); // texto de escritura correcta en monitor serie
} else {
Serial.println("error en apertura de datos.txt"); // texto de falla en apertura de archivo
}
else {
digitalWrite(beep_pin,HIGH);
lcd.setCursor(0, 0);
lcd.print("ID : ");
lcd.print(content.substring(1));
lcd.setCursor(0, 1);
lcd.print("ID No registrado");
Serial.println(" ID No registrado");
digitalWrite(red_pin, HIGH);
delay(700);
delay(700);
digitalWrite(red_pin, LOW);
}
}
Entonces necesito una ayuda de como podria reemplazar los datos del DHT con el RFID
Gracias por su paciencia jaja
¿Estás seguro de la siguiente instrucción?
HUMEDAD = dht.leerHumedad();
¿No será dht.readHumidity()?
Te adjunto un link para que le eches una mirada
Ahi empieza a tomar color, a eso me refería @inventario9a. Uno puede equivocarse si, pero en el proceso aprende.