entramado.net

Electrónica

Nueva placa: ST Nucleo

Me he comprado una nueva placa de desarrollo, similar a Arduino pero algo más potente, de hecho es compatible pin a pin con Arduino, pero tiene bastantes pines adicionales macho, tanto en la cara de arriba como en la de abajo.

Lo que más me gusta es el microcontrolador ARM Cortex-M4 que monta. Tenía ganas de cacharrear con la arquitectura ARM un poco, el Cortex-M4 es la evolución del tan utilizado Cortex-M3 pero que además incorpora instrucciones de DSP.

No tengo ningún proyecto en concreto para trabajar con él pero sí me gustaría probar opciones que he encontrado por Internet, como programarlo con JavaScript o hacer que corra un kernel Linux.


Red de Vehículo

Tesla model S.

Gracias a los enlaces de entramado descubro una noticia muy interesante que ha compartido Pablo, el descubrimiento de un puerto Ethernet en el Tesla S, el coche utiliza un Ubuntu para gestionar su contenido multimedia y los diseñadores le han provisto de un puerto Ethernet conectado a la red del coche, una red con 3 dispositivos, independiente de las redes más críticas del coche. Es decir que además de las interfaces y redes ya comunes en el resto de coches como ODB II o CAN, debido al auge del coche multimedia, ahora se suman al coche las redes que tradicionalmente han sido de PC. Esto a parte de un posible jailbreak del Tesla del que ya se habla implica otras cosas también interesantes, la posibilidad de ampliar a tu gusto la red tu coche, conectar los dispositivos que le vengan en gana, colocarle un punto de acceso Wifi,comunicarte con una antena con los coches de alrededor, unir tu coche a tu red de hogar… En fin, miles de posibilidades que se harán posibles, siempre que los fabricantes no nos blinden el acceso a estas redes, que es muy posible. ¿El futuro? Próximamente, en las pantallas de tu coche.


El paradigma pasivo frente al activo

Fey Ilyas / Foter / CC BY-SA

Hace poco conocí en persona por fin a Ester y Alfonso de Arrsa, tuvimos una fructífera conversación sobre nuestros actuales proyectos y me hablaron sobre el paradigma de construcción pasiva que se está imponiendo en edificación y sus ideas sobre como enfrentar el problema del confort en edificios de una forma más “activa”, estoy seguro de que ellos os lo pueden explicar mejor que yo, así que les cedo el testigo en esta parte, hoy voy a hablar de un caso distinto.

Una de las ideas que me vino a la mente días después cuando repensaba estos conceptos es que ya existía algo parecido en un campo más cercano al mío, pero en este caso no son ideas opuestas, sino que se complementan,
y lo encontramos en los auriculares, todo un ejemplo de ingeniería moderna.

Sí, podemos comprarnos unos auriculares baratos de baja tecnología, pero hay quién busca algo más  y ahí aparecen las tecnologías de reducción del ruido. Pues es aquí mismo donde encontramos esas dos formas de solucionar el problema, la reducción del ruido activa y la pasiva.

Reducción Pasiva

Esto es relativamente sencillo, consiste en añadir capas de material aislante sonoro para eliminar ruidos externos. Cuanto más aislante más reducción, pero encarecemos y hacemos más pesado el producto. Este tipo de aislamiento funciona como un filtro paso-bajo, es decir que elimina las altas frecuencias.

Reducción Activa

En este caso se utilizan las propiedades de las ondas para cancelar los sonidos externos de forma activa, es decir mediante electrónica. Se coloca uno o varios micrófonos y sabiendo su ubicación se calcula como cancelar la onda recibida en el interior del oído. Esto es importante saberlo, sólo se cancela el sonido en un punto, en este caso el oído, puesto que debido a las propiedades de las ondas, la cancelación en un punto provocará un aumento en otro punto.

Esta es una idea interesante, ya que no estamos aplicando la “fuera bruta” del aislamiento, no necesitamos una envolvente, sólo unos sensores, unos actuadores y un procesador de señal que realice el control y ésta es una idea que se puede aplicar a muchos problemas de este estilo, entre ellos el confort en viviendas.

Para acabar de rematar la jugada tengo que decir que la reducción activa funciona bien para ruidos de bajas frecuencias, normalmente se utilizan miden ruidos de frecuencias bajas para cancelarlos, es decir que actúa como un filtro paso-alto. Esto lo hace perfecto para complementar la reducción pasiva de ruido, eliminando el ruido en todas sus frecuencias. La mejor solución como en muchos otros casos es una síntesis de dos ideas diametralmente opuestas.


Accediendo al sistema de archivos de Raspberry Pi

Hasta ahora había escrito sobre como acceder a una terminal de forma remota en Raspberry pero hoy quiero explicar como acceder directamente al sistema de archivos para subir y bajar ficheros de forma simple.

Una opción es hacer uso del conocido sistema FTP para la transferencia de archivos, pero esto conllevaría instalar un servidor FTP en la RPi sobrecargando aún más la no muy potente Raspberry.

La solución que he adoptado es mucho más sencilla, vamos a hacer uso del protocolo SFTP, un protocolo de transferencia de ficheros sobre SSH y como ya tenemos funcionando SSH no necesitamos instalar ningún nuevo servidor. El procedimiento es así de simple:

Instalamos FileZilla en nuestro PC, una herramienta muy recomendable.

Lo abrimos y pinchamos en el Gestor de sitios, primer icono arriba a la izquierda. Nos aparecerá una ventana como la siguiente:

Configuración de SFTP en Raspberry.

Configuración de SFTP en Raspberry.

Creamos un nuevo sitio, le ponemos el nombre que queramos, en este caso Raspberry, y rellenamos la parte de la derecha. En servidor la IP de la RPi, protocolo SFTP, modo de acceso normal y nuestro usuario y contraseña.

