Archivo de la etiqueta: Pines Arduino

Arduino vs Raspberry Pi

Desde hace tiempo han irrumpido en el mercado distintas soluciones de placas PC  también llamadas “Single Board Computer” (SBC), como Raspberry Pi, Beaglebone, pcduino, etc… Pero estos sistemas son diferentes a las placas con microcontrolador como Arduino, nanode, waspmote, freescale freedom, etc…

Existe la creencia popular que Arduino es una Raspberry Pi pero con menos capacidades. Obviamente si comparamos los valores de memoria RAM, frecuencia de CPU y capacidad de almacenamiento, podemos creer que así es, pero se trata de dos placas con funcionalidades diferentes.

Analogía: Arduino es un Autómata programable y Raspberry Pi es un Ordenador, así que a la hora de decidirse que utilizar para un proyecto deberíamos pensar si usar un autómata o un ordenador.

Las diferencias principales entre una Raspberry Pi y un Arduino son:

  • Número de entradas y salidas disponibles y sus capacidades de corriente y voltaje.
  • La programación, Arduino se usa para programación en tiempo real, en Raspberry Pi se usa para programación intensiva con gran cantidad de datos.

Estas diferencias se deben a que Arduino tiene un microcontrolador (MCU) y Raspberry Pi tiene un microprocesador. Un microcontrolador es un HW optimizado no para capacidad de cálculo sino para interactuar con el exterior, con sensores y actuadores.

Para más información: https://aprendiendoarduino.wordpress.com/2015/03/29/microcontrolador-vs-microprocesador/

A la hora de elegir uno u otro para hacer un proyecto, debemos usar cada uno en la tarea que mejor sabe hacer. Por ejemplo, la recolección de datos, supervisión del entorno, envío de alarmas, accionar motores, etc.. lo dejaremos para el arduino, el tratamiento de los datos recogidos, el interfaz gráfico de usuario, envío de correos, etc… lo dejaremos para una una raspberry pi o un ordenador.

Comparativa:

Un ejemplo de que Raspberry Pi no es la mejor opción para algunos proyectos es por ejemplo para manejar un neopixel https://www.adafruit.com/products/1463, estos dispositivos requieren una señal de datos con unas especificaciones de tiempo muy concretas para funcionar. Puesto que Raspberry Pi usa un sistema operativo multitarea Linux, no dispone de un control de tiempo real sobre los pines.

Aun así es posible hacer usar neopixel con Raspberry Pi pero de una forma un poco más complicada que con un Arduino. https://learn.adafruit.com/neopixels-on-raspberry-pi/overview

Para acabar de entenderlo, este video explica perfectamente la diferencia entre un Arduino y una Raspberry Pi: https://www.youtube.com/watch?v=7vhvnaWUZjE

Puertos Arduino vs Raspberry Pi

Pinout Raspberry Pi: https://pinout.xyz/

IMPORTANTE: Todos los pines de Raspberry Pi tienen un nivel lógico de 3.3V incluido puerto serie, bus I2C y SPI. Los pines de Raspberry Pi no soportan entradas de 5V. Para Arduino UNO el nivel lógico es de 5V.

Cada pin de Raspbery Pi soporta un máximo de 16mA hasta un total de 51mA para toda la placa. Arduino Uno soporta un máximo de 40mA por pin (20mA recomendado) y hasta 300mA en total para la placa.

Práctica: ver una Raspberry Pi en funcionamiento, entorno gráfico y entorno CLI.

Ejemplo de blink con una Raspberry Pi: https://gist.github.com/Indavelopers/2d2597d2d4e0a736ab1ae0d7a419bfe1

Para finalizar varios enlaces interesantes sobre la diferencia entre Arduino y Raspberry Pi:

Anuncios

Arduino Uno a fondo. Mapa de pines

Los Arduino y en general los microcontroladores tienen puertos de entrada y salida y de comunicación. En Arduino podemos acceder a esos puertos a través de los pines.

Otro aspecto importante es la memoria, Arduino tiene tres tipos de memoria:

  • SRAM: donde Arduino crea y manipula las variables cuando se ejecuta. Es un recurso limitado y debemos supervisar su uso para evitar agotarlo.
  • EEPROM:  memoria no volátil para mantener datos después de un reset o apagado. Las EEPROMs tienen un número limitado de lecturas/escrituras, tener en cuenta a la hora de usarla.
  • Flash: Memoria de programa. Usualmente desde 1 Kb a 4 Mb (controladores de familias grandes). Donde se guarda el sketch.

Más información en: http://arduino.cc/en/Tutorial/Memory y https://aprendiendoarduino.wordpress.com/2015/03/29/memoria-flash-sram-y-eeprom/

Placa Arduino Uno a fondo:

Especificaciones detalladas de Arduino UNO: http://arduino.cc/en/Main/ArduinoBoardUno

Microcontroller & USB-to-serial converter ATmega328P & Atmega16U2
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328) of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 16 MHz

Aspectos más destacados de Arduino UNO.

  • No necesita de un cable FTDI para conectarse al MCU, en su lugar uso un MCU especialmente programado para trabajar como conversor de USB a serie.
  • En la revisión 3 de HW nuevo pineado
  • Alimentación: vía USB, batería o adaptador AC/DC a 5V, seleccionado automáticamente. Arduino puede trabajar entre 6 y 20V, pero es recomendado trabajar entre 7 y 12V por las características del regulador de tensión.
  • Puerto Serie en los pines 0 y 1.
  • Interrupciones externas en los pines 2 y 3.
  • Built-in LED en el pin 13.
  • Bus TWI o I2C en los pines A4 y A5 etiquetados como SDA y SCL
  • El MCU ATmega328P tiene un bootloader precargado que permite cargar en la memoria flash el nuevo programa o sketch sin necesidad de un HW externo.
  • Arduino Uno dispone de un fusible autoreseteable que protege el puerto USB de nuestro ordenador de cortocircuitos y sobrecorrientes. Si se detectan más de 500mA salta la protección.

En este pdf podemos ver el esquema de un Arduino UNO, muy importante conocerlo para evitar hacer maniobras que lo dañen: http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf

Documentación del Microcontrolador muy importante cuando necesitemos hacer operaciones avanzadas con Arduino: http://www.atmel.com/Images/doc8161.pdf. Por ejemplo: página 423 con un resumen de todos los registros o página 18 con detalle de cómo se distribuye la memoria SRAM o página 76 con detalle de los puertos digitales I/O y página 79 donde da el código para definir un pines a high y low y también como input pullup.

Están disponible los esquemas y diseño en formato Eagle http://arduino.cc/en/uploads/Main/arduino_Uno_Rev3-02-TH.zip. Para ver los esquemas podemos usar Eagle, se trata de un programa de diseño de diagramas y PCBs con autoenrutador:

Ejercicio: Ver esquemático y placa de Arduino UNO con eagle

Opción open source: http://www.kicad-pcb.org/ (recomendada)

También es importante conocer cómo están distribuidos los pines del MCU en Arduino:

Antes de empezar las prácticas y trabajar con el Arduino UNO, veamos 10 formas de destruir un Arduino, para saber que NO debemos hacer.

¡¡¡IMPORTANTE!!!: http://www.ruggedcircuits.com/10-ways-to-destroy-an-arduino/

La traducción: http://www.trastejant.es/blog/?p=192

Videos de como destruir un Arduino:

También es posible conseguir un “Arduino” gratis: https://aprendiendoarduino.wordpress.com/2015/02/25/como-conseguir-un-arduino-gratis/