Modulo no apilable

Un modulo no apilable es un circuito impreso (PCB) que no respeta el factor de forma de Arduino de modo que deberá ser conectado a través de cables.

A diferencian de los módulos apilables, los módulos no apilables no respetan el factor de forma de Arduino y normalmente se les conecta al Arduino a través de cables.

1. SD

Esta librería permite leer y escribir en tarjetas microSD, esto es una gran ventaja porque conservaras lo escrito así se quede sin energía el Arduino. La librería es compatible con los sistemas de archivos FAT16 y FAT32 en tarjetas SD estándar y tarjetas SDHC. Solo use nombres cortos de 8.3 para los archivos y carpetas. El pin out es directamente compatible con Arduino (5V) y también se puede usar con otros uC (3.3V). Nos permite agregar almacenamiento masivo y registro de datos a nuestro proyecto.

Modulo SD
Pines de un modulo SD
PinDescripciónPin
CSSelección de CHIP4
CLKReloj serie13
MOSIMaestro esclavo fuera11
MISO12
VCC3.3/5VVCC
GNDtierraGND

La comunicación entre el uC y la tarjeta SD usa SPI, que tiene lugar en los pines digitales 11, 12 y 13 (en la mayoría de las placas Arduino) o 50, 51 y 52 (Arduino Mega). Además, se debe usar otro pin para seleccionar la tarjeta SD. Este puede ser el pin SS de hardware - pin 10 (en la mayoría de las placas Arduino) o pin 53 (Arduino Mega) - u otro pin especificado en la llamada a SD.begin(). Tenga en cuenta que incluso si no usa el pin SS de hardware, debe dejarse como salida o la biblioteca SD no funcionará.

#include <SD.h>
File Archivo;

void setup() {
  //Se establece comunicación con el monitor serial para la comprobación de la carga de datos.
  Serial.begin(57600);
  Serial.print("Comenzando la comunicación con la tarjeta SD");

  //Se establece como salida el pin correspondiente a SS.
  pinMode(10, OUTPUT);

  //Estado SD
  if (!SD.begin(10)) {
    Serial.println("Se ha producido un fallo al iniciar la comunicación");
    return;
  }
  Serial.println("Se ha iniciado la comunicación correctamente");

  /*** INICIO ESCRITURA ***/
  Archivo = SD.open("datos.txt", FILE_WRITE);
  if (Archivo) {
     Archivo.println("Esto es lo que se está escribiendo en el archivo");
     Archivo.close();
     Serial.println("Todos los datos fueron almacenados");
  }else{
     Serial.println("El archivo datos.txt no se abrió correctamente");
  }
  /* FIN ESCRITURA */

  /*** INICIO LECTURA ***/
  Archivo = SD.open("datos.txt");
  if (Archivo) {
    Serial.println("Información contenida en datos.txt: ");
    While (Archivo.available()) {
      Serial.write(Archivo.read());
    }
    Archivo.close();
  }else{
    Serial.println("El archivo datos.txt no se abrió correctamente");
  }
  /* FIN LECTURA */
}

void loop(){
	//Si tengo algún dato para escribir
	if(tengo){
		/*** INICIO ESCRITURA ***/
		Archivo = SD.open("datos.txt", FILE_WRITE);
		if (Archivo) {
			Archivo.print("Valor pin 11: ");
			Archivo.println(digitalRead(11));
			Archivo.close();
			Serial.println("Dato almacenado");
		}else{
			Serial.println("El archivo datos.txt no se abrió correctamente");
		}
		/* FIN ESCRITURA */
	}
}

Modulo SD = 15 soles.

2. RTC

El Real Time Clock (RTC) es capaz de llevar la cuenta de la fecha y hora de manera automática, incluso continua funcionando sin energía gracias a una pila. Esta basado el DS1307 e incluye una memoria EPROM I2C. El asunto es que Arduino es incapaz de mantener la hora correctamente a largo plazo, debido a los microsegundos que se atrasan (o adelantan) al dividir la frecuencia del reloj principal para dar con el segundo exacto. Por esta razón tanto el Arduino como nuestra PC requieren de un circuito integrado especializado que incluye un oscilador a cristal de cuarzo de 32.768 KHz (2 elevado a la potencia 15). Dicho oscilador genera una frecuencia estable y divisible mediante hardware digital para lograr el segundo exacto. Este circuito integrado especializado normalmente también tiene la capacidad de funcionar en un modo de bajo consumo que permite alimentarlo con una batería pequeña.

