Archivo de la etiqueta: Raspberry Pi

Top 5 Accesorios Raspberry Pi

Aunque mi especialidad es Arduino, uso frecuentemente Raspberry Pi, principalmente como un servidor (p.e. mosquitto, Node-RED, servidor web, base de datos, etc…) más que como un sistema embebido para control de actuadores o leer sensores, para lo que creo es mejor usar Arduino.

Una de las primeras cosas que hago en los cursos de iniciación de Arduino es explicar la diferencia entre Arduino y Raspberry Pi, puesto que son dos elementos muy utilizados por los makers, pero a veces la gente no tiene muy claro en qué casos usar Arduino o Raspberry Pi y para qué tipo de proyectos es más adecuado uno u otro. En este artículo explico las diferencias y en qué tipo de proyectos es más adecuado usarlos: https://aprendiendoarduino.wordpress.com/2017/06/19/arduino-vs-raspberry-pi-3/

Ahora uso más Raspberry Pi porque estoy preparando el próximo curso de Desarrollo Soluciones IoT con Herramientas Libres, así que dejo aquí algunos elementos necesarios para los que se quieren iniciar con Raspberry Pi. Incluso estoy planteandome hacer cursos de Raspberry Pi.

Raspberry Pi 3 Model B

Raspberry Pi es un ordenador de placa reducida, ordenador de placa única u ordenador de placa simple (SBC) de bajo coste desarrollado en el Reino Unido por la Fundación Raspberry Pi, con el objetivo de estimular la enseñanza de informática en las escuelas.

Una Raspberry Pi es un ordenador de tamaño reducido con linux.

La placa Raspberry Pi 3 Model B o B+ es posible comprarla por poco más de 30€, son los últimos modelos de Raspberry Pi. Una comparativa entre ambas placas puede verse en https://www.xataka.com/ordenadores/llega-la-nueva-raspberry-pi-3-model-b-mismo-precio-pero-mas-velocidad-y-wifi-de-doble-banda

En este enlace puedes comprarla con envío gratuito: https://www.gearbest.com/raspberry-pi/pp_488334.html?wid=1451237

Alimentador para Raspberry Pi

Raspberry Pi se alimenta con un alimentador AC/DC a 5V con conector microUSB, el mismo que la mayoría de los móviles.

Un problema muy común es que la potencia del alimentador no es suficiente, por ello es importante elegir un alimentador con la potencia suficiente para la Raspberry Pi.

Si además quieres apagar y encender la Raspberry Pi, aunque se debe tener cuidado si no la has apagado desde software, puedes usar este cable USB:

Puedes comprarlo por aproximadamente 2€ con envío gratuito en: https://www.gearbest.com/chargers-cables/pp_009456972686.html?wid=1433363

Caja Oficial Raspberry Pi

Si vas a usar una Raspberry Pi el accesorio imprescindible es la caja oficial, para proteger la placa y evitar contactos con superficies metálicas.

Puedes comprarlo por aproximadamente 3€ en: https://es.gearbest.com/raspberry-pi/pp_391810.html?wid=1433363

Adaptador Protoboard Raspberry Pi

Cualquier maker necesitará este adaptador del GPIO de Raspberry Pi para protoboard, permite conectar de forma sencilla los pines GPIO de la Raspberry Pi a una protoboard.

Puedes comprarla por unos 6€ con envío gratuito en: https://es.gearbest.com/raspberry-pi/pp_278162.html?wid=1451237  

Placa de Conexiones Raspberry Pi

Si quieres conectar sensores, actuadores o cualquier otro dispositivo a los pines de expansión GPIO de Raspberry Pi, la mejor forma de hacerlo de una forma sencilla y segura que no van a a salir los cables es con esta placa de expansión.

Puedes comprarla por menos de 10€ con envío gratuito en https://es.gearbest.com/raspberry-pi/pp_424133.html?wid=1451237

Pantalla Táctil 5’’

Otro de los accesorios imprescindibles si no puedes conectar la Raspberry Pi a un monitor o TV es la pantalla táctil, con la ventaja que tampoco necesitarás llevar el teclado y ratón para manejarla. Es el accesorio ideal para usar Raspberry Pi en modo quiosco y mostrar datos con un espacio reducido.

