Control de dirección con Lego

Estas últimas semanas mis hijos y yo estamos jugando bastante con Lego. Más allá de seguir los manuales para seguir montajes, lo que realmente nos (me) gusta es construir cosas por libre y darle un poco a la imaginación.

Con Lego Technic y un poco de electrónica, la verdad, es que puedes hacer cosas bastante espectaculares y la mayor complicación no dejan de ser 5 o 6 mecanismos claves, uno de ellos el control de dirección. Aquí os dejo un esquema que he encontrado, no precisamente de Lego, pero que es totalmente aplicable si queremos contruir un sistema de dirección para cualquier tipo de vehículo. El montaje es tan claro que no precisa explicación adicional.

Control de dirección para Lego Technic (foto de Clementoni Mechanics Lab Set)

En otro momento publicaré algo sobre diferenciales. ese gran mundo que por mucho que haya montado ya unos cuantos aun no acabo de entender bien como funcionan.

Actualizar PHP en Lightsail para WP

Si hace ya tiempo que instalaste tu instancia de AWS Lightsail para WordPress, es muy posible que tengas un mensaje que te taladra la cabeza cada vez que accedes al escritorio de WordPress…

Obviamente no puedes irte a dormir tranquilo con este mensaje cuando te ha salido 60 veces. Así que una noche de sábado de esas en las que has hecho una buena siesta por la tarde y los niños ya están durmiendo es ideal para realizar la actualización de PHP en mi instancia de Lightsail en AWS.

Lo primero que hay que saber es que no hay un botón de «Actualiza PHP a la versión X» en Lightsail, WordPress o Bitnami ni ningún script que te permita ejecutar la actualización desde línea de comandos.

Puestos a buscar por la web, di con una de las pocas páginas donde explican como actualizar PHP sin migrar la instancia, Upgrade PHP on Bitnami WordPress without Migration, y francamente vi claro que quizás no era el mejor camino porque tenías que lanzar un montón de scripts directamente a producción.

La solución que decidí finalmente fue bastante sencilla y consistió en hacer una copia de seguridad de la instancia actual en Lightsail, crear una nueva instancia (donde Bitnami ya instala la versión 8.2 de PHP junto con la 6.5 de WordPress), instalar el certificado SSL, cambiar la IP en el gestor de dominios e importar los datos de la copia de seguridad que habíamos creado. Por último, borré la vieja instancia después de comprobar que todo funcionaba correctamente. Al final fue una hora y poco lo que tardé en todo el proceso.

Si necesitas algo más de información con los pasos intermedios, puedes utilizar esta pequeña guía que es sencilla pero detallada: Updating PHP version on Bitnami WordPress.

Medidor de distancia laser para Lego

Pol y yo estamos construyendo un ascensor con Lego y pretendemos ponerle una botonera y que vaya al piso que pulsemos. La tarea no es tan fácil como parece porque vamos a utilizar un Arduino y necesitaremos una unidad de potencia para controlar el motor (un puente dual H L298N), la botonera y un medidor de distancia para saber donde está el ascensor en cada momento.

Podíamos haberlo hecho con sensores en cada piso pero entonces el cableado iba a ser un infierno así que pensamos que un medidor de distancia podría funcionar bien. Nos decantamos por un medidor laser porque el ángulo de salida es más estrecho y así nos evitamos los rebotes típicos en los medidores por ultrasonidos.

Al final, el escogido ha sido el VL53LXX-V2 (llamado «time-of-flight» porque calcula el tiempo de ida y vuelta del haz laser), que incorpora un diminuto emisor y receptor laser con un ángulo de salida de unos 25º. Si lo compras, vas a tener que soldar los terminales tú mismo lo cual no es mayor problema. En mi caso, me llevo un poco de tiempo porque las puntas son muy pequeñas y mi soldador un poco antiguo (25 años al menos).

Medidor Laser Time-of-Flight VL53LXX-V2

Para engancharlo a las piezas de lego, no me compliqué mucho la vida y lo pegué por la parte de los terminales y cable con celo a un doble bloque 4×4.

VL53LXX-V2 para Lego y Arduino

El esquema de conexión es sencillo:

ArduinoVL53LXX-V2
5VVIN (blanco)
GNDGND (lila)
SCLSCL (azul)
SDASDA (verde)

El siguiente paso ha sido preparar el sketch para nuestro Arduino One Rev4. En nuestro caso, para probarlo, hemos enviado la lectura de la distancia al serial monitor. Hemos utilizado la librería «Adafruit_VL53L0X» en la versión 1.2.4.

const int EchoPin = 5;
const int TriggerPin = 6;

