Publicado el Deja un comentario

Y ahora… ¿qué Arduino me compro?

En electronperdido tenemos 6 modelos de procesador Arduino (clon). En no pocas ocasiones nos preguntáis por cuál escoger para un proyecto determinado. Es por ello que os hemos preparado una guía de selección.

Lo primero, una tabla comparativa con las principales características de cada uno:

Tensión: nivel de tensión lógica / tensión en el pin Vin o conector externo (alimentación desde fuente externa).

  • Frecuencia CPU: Velocidad de reloj de la CPU del microcontrolador
  • Entradas analógicas: Número de entradas analógicas, que permiten medir un valor de tensión
  • Salidas analógicas: Número de salidas que permiten sacar un valor de tensión
  • E/S digitales: Número de pines que pueden destinarse a entrada o salida digital (todo/nada)
  • Salidas PWM: Número de pines que pueden destinarse a salida de modulación por ancho de pulso (PWM)
  • SRAM: Memoria RAM (datos)
  • FLASH: Memoria permanente (programa)
  • UART: Número de puertos serie

Entonces… ¿con cuál me quedo?

Arduino UNO

Si eres principiante o si no tienes muy claro qué proyecto vas a realizar, esta es tu elección. Es el más extendido y del que más información, código y ejemplos vas a encontrar. Tiene 16 pines de E/S (Entrada/Salida) digitales y 6 entradas analógicas. Adicionalmente dispone de un par de pines Tx/Rx (puerto serie – UART) que permite comunicarlo con otros dispositivos.

La alimentación se puede hacer desde el pin 5V, desde el propio USB o bien desde el conector jack incorporado en la placa (7-12V).

Disponemos de este Arduino en dos variantes: la que tiene el chip SMD (el pequeño) y la que tiene el chip en DIP (el grande). Si eres prnicipiante, te recomendamos la placa DIP, aunque ambas placas funcionan igual, con pequeñas diferencias:

  • En la placa DIP el chip se puede cambiar, en caso de haberlo dañado. El repuesto lo puedes encontrar aquí.
  • La placa SMD necesita que instales el driver CH340 en el PC (Descarga el driver DriverCH340) , la placa DIP funciona con el driver original de Arduino, por lo que no debes instalar software adicional.

Arduino MEGA

Si tu proyecto tiene muchos cables… tu elección es el Arduino MEGA. ¡Es como si tuvieras 4 Arduino UNO juntos!: ahora tendrás 54 pines GPIO, 16 entradas analógicas, 14PWM y 4 puertos serie. Además, el espacio en memoria para el código aumenta hasta 256KB de Flash, por lo que podrás hacer programas mucho más complejos sin quedarte sin memoria.

Sin embargo, el microcontrolador incorporado en la placa MEGA tiene muchas similitudes con el Arduino UNO, por lo que también es aconsejable para principiantes de mentes inquietas. Es muy similar al UNO.

La única pega es que la placa MEGA es mucho más grande que el Arduino UNO. Pero algún inconveniente tenían que tener tantas entradas y salidas juntas.

Al igual que con la placa UNO, con la placa MEGA dispones de dos versiones:

  • Placa MEGA R3: funciona igual que cualquier Arduino original
  • Placa MEGA R3 SMD: funciona igual que la anterior, pero necesitarás instalar el driver CH340

Arduino NANO

Básicamente es un Arduino UNO en pequeño. Aún así, es muy manejable e incluye la circuitería necesaria para programarla a través de USB (en este caso un mini-USB). Si lo alimentamos a través del pin Vin (ahora no disponemos de conector jack) la tensión máxima serán 9V, al disponer el regulador lineal de menor capacidad de disipación de potencia, comparada con el UNO.

Además, el Arduino NANO tiene un precio que lo hace, sencillamente, irresistible. ¡Sólo 3.95€!

Arduino Leonardo

La placa Leonardo comparte conexionado con el Arduino UNO, por lo que son totalmente intercambiables.  Sin embargo, los pines admiten alguna configuración adicional comparada con el Arduino UNO (por ejemplo, se pueden configurar más entradas analógicas).

Arduino Pro-mini

La placa PRO-MINI es para los usuarios más avanzados. Básicamente es un Arduino UNO pero con la circuitería mínima para poder funcionar. Se ha quitado entonces el conector jack y la circuitería de programación, junto al conector jack. Por ello, necesitas un adaptador USB a puerto serie (con DTR) para poder programarlo pero, a cambio, obtienes un Arduino de muy reducido tamaño, por lo que resulta fácil integrar la placa Pro en cualquier proyecto.

Arduino DUE

