Revitalizando un antiguo PC

Una de las causas de que haya estado un cierto tiempo alejado sin publicar nada es que, a 31 de diciembre, dejaba la compañía donde he trabajado los últimos 27 años. La verdad es que la dejo en unas condiciones magníficas y, en ese aspecto, no tengo ninguna queja. En la empresa me han dejado llevarme el PC corporativo que tenía, eso sí, tras el preceptivo borrado de los programas licenciados y formateo del disco duro.

El PC en cuestión es un Dell Latitude E5430 que trae un I5 a 2,60GHz y 4GB de RAM. La batería todavía aguanta aunque está empezando a pedir oxígeno. El resto supongo que es bastante estándar.

Latitude-E5420

El PC lo voy a emplear para trastear un poco incluyendo practicar pen-testing pero, para esos menesteres, prepararé un pincho USB con Kali. Para aprovecharlo como PC de sobremesa, tenía en mente instalar otro desktop Linux.

Lo primero que me voy a plantear es actualizar el hardware, en especial, ampliar la memoria RAM y cambiar el disco duro por un SSD. Este último cambio, además de proporcionar velocidad, va a permitir reducir la necesidad de potencia y alargar, si es posible, la vida de la batería.

Encontrar el disco SSD fue fácil, me acerqué al MediaMarkt y estuve mirando un poco que es lo que tenían y, al final, me compré un Toshiba OCZ TL100 de 240GB (76€). No es un prodigio de velocidad pero creo que va a cumplir con lo que se espera de él.

toshiba-ocz-tl100-240gb-box

Lo de la RAM ya es otra historia. Después de un peregrinaje por distintas tiendas he visto que nadie la tiene en stock y que el precio de los dos módulos de 8GB supera los 120€. Así que la solución será comprarla on-line en un par de meses.

Nunca he cambiado el disco duro de un portátil así que no se que es lo que me va a esperar. La idea de este post, es ir recogiendo el relato para poder volver a hacerlo. Antes de ponerme con ello, visualizo un par de videos en Youtube para, por lo menos, saber como abrir el cacharro.

SL270304

El primer paso es quitar la batería. Este parece sencillo. y no requiere ni esfuerzo ni herramientas.

SL270306

A continuación procedo a sacar la tapa posterior. Parece que está sujeta únicamente con dos tornillos. Sin ningún esfuerzo, una vez liberados los tornillos, la tapa se retira con facilidad y puedo ver tanto la memoria como el disco duro.

SL270307

El disco duro tiene una solapa de plástico transparente de la que tengo que tirar para sacarlo. Primer intento y ni pá dios. Con las gafas de leer puestas me doy cuenta que hay cuatro tornillos que retirar.

SL270310

El propio disco duro, está fijado por cuatro tornillos a una carcasa. Se trata de un Seagate Momentus Thin de 320GB.

SL270313

Una vez desembalado el SSD me pongo a montarlo en la carcasa y luego en el espacio correspondiente del portátil. La primera en la frente, lo he montado en la carcasa al revés y ahora no entra. De nuevo a desatornillarlo de la carcasa y darle la vuelta. Pasadas estas tribulaciones, consigo montar el disco duro, montar la tapa trasera y verificar que la BIOS reconoce el nuevo disco duro.

SL270315

Listo el equipo para la instalación del software. Voy a instalarle un sistema operativo Linux, en concreto la distribución LXLE Desktop version 16.04.1 que está basada en Lubuntu.

Conectando Arduino a la WiFi (II)

En el post anterior me quedé en el conexionado del prototipo de lo que va a ser mi futura estación remota. Una vez completada la parte de conexión le toca el turno al software. Voy a empezar con un sketch muy sencillo que adapté mínimamemte de uno obtenido de Internet. La idea es ir probando los comandos AT.

El sketch es el siguiente:

image

Inicialmente establezco la velocidad de comunicación con la consola y con el módulo ESP8266 a 115200 baudios, inicializo la consola serie y el módulo. El proceso es sencillo, si hay caracteres disponibles en uno de los dispositivos (consola o módulo WiFi) los leo y los escribo en el otro módulo.

Lo primero que hago es buscar la documentación del módulo y veo que se encuentra disponible online en GitHub, en concreto aquí.

Conecto el arduino con el cable USB

Imagen3

Aparecen caracteres extraños, los comandos AT funcionan (aparentemente) pero la salida que se ve en la consola, en algunos casos, no se entiende.

Investigo un poco más y encuentro varias pistas para resolver el problema. Al parecer hay dos problemas:

  1. El módulo ESP8266 utiliza niveles de 3,3V y el Arduino los niveles lógicos que emplea son de 5V por lo que es necesario adaptarlos. Probé poniendo un potenciómetro de 10K Ohmios en la línea de transmisión de Arduino al ESP para reducir la tensión a 3,3V y, aparentemente funciona pero, lo que no se puede hacer con resistencias es aumentar la tensión de 3,3 a 5V. Al final, lo que hice fue comprar un convertidor de niveles lógicos (menos de 3€) y me quito el problema de encima.
  2. La segunda parte del problema tiene que ver con el módulo SoftwareSerial de Arduino. Al parecer, no soporta velocidades de transmisión elevadas así que lo que voy a hacer es reducir la velocidad de transferencia hasta que funcione correctamente.