Puedes comprarla por unos 45€ en https://es.gearbest.com/raspberry-pi/pp_278164.html?wid=1433363

Anuncios

Arduino y Sigfox

Sigfox: es una solución de conectividad celular mundial para el Internet of Things pensada para comunicaciones de baja velocidad que permite reducir los precios y el consumo de energía para los dispositivos conectados. La solución de conectividad SIGFOX se basa en una infraestructura de antenas y de estaciones de base totalmente independientes de las redes existentes.

Sigfox es una alternativa de amplio alcance, que en términos de alcance está entre Wi-Fi y la comunicación móvil. Utiliza bandas ISM, que se pueden utilizar sin necesidad de adquirir licencias. Sigfox responde a las necesidades de muchas aplicaciones M2M que funcionan con una batería pequeña y solo requieren niveles menores de transferencia de datos, allí donde WiFi se queda demasiado corto y la comunicación móvil es muy cara y consume demasiada energía.

Sigfox utiliza una tecnología llamada Ultra Narrow Band (UNB) diseñada para funcionar con bajas velocidades de transferencias de 10 a 1.000 bits por segundo.

Sigfox trabaja con fabricantes como Texas Instruments, Atmel, Silicon Labs y otros para poder ofrecer distintos tipos de SoC, transceptores y componentes de conexión a su red. En el caso de smartphones y tablets, actualmente no son compatibles con esta red, pero, al no tener licencia de uso, su inclusión sería realmente económica y sencilla.

La empresa que está haciendo el despliegue de la red de Sigfox en España es Cellnex Telecom antigua Abertis Telecom.

Cellnex:

Cómo funciona la red sigfox:

Los tres pilares de Sigfox son: bajo coste, eficiencia y alcance global

Así, basándose en los tres pilares fundamentales, las características más destacables de lo que ofrecen a sus clientes son las siguientes:

  • Frecuencias libres (ISM) resistentes frente a interferencias
  • Conectividad Ultra Narrow Band (UNB) bidireccional
  • Compatibilidad con los chips existentes
  • Conforme con ETSI y FCC
  • Eficiencia energética: han logrado que la autonomía de algunos productos se prolongue hasta 15 años
  • Conexión sencilla (plug & play)
  • Gestión basada en la nube
  • Cobertura internacional
  • Libre de derechos y royalties

Hardware Sigfox

Existen muchos dispositivos certificados por sigfox y pueden encontrarse en la sigfox partner network: https://partners.sigfox.com/

Dentro de los productos certificados por Sigfox lo divide:

Nosotros nos centramos en los kits de desarrollo, como por ejemplo el ATA8520 https://partners.sigfox.com/products/digikey que usa un microcontrolador ATMega328p como el Arduino UNO y el transceiver Atmel ATA8520D que también lleva el Arduino MKRFOX1200.

Entre los kits de desarrollo podemos destacar:

El Cesens mini de la empresa Riojana Encore lab es un ejemplo de un dispositivo certificado por Sigfox: https://partners.sigfox.com/products/cesens-mini

Todos estos dispositivos hay que darlos de alta en la red de Sigfox, aunque generalmente para los desarrolladores al comprar un dispositivo tenemos una suscripción de 1 o dos años a la red de Sigfox.

Comprar conectividad:https://buy.sigfox.com/ y precios: https://buy.sigfox.com/buy/offers/ES

Una vez hay un contrato, es necesario activar el kit de desarrollo en el backend de Sigfox: https://backend.sigfox.com/activate

Y ya podemos hacer nuestro proyecto con Sigfox. Muchos más proyectos con Sigfox: https://www.hackster.io/sigfox

Mensajes Sigfox

Los mensajes de Sigfox están diseñados para ser muy pequeños, optimizados para sensores y requerir sólo una pequeña cantidad de energía para transmitirlos. El payload de Sigfox está limitado a 12 bytes (excluyendo las cabeceras del payload). Un mensaje de ‘uplink’ desde un dispositivo a la estación base es enviado durante aproximadamente 6 segundos a un a velocidad de 100 bits/seg. Aunque pueda parecer una velocidad de información muy restringida, realmente hay muchas cosas que se pueden hacer con 12 bytes.

En el siguiente ejemplo muestra cómo con una estructura de 12 bytes mandar un conjunto de coordenadas GPS junto con velocidad, hora y voltaje de batería.