Modulo TinyRTC DS1307

El CHIP Maxim DS3231 es muy superior en precisión comparado el DS1307 que puede tener variaciones de 1 min por día por efectos de temperatura. EL DS3231 presenta desfases de 2 s/mes.

Pines TinyRTC DS1307
FunciónDescripciónPin Arduino
SCLA5
SDAA4
DSSensor de temperatura (no usado) 
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
DateTime hoy;
 
void setup() {
   Serial.begin(57600);
   if (!RTC.begin()) {
      Serial.println("No encuentro tinyRTC");
      while (1);
   }
   if (!RTC.isrunning()) {
      Serial.println("TinyRTC NO esta corriendo !");
      //Pone la fecha y hora de compilación
      RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
      //10 Marzo del 2018 at 19:42:00
      //RTC.adjust(DateTime(2018, 3, 10, 19, 42, 0));
   }
   pinMode(5, INPUT);
}
 
void loop() {
	if (digitalRead(5)){
		hoy = RTC.now();
		Serial.print('Fecha = ');
		Serial.print(hoy.Year());
		Serial.write('-');
		Serial.print(hoy.Month());
		Serial.write('-');
		Serial.print(hoy.Day());
		Serial.print(' Hora = ');
		print2dig(hoy.Hour());
		Serial.write(':');
		print2dig(hoy.Minute());
		Serial.write(':');
		print2dig(hoy.Second());
		Serial.write('.');
		Serial.print(millis());
		Serial.writeln();
		delay(1000);
	}
}
 
//Función para imprimir siempre 2 dígitos
void print2dig(int num) {
  if (num < 10) {
     Serial.write('0');
  }
  Serial.print(num);
}

La biblioteca RTC agrega la funcionalidad de reloj a Arduino con o sin hardware RTC externo. Permite que un boceto obtenga la hora y la fecha como: segundo, minuto, hora, día, mes y año. También proporciona tiempo como C time_t estándar, por lo que los tiempos transcurridos se pueden calcular fácilmente y los valores de tiempo se pueden compartir en diferentes plataformas.

Modulo tiny RTC DS1307 = 10 soles

3. Ethernet

Estas librería están diseñadas para funcionar con Arduino Ethernet Shield (Ethernet.h) o Arduino Ethernet Shield 2 y Leonardo Ethernet (Ethernet2.h). Las librerías permiten que una placa Arduino se conecte a Internet. La placa puede servir como un servidor que acepta conexiones entrantes o un cliente que hace las conexiones salientes. Las librería admiten hasta cuatro conexiones simultáneas (entrantes o salientes o una combinación). La librería Ethernet (Ethernet.h) gestiona el chip W5100, mientras que la librería Ethernet2 (Ethernet2.h) gestiona el chip W5500.

Modulo Ethernet
Ethernet ENC28J60
PinDescripciónPin
CSSelección de CHIP10
MOSI o SIDatos Maestro a Esclavo11
MISO o SODatos Esclavo a Maestro12
CLK o SCKReloj serie13
VCC3.3VVCC
GNDtierraGND

Aunque aparentemente soporta 5V no funciona. Tienes que alimentarlo con 3.3V. Ademas el cable RJ-45 lo debes conectar a un router o switch no a tu PC.

Arduino se comunica con la nube usando el bus SPI. Esto está en los pines digitales 11, 12 y 13 (Arduino Uno) y los pines 50, 51 y 52 (Arduino Mega). En ambas placa, el pin 10 se usa como SS. Para saber mas.

#include <EtherCard.h>

static byte mymac[] = {0x74,0x75,0x76,0x00,0x30,0x31};
static byte myip[] = {192,168,1,203};
byte Ethernet::buffer[500];
BufferFiller bfill;
char* EstadoLed="OFF";