Importante: la mayor diferencia entre todas las demás placas y el DUE es que este último trabaja a 3,3V de tensión lógica, quiere esto decir, que si lo conectamos a un sensor que nos da una señal de 5V lo podemos dañar. Es por ello que, en este caso, deberemos usar trasladadores de nivel (level-shifter).

Sin embargo, el DUE es un paso de gigante hacia adelante, en comparación con el UNO:

  • La arquitectura es de 32 bit, frente a 8bit del UNO
  • La CPU funciona a 84MHz, frente a 16MHz del UNO
  • 96KB de RAM, frente a 2KB
  • 512KB de FLASH, frente a 32KB
  • Tiene entradas analógicas de alta resolución: 12bit

Esperamos que este artículo te haya resultado útil. Si tienes cualquier duda, contáctanos: contacto@electronperdido.com

Publicado el 2 comentarios

Sensor de aparcamiento por ultrasonidos

Daniel Esteban G., de Escuelas San José Jesuitas (www.escuelassj.com) participa en el concurso «Arduino in Love 2019» con este sensor de aparcamiento por ultrasonidos.

El proyecto desarrolla el sensor de aparcamiento de un coche, a pequea escala. Normalmente el sensor del coche tiene 1 metro de margen, pero en este caso a los 30 cm aproximadamente empieza a pitar, entre más cerca el objeto, con más frecuencia pita.

/* Programa que simula el funcionamiento de un sensor de aparcamiento,
pitando con una frecuencia mayor conforme nos aproximamos al objeto, DANI */