0 1 2 3 4 5 6 7 8 9 10 11
Lat. Lat. Lat. Lat. Lon. Lon. Lon. Lon. Vol. Sats. Acq. Spd.

Más información: http://makers.sigfox.com/getting-started/

El protocolo Sigfox soporta comunicación bidireccional. Esto significa que es posible configurar el módulo Sigfox para solicitar datos desde los servidores de Sigfox. A esto se le denomina mensaje ‘downlink’. El dispositivo Sigfox manda un mensaje de ‘uplink’ a los servidores de Sigfox solicitando un mensaje de ‘downlink’ y espera durante 30 segundos. El dispositivo espera recibir un mensaje con un payload de 8 bytes. Por la regulación ETSI, los dispositivos están limitados a 4 mensajes ‘downlink’ al día.

Debido a que el dispositivo inicia el mensaje de ‘downlink’, en lugar de la estación base, los mensajes de ‘downlink’ se usan comúnmente como configuración. Un ejemplo podría ser un dispositivo con múltiples sensores para recogida de datos que diariamente consulta los umbrales de alerta configurados en el dispositivo.

Explicación del downlink paso a paso: http://www.iotnet.mx/index.php/2017/03/02/el-downlink-de-sigfox-explicado-paso-paso/

Backend de Sigfox

Además de la red de Sigfox, tenemos los dos extremos de la comunicación: los dispositivos, emisores de mensajes, que están conectados a la red, y el punto final o backend de la comunicación, que recibe esos mensajes y los procesa para generar un resultado.

En el caso de SigFox, se ofrece el servicio llamado SigFox Cloud para el segundo propósito, que ofrece una aplicación web conocida como SigFox Backend. Desde ella, se pueden gestionar los dispositivos, visualizar los mensajes transmitidos por los mismos y configurar de integración de los datos, entre otros. Además, el servicio da la oportunidad de poder redirigir todo el volumen de información que llega al backend a cualquier aplicación ejecutada en un servidor o centro de procesamiento de datos.

Hay dos maneras de tomar los datos que recoge el backend de Sigfox:

  • Utilizando la API que proporciona el backend, basada en HTTP REST (GET o POST, indistintamente); la cual, en función del recurso pedido, devuelve un resultado concreto, con una carga útil con formato JSON.
  • Utilizando una URL de callback, identificando dicha URL a la aplicación web que desea recibir los mensajes. De esta forma, se registraría dicha URL en el backend, indicando los atributos que le interese recibir (por ejemplo, la carga útil del mensaje); y cada vez que llegase un mensaje al mismo, éste le reenviará los valores pedidos en un mensaje con formato, por ejemplo JSON.

Como hemos visto, el módem de radio de Sigfox envía ráfagas de datos a las antenas de la estación base. Idealmente, una señal es captada por más de una antena. El paquete de datos se demodula en la estación base y luego se envía al centro de datos de sigfox (backend). Luego, el centro de datos envía los datos recibidos a los suscriptores del servicio a través de servicios web de callback al estilo REST.

Centrándonos en el backend de SigFox, veamos las opciones de navegación que nos ofrece, con una breve explicación de cada una de ellas.