Pinchamos en “Conectar” y en un momento se conectará y tendremos acceso en el panel derecho el sistema de archivos de nuestra pequeña computadora.

Este sencillo truco sirve para cualquier sistema empotrado, dándonos un acceso fácil al sistema de archivos en ejecución.


Monitorizar la temperatura desde Raspberry Pi

En este pequeño tutorial os voy a enseñar como monitorizar la temperatura de una habitación con sólo una Raspberry Pi, un sensor de temperatura DS18S20 y un poco de software.

Vamos a utilizar Emoncms, del que ya os he hablado anteriormente, instalarlo es realmente fácil, no tengáis miedo de seguir estas instrucciones, enseguida lo tendréis funcionando.

El siguiente paso va a ser conectar a la Raspberry Pi el sensor DS18S20+, podéis pedir una muestra gratuita a Maxim Integrated. El sensor se conecta usando los pines que tenemos disponibles en la RPi. Para conectarlo hay que seguir el siguiente esquema:

DS18s20 conectado a Raspberry Pi.

DS18S20 conectado a Raspberry Pi.

Es muy sencillo de conectar utilizando unos conectores para jumpers, yo he reciclado los que venían para la placa base de un PC de sobremesa antiguo, los que la conectan con los LEDs y los botones de encender y reiniciar.

El siguiente paso es poner en marcha una aplicación que recoja la temperatura del sensor y la envíe al servidor EmonCMS. Para ello voy a utilizar Python, un lenguaje interpretado muy sencillo que se utiliza mucho en la comunidad Raspberry Pi. El acceso al sensor se realiza a través de un driver que nos proporciona ya nuestra distribución de Raspbian.

El siguiente código es plenamente funcional, aunque posiblemente algo espartano, es necesario que añadáis vuestra apikey de Emoncms, la encontraréis entrando a vuestro servidor Emoncms, en la ruta /emoncms/input/api, hay que elegir la “Read & Write:” puesto que vamos a escribir los valores.

También podéis modificar cada cuanto tiempo queréis que se envíen los datos, en este caso cada 10 segundos, pero es posible modificar la línea “time.sleep(10)” por el número de segundos que queráis.

import os
import glob
import time
import urllib2, httplib
os.system('sudo modprobe wire')
os.system('sudo modprobe w1-gpio')
os.system('sudo modprobe w1-therm')
base_dir = '/sys/bus/w1/devices'
f = open(base_dir + '/w1_bus_master1/w1_master_slave_count', 'r');
sensorCount = f.readlines()
sensorCount = [int(l[0]) for l in sensorCount]
f.close()
f = open(base_dir + '/w1_bus_master1/w1_master_slaves', 'r');
devices = f.readlines()
f.close()
def read_temp_raw(sensor):
device_file = base_dir + '/' + devices[sensor][:-1] + '/w1_slave'
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines

def read_temp(sensor):
lines = read_temp_raw(sensor)
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw(sensor)

equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
return temp_string[0:4]

while True:
url = "http://localhost/emoncms/input/post?json={"
for x in range(0, sensorCount[0]):
url = url + devices[x][:-1] + ":" + read_temp(x) + ","
url = url[:-1]+"}&apikey=LA_APIKEY_VA_AQUI"
print(url)
urllib2.urlopen(url)
time.sleep(10)

Acordaos de respetar la indentación (tabuladores) en el código, si no no funciona bien en Python. Guardamos este código como un archivo .py, por ejemplo temperatura.py y ya lo podemos ejecutar de la siguiente forma:

python temperatura.py

Ahora ya nos podemos ir a Inputs en Emoncms y encontrar la entrada correspondiente a nuestro sensor de temperatura. En su configuración añadiremos un proceso “x 0.01” para que nos muestre la temperatura en ºC y bajo de eso un “Log to feed” para poder mostrarla. Ahora ya aparecerá en la pestaña Feeds, donde la editaremos y la seleccionaremos como REALTIME. Por último en la pestaña Vis seleccionamos el visor Realtime y el feedid de nuestro sensor de temperatura. El resultado será algo parecido a esto:

Temperatura en tiempo real.

Temperatura en tiempo real.

Ahora podemos poner este visualizador en el Dashboard y habremos terminado.

Actualización: Ahora puedes bajar el archivo python desde mi Github: https://github.com/carsanbu/tipi-web/blob/master/utils/temp_DS18S20_emoncms.py


Muerte al datasheet

¡Open Data en electrónica o guerra!

Cualquiera que ha hecho un pequeño estudio de mercado sobre algún producto sabe lo tedioso que es este proceso. Si a ello le unimos las particularidades del mundo electrónico, con sus datasheets en roñosos PDFs, su falta de información o su secretismo, nos encontramos con un panorama desolador.

¡Pero ya está bien! Estamos entrando en la era del Open Data, de la información liberada de una forma entendible tanto a máquinas como a humanos. ¿Por qué nos tenemos que encadenar al datasheet? Las hojas de características son algo heredado de aquella época en que la información se manejaba en papel y había una escasez de información tremenda, en esa época cuando comprabas un sencillo chip te venía con unas cuantas hojas donde numeraba una por una sus características en el orden que al fabricante le pareciera.

¿Pero hoy? ¡Hoy tenemos ordenadores! Podemos procesar la información a velocidades impensables en aquella época. ¿Por que tenemos que seguir con el mismo formato con la única diferencia de que ahora manejamos archivos digitales? Tenemos opciones mucho mejores.

Open Data de calidad

No digo sólo que mostremos las características en archivos de texto planos como pudiera ser un HTML en una web o incluso datos más o menos estructurados en XML, eso es un cambio mínimo que cualquier empresa puede hacer con muy poco esfuerzo. La verdadera innovación es ofrecer las características de tu producto en una base de datos accesible por internet, que podamos descargar información de una forma sencilla y minar los datos para sacar conclusiones de forma rápida. ¿Estás dispuesto a ser el primero? Por que el segundo ya no obtendrá los beneficios de la apertura.