void setup () {
   Serial.begin(57600);
   Serial.println("Prueba del modulo Ethernet ENC28J60");
   if (ether.begin(sizeof Ethernet::buffer, mymac) == 0){
      Serial.println(F("No se ha podido acceder al controlador Ethernet"));
   }else{
      Serial.println("Controlador Ethernet inicializado");
   }
   ether.staticSetup(myip);
   pinMode(5, INPUT);
   pinMode(6, OUTPUT);
   digitalWrite(6, LOW);
   Serial.println("Listo..."); 
}

static word homePage() {
   long t = millis()/1000;
   word h = t/3600;
   byte m = (t/60)%60;
   byte s = t%60;
   bfill = ether.tcpOffset();
   bfill.emit_p(PSTR(
      "HTTP/1.0 200 OK\r\n"
      "Content-Type: text/html\r\n"
      "Pragma: no-cache\r\n"
      "\r\n"
      "<html><head><meta http-equiv='refresh' content='1'/>"
      "<title>Prueba Ethernet</title></head>" 
      "<body><h1>Hola mundo</h1>"
      "<h3>Tiempo: $D$D:$D$D:$D$D</h3>"
      "<p>Pulsador: $D</p>"
      "<p>Estado del LED: $S -- "
      "<a href='/?status=ON'><input type=button value=ON></a>"
      "<a href='/?status=OFF'><input type=button value=OFF></a>"
      "</body></html>"
  ),h/10, h%10, m/10, m%10, s/10, s%10, digitalRead(5),EstadoLed);
  return bfill.position();
}

void loop () {
   word len = ether.packetReceive();
   word pos = ether.packetLoop(len);

   //Verifica si recibiste data TCP valida
   if (pos){
      if (strstr((char *)Ethernet::buffer + pos, "GET /?status=ON") != 0) {
         digitalWrite(6, HIGH);
         EstadoLed = "ON";
      }
      if (strstr((char *)Ethernet::buffer + pos, "GET /?status=OFF") != 0) {
         digitalWrite(6, LOW);
         EstadoLed = "OFF";
      }
      Serial.println(EstadoLed);
      ether.httpServerReply(homePage()); //Envia data a pagina web
   }
}

El modulo con CHIP ENC28J60 usa esta libreria

4. WiFi

Con Arduino WiFi Shield, esta biblioteca permite que una conexión a Internet. Puede servir como un servidor que acepta conexiones entrantes o un cliente que crea conexiones salientes. La librería admite el cifrado WEP y WPA2 Personal, pero no WPA2 Enterprise. También tenga en cuenta que si el SSID no se transmite, el escudo no se puede conectar.

Modulo WiFi

Arduino se comunica con el escudo WiFi con el bus SPI. Esto está en los pines digitales 11, 12 y 13 (Arduino Uno) y los pines 50, 51 y 52 (Arduino Mega). En ambos placas el pin 10 se usa como SS. La librería WiFi es muy similar a la librería Ethernet y muchas de las llamadas a funciones son las mismas.

5. Bluetooth

Comunicación inalambrica de tu Arduino por bluetooth. Conecta con la UART o puerto serie. Para saber mas

Modulo Bluetooth

Modulo bluetooth HC-05 / HC-06 = 12 soles

6. USB

El modulo CP2102 es un conversor USB 2.0 de 12 Mbps a TTL, lo que permite que un computadora se comunique con un uC usando el protocolo USB. Es compatible con cualquier uC como PIC, Atmel AVR, Arduino y ESP8266. Funciona de forma similar a los conversores FTDI232 y PL2303HX, con la ventaja de tener un mejor precio y mayor soporte de drivers. Además puede funcionar como "programador" del Arduino Mini Pro, pues incluye el pin DTR o RESET necesario para cargar fácilmente el boceto al Arduino MINI Pro.

Modulo USB

Para usar este modulo como programador debe conectar el módulo al Arduino MINI Pro usando los pines: +5V, GND, TXD, RXI y DTR. El pin DTR funciona como RESET, de esa forma cada vez que cargamos un boceto a nuestro Arduino, el programa "Resetea" al Arduino usando el pin DTR del módulo. También es usado para programar o "flashear" el chip ESP8266 en las versiones: ESP-01 y ESP-12E.