Cuando accedemos al portal, se nos presenta una página de bienvenida, que nos notifica de las nuevas funcionalidades incluidas en la página. También tenemos acceso a una lista de eventos de la red y a un mapa con la cobertura actual en el país. A través de la barra superior, podemos navegar por los distintos apartados de la página, diferenciando los siguientes (de izquierda a derecha):

  • Device: nos muestra los dispositivos registrados en el backend, distinguidos por un identificador único. Entre otras opciones; nos muestra estadísticas con el número de mensajes enviados diariamente, notificaciones de eventos surgidos durante la transmisión (como saltos en el número de secuencia, que indican pérdida de información), y sobre todo, los mensajes enviados; con la fecha de recepción, el contenido del mensaje (con la codificación elegida por el fabricante del dispositivo), su traducción a ASCII (si se han enviado caracteres), su localización (mostrando un rectángulo formado por la latitud/longitud, sin decimales, en la que se encuentra el dispositivo), información sobre redundancia, el nivel de la señal recibida (en dB), y la URL de callback a la que se redirige (de haberla).
  • Device Type: lista los tipos de dispositivos registrados en el backend. De esta forma, a cada conjunto de dispositivos le podemos asociar un tipo para gestionarlos de la misma manera. La opción más relevante a considerar en este apartado es el establecimiento de las URL de callback a cada tipo de dispositivo; pudiendo utilizar más de una URL para cada tipo, eligiendo entre GET o POST, y pudiendo seleccionar las variables que se desean obtener (entre otras; el identificador de dispositivo, la hora de llegada del mensaje, la potencia media de la señal, la latitud/longitud desde donde se envió el mensaje, o la carga útil).
  • User: muestra los usuarios, pertenecientes a un grupo, que tienen acceso al backend.
  • Group: gestiona los grupos configurados en el backend. A ellos se le pueden asociar usuarios, dispositivos o suscripciones. Además, SigFox le proporciona un usuario y contraseña para tener acceso a la API REST.
  • Billing: se encarga de las suscripciones a SigFox, incluyendo los servicios contratados, el número de mensajes máximo permitido o el precio de la suscripción, como aspectos más relevantes.
  • Información rápida del usuario: hace de resumen de la pestaña User, e incluye las direcciones IP con las que el usuario ha accedido al backend, junto la fecha de último acceso de cada una.
  • Redirección a la lista de eventos de red.
  • Ayuda online: dispone de documentación para el uso de callbacks y la API REST, información para el proceso de suscripción, y una breve mención al formato de los mensajes enviados.
  • Logout: para cerrar sesión.

Más información sobre el backend de Sigfox:

Lo primero que se debe hacer es registrar un dispositivo en la red de Sigfox: https://backend.sigfox.com/cms/section/52f8a5b593368ce020b924e1/info

Activar un dispositivo: https://backend.sigfox.com/activate

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:

Qué es Arduino

Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

Hardware Libre: http://es.wikipedia.org/wiki/Hardware_libre

Por otro lado Arduino nos proporciona un  software consistente en un entorno de desarrollo (IDE) que implementa el lenguaje de programación de arduino y el bootloader ejecutado en la placa. La principal característica del software de programación y del lenguaje de programación es su sencillez y facilidad de uso.

¿Para qué sirve Arduino? Arduino se puede utilizar para desarrollar elementos autónomos, conectándose a dispositivos e interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una habitación, gracias a un sensor de luz conectado al Arduino, o bien para leer la información de una fuente, como puede ser un teclado, y convertir la información en una acción como puede ser encender una luz y pasar por un display lo tecleado.

Hay otro factor importante en el éxito de Arduino, es la comunidad que apoya todo este desarrollo, comparte conocimiento, elabora librerías para facilitar el uso de Arduino y publica sus proyectos para que puedan ser replicados, mejorados o ser base para otro proyecto relacionado.

En resumen:

Arduino = HW + SW + Comunidad

HW Arduino