Y si no, la guerra

Aún así me parece que los fabricantes no están muy por la labor de liberar sus datos. Pero es posible plantar cara a la cabezonería creando nuevas empresas de inteligencia corporativa pero esta vez especializadas en producto, que destilen la información que a cuentagotas proveen los fabricantes y las vendan a un precio competitivo. De esta forma no sólo se crea una nueva forma de negocio, si no que se mejora la competencia y se contrarresta el efecto red que sufren algunos productos en electrónica.

¿Os acordáis de los PIC de Microchip antes de Arduino? ¿O los procesadores Intel antes de los smarphones? Eso es lo que hay que combatir y ahí está la forma.


Control aplicado a la electrónica

Nuestro curso de control libre y distribuido sigue dando guerra. En este caso voy a hablar de un ejemplo aplicado control en electrónica que ha diseñado Pablo Trujillo y nos muestra en su blog (ahora con dominio propio).

El objetivo es sencillo, se trata de una sencilla fuente de alimentación lineal, dada una tensión de referencia se pretende obtener esa tensión en la salida sin que se vea afectada por la carga que le coloquemos. Para obtener esto es necesario aplicar el principio fundamental del control, cerrar el bucle, y después implementar un controlador.

Para ello Pablo utiliza una implementación del controlador basada en electrónica analógica pura. Para ello utiliza un operacional en configuración restador, lo que nos proporcionará la señal de error.

Resta de señales referencia y salida.

Resta de señales referencia y salida.

En este caso podemos decir que el controlador es un proporcional con ganancia (Kp) 1, es decir que la acción de control y el error son iguales.

Veámoslo en el circuito:

Restador con un operacional.

Restador con un operacional.

Como hemos visto en el curso, este controlador tan sencillo puede producir un error en régimen permanente que para una fuente de tensión no es tolerable, la solución ya la conocemos, implementar un control PI, y eso mismo ha hecho su diseñador.

Esto en electrónica queda de la siguiente forma:

Restador + Integrador con un operacional.

Restador + Integrador con un operacional.

Como vemos lo único que ha cambiado es que en lugar de una resistencia en la realimentación del operacional hay un condensador. Esta configuración responde a la siguiente ecuación:

$latex u(t)= \frac{1}{RC} \int (y(t)-r) \mathrm{d}t$

O en Transformada de Laplace y sabiendo que y-r=e:

$latex u(s)= \frac{1}{RCs} e(s)$

Si pasamos la señal de error al otro miembro de la ecuación y subimos arriba la constante nos queda algo más parecido a una Función de Transferencia:

$latex \frac{u(s)}{e(s)}= \frac{\frac{1}{RC}}{s} $

Y ahí tenemos nuestro PI, con una ganancia ajustable de 1/RC.

Este es un ejemplo de una implementación de controladores de forma analógica, se puede implementar un controlador de muchas formas: mecánico, redes neuronales artificiales, lógica borrosa o analógico como éste, pero definitivamente la forma mas extendida es la digital, la que veréis en la mayor parte de PIDs comerciales.

Aunque este curso aún no se ha metido en cosas tan complejas como el desarrollo matemático y la implementación, siempre es recomendable pegarle una ojeada a los resultados finales que es posible obtener aplicando control.

Imágenes cortesía de mips & chips.


Destrucción electrónica I