Aprovechando que me acerqué a la tienda de electrónica para comprar el convertidor de niveles lógicos, me compré un Arduino Nano. El esquema del nuevo circuito es:

ESP8266-2_bb

ESP8266-2_schem

Y el aspecto que tiene en la realidad es:

image

Una vez verificadas las conexiones estoy listo para comenzar a tirar comandos AT para probar las capacidades del módulo ESP. La documentación del ESP8266 se encuentra aquí y el manual con el conjunto de comandos AT soportados se puede descargar de aquí (documento pdf).

Tras repasar someramente el manual (leerme el índice) voy a empezar a probar algunos comandos AT. Lo primero que voy a hacer es restaurar la unidad a los parámetros de fábrica (comando AT+RESTORE). El resultado es, obviamente, que deja de funcionar. Probablemente, al restaurar los parámetros de fábrica la velocidad de comunicación se resetea a 115.200 baudios. Por lo tanto, lo que hago es retocar el sketch de Arduino y volverlo a arrancar.

Aparecen caracteres raros en el display así que voy a reducir la velocidad de transmisión a 57.600 baudios. Para ello, lanzo el comando:

AT+UART_DEF=57600,8,1,0,0

Los parámetros son 57.600 baudios, 8 bits de datos, 1 bit de parada, sin paridad (0) y sin control de flujo (0). Tengo que volver a cambiar el sketch para la nueva velocidad.

image

Cargo el nuevo sketch, y una vez descargado al Nano desconecto y conecto la fuente de alimentación a la que tengo conectado el ESP. El resultado es el siguiente:

image

Lo que voy a hacer a continuación es comprobar la versión, conectarme a la WIFI doméstica y verificar que estoy conectado:

  • AT+CWMODE=1. Para establecer el modo estación.
  • AT+CWJAP=”essid”,”passwd” para conectarme a la WiFi doméstica.
  • AT+CIFSR para averiguar la dirección IP asignada.

imageimageImagen8

Al parecer estoy conectado. Voy a comprobar si hay ping tanto dentro de mi red doméstica como en Internet:

image

Parece que hay ping, vamos a ver si responde a ping …

image

Hasta ahora todo correcto, en el siguiente post seguiré avanzando en el setup de comunicaciones.

Conectando Arduino a la WiFi (I)

Una vez decidido a arrancar mi proyecto IoT y, habiendo decidido que la interconexión entre los distintos dispositivos va a implementarse sobre WiFi, necesito ver la forma de conectar los microcontroladores Arduino a la red inalámbrica.

Explorando un poco por Internet descubro que uno de los módulos WiFi más empleados y con más referencias es el ESP8266. El ESP8266 es un sistema en chip (SOC) que tiene integrada la pila de protocolos TCP/IP y que proporciona acceso a la WiFi a los controladores. Este módulo permite, al microcontrolador, externalizar toda la carga de la comunicación. Sin más investigación previa, me decidí a comprar una unidad en mi proveedor habitual (Amazon) su precio (8€ puesto en casa) me pareció adecuado y su funcionalidad, de acuerdo a lo leído, más que apropiada.

image

Lo que más me sorprendió al recibirlo fue su pequeño tamaño. Quitando el espacio dedicado a las conexiones, no es más grande que la uña del dedo pulgar:

image

Una vez recibido, me propongo conectarlo para empezar a hacer pruebas pero, leyendo más en internet, descubro que recomiendan que la unidad no se alimente desde el pin del Arduino UNO ya que, al parecer, si se hace de este modo, se producen cortes en la comunicación con el microcontrolador. Por lo tanto, decido comprar una placa para una fuente de alimentación externa. En este caso se trata de una WINGONEER MB102 3.3V/5V (6,99€ puesta en casa en Amazon).

image

Configuro los jumpers para que dé una salida de 3,3V, la conecto a una fuente de alimentación y compruebo la salida con un polímetro verificando que el voltaje de salida es adecuado. Todo está OK y tengo los materiales necesarios para montar la placa del prototipo. Aquí están en una foto de familia:

image

Voy a proceder a realizar las conexiones. El esquema de pines del módulo ESP8266 es como sigue:

image

Las conexiones a realizar son:

ESP8266 Breadboard/Arduino
GND GND
TXD Pin 3 Arduino
CH_PD 3,3V
VCC 3,3V
RXD Pin 2 Arduino

En algunos sitios recomiendan no conectar directamente TXD y RXD a los correspondientes pines de Arduino. Las salidas de Arduino son de 5V y el ESP8266 funciona a 3,3V. Inicialmente, voy a emplear dos potenciómetros de 10KOhmios para hacer de divisores de tensión. La prueba no funciona y la unidad, como funciona es conectada directamente a los pines del Arduino.

Lo que sí es importante es que todas las masas estén conectadas para tener una referencia común del voltaje.

El esquema queda como sigue:

ESP8266_bb

ESP8266_schem

Reviso las conexiones una vez más y procedo a conectar un cable USB al Arduino y la fuente de alimentación a la placa de alimentación de la placa del prototipo.

image

En el siguiente post entraré con el software.