int speakerPin = 8;
long distancia;
long tiempo;
int j;
void setup(){
  Serial.begin(9600);
  pinMode(6, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
  pinMode(7, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
}

void loop(){
  digitalWrite(6,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);
  digitalWrite(6, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);
  tiempo=pulseIn(7, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
  /*Monitorización en centímetros por el monitor serial*/
  Serial.println("Distancia ");
  Serial.println(distancia);
  Serial.println(" cm");
  //delay(1000);
  if(distancia<=40)
  {
  if(distancia >=0 && distancia<=3)
    j = 1;
  if(distancia >3 && distancia<=8)
    j = 50;
  if(distancia >8 && distancia<=20)
    j = 300;
  if(distancia >20 && distancia<=30)
    j = 600;
  if(distancia >30 && distancia<=40)
    j = 900;
  if(distancia >40)
    j = 1200; 
  tone(speakerPin,349);
    delay(j);
    noTone(speakerPin);
    delay(100);
  }
  else
  {
   noTone(speakerPin);
  } 

}

Material utilizado:

Publicado el 1 comentario

Simpático robot con dos servos

Sergio F. participa en el concurso «Arduino in Love 2019» con este simpático robot con dos servos.

Sergio Fernández, de Escuelas San José Jesuitas (www.escuelassj.com) nos envía este proyecto de un simpático robot con dos servomotores, uno de ellos mueve la superficie del robot horizontalmente y el otro lo mueve verticalmente.

nor
#include <Servo.h>

Servo myservo;
Servo myservo1;

int pos1 = 0;
int pos2 = 0;
int potPin1 = 5;
int potPin2 = 4;

void setup()
{

  myservo.attach(9);
  myservo1.attach(10);
  
}

void loop() {

   pos1 = analogRead(potPin1)/5,6;
   pos2 = analogRead(potPin2)/5,6;
   myservo.write(pos1);
    delay(20);
   myservo1.write(pos2);
    delay(20);
   
}

Material necesario:

Publicado el Deja un comentario

Incubadora con tratamiento de ictericia

El IES Laurona (Llíria, Valencia) participa en el concurso «Arduino in Love 2019» con esta incubadora de neonatos con tratamiento de ictericia por fototerapia controlada en intensidad y duración.

Dentro de la incubadora se efectúa el control de:

  • Peso del paciente
  • Tiempo de gestación y de nacimiento
  • Temperatura
  • Humedad
  • Luminosidad exterior (visible, UV e IR)
  • Nivel de ruido
  • Humedaddel colchón
  • Temperatura del paciente
  • Pulsaciones del paciente
  • Satuación de oxígeno en sangre (SpO2)
  • Calidad del aire (concentración de partículas y nivel de gases nocivos)

Hay indicaciones en display de los datos vitales, así como alarma visual y sonora de cualquier dato fuera de rango seguro.

Publicado el 3 comentarios

iPro Cooler – bebida fresca en momentos

Cristian S. participa en el concurso «Arduino in Love 2019» con este fantástico enfriador de bebidas con Peltier.

iProcooler trata de un sistema de mantenimiento térmico mediante una célula peltier capaz de bajar la temperatura a 2 grados centígrados. El sistema es totalmente automático, gracias a la ayuda de un Arduino uno que controla la conexión y desconexión de la célula dependiendo de las condiciones. Tiene 3 fases:

1- ENFRIAMIENTO El sensor “CNY70” detecta que se ha colocado una taza, vaso, bote, etc… en ese momento el sensor “lm35” nos detecta la temperatura que tenemos en la célula y de ello dependerá la iluminación del anillo led que ayudara al usuario visualmente a saber cuando la célula ha llegado a su temperatura de funcionamiento encendiéndose esta de color azul.


2-BEBEMOS Cuando levantemos la taza, vaso, bote, etc.. para beber el “CNY70” no detectará y empezará un temporizador de 30 segundos el anillo en este momento cambia de color a amarillo, si lo dejamos de nuevo el anillo volverá a pasar a verde.


3- RETIRAMOS Cuando terminamos y retiramos la taza, vaso, bote, etc… el “CNY70” deja de detectar y empezará un temporizador de 30 segundos, cuando pase ese tiempo el anillo cambiará a color rojo y la célula se desconectará.

A continuación, el código para Arduino:

/ CONCURSO ------>  ARDUINO IN LOVE                 
//Nombre del proyecto--> iProCooler
//Proyecto I+D+i--> Christian Soriano 
//Codigo--> Iván Sanchis
//Rev.1
//CONCURSO------>  ARDUINO IN LOVE
#include "FastLED.h"

const char pausa = 100;
const char seg_off = 30;
const char tiempoLED = 50;
const boolean bote = HIGH;
const boolean encender = HIGH;
const boolean apagar = LOW;
const float tempBoteON = 30;
float serieGrados[50];

const char NUM_LEDS = 24;
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
const char BRIGHTNESS = 128;
CRGB leds[NUM_LEDS];

const char detectorBOTE = 8;
const char pinLM35 = A1;
const char celula = 0;
const char ventilador = 3;
const char DATA_PIN = 6;

float tempC;
float mediaGrados = 0;
int i,j,k;
void setup()
{
  Serial.begin(9600);
  analogReference(INTERNAL);
  pinMode(detectorBOTE, INPUT);
  pinMode(pinLM35, INPUT);
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness( BRIGHTNESS );
  for (i = 0; i < 50; i++)
  {
    mediaGrados = 0;
    for (j = 0; j < 50; j++)
    {
      tempC = analogRead(pinLM35);
      tempC = (1.1 * tempC * 100.0) / 1023.0;
      mediaGrados = mediaGrados + tempC;
    }
    mediaGrados = mediaGrados / 50.0;
    serieGrados[i] = mediaGrados;
  }
}

int haybote = 0;
float temperatura = 0.0;
unsigned long inicio;
boolean temporizador = LOW;
char pos = 0;
void loop()
{
  haybote = digitalRead(detectorBOTE );  //lectura digital de pin
  mediaGrados = 0;
  for (i = 0; i < 50; i++)
  {
    tempC = analogRead(pinLM35);
    tempC = (1.1 * tempC * 100.0) / 1023.0;
    mediaGrados = mediaGrados + tempC;
  }
  mediaGrados = mediaGrados / 50.0;
  serieGrados[pos] = mediaGrados;
  if (pos < 50)
  {
    pos++;
  }
  else
  {
    pos = 0;
  }
  temperatura = 0.0;
  for (k = 0; k < 50; k++)
  {
    temperatura = temperatura + serieGrados[k];
  }
  temperatura = temperatura / 50.0;
  if (haybote == bote)
  {
    temporizador = LOW;
    if (temperatura < tempBoteON)
    {
      digitalWrite(celula, encender);
      digitalWrite(ventilador, encender);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Green;
        FastLED.show();
        delay(tiempoLED);
      }
    }
    else
    {
      digitalWrite(celula, encender);
      digitalWrite(ventilador, encender);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Blue;
        FastLED.show();
        delay(tiempoLED);
      }
    }
  }
  else
  {
    if (temporizador == LOW)
    {
      inicio = millis();
      temporizador = HIGH;
    }
    if ( millis() - inicio < seg_off * 1000)
    {
      digitalWrite(celula, encender);
      digitalWrite(ventilador, encender);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Yellow;
        FastLED.show();
        delay(tiempoLED);
      }
    }
    else
    {
      digitalWrite(celula, apagar);
      digitalWrite(ventilador, apagar);
      for (j = 0; j < NUM_LEDS; j++)
      {
        leds[j] = CRGB::Red;
        FastLED.show();
        delay(tiempoLED);
      }
    }
  }
  delay(pausa);
}

¿Te lo quieres montar en casa? Estos son los componentes que necesitas:

Bebiendo
Desconexión
Publicado el Deja un comentario

Termostato con Arduino