Ya sabéis que de vez en cuando me gusta ver cómo aparatos electrónicos se destruyen mediante diversas técnicas, ahí va una muestra, un vídeo de un televisor de plasma sometido a 2000 V:
[youtube=http://www.youtube.com/watch?v=mkvQ9aWM0DE&w=580]


Poniendo a punto XBMC en Raspberry Pi

Skin predeterminado de XBMC.

Skin predeterminado de XBMC.

He seguido este tutorial de mi amigo Alex para instalar XBMC en la Raspberry Pi, pero con esto no es suficiente, lo quiero tunear para que tenga todo lo que yo gasto y de esto va esta entrada, todo lo que he hecho para poner a mi gusto XBMC.

 

 

Inicio automático

En primer lugar quiero que XBMC se inicie automáticamente nada más arrancar la RPi, para esto editamos el archivo /etc/default/xbmc para que quede de la siguiente forma:
# Set this to 1 to enable startup
ENABLED=1
# The user to run XBMC as
USER=pi
# Adjust niceness of XBMC (decrease for higher priority)
NICE=-10

De esta forma le estamos indicando que el usuario que vamos a usar para XBMC es el usuario pi, el que viene por defecto en Raspbian. Además estamos incrementando el nivel de prioridad de XBMC, par que vaya más fluido.

Activar apagado

Para permitir apagar la Raspberry directamente, modificamos el archivo /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla añadiendo lo siguiente:
[Actions for xbmc user]
Identity=unix-user:pi
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Manejo

Una vez hecho esto ya podemos conectar la Raspberry Pi a nuestro televisor y manejarla con un teclado USB, el mando a distancia del televisor si tenemos HDMI CEC o como en mi caso utilizando el móvil, con la aplicación XBMC Remote, sólo tenemos que acordarnos de permitir la conexión mediante http, yo estoy utilizando el puerto 1025 porque ya tengo en uso el puerto 8080.

Servidor multimedia

Otra funcionalidad de XBMC que me está encantando es poder utilizarla como servidor UPnP (algo parecido y en cierto modo compatible con el famoso DLNA). Mediante UPnP puedo compartir toda mi colección de música, vídeos e imágenes con cualquier dispositivo de mi red local que lo soporte, es decir que puedo ver películas en mi PC aún que estén a varios metros de distancia en un disco duro conectado a la RPi o tener toda mi música (muchos GB) a mano en el móvil mientras voy de un sitio a otro por la casa. Para Android me ha venido muy bien la versión gratuita de Mediahouse. Para GNU/Linux podéis buscar información sobre Grilo.

Plugins

También podemos instalar plugins como el que os voy a mostrar a continuación. Pelisalacarta nos permite conectarnos a un montón de servicios de streaming, yo en concreto uso Series.ly y este se encuentra entre ellos, os voy a explicar como instalarlo desde SSH de una forma rápida.

Primero buscamos en la web del plugin su enlace, asegurándonos de que sea la última versión y que sea efectivamente para XBMC, lo copiamos y nos vamos a una terminal SSH:
wget http://blog.tvalacarta.info/descargas/pelisalacarta-xbmc-addon-frodo-3.2.63.zip

Y con esto se descarga el plugin en la versión actual. Despues desde XBMC, vamos a la sección de instalar plugins desde zip, lo buscamos en nuestra carpeta home (/home/pi) o donde lo hayamos descargado y lo instalamos sin más problemas (tarda un par de minutos).

Y con esto lo tengo todo, lo que aún tengo pendiente es encontrar un Skin bonito y ligero, muy ligero, que la RPi tampoco puede con mucho.


¿Micro-exploración espacial?

Me encantan las pequeñas editoriales que recibo cada mes con Elektor.POST en el correo, este mes hablan de exploración espacial, un tema del que ya hemos hablado en este blog y que se está poniendo cada vez más candente, ahí va la reflexión:

Crónicas Marcianas

La semana pasada, el vehículo explorador Curiosity entonó un solitario “cumpleaños feliz” en Marte, tras pasar un año en el planeta rojo. Aunque no esté relacionado directamente, cosas como ésta me hacen pensar en el futuro de la exploración espacial. Es muy probable que se base en financiación privada, al margen de la burocracia y en algunos casos hasta un poco bajo la filosofía del “hazlo tú mismo”. La lista de empresas privadas dedicadas es impresionante, incluyendo las fundadas por célebres emprendedores como Richard Branson, Elon Musk, Burt Rutan, e incluso John Carmack (así es, una figura clave en la industria de los videojuegos). En los años 50, pretender diseñar nuestro propio sistema domótico habría sonado un poco a historia de ciencia ficción de Ray Bradbury: imposible. Hoy en día, la idea de explorar el suelo marciano cómodamente desde el sofá, con nuestro propio rover suena un poco… en fin… ¿lo adivináis?
Jaime | Elektor

PS: Se me olvidaba enlazar ésta entrada de Pablo que nos viene al pelo.


Internet y SSH en Raspberry Pi

El siguiente paso que vamos a dar con nuestra RPi va a ser conectarla a nuestra red para acceder a ella mediante SSH, además comprobaremos que tiene acceso a Internet.

  1. Cogemos un cable de red Ethernet y lo conectamos a Raspberry y a nuestro router.
  2. Miramos en la configuración del router que IP tenemos asignada a la RPi y de paso si el router nos da la opción hacemos que esa IP sea fija, si no podéis siempre podéis usar este tutorial.
  3. Nos conectamos por SSH con el siguiente comando en la terminal de Linux:ssh -l pi -x <NUESTRA_IP> Le estamos diciendo a SSH que nos conecte con el usuario pi y con permisos para ejecutar el entorno gráfico de GNU/Linux. Donde pone <NUESTRA_IP> debemos poner la IP que hemos mirado antes.

    Conectado a la RPi por SSH.

    Conectado a la RPi por SSH.

  4. Ponemos la contraseña por defecto para entrar, si no lo hemos cambiado. Recomiendo cambiarla para que nadie pueda entrar en nuestra Raspberry Pi en algún descuido, para ello podemos ir a la configuración con este comando:sudo raspi-config
  5. Ya podemos probar si tenemos internet a través del Ethernet, para esto hacemos un simple ping a cualquier dirección fiable, en este caso, mi blog: ping litox.entramado.net
    Ping a mi blog.

    Ping a mi blog.

    Cuando vemos que como en la imagen tenemos unos cuantos pings no se han perdido paramos el proceso con ctrl+c.

  6. Y ya tenemos nuestra Raspberry configurada para empezar a instalar cosas.

Puesta a punto de Raspberry Pi con NOOBS

Es hora de poner a funcionar mi nueva a flamante Raspberry. Como el tutorial que hizo Alex se ha quedado un poco anticuado (El mundo RPi va muy rápido) y yo siempre que puedo trabajo en GNU/Linux, voy a contar aquí como hacer estas cosas en Ubuntu y “a la última”. La ventaja que tenemos es que con NOOBS es aún más sencillo de instalar el sistema operativo y nos permite elegir cualquiera de los SO oficiales de Raspberry.

  1. Lo primero que tenemos que hacer una vez tenemos nuestra tarjeta SD de al menos 4Gb, normalmente será una SDHC, es formatearla en FAT. Podemos hacer esto de una forma sencilla con GParted, poner en el lector, formatear y listo.
  2. Luego nos bajamos NOOBS, os recomiendo en Torrent por aprovechar la potencia del P2P. Una vez descargado lo descomprimimos y copiamos a la SD.
  3. Metemos la SD en la Raspberry y conectamos la alimentación, un teclado, un ratón y al televisor o pantalla que queramos usar.
  4. Por defecto se inicia en modo HDMI, si como yo usamos una entrada de Video Compuesto apretamos la tecla 3 del teclado para el modo PAL o la 4 para el modo NTSC. Para el modo HDMI seguro tenemos la tecla 2 y para volver a HDMI por defecto la 1.
  5. Una vez cargado tendremos una pantalla que nos permitirá elegir el sistema operativo que queremos instalar, como esta:

    Menú principal para elegir SO.

  6. Elegimos Raspbian que es el sistema operativo recomendado, la modificación de Debian para RPi, podríamos por ejemplo elegir RaspBMC y tendríamos de una forma muy sencilla instalado el SO y el gestor de media center XBMC.
  7. Tarda un rato en instalarse el sistema operativo y cuando termine nos pedirá reiniciar, le damos a aceptar y ya tendremos nuestro Raspbian funcionando.
  8. Automáticamente nos saldrá la ventana de configuración, ajustamos los parámetros que queramos, sobre todo activar SSH es fundamental.
  9. Llegado a este punto ya podremos acceder a la Raspberry Pi sin necesidad de conectarla a la tele, el ratón y todo eso.

En el próximo post veremos como acceder desde SSH en Linux.


¡Ya me ha llegado!

Foto de mi Raspberry Pi

Raspberry Pi desembalada y montada en su caja.


Enlaces Interesantes XIII

La generación de consolas low cost con Android en busca de su público: Como dice el artículo es posible fabricarse una consola de este tipo casera, con un móvil, con una Raspberry Pi… el problema viene en la interfaz, si no encontramos una interfaz controlable con un mando de consola y que sea lo suficientemente sencilla vamos a tener una experiencia muy frustrante.

Cube Slam, el viejo Pong aderezado con WebRTC y mucho más: Parece que por ahora sólo funciona en chrome la parte social con WebRTC, una lástima, no tengo chrome instalado y no lo he podido probar y con chromium no funciona, pero eso sí, como Pong de toda la vida está muy bien.

Torrent-Enable any RSS Feed With a Couple of Clicks: Debería promocionarse más la combinación Torrent+RSS, para webseries sería un formato genial y con una aplicación para televisores conectados ya…sentarse y disfrutar.

Cobrarán peajes por el uso de la red eléctrica a quienes opten por el autoconsumo con balance neto: Para terminar de liar el panorama eléctrico ahora se va a cobrar peajes, como excusa ponen el pago de primas a grandes fotovoltaicas que encarecen la energía, como tantas veces el dinero de los pequeños va a parar a los grandes.

Aras, Advanced PLM Software: No era lo que buscaba, pero es un PLM open source a tener en cuenta. ¿La pega? Que sólo funciona sobre windows server y con .NET.

El miedo a PRISM hace crecer (mucho) el tráfico de DuckDuckGo: Buena noticia para el buscador del pato.

1, 2,3…1000 bibliotecas personales para tener la gran biblioteca: Bibliotecas personales federadas, interesante.

Open Design Engine: Plataforma para diseños de hardware libre.

El cacharro de la semana:

lamp_for_nerds

A lamp for nerds: Una lámpara LED de hardware libre, lo veo interesante para acuarios, se puede comunicar con un controlador u otras lámparas mediante protocolo serie yo preferiría DALI que es lo estándar, a ver si sale algún fork.


Comunicaciones en microcontroladores: Un ejemplo

Esto es un pequeño apunte mientras estudio un tema de comunicaciones en microcontroladores.

Pila del port Contiki OS a Arduino

Pila de Arduino IPv6

Las pilas de protocolos de comunicaciones en microcontroladores presentan algunos problemas en su implementación. Como sabéis la comunicación dentro de cualquier red se consigue utilizando una pila de protocolos que controlan diferentes ámbitos de la comunicación, en la parte de microcontroladores estas capas de la pila de protocolos se reducen a 3 o como mucho a 4, de abajo a arriba: nivel físico, de enlace, de red y de aplicación. Por encima del nivel de aplicación se encuentra el programa de usuario y por debajo del nivel físico el cable o el aire por donde se transmiten las ondas.

Lo problemática de programar este tipo de pilas viene cuando queremos comunicar información de una capa a otra. Si utilizamos C para programar (lo más común) tendremos que separar cada capa en un módulo y llamar de uno a otro mediante funciones declaradas en los archivos de cabecera. Pero cuando el tránsito de información se produce de abajo a arriba en la pila ocurre un problema, la recepción se produce de forma asíncrona mediante una interrupción, por eso la forma más eficiente de realizar esto es usando un flag que se active cuando se reciba un mensaje y una función callback, para realizar el procesamiento.

Una función callback es una función que se llama de arriba hacia abajo, pero en realidad está enviando información de abajo a arriba.

Para que me quede más claro el tema he buscado un ejemplo y he aprovechado que quería mirar el port de Contiki OS para Arduino. Este port utiliza como capa física los famosos chips XBee, baratos y fáciles de utilizar.

Contiki no sólo provee de una capa de red IPv6 si no que además proporciona la capa de aplicación CoAP. Me gustaría saber si se puede portar esto a Pinoccio, abaratando aún más la plataforma.

Así que me he puesto manos a la obra, me he bajado el código:
git clone https://github.com/telecombretagne/Arduino-IPv6Stack

Después de rebuscar un poco entre las librerías he encontrado lo que buscaba, en el fichero simple_udp.c:

if(c != NULL) {

        /* If we were called because of incoming data, we should call
           the reception callback. */
        if(uip_newdata()) {
          /* Copy the data from the uIP data buffer into our own
             buffer to avoid the uIP buffer being messed with by the
             callee. */
          memcpy(databuffer, uip_appdata, uip_datalen());

          /* Call the client process. We use the PROCESS_CONTEXT
             mechanism to temporarily switch process context to the
             client process. */
          if(c->receive_callback != NULL) {
            c->receive_callback(c,
                                &(UIP_IP_BUF->srcipaddr),
                                UIP_HTONS(UIP_IP_BUF->srcport),
                                &(UIP_IP_BUF->destipaddr),
                                UIP_HTONS(UIP_IP_BUF->destport),
                                databuffer, uip_datalen());
          }
        }
      }

 

Como podéis ver se utiliza la función uip_newdata() como el flag del que he hablado antes, además se puede observar cómo si existe una función callback en ‘c’ (la estructura que se utiliza para la comunicación) ésta se ejecuta pasándole los datos de la misma conexión y los que necesite para el nivel inferior, que es el nivel IP.

Como hemos podido ver, en las implementaciones de sistemas de comunicaciones complejos como este caso se utilizan estos métodos para solucionar los problemas de implementación que pueden surgir.


Enlaces Interesantes XI

En la última recopilación de enlaces se me olvidó comentar algunas cosas, ahí van, además de los nuevos enlaces:

Impresión 3D y energía solar: Me encanta poder participar en conversaciones tan interesantes como ésta.

PirateBox DIY – OpenWrt: Una forma barata de montarse una PirateBox, ¿que qué es una PirateBox? Una caja para compartir archivos y crear redes distribuidas.

Bitcoin: world’s fastest growing currency migrates off the internet – video: Aún que sí es cierto que el universalismo ha sido el gran error de diseño de Bitcoin, aún hay una esperanza para esta moneda a mi modo de ver, si distintas comunidades empiezan a utilizarla en su día a día poco a poco la moneda se estabilizará. El vídeo de Kreuzberg muestra como esto es posible, lo que me pregunto es como fijarán los precios. Lo que menos me gusta es que se utilicen para eso códigos QR, podría empezar a usarse NFC para esto que ya empieza a verse en los nuevos móviles.

Dos años después del 15-M: Hablando de universalismo, una buena explicación sobre éxito y caída del 15M, como su propio universalismo inmovilizó paradójicamente el “movimiento”.

El cacharro de la semana:
SODA: Simple, Open Data Acquisition: Un sencillo datalogger con Arduino.

He comentado en:
La Conjetura Recuenco – Wilkins (En construcción).
Servidor web con arduino.
¿Aprende P2P? ¿Ap2prende? ¿Cursus Honorem? ¿La Web Armada Vs El Virus Zombi?


Enlaces Interesantes X

Con el traslado y todo esto no he tenido mucho tiempo de escribir, pero aún así he seguido leyendo y guardando enlaces en favoritos para luego compartirlos en el blog por lo que esta entrada puede ser más larga de lo habitual, tengo muchos temas de los que hablar, ahí va:

Diez proyectos que me gustaría hacer con la Raspberry Pi: De los cuales sobretodo me atraen el Ambilight y el despertador inteligente aún que le veo excesivo ponerle una RaspPi para eso, se pueden coger ideas.

Internet industrial: Artículo muy recomendable sobre lo que se le viene encima al mundo industrial.

#EUSKADI_P2P, el lugar más copiado del mundo: Continuando con lo industrial, una interesante reflexión sobre el modo de producción P2P.

La UE prohíbe la venta y reproducción de semillas autóctonas y tradicionales: Esta noticia es realmente alarmante, la UE ya estaba suficiente capturada por las grandes compañías alimentarias ahora además se quieren cepillar al pequeño agricultor que busca variedades locales. Yo ya me he puesto en pié de guerra, en un ejercicio de activismo de mercado pienso participar en poner en marcha una pequeña tienda de semillas, el permiso a empresas con menos de 10 empleados jugará a nuestro favor, ya conocemos los problemas de la economía de escala. De todas formas siempre nos quedará el bosque.

Pinoccio – A Complete Ecosystem for Building the Internet of Things: Cada poco tiempo salen nuevos cacharros que toman como referente a Arduino, como por ejemplo este Arduino con un ARM, pero este Pinoccio me parece muy interesante por que lleva una radio 2.4 GHz perfecta para el protocolo IEEE 802.15.4 y se programa igual que Arduino.

 Por qué los núcleos y su frecuencia no lo son todo para un procesador: Una explicación muy clara.

AMF: A Better File Format for 3D Printing?: Con la cantidad de opciones que proveen las nuevas impresoras 3D el formato STL empieza a quedarse corto, aquí va una alternativa.


IFTTT como controlador

Uno deifttt_logo los servicios que más le está siendo útil a los usuarios intensivos de la nube es IFTTT, este no es mi caso pero me ha llamado la atención su funcionamiento y útil que puede llegar a ser en ciertos contextos. La aplicación no puede ser más sencilla, se eligen una serie de eventos, que ahí llama triggers y una serie de acciones a reproducir cuando se produzcan esos triggers. Parece una tontería pero con este mecanismo tan sencillo podemos automatizar una gran cantidad de tareas en la nube. ¿Y si como yo no somos unos fans de la nube? Pues lo tenemos crudo con IFTTT porque solamente acepta los servicios en la nube más conocidos. Pero no os preocupéis podemos hacer uso de una alternativa libre, como Whenbot, no me preguntéis como funciona porque estoy bastante verde en el tema de las APIs, pero por lo visto corre sobre Heroku, un servicio que da acceso a APIs de distintos servicios de una forma sencilla. De todas formas pienso que se podría personalizar para instalarlo en tu propio servidor y con las APIs que tu decidas.

Todo esto me lleva a pensar que se pueden crear controladores muy básicos con estructuras de este tipo, pongamos un ejemplo:

Tenemos un sensor de temperatura con acceso a nuestra red y una estufa eléctrica sin control ninguno. Podemos con una Raspberri Pi hacer un pequeño programa que encienda o apague la estufa, luego con el Whenbot programarlo para que cuando la temperatura leída del sensor baje de cierto umbral ejecute el programa.

De esta forma tenemos el tipo de control más básico, un todo o nada, que es un tipo de control muy intuitivo que cualquier persona sin conocimientos de control podría programar. Los problemas que presenta se encuentran en las zonas límite, pueden aparecer oscilaciones molestas si la temperatura se encuentra todo el rato cerca de la temperatura umbral. Pero este es un primer paso, todo se puede ampliar.

Como podríamos conectar a la red distintos dispositivos y hacer que se comunicaran entre ellos obtendríamos una red de control distribuido muy configurable a nuestros gustos, por ejemplo en el campo de la domótica, pero también en muchos otros.

Continuando con este campo podríamos instalar contadores digitales, enchufes inteligentes, servidores, media centers y toda una infraestructura de red de hogar que se controlaría ella sola en una mezcla entre vivienda digital y automatizada que podríamos supervisar desde cualquier lugar del mundo gracias a las tecnologías Web.


Enlaces Interesantes IX

How to make a weather station with Arduino: Una shield hardware libre para Arduino que lo convierte en una estación meteorológica sencilla, incluye medidas de presión, temperatura y humedad y además un reloj en tiempo real para saber en que momento se toman las medidas. A partir de ahí ya se puede personalizar el diseño según nuestras preferencias.

La Semana Santa demuestra que al sistema eléctrico le sobra energía nuclear: La gestión de la energía en España es insostenible ¡hay que cambiar de modelo ya!

¿Lector de RSS para libro electrónico?: Como ya comenté, para mí la solución viene por sincronizar varios lectores RSS nativos, pudiendo utilizar uno para e-reader que muestre las noticias más tipo periódico. Mientras esto llega supongo que se puede hacer algo provisional con tt-rss, que nos permite obtener un feed RSS de cualquier lista y la funcionalidad de Calibre de leer de un RSS, aunque creo que ya ha comentado alguien esta posibilidad.

Graph.tk: Más sencillo imposible, metes la ecuación y se muestra a su representación gráfica, muy útil si estás estudiando matemáticas, aunque para un uso más profesional echo de menos que se pueda importar y exportar desde mathML o/y LaTeX. Pero lo mejor de todo es que: ¡Es Open Source!

Kitchen Garden Aid: Software Libre para planificar tu huerto.


Por qué elegí automática y no electrónica

lazo_controlHace algo menos de dos años tuve que decidir en la carrera si me iba por la rama de electrónica o la de automática y control, aunque yo venía de estudiar más electrónica y sobre todo informática industrial decidí entrar de lleno en el control y cada día estoy más convencido de que fue una buena elección. Sin querer dejar en mal lugar el diseño electrónico tengo que decir que cada vez le veo menos futuro, hoy en día con un Arduino y unas pocas shields puedes hacer un prototipo que automatice casi cualquier tarea que sea necesaria, si necesitamos más potencia de cálculo podemos irnos a una Raspberry Pi o similares, no estoy diciendo ninguna locura, es algo que veo en mi día a día en la universidad, ya no se hace diseño electrónico, simplemente se ensamblan tarjetas y se ponen a programar. Es cierto que hacen falta unos conocimientos básicos de electrónica pero no es necesario meterse en los efectos de la mecánica cuántica en la puerta de los transistores miniaturizados -por poner un ejemplo de algo que he oído por ahí-. La conclusión de todo esto es si se está devaluando la electrónica en favor de la programación, algo que resalta el siguiente artículo de Neoteo, Arduino, Raspberry Pi y una historia de cajas negras.

Lo cierto es que la electrónica es cada día más una commodity, algo que se produce en un país asiático y nosotros simplemente los ponemos a funcionar. Por lo tanto para aportar valor a la cadena ya no podemos dedicarnos símplemente a hacer más Arduinos o mas RaspPis, hay que aportar conocimiento y aprovecho esto para ligar esta reflexión con la de David en Las Indias, la conclusión es la misma, más conocimiento aplicado, dando la importancia a las personas antes que a los procesos y las herramientas, como dice el Manifiesto ágil.

Por todo esto es por lo que hoy estoy contento por haber tomado esa opción, estudiar control me aporta conocimientos que ninguna máquina puede replicar y cuando las máquinas consigan hacerse con estos procesos ya estaremos por delante buscando nuevos retos con la ética hacker mostrándonos el camino.


Enlaces Interesantes VI

La wifi gratis busca el tesoro: Mucho se habla en la agenda nacional sobre Gowex, como un éxito del Wifi gratuito, pero sin embargo no se habla de la red libre, Guifi.net, en este momento con casi 20.000 nodos,que también crea negocio en todo su ecosistema, no solo en una empresa. Por lo visto las redes ciudadanas no interesa que se conozcan.

¿De quién es esta cerveza?: Al igual que en los alimentos, el mercado de la cerveza también está dominado por unas pocas empresas, aquí explica con todo detalle cuales.

OpenWind: Un software de código abierto para diseño y emplazamiento de aerogeneradores, especificas el tipo de turbina y el lugar donde deseas levantarla y te da datos de la energía que producirá.

Qué pinta una Roomba en un Datacenter?: Pues pinta un mapa de la temperaturas, la Roomba va haciendo su recorrido y construyendo un mapa mediante técnicas de SLAM al que se le asignan las medidas de temperatura. De esta forma consiguen un mapa de temperaturas para ahorrar energía en un Datacenter, pero a menor escala se podría hacer algo parecido para otros edificios, como nuestras viviendas, y conseguir un mayor conocimiento del edificio, por supuesto para auditoría energética sería una herramienta interesante.

La PC desaparece ¿es en realidad todo una mentira?: Lo cierto es que cada vez hay más PCs circulando por ahí y conforman toda una red personal, pero no nos dejemos llevar por la corriente, las tablets están muy bien para el ocio, pero si queremos trabajar nada como una buena pantalla y un teclado bien grande.

Open Smart Cities I: La Internet de las Cosas Abierta: El primer paso para conseguir lo que se conoce como Smart City es sensorizar la ciudad, para ello tenemos diversas plataformas, sistemas operativos para ellas, librerías… De algunas de ellas ya he hablado, pero aquí tenéis una recopilación con muchísimas más.

Open Smart Cities II: Open Big Data: La continuación del articulo anterior, esta vez una buena recopilación de herramientas libres para Big Data.

Os dejo con un TED explicando como surgió y que pretende el proyecto OSE, subtitulada en castellano.
[youtube=http://www.youtube.com/watch?v=Z3XmkLTEqTs&feature=player_embedded]


Electrónica copyleft

Esta mañana nada más levantarme me he encontrado con esta fantástica editorial de Elektor.POST en mi correo, esta son la clase de cosas que me animan a seguir promoviendo el hardware libre en este blog:

Bits Encadenados

Como ingenieros y apasionados de la tecnología, generalmente todos sabemos el precio que ha de pagarse. El éxito suele tener un ligero regusto a fracaso, algunas veces no tan ligero, pero merece la pena. Se hace difícil fijar un precio a nuestro trabajo, pero al final todos nos vemos obligados a hacerlo para poder ganarnos la vida.
La cuestión sobre la cultura libre siempre es la misma: ¿y los gastos reales de cualquier proyecto artístico o científico? Supongo que ahí estamos todos de acuerdo. Desde luego que hay límites, pero una cosa es cierta: por cada pequeño aporte que damos, la comunidad nos devuelve algo mucho mayor.
En la electrónica, la idea de copyleft ya está lo suficientemente extendida: ¿acaso preguntaríais a Max Wien si podéis utilizar “su” puente en vuestro circuito? Hmmm… por no decir que lo primero que hacemos cuando tenemos un problema es pedir ayuda a un colega. Este “colega” también podría estar en Internet, y no necesariamente ser una sola persona. Y es que cuando algo es accesible a todo el mundo, y está apoyado por una comunidad, el FRACASO puede convertirse en fracaso, y el éxito, en ÉXITO.
Quizá los abogados sean distintos a los ingenieros. Pero aunque las leyes se empeñen en restringir el acceso a la cultura, nunca detendrán la curiosidad por aprender.

En nombre del Equipo de Elektor
Jaime González-Arintero Berciano

Diseño modular en Arduino

Una buena plataforma para comenzar con diseño electrónico modular es Arduino, aunque su IDE sea mejorable en este sentido no es difícil empezar a trabajar con módulos y librerías en nuestros proyectos, vamos a empezar por usar librerías creadas por terceras personas, lo que se suele llamar Contribuido:

En primer lugar vamos a nuestro sketchbook de Arduino, una carpeta que en Ubuntu suele estar en tu home, si no está aún creada, hacemos una nueva carpeta que se llame libraries, en esta carpeta colocaremos los directorios de cada librería.

Una vez pongamos las librerías que queramos ahí ya podremos acceder a ellas desde el IDE de Arduino, en él veremos algo como esto:

Libreria Contribuido
Ya tenemos por donde empezar, es muy útil en diseño electrónico utilizar librerías de componentes electrónicos que se comunican con el procesador, estas librerías proveen de un acceso sencillo a los componentes, consiguiendo de esta forma una programación orientada a componentes.

Lo siguiente que vamos a hacer es dividir nuestro programa en módulos, aunque Arduino utiliza su propio lenguaje de programación podemos usarlo como si fuera C o C++, por esto podemos utilizar archivos “.cpp” para añadir código y archivos “.h” para enlazar este código con el archivo principal que será el “.ino”.

Vamos a la carpeta de nuestro proyecto donde podremos ver nuestro archivo principal “.ino”, vamos a crear un nuevo módulo que vamos a llamar “datos”, por lo tanto creamos dos archivos, “datos.cpp” y “datos.h”, en el primero pondremos el código las funciones que vamos a crear y en el segundo las cabeceras de las funciones creadas anteriormente, sólo si vamos a hacer uso de ellas en el exterior del módulo.
Nos tenemos que asegurar que el archivo de cabeceras no se incluya en el proyecto más de una vez, para eso usamos:
#ifndef datos_h
#define datos_h
Al principio del archivo “.h” y:
#endif
Al final.

Por ultimo vamos a nuestro programa principal, si reiniciamos Arduino IDE ya nos abrirá los archivos que hemos creado en diferentes pestañas. Ahora los incluimos en nuestro programa principal usando:

#include "datos.h"
Y ya podremos acceder a los módulos que hemos creado.
Un consejo, si utilizáis librerías dentro de módulos y no están muy bien hechas os dará error, para solucionarlo lo que hago es incluirlas también en el programa principal, pero tenéis que aseguraros de que las librerías tienen un #ifndef como se ha explicado anteriormente.
Para más información sobre como hacer una librería para Arduino visitad el siguiente enlace:
Library Tutorial
Esto es todo por hoy, espero continuar con la serie sobre Arduino, tengo muchas cosas que publicar.


Enlaces Interesantes IV

Lima I/O. La ciudad habla: Se trata de un sensor ambiental especialmente diseñado para grandes ciudades que pueden tener distintos microclimas dentro de la misma. Diseñado con Arduino y es hardware libre, por supuesto.

Las patentes de software podrían ser una realidad con la llegada de la patente única europea: Que además serán mas baratas. Un gran peligro para el software libre.

¿Existen las Smart Cities?: Las Smart Cities desde un punto de vista crítico, este es el mejor blog sobre Smart Cities que conozco. Aunque últimamente se ha escrito mucho sobre el tema la gran mayoría son artículos publicitarios o zombis, sin duda la única forma de hacer Smart City es como expone este blog, de una forma crítica, abierta y cogiendo el toro por los cuernos.

Identificar fuente o tipografía: Una guía sobre tipografías que nos permitirá saber que fuente ha utilizado alguien en su texto. Perfecto para copiar estilos que nos gusten.

[bandcamp album=2408782603  bgcol=FFFFFF linkcol=4285BB size=venti]

Para despedirme dejo el nuevo disco de Orxata Sound System, aunque musicalmente no es su mejor disco se está notando la madurez de sus letras y la construcción de una ideología más hacker por encima de la izquierda tradicional que ya conocíamos.


Todos usamos cookies, acéptalo ya. más información

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close