El HW de Arduino es básicamente una placa con un microcontrolador. Un microcontrolador (abreviado µC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.

Características de un Microcontrolador:

  • Velocidad del reloj u oscilador
  • Tamaño de palabra
  • Memoria: SRAM, Flash, EEPROM, ROM, etc..
  • I/O Digitales
  • Entradas Analógicas
  • Salidas analógicas (PWM)
  • DAC (Digital to Analog Converter)
  • ADC (Analog to Digital Converter)
  • Buses
  • UART
  • Otras comunicaciones.

Arduino dispone de una amplia variedad de placas y shields para usar dependiendo de nuestras necesidades.

Las shields son placas de circuitos modulares que se montan unas encima de otras para dar funcionalidad extra a un Arduino. Esta Shields son apilables.

Las shields se pueden comunicar con el arduino bien por algunos de los pines digitales o analógicos o bien por algún bus como el SPI, I2C o puerto serie, así como usar algunos pines como interrupción. Además estas shields se alimenta generalmente a través del Arduino mediante los pines de 5V y GND.

Cada Shield de Arduino debe tener el mismo factor de forma que el estándar de Arduino con un espaciado de pines concreto para que solo haya una forma posible de encajarlo.

Las placas y shields oficiales de Arduino pueden verse en:

Cabe destacar alguna placas Arduino:

Es la placa estándar y posiblemente la más conocida y documentada. Salió a la luz en septiembre de 2010 sustituyendo su predecesor Duemilanove con varias mejoras de hardware que consisten básicamente en el uso de un USB HID propio en lugar de utilizar un conversor FTDI para la conexión USB. Es 100% compatible con los modelos Duemilanove y Diecimila. Viene con un Atmega328 con 32Kbytes de ROM para el programa.
Esquematico: http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
Microcontrolador: http://www.atmel.com/devices/atmega328p.aspx
Planos del Arduino UNO: https://www.arduino.cc/en/Main/ArduinoBoardUno#documentation

Es con mucha diferencia el más potente y el que más pines i/o tiene, apto para trabajos ya algo más complejos aunque tengamos que sacrificar un poco el espacio, cuenta con el microcontrolador Atmega2560 con más memoria para el programa, más RAM y más pines que el resto de los modelos.
Esquematico: http://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf
Microcontrolador: http://www.atmel.com/devices/atmega2560.aspx
Planos del Arduino MEGA: http://www.arduino.cc/en/Main/ArduinoBoardMega2560

  • Arduino MKR1000https://www.arduino.cc/en/Main/ArduinoMKR1000
    Versión para IoT con procesador Atmel ARM Cortex M0+ de 32bits ATSAMW25 que es el mismo procesador que Genuino Zero pero con wifi integrado, chip de cifrado y antena integrada.

  • Arduino Yun – http://www.arduino.org/products/boards/4-arduino-boards/arduino-yun
    Con MCU Atmel AVR de 8 bits ATmega32U4 y procesador MIPS Qualcomm Atheros AR9331 a 400 MHz con wifi integrado y SO linux Linino basado en OpenWRT y ethernet. Su principal característica es la capacidad de comunicar la MCU con el SO linux mediante un puerto serie interno.

Placas Compatibles Arduino

El HW Arduino no solo se queda en las placas oficiales, sino que en los últimos años han aparecido muchas placas de prototipado basadas en los mismos o diferentes microcontroladores que bien por acuerdos con Arduino, por los propios fabricante de los microcontroladores o por la propia comunidad de usuarios, estas placas tienen soporte del IDE de Arduino y es posible programarlas como el resto de Arduinos oficiales con el mismo lenguaje de programación.

Placas no oficiales Arduino con soporte para el IDE de Arduino son: https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls

Cabe destacar las siguientes placas no oficiales:

SW Arduino

El software de Arduino es un IDE, entorno de desarrollo integrado (siglas en inglés de Integrated Development Environment). Es un programa informático compuesto por un conjunto de herramientas de programación.

El IDE de Arduino es un entorno de programación que ha sido empaquetado como un programa de aplicación; es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Además incorpora las herramientas para cargar el programa ya compilado en la memoria flash del hardware.

Es destacable desde la aparición de la versión 1.6.2 la incorporación de la gestión de librerías y la gestión de placas muy mejoradas respecto a la versión anterior y los avisos de actualización de versiones de librerías y cores.

Todos lo cambios en la versiones pueden verse en: https://www.arduino.cc/en/Main/ReleaseNotes

Código fuente del IDE de Arduino está disponible en: https://github.com/arduino/Arduino/  y las instrucciones para construir el IDE desde código fuente pueden verse en: https://github.com/arduino/Arduino/wiki/Building-Arduino

Podemos también ver los problemas/bugs detectados de la versión actual y hacer un seguimiento de ellos en: https://github.com/arduino/Arduino/issues

La dirección para descargarse el IDE de Arduino es: https://www.arduino.cc/en/Main/Software

Además del IDE instalado en local, hay disponible un IDE on-line dentro del entorno Arduino Create https://create.arduino.cc/ que es una plataforma on-line integrada que permite escribir código, acceder a contenido, configurar placas y compartir proyectos, muy enfocado al Internet de las Cosas (IoT).

También existen otros IDEs alternativos como Atmel Studio http://www.atmel.com/Microsite/atmel-studio

Comunidad Arduino

Un factor del éxito de Arduino ha sido la comunidad que está apoyando este proyecto y que día a día publica nuevo contenido, divulga y responde a las dudas.

En Internet hay disponible todo tipo de cursos, tutoriales, herramientas de consulta, proyectos, etc… que ayudan a que se pueda usar Arduino con facilidad.

El primer sitio donde empezar para trabajar con Arduino es http://www.arduino.cc/ y el segundo sitio el playground de Arduino http://playground.arduino.cc/

Arduino playground es un wiki donde todos los usuarios de Arduino pueden contribuir. Es el lugar donde publicar y compartir código, diagrama de circuitos, tutoriales, trucos, cursos, etc.. y sobretodo el lugar donde buscar cuando tengamos dudas, un problema, una librería adecuada para nuestro proyecto, etc… Esa la base de datos de conocimiento por excelencia de Arduino.

También existen lugares no oficiales de Arduino donde resolver nuestras dudas:

Otro lugar de encuentro de la comunidad son diversos portales donde se publican proyectos con Arduino:

Por último, también hay espacios locales para la comunidad, son los llamados hacklabs hackerspace, makerspace, etc.. que aunque hay ciertas diferencias entre unos y otros, se trata de un sitio físico donde gente con intereses en ciencia, nuevas tecnologías, y artes digitales o electrónicas se puede conocer, socializar y colaborar. Puede ser visto como un laboratorio de comunidad abierta, un espacio donde gente de diversos trasfondos puede unirse. Pone al alcance de aficionados y estudiantes de diferentes niveles la infraestructura y ambiente necesarios para desarrollar sus proyectos tecnológicos.

Un ejemplo de ello es el URmaker: http://www.unirioja.es/urmaker/

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, 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.

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.
  • Como se ejecuta la aplicación del usuario

Raspberry Pi:

Arduino:

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.

Comparativa:

Conexiones Raspberry Pi:

Conexiones Arduino:

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 Raspberry 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.

Microcontrolador vs Microprocesador

Diferencia principal entre un microcontrolador (Arduino) y un microprocesador (Raspberry Pi) son las capacidades de entradas y salidas, así como el rendimiento de la CPU.

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

Un resumen de como funciona una MCU y como agregar un programa: http://www.electronicaestudio.com/microcontrolador.htm que es diferente a como funciona un microprocesador como los que tenemos en nuestro ordenador o portatil.

Para programación en tiempo real el HW a utilizar es el Arduino, para programación intensiva con gran cantidad de datos usaríamos una Raspberry Pi o un PC.

En un proyecto grande la elección es usar ambos, cada uno en la tarea que mejor hace. 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 un ordenador o una raspberry pi o similar.

Diferencias entre el microprocesador y el microcontrolador, características al usarlos en la implementación de sistemas digitales programables:

  • CPU
  • Memorias RAM y ROM
  • Velocidad de Operación
  • Tamaño
  • Costes
  • Interferencias (ruido)
  • Tiempo de desarrollo

El uso de una u otra tecnología depende del fin que se espera, pues debido a sus características propias, los microcontroladores y los microprocesadores pueden adquirir variados y diferentes espacios de implementación, por ejemplo, los microprocesadores se han desarrollado fundamentalmente orientados al mercado de los ordenadores personales y las estaciones de trabajo, pues allí se requiere una elevada potencia de cálculo, el manejo de gran cantidad de memoria y una gran velocidad de procesamiento. Mientras que los microcontroladores están concebidos fundamentalmente para ser utilizados en aplicaciones puntuales, es decir, aplicaciones donde el microcontrolador debe realizar un pequeño número de tareas, al menor costo posible. En estas aplicaciones el microcontrolador ejecuta un programa almacenado permanentemente en su memoria, el cual trabaja con algunos datos almacenados temporalmente e interactúa con el exterior a través de las líneas de entrada y salida de que dispone.

Microprocesadores Microcontroladores
CPU El microprocesador tiene mucha más potencia de cálculo, por lo cual solamente realiza sus funciones con lo que tiene (datos) y su algoritmo o programa establecida. Es una de sus partes principales, la cual se encarga de dirigir sus operaciones.
Memorias RAM y ROM Son dispositivos externos que lo complementan para su óptimo funcionamiento. Las incluye en un solo circuito integrado.
Velocidad de Operación Rápida Lenta en comparación con la de un microprocesador
Tamaño La configuración mínima básica de un Microprocesador está constituida por un Microprocesador, una memoria RAM, una memoria ROM, un decodificador de direcciones, lo cual lo convierte en un circuito bastante engorroso. El Microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores,  como por ejemplo, la disminución en el tamaño del circuito impreso por la reducción de los circuitos externos.
Costos Para el Microprocesador, el costo es muy alto en la actualidad. El costo para un sistema basado en Microcontrolador es mucho menor.
Interferencias Son más susceptibles a la interferencia electromagnética debido a su tamaño y a su cableado externo que lo hace más propenso al ruido. El alto nivel de integración reduce los niveles de interferencia electromagnética
Tiempo de desarrollo El tiempo de desarrollo de un microprocesador es lento. Por el contrario, el de un microcontrolador es rápido.

Un buen curso sobre microcontroladores es accesible desde http://www.itescam.edu.mx/portal/asignatura.php?clave_asig=MTF-1021&carrera=IMCT-2010-229&id_d=206. Se trata de una asignatura de microcontroladores.

Más información sobre microcontroladores: https://sites.google.com/site/electronicscience20/Micro/pic-asembler/2-microcontroladores

Raspberry Pi es un ordenador de placa reducida o (placa única) (SBC) de bajo coste, desarrollado en Reino Unido por la Fundación Raspberry Pi. El diseño incluye un System-on-a-chip Broadcom BCM2835, que contiene un procesador central (CPU) ARM1176JZF-S a 700 MHz, un procesador gráfico (GPU) VideoCore IV, y 512 MiB de memoria RAM.

Los sistemas operativos soportados son distribuciones Linux para arquitectura ARM, Raspbian (derivada de Debian), RISC OS 5, Arch Linux ARM (derivado de Arch Linux) y Pidora (derivado de Fedora)

Web principal: http://www.raspberrypi.org/

Especificaciones técnicas: http://es.wikipedia.org/wiki/Raspberry_Pi#Especificaciones_t.C3.A9cnicas

El System-on-a-chip Broadcom BCM2835: http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

GPIO:

También intel saca su alternativa a raspberry: http://www.intel.es/content/www/es/es/do-it-yourself/edison.html

Más información: https://aprendiendoarduino.wordpress.com/2016/06/25/arduino-vs-raspberry-pi-2/

Un sketch de Arduino no es un sistema operativo: https://es.wikipedia.org/wiki/Sistema_operativo. Un sistema operativo es un programa o conjunto de programas de un sistema informático que gestiona los recursos de hardware y provee servicios a los programas de aplicación de software, ejecutándose en modo privilegiado respecto de los restantes (aunque puede que parte de él se ejecute en espacio de usuario)

Se puede decir que el sketch de Arduino es la aplicación que gestiona directamente los recursos de HW sin necesidad de un SO o un kernel intermedio.

En el caso de raspberry Pi, el programa o sketch se ejecuta como una aplicación sobre un sistema operativo y para interaccionar con el HW necesita de la interacción con el sistema operativo.

Para entender qué es el microcontrolador dentro de Arduino, leer: https://aprendiendoarduino.wordpress.com/2015/02/25/como-conseguir-un-arduino-gratis/

¿Podría convertir un arduino en un ordenador? ¿Cómo? ¿Es práctico?. Arduino como un ordenador:

También es posible convertir un ordenador en un microcontrolador http://www.instructables.com/id/HackTurn-PC-into-a-microcontroller-for-free/?ALLSTEPS

Microcontroladores 8 bits, 16 bits, 32 bits

El tamaño de la palabra es un aspecto importante en la arquitectura de procesadores.

La mayoría de los registros de un Microprocesador/Microcontrolador tienen el tamaño de la palabra y las operaciones que hace la ALU es manejando operandos cuyo tamaño es el tamaño de la palabra, así como la cantidad de datos transferidos a memoria y dirección utilizada para designar una localización de memoria a menudo ocupa una palabra.

El tamaño de palabra de un microprocesador/microcontrolador influye principalmente en el tamaño de datos que puede manejar y la cantidad de memoria RAM que puede usar, así como la velocidad de procesamiento.

También los valores que pueden tomar las variables dependen del tamaño de la palabra: http://es.wikipedia.org/wiki/Palabra_%28inform%C3%A1tica%29

Arduinos con procesadores de 8 bits:

Arduinos con procesadores de 32 bits: