Gracias a un amigo he tenido conocimiento de este blog (AprobarFacil.com) de enseñanza de electrónica. En él podemos aprender o repasar conceptos muy importantes que nos ayudarán a entender y desarrollar las prácticas que hacemos con Rasperry Pi.
Los conceptos se explican con vídeos muy fáciles de entender.
Podemos encontrar formación de
Os animo a echarle un vistazo al blog que seguro que os sirve de ayuda
Mostrando entradas con la etiqueta Electrónica Digital. Mostrar todas las entradas
Mostrando entradas con la etiqueta Electrónica Digital. Mostrar todas las entradas
sábado, 16 de noviembre de 2013
The MagPi número 16
Ha salido un nuevo número de la revista The MagPi, el número 16. Este es el link.
Interesantes artículos, entre los que destaco:
| Issue 16 |
Interesantes artículos, entre los que destaco:
- SKUTTER I2C: Expanding your senses with I2C: Interesante artículo que amplía y profundiza en el uso del bus I2C del conector GPIO incluyendo formas de convertir el voltaje del bus. Puede ser usado como base de futuras prácticas de Electrónica Digital.
- LOGI-PI SPARTAN6 FPGA BOARD: Raspberry Pi meets FPGA: Artículo avanzado en el que vemos las utilidades del módulo Log-Pi para interactuar con multiples interfaces bajo la perspectiva FPGA (Field Programmable Gate Array)
- XML for the Raspberry Pi: Uso de Python para interpretar y construir archivos XML
miércoles, 28 de agosto de 2013
The MagPi número 15
Ha salido un nuevo número de la revista The MagPi, el número 15. Este es el link.
Interesantes artículos, entre los que destaco:
| Issue 15 |
Interesantes artículos, entre los que destaco:
- USB ARDUINO LINK Using Nanpy to connect your Raspberry Pi to An Arduino: Este interesante artículo nos muestra como interconectar Arduino y Raspi a través del puerto USB y usar Python para enviar comandos a Arduino.
- THE RASCLOCK Raspberry Pi timekeeping with a real time clock: Si para nuestros proyectos necesitamos que el reloj de Raspi esté siempre en hora y no tenemos acceso a Internet, este articulo nos explica como.
- MY OS: BUILD A CUSTOMISED OPERATING SYSTEM: Introducción al proceso de creación de una distribución Linux adaptada a nuestras necesidades
Expansiones I/O II
Como ya comenté en un post anterior, hay muchos módulos de expansión para RasPi.
En este artículo (EETimes) podeis ver otras posibilidades de expansión que nos facilitarán el desarrollo de nuestros proyectos.
Entre los mas interesantes tenemos:
En este artículo (EETimes) podeis ver otras posibilidades de expansión que nos facilitarán el desarrollo de nuestros proyectos.
Entre los mas interesantes tenemos:
- Slice of Pi: Tarjeta de desarrollo y port expander que nos abre al mundo de Xbee
- 4D Systems LCD Options: Opción para conectar una pantalla LCD a RasPi
- Adafruit RGB Negative/Positive 16x2 LCD+Keypad Kit for Raspberry Pi: Display LCD de 2 líneas para los proyectos que precisan mostrar información sin usar un monitor.
- Motion and Direction Sensor for Raspberry Pi: Módulo que añade 3 acelerómetros y magnetómetros de 3 ejes para proyectos de robotica.
- PicoBorg -- Control Small Motors with a Raspberry Pi: Módulo que nos permite gestionar 4 motores pequeños de CC.
Este es el enlace del artículo.
The MagPi número 14
Ha salido un nuevo número de la revista The MagPi, el número 14. Este es el link.
Interesantes artículos, entre los que destaco:
| Issue 14 |
Interesantes artículos, entre los que destaco:
- RASPBERRY PI CAMERA MODULE Part 1: Nos introduce a la nueva cámara que se conecta directamente a RasPi.
- PYTHON CONTROL: ROBOTIC ARM: Interesante articulo que nos enseña como se gestiona un brazo robot con Phyton.
- FRESHLY ROASTED A beginners guide to Java: Si nuestro lenguaje de programación favorito es Java, este articulo es fundamental.
Expansiones I/O para hacer practicas Raspberry Pi
Como hemos visto en los anteriores posts de electrónica digital, se pueden hacer diseños y prácticas básicas trabajando directamente con el bus GPIO, pero si queremos ir un paso mas allá con proyectos mas complejos, necesitamos implementar interfaces de entrada salida.
Como vimos en este post, las capacidades eléctricas del bus GPIO son pobres para activar y manejar dispositivos complejos por lo que si queremos hacer proyectos mas complejos que conectar un LED, necesitamos circuitos de adaptación de tensión, impedancias, etc, para, entre otras cosas, proteger a Raspi.
Conociendo las características del bus GPIO podemos construirnos estos circuitos como una practica mas. Sin embargo, hay un número cada vez mas grande de módulos y tarjetas adaptables a RasPi para facilitarnos esta tarea.
A continuación enumero las que me parecen mas interesantes para empezar ha hacer proyectos complejos de electrónica digital, robótica y M2M.
Gertboard es un de los módulos mas completos que hay para realizar todo tipo de practicas de desarrollo y electrónica digital con la que podemos gestionar sensores digitales y analógicos, motores bidireccionales, mostrar información binaria, programar y gestionar un chip Arduino, etc.
Características:
El módulo Piface permite añadir a RasPi la capacidad de interactuar con elementos externos, tales como motores, sensores, interruptores, relés, etc.
Es muy sencillo gestionar Piface a través de librerías Python, C, etc.
Características:
El módulo BrickPi permite añadir a LEGO Technic/Mindstorm la potencia de proceso y almacenamiento de RasPi.
Características:
El módulo AlaMode es una tarjeta de ampliación compatible con Arduino. Con esta tarjeta sumamos a la potencia de proceso de RasPi la capacidad de control de dispositivos en tiempo real de Arduino. Se pueden gestionar las capacidades de Arduino, tanto desde los lenguajes de alto nivel de RasPi como desarrollar directamente con el IDE de Arduino.
Características:
Cámara desarrollada por el mismo equipo que desarrolló RasPi. Se conecta directamente a RasPi a través del bus CSI (conexión directa al procesador SOC BCM2835).
Características:
Si tenemos que trabajar con varios módulos o queremos evitar conectar y desconectar los módulos de las prácticas, este módulo de expansión nos permite tener conectados 4 módulos y elegir cuales están activos. También permite alimentar los módulos con una fuente externa para no sobrecargar a RasPi.
Como vimos en este post, las capacidades eléctricas del bus GPIO son pobres para activar y manejar dispositivos complejos por lo que si queremos hacer proyectos mas complejos que conectar un LED, necesitamos circuitos de adaptación de tensión, impedancias, etc, para, entre otras cosas, proteger a Raspi.
Conociendo las características del bus GPIO podemos construirnos estos circuitos como una practica mas. Sin embargo, hay un número cada vez mas grande de módulos y tarjetas adaptables a RasPi para facilitarnos esta tarea.
A continuación enumero las que me parecen mas interesantes para empezar ha hacer proyectos complejos de electrónica digital, robótica y M2M.
Para prácticas genéricas de electrónica digital
Módulo Gertboard (link)
| Gertboard y Raspberry Pi (Element14) |
Características:
- Se conecta directamente al puerto GPIO de RasPi
- Controlador de motor bidireccional para motores de hasta 18V y 2A
- 2 Convertidores Digital-Analógico 8-bits
- 2 Convertidores Analógico-Digital 10-bits
- Arduino (Atmel ATmega328) MCU programable y gestionable desde RasPi
- 6 salidas colector abierto
- 12 LEDs
- 3 pulsadores
Módulo Tandy Multiface Gertboard Compatible
| Tandy Multiface (Tandy) |
Tandy Multiface es un módulo con capacidades similares a Gertboard desarrollado por Tandy. En este link teneis información del módulo.
Para prácticas de robotica y M2M
Módulo Piface (link)
| PiFace (Element14) |
El módulo Piface permite añadir a RasPi la capacidad de interactuar con elementos externos, tales como motores, sensores, interruptores, relés, etc.
Es muy sencillo gestionar Piface a través de librerías Python, C, etc.
Características:
- 2 relés
- 8 salidas de colector abierto
- 8 entradas digitales
- 8 indicadores LED
Para prácticas de robotica uniendo la potencia de RasPi y Lego Mindstorm
Módulo BrickPi (link)
| Raspberry Pi y BrickPi (dexter industries) |
Características:
- Gestionar hasta 4 motores NXT
- Gestionar hasta 5 sensores (analógicos o digitales)
- Alimentar RasPi
- Librerías Python, Scratch y C
- Simulador gráfico
Para prácticas con Arduino
Módulo AlaMode (link)
| Raspberry Pi y AlaMode (seeed) |
Características:
- Compatible con Arduino y Arduino shields
- Se conecta al conector GPIO de RasPi
- Adaptador de voltaje bidireccional 3.3V(RasPi)<->5V(Arduino)
- Controladores Servo para manejar 3 servos
- Tarjeta Micro-SD para uso de Arduino y almacenamiento de datos
- Reloj en tiempo real para poner en hora y sincronizar, tanto RasPi como Arduino.
Para prácticas de desarrollo de SW y proceso de imágenes
Cámara Rasperry Pi (link)
| Cámara y Rasperry Pi (Element14) |
Características:
- Sensor 5 megapixeles
- Fotos de 2592 x 1944 px de resolución
- Video a 1080p30, 720p60 y 640x480p60/90
Para prácticas con varios módulos de expansión
PiRack Accessory board for Raspberry Pi (link)
| PiRack (Element14) |
martes, 27 de agosto de 2013
The MagPi número 13
Ha salido un nuevo número de la revista The MagPi, el número 13. Este es el link.
Interesantes artículos, entre los que destaco:
| Issue 13 |
Interesantes artículos, entre los que destaco:
- PI MATRIX: An introduction to controlling 64 LEDs and programming the I2C bus: Interesante articulo en el que vemos como usar el bus I2C del conector GPIO .
- A COCKTAIL OF EXPANSION BOARDS: Nos introduce a la creación de módulos de expansión basados en los chips ATtiny.
- SCRATCH PATCH: Uno de los alicientes para que los chavales aprendan a programar es el desarrollo de juegos. En este artículo tenemos un ejemplo muy bueno.
viernes, 22 de marzo de 2013
Primera práctica de Electrónica Digital
Introducción: El Diodo LED
Para la primera práctica utilizaremos un diodo led. El diodo led es un diodo que emite luz. Su símbolo electrónico es el siguiente:| Estructura de un LED: A-Ánodo B-Cátodo 1-Lente 2-Contacto metálico 3-Cavidad reflectora 4-Terminación del semiconductor 5-Yunque 6-Plaqueta 8-Borde plano (Indica el Cátodo) |
Las características mas importantes a tener en cuenta son las siguientes:
- Como cualquier diodo, el LED es semiconductor, es decir, solo permite el paso de la corriente en un sentido. Si no polarizamos bien el LED, no circulará la corriente y no se encenderá. El ánodo se conecta a la parte positiva del circuito y el cátodo a la parte negativa.
- El LED tiene una tensión de trabajo en la que permite el paso de la corriente y por lo tanto empieza a iluminar.
- El led tiene un límite en la cantidad de corriente que circula por el. Si se sobrepasa este límite, dañaremos el LED.
- La tensión normal de funcionamiento es de 1,8-2,2 v
- La corriente máxima no debe exceder los 20mA, y con 10mA se iluminan bien.
Haciendo la práctica
Vamos a conectar un LED al bus GPIO de la RasPi y vamos a encenderlo y apagarlo a nuestra voluntad a través de comandos.
El bus GPIO tiene las siguientes características:
- Tensión para un uno lógico: 3,3v
- Corriente máxima: 16 mA.
| Resistencia 150Ohm. Código Marrón, Verde, Marrón (+ Oro que el la tolerancia) |
Para calcular el valor de la resistencia utilizaremos la ley de ohm. Si el LED trabaja a 1,8v, en la resistencia tienen que "caer" (3,3v-1,8v) es decir, 1,5v. Como queremos que por el LED circulen 10mA, los mismos que circulan por la resitencia, tenemos:
R=V/I
1,5v/10mA=150Ohm
Es decir, necesitamos una resistencia de 150Ohm.
Usando una regleta de pruebas, nos quedaría así:
Para encender y apagar el led, usamos estos comandos:
Para configurar el pin 7 (GPIO4) como salida:
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
Para encender el LED
echo "1" > /sys/class/gpio/gpio4/value
Para apagar el LED
echo "0" > /sys/class/gpio/gpio4/value
echo "4" > /sys/class/gpio/unexport
Usando una regleta de pruebas, nos quedaría así:
Para encender y apagar el led, usamos estos comandos:
Para configurar el pin 7 (GPIO4) como salida:
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
Para encender el LED
echo "1" > /sys/class/gpio/gpio4/value
Para apagar el LED
echo "0" > /sys/class/gpio/gpio4/value
Para dejar de usar el puerto
echo "4" > /sys/class/gpio/unexport
domingo, 17 de marzo de 2013
Programación puerto GPIO
Una vez conocidos los pines del puerto GPIO, vamos a ver como se pueden gestionar desde código.
La programación del puerto se puede hacer utilizando diversos lenguajes, entre otros:
Un tema a tener en cuenta es que el número lógico I/O del chip BMC no coincide con el pinout del conector. Así, para usar el pin 7 del conector, tenemos que referirnos al BMC_GPIO_4
Los comandos para controlar los pines del puerto GPIO tanto para entrada como para salida son los siguientes:
Primero cambiamos a usuario root. Para cerrar root, usamos el comando exit
sudo -i
Para configurar el pin 7 (GPIO4) como salida:
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
Para configurar el pin 26 (GPIO7) como entrada:
echo "7" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio7/direction
Para poner un uno lógico en el pin 7 (GPIO4)
echo "1" > /sys/class/gpio/gpio4/value
Para leer el estado del pin 26 (GPIO7)
cat /sys/class/gpio/gpio7/value
Para dejar de usar los puertos
echo "4" > /sys/class/gpio/unexport
echo "7" > /sys/class/gpio/unexport
Podemos encontrar información mas extensa sobre el puerto y su programación aquí.
La programación del puerto se puede hacer utilizando diversos lenguajes, entre otros:
- C
- Java
- Python
- Perl
- Bash shell script, usando sysfs
- Shell script usando la libería wiringPi
- Pascal
- BASIC
- Ruby
Un tema a tener en cuenta es que el número lógico I/O del chip BMC no coincide con el pinout del conector. Así, para usar el pin 7 del conector, tenemos que referirnos al BMC_GPIO_4
Los comandos para controlar los pines del puerto GPIO tanto para entrada como para salida son los siguientes:
Primero cambiamos a usuario root. Para cerrar root, usamos el comando exit
sudo -i
Para configurar el pin 7 (GPIO4) como salida:
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
Para configurar el pin 26 (GPIO7) como entrada:
echo "7" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio7/direction
Para poner un uno lógico en el pin 7 (GPIO4)
echo "1" > /sys/class/gpio/gpio4/value
Para leer el estado del pin 26 (GPIO7)
cat /sys/class/gpio/gpio7/value
Para dejar de usar los puertos
echo "4" > /sys/class/gpio/unexport
echo "7" > /sys/class/gpio/unexport
Podemos encontrar información mas extensa sobre el puerto y su programación aquí.
domingo, 17 de febrero de 2013
GPIO (General Purpose Input/Output)
El puerto GPIO (General Purpose Input/Output) permite a la RasPi comunicarse con el exterior tanto para activar elementos como para leer el estado de los mismos. Como ya hemos visto, la tensión de trabajo del puerto es de 3,3v para un uno y 0v para un 0. Además, la corriente máxima que puede suministrar es de 16 mA.
Hay que tener cuidado conectando elementos al puerto GPIO porque se gestiona directamente desde el chip del procesador BCM2835 (system on a chip SOC) por lo que es muy facil dañar la RasPi o la tarjeta SD.
La configuración de los pines del conector GPIO es la siguiente:
Todos los pines BMC GPIO* se pueden gestionar directamente a través de código, ya sea para poner un valor o leer un valor de un elemento externo.
Además, se pueden configurar interfaces complejos de entrada/salida por lo que algunos pines pasan a ser gestionados directamente por el chip del procesador:
-3 SDA Data
-5 SCL Clock
SPI es un bus de comunicaciones serie síncrono (con reloj) en el que se pueden conectar múltiples periféricos SPI esclavos. RasPi se configura como maestro del bus.
Pines del conector GPIO:
-19 MOSI Master Out, Slave In
-21 MISO Master In, Slave Out
-23 SCLK Serial Clock
-24 CE0 Channel Enable 0. Also known as Slave Select (SS)
-26 CE1 Channel Enable 1. Also known as Slave Select (SS
UART es un bus de conexión serie asíncrono compatible con el estándar RS232 (prestar atención al circuito adaptador ya que el estándar RS232 trabaja a 12v y no a 3,3v)
Pines del conector GPIO:
-8 TX Transmit
-10 RX Receive
Hay que tener cuidado conectando elementos al puerto GPIO porque se gestiona directamente desde el chip del procesador BCM2835 (system on a chip SOC) por lo que es muy facil dañar la RasPi o la tarjeta SD.
La configuración de los pines del conector GPIO es la siguiente:
Todos los pines BMC GPIO* se pueden gestionar directamente a través de código, ya sea para poner un valor o leer un valor de un elemento externo.
Además, se pueden configurar interfaces complejos de entrada/salida por lo que algunos pines pasan a ser gestionados directamente por el chip del procesador:
I²C es un bus de comunicaciones serie en el que se pueden conectar múltiples periféricos I²C esclavos. RasPi se configura como maestro del bus.
Pines del conector GPIO:-3 SDA Data
-5 SCL Clock
SPI es un bus de comunicaciones serie síncrono (con reloj) en el que se pueden conectar múltiples periféricos SPI esclavos. RasPi se configura como maestro del bus.
Pines del conector GPIO:
-19 MOSI Master Out, Slave In
-21 MISO Master In, Slave Out
-23 SCLK Serial Clock
-24 CE0 Channel Enable 0. Also known as Slave Select (SS)
-26 CE1 Channel Enable 1. Also known as Slave Select (SS
UART es un bus de conexión serie asíncrono compatible con el estándar RS232 (prestar atención al circuito adaptador ya que el estándar RS232 trabaja a 12v y no a 3,3v)
Pines del conector GPIO:
-8 TX Transmit
-10 RX Receive
Electrónica digital y Raspi
Entendiendo que en electrónica digital se usan dos valores (0 y 1) para representar información, ahora vamos a ver como se implementan físicamente. Raspi es un dispositivo electrónico digital que procesa información binaria. Obtiene información (Sistemas de entrada/salida o I/O), procesa información (Procesador ARM o CPU), la almacena (Memoria) y la expone (Sistemas de entrada/salida o I/O) en formato binario, esto es, en unos y ceros.
Si bien hay muchas maneras de representar físicamente la información binaria, podemos simplificar diciendo que un 1 lógico se representa físicamente como la existencia de tensión, y un 0 lógico como la ausencia de tensión.
Aunque la alimentación de Raspi es de 5v, la tensión de operación de los diferentes elementos que tiene es de 3,3v, incluido el puerto GPIO. Esto significa que en el puerto GPIO hay un uno lógico cuando hay aplicada una tensión de 3,3v y hay un cero cuando no hay tensión aplicada (0v).
Si bien hay muchas maneras de representar físicamente la información binaria, podemos simplificar diciendo que un 1 lógico se representa físicamente como la existencia de tensión, y un 0 lógico como la ausencia de tensión.
Aunque la alimentación de Raspi es de 5v, la tensión de operación de los diferentes elementos que tiene es de 3,3v, incluido el puerto GPIO. Esto significa que en el puerto GPIO hay un uno lógico cuando hay aplicada una tensión de 3,3v y hay un cero cuando no hay tensión aplicada (0v).
domingo, 10 de febrero de 2013
Electrónica digital II
La electrónica digital se diferencia de la electrónica analógica, entre otras cosas, en la forma de representar la información. Mientras que en la electrónica analógica la información se representa como una función continua entre dos valores (de tensión y/o de corriente),
en la electrónica digital solo se utilizan dos valores o estados, conocidos habitualmente como 0 y 1, para representar la información.
La información representada de esta forma se conoce como binaria. Matemáticamente hablando, los números que usan solo dos valores están en base 2 (2x)
La unidad básica de información en sistemas digitales es el bit, que puede ser 0 o 1. Con un bit solo podemos representar 2 (21) valores, tales como 0/1, Si/No, Encendido/Apagado, verdadero/falso, etc. (En este punto me acuerdo de la película Tron, en concreto de BIT, el compañero del programa pirata.)
La unión de 8 bits da lugar a un octeto o Byte. Con un Byte podemos representar 256 (28) valores. Las letras o caracteres usado en nuestro ordenador se representan usando un Byte.
La unión de 16 bits o mas da lugar a palabras. Con una palabra de 16 bits podemos representar 65.536 (216) valores, y con una palabra de 32 bits podemos representar 4.294.967.296 (232) valores. Esta es la memoria máxima que puede gestionar la RasPi ya que usa un procesador de 32 bits.
| Señal Analógica: Variación continua en función del tiempo. Representa un sonido |
| Señal digital: (1) Nivel bajo o 0, (2) Nivel alto o 1, (3) y (4) Cambios de valor o estado. Representa el dato binario 01010 (6 en decimal) |
La unidad básica de información en sistemas digitales es el bit, que puede ser 0 o 1. Con un bit solo podemos representar 2 (21) valores, tales como 0/1, Si/No, Encendido/Apagado, verdadero/falso, etc. (En este punto me acuerdo de la película Tron, en concreto de BIT, el compañero del programa pirata.)
La unión de 8 bits da lugar a un octeto o Byte. Con un Byte podemos representar 256 (28) valores. Las letras o caracteres usado en nuestro ordenador se representan usando un Byte.
La unión de 16 bits o mas da lugar a palabras. Con una palabra de 16 bits podemos representar 65.536 (216) valores, y con una palabra de 32 bits podemos representar 4.294.967.296 (232) valores. Esta es la memoria máxima que puede gestionar la RasPi ya que usa un procesador de 32 bits.
domingo, 3 de febrero de 2013
Electrónica Digital
Una de las ventajas de Raspi (Rasperry Pi) frente a otros equipos con los que trabajamos habitualmente es que tiene un bus GPIO (General Purpose Input/Output) que nos permite hacer prácticas y proyectos de electrónica digital en las que Raspi puede hacer muchos papeles: Controlador/Programador, Gestor de estados, M2M, etc.
Utilizando las utilidades que nos trae el Sistema Operativo Raspbian “wheezy” (Adaptación del S.O. Linux Debian para Raspi) podemos hacer muchas de las cosas que se nos ocurran.
Ahora bien, Raspbian, como cualquier sistema operativo multitarea, no es el mas indicado para hacer proyectos que requieran control certero en tiempo real de eventos. Para corregir este gap, podemos ayudarnos de terceros equipos como Arduino, que se integran perfectamente con Raspi y hacen un buen equipo.
Utilizando las utilidades que nos trae el Sistema Operativo Raspbian “wheezy” (Adaptación del S.O. Linux Debian para Raspi) podemos hacer muchas de las cosas que se nos ocurran.
Ahora bien, Raspbian, como cualquier sistema operativo multitarea, no es el mas indicado para hacer proyectos que requieran control certero en tiempo real de eventos. Para corregir este gap, podemos ayudarnos de terceros equipos como Arduino, que se integran perfectamente con Raspi y hacen un buen equipo.
Suscribirse a:
Entradas (Atom)