Modulo USB CP2102 = 12 soles

Pines CP2102
CP2102Arduino MINI
DTRDTR
RxTx
TxRx
Vcc+5V
GNDGND

7. GSM

Comunica vía GPRS usando una tarjeta SIM, usando SMS o mensajes de voz. También puede conectar a Internet.

Arduino no sera capas de alimentar este modulo, tendrás que poner una fuente externa. Para saber mas

8. RFID 125 KHz

La distancia de lectura es de hasta 5 cm.

9. RFID MiFARE

El módulo lector RFID-RC522 RF usa 3.3V como alimentación y se controla a través del bus SPI. También puede ser controlada con un puerto UART. Entonces, podemos decir que es compatible con casi cualquier uC, Arduino o tarjeta de desarrollo. El RC522 usa un sistema avanzado de modulación y demodulación para todo tipo de dispositivos pasivos de 13.56 MHz (MiFARE). Incluso, puesto que se hará una lectura y escritura de la tarjeta, es necesario conocer las características de los bloques de memoria una tarjeta.

La tarjeta que viene con el módulo RFID cuenta con 64 bloques de memoria (0-63) donde se hace lectura y/o escritura. Cada bloque de memoria tiene la capacidad de almacenar sobre hasta 16 Bytes. Finalmente el número de serie consiste de 5 dígitos hexadecimales, se podría usar esto para hacer una operación dependiendo del número de serie.

Lector de RFID

Usa la librería MFRC522.h

La distancia de lectura es de hasta 60 cm.

Near Field Communications o NFC es una forma de comunicarse entre dos dispositivos muy cercanos entre sí. Algo así como un bluetooth de muy corto alcance que no requiere autenticación. Es una extensión de RFID, por lo que cualquier cosa que pueda hacer con RFID lo puede hacer con NFC. También puede hacer más cosas con NFC, como comunicarse bidireccionalmente con teléfonos celulares. El PN532 es el chip NFC más popular y está integrado en casi todos los teléfonos o dispositivos que hacen NFC. Puede prácticamente hacer todo, como leer y escribir en etiquetas y tarjetas, comunicarse con teléfonos y 'actuar' como una etiqueta NFC. También puede funcionar con cualquier otra etiqueta NFC / RFID tipo 1 a 4.

El PN532 es muy flexible, puede usar 3.3V, TTL UART a cualquier velocidad en baudios, I2C o SPI para comunicarse con él. Este chip también puede usar el cable FTDI serie para comunicarse. Funciona a 13.56 MHz.

Modulo RC522 = 19 soles

10. RFID UHF

El un microchip que se anexa a una antena (el microchip y la antena en conjunto se denominan transpondedor de RFID o etiqueta de RFID). La antena permite que el microcircuito transmita la información de identificación a un lector. El lector convierte las ondas radiales emitidas por la etiqueta RFID en información digital que puede ser pasada a computadoras que la pueden usar.

La distancia de lectura es de hasta 6 m.

11. GPS

Como lo escuchas un modulo que proporciona a tu Arduino GPS, con un SD puedes guardar el log, conexión por puerto serie o directa.

12. Reles

Pone a disposición de Arduino 4 reles para manejar dispositivos que no pueden controlarse directamente desde Arduino. Se usan solamente 4 pines digitales uno por rele. Existe una versión de 8 reles o mas pero usando el bus I2C para comunicarse.

Modulo 4 reles optoacoplados = 19 soles

13. Motores

Permite manejar fácilmente dos motores DC controlando su dirección y velocidad. Ocupa 4 pines de Arduino por canal.

Para saber mas

14. 8 dígitos 7 segmentos

Este es un modulo muy interesante porque solo contiene 2 elementos importantes: 2 displays de 4 dígitos cada uno y un integrado MX7219 que hace todo el trabajo con la librería LedControl. Los datos los envías en modo serie y hasta se pueden concatenar varios módulos. Aquí te explico mas del fabuloso MAX7219.

Pines del modulo
FunciónDescripciónPin Arduino
CS o LOADSelección de dígito10
CLKReloj11
DINEntrada de datos12

Evite usar los pines 0, 1 y 13.

8 dígitos de 7 segmentos con MAX7219