void setup() {
  Serial.begin(9600);
  pinMode(TriggerPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}

void loop() {
  int cm = ping(TriggerPin, EchoPin);
  Serial.print("Distancia: ");
  Serial.println(cm);
  delay(1000);
}

int ping(int TriggerPin, int EchoPin) {
  long duration, distanceCm;
  
  digitalWrite(TriggerPin, LOW); 
  delayMicroseconds(4);
  digitalWrite(TriggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TriggerPin, LOW);
  
  duration = pulseIn(EchoPin, HIGH);
  
  distanceCm = duration * 10 / 292/ 2;   //convertimos la distancia a cms
  return distanceCm;
}

El funcionamiento final es impecable. Me ha sorprendido la fiabilidad y precisión que ofrece en la medida de la distancia. Pese a todo, una vez montado dentro del ascensor, pierde un poco de exactitud en la planta baja porque el ángulo se extiende mucho y debe tener algún rebote inesperado, pero nada que al final no se pueda arreglar con una tabla ajustada manualmente.

Ascensor con Lego

Pol, Blanca y yo estuvimos el fin de semana pasado construyendo un ascensor con Lego. Obviamente, la mayor complejidad estaba en el mecanismo eléctrico para mover el ascensor entre las distintas plantas y más concretamente para hacerlo bajar.

En el diseño inicial, pusimos la caja del ascensor dentro de un armazón pero la fricción por sus cuatro lados hacía que el motor lo hiciera subir pero no bajar. Para solventarlo, montamos una nueva columna de pisos donde solamente había rozamiento en dos puntos que equivalían al 5% de todo el perímetro de la caja del ascensor. Y funcionó!.

Ascensor eléctrico hecho con Lego

El siguiente pasó será añadirle los botones de los pisos y algún sistema electrónico para poder controlar que el motor se detenga en cada una de las plantas al pulsarlos. Quizás un buen momento para comenzar con un Arduino.

IA para sustituir a los políticos

Esta mañana he tenido una idea genial. ¿Porqué no hacemos una aplicación con Inteligencia Artificial para sustituir a los políticos?

La buena noticia es que tampoco es necesario que sea muy inteligente😂, de hecho con un buen excel conectado a unos cuantos cientos de KPI provinentes de los institutos nacionales de estadística y al Eurostat y un par de macros, podríamos hacer un simulador de ministros y presidentes para tomar mejores decisiones.

Al final el único input humano que necesitariamos sería un mini formulario en el que el partido ganador de las elecciones pudiese elegir los siguientes parámetros para comenzar a obtener decisiones automatizadas:

    • % de repartición de la riqueza: Que los ricos cada vez sean más ricos o crear más clase media.
  •  
    • % de sentimiento patriótico: Intentar unificar el sentimiento nacionalista y religioso de los ciudadanos o asumir la diversidad como un valor.
  •  
    • % de protección del planeta: Te da igual el planeta que dejaremos a nuestros hijos o intentar aspirar a un futuro mejor.

Y ya está, todo el resto de parámetros que puedas pensar, podrían ser calculados a partir de estos tres iniciales como por ejemplo el nivel de presión fiscal por nivel de ingresos o el número y tamaño de banderas del país o región que vas a comprar y ubicar en sus plazas.

Alinear las puertas de Ikea

Me entusiasma Ikea. No tanto su extenso catálogo o el infierno de sus tiendas o el espacio de comidas sino la forma en que innovan en cada proceso y sobretodo la forma en que intentan mejorar el montaje de sus muebles para que cada vez sea más fácil y no haga falta ser ingenierio de la NASA.

La última sorpresa ha sido en la línea de armarios Platsa en la que no necesitas ninguna herramienta para montarlos: la unión de los cuatro lados del armario se realiza a presión y la madera posterior se une a la estructura con unas grapas de plástico (realmente no se como llamarlas porque son como una especie de taco al que después le pones una «chincheta» alargada también de plástico para fijarlo) que puedes poner con la mano. Muy brillante.

Las puertas ya son otra cosa, y aunque siguen estando a años luz de calidad de otras marcas de muebles supuestamente mejores, la tecnología asociada a su ajuste no ha evolucionado mucho en algunos años y sigue siendo uno de mis talones de aquiles cuando monto muebles.

Además, las instrucciones de ajuste vienen impresas en la bolsa de plástico que contiene cada una de las bisagras por lo que además de ser complicado leerlas a veces (sobre todo si has abierto la bolsa con los dientes y te has llevado un trozo del dibujo), si las quieres guardar junto con las instrucciones del resto del armario no es muy cómodo.

Alineamiento de las puertas de Ikea

Así que para que no se me pierdan, hoy he escaneado la bolsa para tener las instrucciones a mano para realinear las puertas a medida que el tiempo las vaya moviendo.

Mi nueva báscula Garmin

Finalmente decidí cambiarme mi vieja báscula Fitbit Aria 2 porque ya hace años que no utilizo dispositivos Fitbit y porque se me hacía casi imprescindible poder conectar mi peso de forma automática a mi Garmin Connect.

El modelo elegido, como no podía ser de otra forma por razones obvias, ha sido la Garmin Index S2 que me salió por poco más de 100€ en el Black Friday. Dejo por aquí el sencillo manual de usuario por si hay algún interesado.

Manual de usuario de la báscula Garmin Index S2

La báscula es una maravilla y se sincroniza automáticamente en el Garmin Connect a través de la red wifi. Las mediciones que ofrece son peso, índice de masa corporal, grasa corporal, masa muscular esquelética, masa ósea y agua corporal (o nivel de hidratación). Además el visor permite diferentes perfiles y el que viene por defecto da información de la temperatura exterior actual y de la previsión meteorológica para el día.

No creo que haya el el mercado nada similar con estas prestaciones y que además se conecte nativamente a Connect.

Como renovar un certificado de Let’s Encrypt de Bitnami en una instancia de Lightsail

La verdad es que no se si lo he hecho bien o no, pero como mínimo se ha renovado el certificado SSL en mi instancia de Lightsail en AWS en la que tenía previamente instalado un certificado utilizando bncert-tool.

Los pasos a seguir son bastante sencillos y basta con conectarse a la cónsola de la instancia y ejecutar desde la línea de comandos de linux las siguientes tres instrucciones:

sudo /opt/bitnami/ctlscript.sh stop

sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90

sudo /opt/bitnami/ctlscript.sh start

Se debe sustituir EMAIL-ADDRESS con el email de notificación que se quiere utilizar y DOMAIN con el dominio a securizar. En mi caso solamente poniendo «dominio.com» me ha actualizado también «www.dominio.com».