Los calefactores infrarrojos, con el de la imagen, son una manera de obtener calor rápidamente. El problema que tienen es que no suelen llevar termostato. Es decir, que cuando la habitación está muy caliente, siguen calentando, no son capaces de parar y volver a arrancar cuando se enfríe un poco.

En este proyecto vamos a fabricar un termostato con Arduino.

El material que vamos a necesitar será:

En nuestro ejemplo, el DHT11 lo conectaremos al pin 2, la pantalla OLED a los pines RX y TX, y los pulsadores a los pines 3, 4 y 5, con una resistencia de pull-up externa (aunque se podría activar el pull-up interno). Los relés se han conectado en las salidas 6 y 7.

El funcionamiento del termostato ha sido programado para proporcionar las siguientes funciones:

  • Encendido/Apagado mediante un pulsador.
  • Ajuste de la temperatura de consigna mediante los pulsadores restantes.
  • Funcionamiento a plena potencia (2 resistencias a la vez) si la habitación está fría.
  • Funcionamiento a media potencia (1 sola resistencia) si la habitación casi está a la temperatura ajustada.
  • Apagado de ambas resistencias si se ha superado la temperatura ajustada.
  • Apagado automático tras un tiempo largo.

El código que hemos preparado para esta función lo puedes descargar desde el siguiente enlace. Para hacerlo funcionar, necesitarás las librerías:

Para facilitar el montaje, hemos soldado todos los componentes a una placa perforada de 50x70mm. El resultado ha sido este:

¿Te animas a intentarlo? Si necesitas ayuda contáctanos: contacto@electronperdido.com

Publicado el Deja un comentario

Botes fluorescentes

En esta actividad, ideal para compartir con los más peques de la casa, os vamos a presentar cómo hacer un bote de líquido fluorescente. Así, en una habitación oscura y con luz ultravioleta el resultado es espectacular.

Material necesario:

Instrucciones: Lámpara ultravioleta

En primer lugar vamos a crear nuestra propia lámpara ultravioleta. Nosotros proponemos un diseño muy sencillo, pero es muy fácil darle otros tamaños o formas. En nuestro caso hemos cogido como elemento base una placa perforada de 20x80mm  y hemos soldado 15 LEDs ultravioleta de 3mm. El cátodo de cada LED (pata corta) se suelda al negativo de la alimentación. El ánodo de cada LED (pata larga) lo soldaremos a una resistencia de 100Ohm (una por LED). La conexión restante de cada resistencia irá conectada al positivo de la alimentación. Por último, una forma de tener una alimentación cómoda de encender y apagar es usar un portapilas con interruptor. En nuestro caso hemos utilizado un portapilas de 3 pilas AA; si se usa un número de pilas superior o una fuente de alimentación de distinto valor será necesario recalcular la resistencia de 100 Ohm y adaptar su valor.

Así, ya tendremos lista nuestra lámpara ultravioleta.

Compra desde aquí el kit para montar tu propia lámpara ultravioleta (enlace).

Instrucciones: Bote fluorescente

El objetivo aquí es conseguir un bote transparente (nosotros hemos usado un tarro de cristal de una conocida marca de yogures) y rellenarlo de un líquido transparente que «se ilumine» al estar bajo luz ultravioleta.

La manera más sencilla y barata de conseguirlo es comprar un bote de tónica, sin más. ¡La tónica es fluorescente! En nuestro caso hemos usado la más barata del supermercado.

¡El resultado ha sido genial! En el vídeo se ve cómo al alejarla de la luz es un líquido transparente sin más, pero al ponerlo en el haz de luz ultravioleta… ¡Magia!

Alernativa: Bote fluorescente

Una alternativa para conseguir un líquido fluorescente es disolver en agua algunas pastillas de vitamina B (se compran en farmacia, por unos 2-3€). Las vitaminas del grupo B son fluorescentes, por lo que no es necesario ser muy exquisitos al elegir un complejo vitamínico u otro. Se trituran bien y se disuelven.

El resultado final es parecido al de la tónica.

Juego alternativo: moco fluorescente

Una divertida alternativa consiste en crear un gel tipo «moco» a partir de nuestro líquido fluorescente. El proceso es bastante sencillo, basta con mezclar semillas de zaragatona (de venta en herbolarios) con el líquido y calentar (sin que llegue a hervir). Cuando las semillas se hayan hundido hasta el fondo del recipiente nuestra mezcla ya está lista; colar para quitar las semillas y dejar enfriar (en media hora ya se ve el resultado, pero unas horas después se vuelve más denso todavía). El resultado será un gel muy espeso. En nuestro caso hemos usado 8 cucharaditas de zaragatona para 330ml de líquido.

El resultado, un «moco» transparente bajo luz normal, de color bajo la luz ultravioleta y, sobretodo… ¡muy divertido!