• Arduino,  Hardware

    Haciendo inteligente mi lavadora – Parte 5

    << Continuación de la parte 4

    Llegó la hora de la verdad. Es hora de conectar las nuevas tripas a mi lavadora y ver si todo funciona como esperábamos. O bueno… Casi… Acabo de recordar que cuando hice las modificaciones preparatorias a mi lavadora (parte 1), no preparé el botón de inicio de lavado, que será el que puentee nuestro relé para simular que se ha pulsado el botón y con ello, mandará la orden de iniciar el lavado a la lavadora.

    La modificación debería ser sencilla. Soldar un par de cables a ambos terminales del botón de inicio de lavado. Veamos cómo termina siendo 🙂

    Primero, volvemos a abrir la parte superior de la lavadora, y buscamos cómo quitar los mandos frontales. En mi caso, con quitar cuatro tornillos, unas pestañas de plástico y desenchufar todos los cables, y ya tenía el frontal entero en mis manos.

    Manchas de dedos de fábrica incluidas en el precio
  • Arduino

    Haciendo inteligente mi lavadora – Parte 4

    << Continuación de la parte 3

    Hora de tocar la parte de software de este proyecto. Si recordamos, el requerimiento es simple: Hacer que cuando la lavadora termine el lavado (desbloquee la puerta), se lance una notificación a mi teléfono móvil.

    Para enviar notificaciones, podría elegir una de muchas rutas posibles: por e-mail, por alguno de los servicios que existen de comunicaciones, a través de una app que me diseñe yo mismo… Para ahorrar tiempo, decidí usar uno de los servicios que existen para notificaciones simples: pushbullet.

    Pushbullet te permite, entre muchas otras opciones, enviar pequeñas notificaciones de texto a todos los dispositivos que tengas enlazados. Podría entonces, desde mi microcontrolador ESP8266, enviar una notificación y recibirla en el móvil. Pero decidí ir un poco más lejos: Tengo un mini-ordenador como centro domótico en mi casa: un orange PI PC con OpenHAB, que me permite controlar centralizadamente mis enchufes inteligentes. ¿Y si conecto mi lavadora al sistema y es mi centro domótico el encargado de enviar dichas notificaciones? Así, también podré controlar el estado de la lavadora y enviar órdenes de puesta en marcha de forma remota.

    Empecemos con la forma de comunicación que va a tener el ESP-01 con mi centro domótico. En este caso, decidí elegir MQTT, por lo simple que es: Defines canales (topics) de comunicación, el dispositivo que vaya a escuchar esos canales se suscribe a ellos, y el dispositivo que vaya a enviar publica los mensajes a dicho topic. Para el uso de MQTT con los microcontroladores ESP8266, existe la librería PubSubClient, que nos facilitará el envío de mensajes entre un dispositivo y otro.

  • Arduino,  Hardware

    Haciendo inteligente mi aire acondicionado – Parte 1

    ¿Qué hay mejor que tener en manos un proyecto de mejora de un aparato electrónico (véase Haciendo Inteligente mi lavadora)? ¡Tener en mano dos proyectos de mejora de aparatos electrónicos!

    Tengo un aire acondicionado en mi habitación marca Daitsu. Es un modelo antiguo, el DSG-07HRN2. Mis planes son: quiero manejarlo desde mi móvil, y poder programarlo según X criterios (temperatura, época del año, si voy a estar o no en casa…). La mayoría de estas funciones se pueden programar en OpenHAB, pero por supuesto, primero deberé conectar mi aire acondicionado a mi servidor OpenHAB, cosa que, sin modificaciones, no es posible.

    Podría usar algún aparatito mágico (y caro) para manejar aparatos de infrarrojos desde el móvil (sé de su existencia), pero… ¿donde está la diversión? :P. Mi idea es meter otro microcontrolador ESP-01 en mi aire, que inyecte comandos en la placa receptora de infrarrojos, simulando que se ha recibido una señal infrarroja del mando. Y estoy seguro que va a ser una aventura interesante 🙂

    Primero, para investigar el protocolo con el que el mando se comunica con la unidad split, he usado el sketch de ejemplo IRrecvDumpV2 de la librería Arduino-IRRemote, creada por Ken Shirriff y con varios contribuidores.

    Cuando probé el mando de mi aire con mi arduino MEGA, me quedé extrañado de que decía que usaba protocolo de SAMSUNG. Curioso.

    ¿Samsung? ¿Daitsu? ¿Usan el mismo protocolo? ¿O es un error del sketch? ¿Lo averiguaremos?
  • Arduino,  Hardware

    Haciendo inteligente mi lavadora – Parte 3

    << Continuación de la parte 2

    Empecemos con el montaje de la placa que controlará el estado de lavado de la lavadora. Para que sea más sencillo de entender, lo separaremos en cuatro partes: El microcontrolador, su alimentación (ya que funciona a 3,3 voltios, en lugar de los 5 del adaptador de corriente que estoy usando), la detección de bloqueo de puerta y la actuación sobre el botón de inicio de lavado.

    El ESP-01 necesita alimentación a 3,3 voltios, como decía arriba, masa por supuesto, y para que funcione correctamente, necesita tener a positivo (mediante una resistencia, por ejemplo, de 10K) los pines GPIO0 y GPIO2. Después de eso nos queda un pin de salida (hacia el relé actuador del botón de inicio de lavado) y un pin de entrada, para la detección de bloqueo.

    La alimentación de 3,3 voltios la podemos conseguir, por ejemplo, de un LM317T, el famosísimo regulador de voltaje lineal que, a través de dos resistencias, nos permite obtener un voltaje específico. A través de una de las muchas calculadoras online, se puede calcular qué resistencias necesitas. En mi caso, utilicé ésta.

  • Arduino,  Hardware

    Haciendo inteligente mi lavadora – Parte 2

    << Continuación de la parte 1

    Tripas, hora de hablar de tripas. Tripas electrónicas, por supuesto…

    ¿Qué tipo de controlador puedo usar para este proyecto?. El primer requisito es que tenga WiFi, ya que será la forma en la que enviará las notificaciones a mi teléfono. Sobre cantidad de pines de entrada/salida (GPIO), con dos me vale (uno para detectar el bloqueo de puerta y otro para iniciar remotamente el lavado). Podría usar uno de los clásicos, Arduino UNO, con una placa (shield) WiFi:

    Es conocido por la mayoría de makers. Soporta miles de librerías con las que hacer vilguerías, pero… Tiene como 20 pines entre digitales y analógicos, y aunque la placa WiFi use algunos de ellos, sigue siendo demasiado para mi proyecto. Con dos pines me sería suficiente.

  • Arduino,  Hardware

    Haciendo inteligente mi lavadora – Parte 1

    Me gustan los retos, y también me gustan mucho los cacharros inteligentes, aquello que solemos llamar «gadgets».

    ¿Qué echo de menos en una lavadora? Que me avise cuando termine de lavar mi ropa. Sí, algunos modelos hacen sonar una pegadiza musiquita para dejarte claro que han terminado, aunque la mía ni eso… Aunque tuviese una de esas lavadoras cantarinas… ¿Y si estoy escuchando música con auriculares? Pues que tendría que estar pendiente, e ir revisando cada poco. También, los lavados son de duración algo flexible (no existen lavados de X minutos exactamente, ya que según la ropa que metas a lavar, será más sencillo o más dificil hacer el centrifutado). Siempre uso el programa de lavado de 60 minutos, a menos que la ropa esté de verdad muy sucia, pero el lavado en mi caso en verdad es de 63 minutos un día, de 75 el siguiente…

    La víctima

    Harto de esto, me he lanzado a abrir mi lavadora y ingeniarme alguna forma de detectar cuándo termina, para así lanzarme una notificación al móvil. Ya si de paso hago que pueda activar el lavado cuando quiera de forma remota, mejor que mejor (mi pobre lavadora low-cost no tiene siquiera función de aplazar el inicio de lavado en X horas…).

  • Django,  HTML,  Python

    Django – Error con CreateView, el formulario no hace nada, no guarda datos en base de datos

    ¡Albricias! Una nueva publicación…

    Sí, vuelvo a escribir en éste, mi abandonado blog, para contaros cómo solucioné un error con django que me volvió loco durante un par de días…

    Pero primero, ¿django? ¿qué es django?. Bueno, no voy a entrar en mucho detalle, pero os diré que es un framework de desarrollo web que me ha gustado bastante. Se consiguen webs completas con gran funcionalidad con muy poco esfuerzo. Está basado en python, cosa que ya de por sí es un plus, ya que recomiendo a todo el mundo aprender este lenguaje de programación que está arrasando en la lista de los lenguajes de programación favoritos 🙂

    Entre las piezas de construcción de django, están las generic views, formas fáciles de crear páginas de listado, detalle, edición, creación y borrado (entre otras) de entidades en base de datos.

  • Arduino,  Hardware

    Una de hardware – Makerbuino

    Volviendo un poco a la vida (ya era hora), me gustaría contaros sobre una consola distinta a las demás. ¿Por qué distinta? ¿Tiene un procesador aún más rápido? ¿Más RAM aún? ¿Puedes jugar a Crysis en ella? No… Tiene un ATmega328 como procesador (puede que a alguno le suene a Arduino, ya que es el mismo procesador), 2KB de RAM y una pantalla… ¿Full HD? ¿4K? No… Con una resolución de 84 x 48 píxeles. Sí, exactamente, como el antiguo Nokia 3310.

    Ah, pero no os he contado lo mejor… No viene montada, y eso es exactamente lo que me impulsó a comprarla. ¿Montar tu propia consola a la que puedes luego jugar? Interesante, ¿no? 🙂

    Basada en Gamebuino, otro proyecto de consola similar (aunque éste sí viene montado, no es necesario sacar a lucir soldador y estaño…), esta consola promete divertir tanto al montarla, como al jugar e incluso al programar juegos para ella (sí. Es Arduino al fin y al cabo. Tienes toda libertad de crear juegos, aplicaciones y todo lo que se te ocurra (incluso algún que otro hack físico, ya que dispone de un par de puertos de expansión I2C.

    El proyecto en sí no es nuevo. Data de principios del año 2017, y tuvo bastante éxito en Kickstarter, su plataforma de lanzamiento. Aún siguen vendiendo copias desde su página web, por lo que aún puedes pedirte una. ¿Por qué no? 😉

  • HTML,  Javascript

    Listas ordenables y filtrables muy sencillas en HTML y Javascript con List.js

    Nos alejamos un poco de SAP para hablar de HTML y JavaScript, que también gustan 🙂

    En un proyecto web personal, me hizo falta una forma sencilla de hacer listados en los que pudiera filtrar y ordenar datos, y una simple búsqueda en San Google me dio la respuesta: List.js

    Se trata de una librería JavaScript muy muy ligera y rápida, que permite de forma muy sencilla crear listados de datos que pueden ser filtrados y ordenados.

    Como cualquier librería JavaScript, lo primero necesario es descargarla y enlazarla en nuestro documento HTML.

    <script type="text/javascript" src="/js/list.min.js"></script>

    Definiremos una caja para nuestro listado, en la que crearemos nuestra lista con etiquetas <ul>. Por ahora, no modifiquemos el class «list» de nuestro <ul>, será necesario para que funcione correctamente.

    <div id="lenguajes">
    <ul class="list">
    <li>
    <p class="puesto">Puesto: 1 <img src="/img/oro.png" alt="" /></p>
    <p class="lenguaje">Lenguaje: Java</p>
    </li>
    . . .
    </ul>
    </div>
  • SAP

    Haciendo debug (/h) en una ventana de diálogo

     Los que hayáis trabajado con SAP haciendo debug, conoceréis el comando «/h», que activa el modo debug desde cualquier transacción de SAP.

    Puede entonces que os hayáis encontrado con un programa/transacción que al que no habéis podido hacer debug porque no tiene cuadro de comandos (transacciones como la CG3Y, cuya ventana principal es una ventana de diálogo, y por tanto no tiene cuadro de comandos en la parte superior izquierda como es común).

     ¿Cómo hacemos debug en este caso? Para ello necesitamos crearnos un archivo de comando de SAP. Abrid un bloc de notas, pegad el siguiente código y guardadlo con el nombre que queráis: