pihole monitor

Imprime en 3D tu propio monitor de red con Wemos D1 Mini y Pi-Hole

Todos y cada uno de nosotros sufrimos constantemente la inmensa cantidad de anuncios que inunda nuestra red de Internet. Incluso algunos de estos anuncios utilizan Malware para redireccionar a otras dudosas direcciones donde poder comprometer fácilmente nuestros equipos.

¿No desearías fabricar tu monitor de red y filtrar toda esta basura antes de que llegue a cada uno de tus dispositivos? Pues bien, ahora con tu impresora 3D, una placa Wemos D1 Mini y Pi-Hole es posible. Todo gracias al usuario de Thingiverse David Payne (también conocido como Qrome).

 

 

David ha publicado el código necesario para que conecte la Wemos D1 Mini con su Raspberry Pi (Pi-Hole), y mediante WiFi monitorizar todas las estadísticas y mostrarlas en su display OLED. Continúa leyendo el artículo «Imprime en 3D tu propio monitor de red con Wemos D1 Mini y Pi-Hole» y te explicaremos cómo hacerlo muy fácilmente.

 

 

Wemos D1 Mini, ¿Que narices es eso?

WemosD1Por si aún desconoces las Wemos D1 Mini, simplemente comentarte que son unas placas diminutas de desarrollo basadas en el popular Soc ESP8266. Al igual que Arduino, permiten ampliar sus funciones conectando diferentes «Shields» como pueden ser pantallas Oled, relés, sensores de temperatura y humedad e incluso motores.

Entre sus características principales podemos destacar las siguientes:

  • Velocidad: 80MHz/160MHz
  • Flash: 4M bytes
  • Tensión de funcionamiento: 3.3V
  • Entradas y salidas digitales: 11, todos (salvo el D0) con PWM, interrupciones, e I2C
  • Entradas analógicas: 1 (Max. 3.2V)
  • Conector Micro-USB

 

Pues bien, en el proyecto de hoy lo que haremos será configurar nuestra Raspberry Pi con una aplicación denominada Pi-Hole. Esta aplicación bloqueará con tremendo éxito anuncios y rastreadores de Internet de todo tipo, y podrá servirte hasta de servidor DHCP para todos los dispositivos de tu red doméstica (móviles, tablets, televisores inteligentes, etc.)

Las ventajas que tiene Pi-Hole respecto a los bloqueadores tradicionales es que actúa como un cortafuegos de red, así que anuncios y los dominios que nosotros deseemos se bloquearán para todos los dispositivos de la red. Los bloqueadores tradicionales solamente se ejecutan en un navegador y eliminan los anuncios de ese equipo en particular.

Además, te brindará una forma de obtener estadísticas sobre tu red, mejorar el rendimiento, y como no, te brindará una capa extra de seguridad, algo muy recomendable a día de hoy.

 

 

 

Listado de componentes

Lo primero que vamos a necesitar, como es obvio y obligatorio en nuestros artículos, es una impresora 3D. Con ella realizaremos las carcasas necesarias que protegerán nuestro Wemos D1 Mini y nuestra querida Raspberry Pi.

Después precisamos de los siguientes componentes electrónicos. Podéis adquirirlos fácilmente en cualquier Marketplace como Amazon o Banggood, os dejo algunos enlaces por si deseáis adquirirlos allí:

 

 

 

Instalando Pi-Hole en nuestra Raspberry Pi

Arduino monitor4

Para instalar la aplicación Pi-Hole en nuestra Raspberry Pi deberemos tener previamente instalado el sistema operativo Raspbian. Puedes descargarlo en cualquier momento desde su página oficial en el siguiente enlace.

Las descargas las tienes disponibles en formato ZIP y en formato TORRENT. Si eliges este último, el cual es mucho más rápido, deberás instalar un cliente Torrent. Yo personalmente te recomiendo QBittorrent, que es el que utilizo habitualmente, pero existen decenas de ellos para elegir en la red.

Una vez descargado descomprime el archivo en tu escritorio. Será una imagen del sistema operativo Raspbian con extensión *.IMG. Esto significa que simplemente deberás volcar la imagen a una SDCard y ya tendras disponible y preconfigurada Raspbian en un abrir y cerrar de ojos.

 

Arduino monitor3

Para copiar la imagen a la SDCard utilizaremos el programa gratuito Etcher, que puedes descargarlo desde el siguiente enlace. Carga el fichero de imagen, selecciona la unidad correcta (no te equivoques con esto), y comienza el proceso. Tras unos minutos, tendrás tu imagen de Raspbian correctamente instalada en la SDCard y solo deberás pinchar de nuevo la memoria en tu Raspberry Pi.

Ahora, arranca el sistema operativo Raspbian y abre una consola o terminal. Escribe en el terminal los siguiente comandos:

wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh

 

Esto lanzará la instalación de la aplicación Pi-Hole y nos empezara a pedir información al respecto. Es probable que durante el proceso de instalación, os dé un error al no localizar un paquete a descargar como os muestro a continuación:

  [i] Checking for existing FTL binary...
  [✗] Downloading and Installing FTL
  Error: Unable to get latest release location from GitHub
  [✗] FTL Engine not installed

Si así fuera, simplemente tenéis que editar el fichero /etc/resolv.conf con algún editor de texto como nano o vim, y añadir la siguiente línea al final del mismo:

nameserver 8.8.8.8

 

Si no os dá error, tendremos que ir completando todo el proceso poco a poco, os dejo por aquí las opciones más relevantes:

  • Choose an interface: Debemos elegir el interface que utilizará Pi-Hole, en mi caso WLAN0.
  • Select Upstream DNS provider: Por ejemplo OpenDNS o Google
  • Select protocols: Dejamos los dos protocolos por defecto (IPv4 e IPv6)

Las demás podéis dejarlas por defecto, o modificarlas a gusto si lo deseáis. Una vez acabada la configuración ya tendréis instalado Pi-Hole con éxito, ¡Enhorabuena!

 

Panel del administrador

En cualquier momento podéis acceder al panel de control de Pi-Hole mediante vuestro navegador escribiendo la siguiente ruta (reemplazar la IP por la de vuestra Raspberry Pi):

http://192.168.1.50/admin/

 

Para cambiar la contraseña de administrador del panel, deberás ejecutar el siguiente comando:

pi@raspberrypi:~ $ pihole -a -p
 Enter New Password (Blank for no password):
 Confirm Password:
 [✓] New password set

 

 

 

Cableando Wemos D1 Mini al display OLED

Wemos D1 pinout

Wemos D1 Mini soporta dos tipos de display I2C (SSD1306 y SSH1106). La conexión es muy sencilla, tanto como soldar simplemente 4 hilos entre ellos como podéis comprobar en la imagen superior.

En el caso de desear utilizar un display SH1106, deberemos descomentar la siguiente línea en el código del firmware, ya que por defecto viene con soporte para el display SSD1306:

//#define DISPLAY_SH1106 // Uncomment this line to use the SH1106 display -- SSD1306 is used by default and is most common

 

IMPORTANTE!! En algunas pantallas OLED la ubicación de las líneas SDA, SCL, GND y VCC puede variar, así que en el display verificar cómo están dispuestas y guiaros por el nombre. Siempre verificarlo para evitar imprevistos.

 

 

 

Piezas impresión 3D (Wemos D1 Mini + Display)

pihole monitor

Los enlaces de las piezas para impresión las tenéis disponibles en Thingiverse, gracias de nuevo al usuario Qrome y disponibles para tamaños de 0,96″ y 1,3″ respectivamente.

 

 

Software necesario (Arduino IDE + drivers)

Guía completa para configurar Marlin 2.0.x desde cero y no morir en el intento

Para poder subir el firmware a nuestra placa Wemos D1 Mini necesitaremos la ayuda de un compilador. En este caso utilizaremos el Arduino IDE, ya conocido por alguno de vosotros si habéis compilado Marlin previamente. Este compilador lo ofrece Arduino completamente gratis a su amplia comunidad de usuarios.

Lo podremos descargar de la web oficial de arduino. Para ello, debes acceder a la sección Software -> Downloads, selecciona Windows Installer (por ejemplo) y apreta el botón Just Download para descargarlo. Podéis efectuar una contribución al equipo de desarrollo que hay detrás de este proyecto si lo deseáis. Simplemente pulsando en Contribute & Download y siguiendo las instrucciones en la web.

Por último, instalaremos los drivers USB necesarios para poder conectar con nuestro ordenador en el siguiente enlace: http://www.wch.cn/download/CH341SER_EXE.html

 

 

 

Configurando el compilador (Wemos D1 Mini)

Arduino monitor1

Lo siguiente que debes hacer es configurar el Arduino IDE para que pueda reconocer la electrónica de tu Wemos D1 Mini (por defecto no está soportado). Pero no te preocupes, eso es tan sencillo como ir al menú principal Archivo -> Preferencias y buscar la opción Gestor de URLs adicionales de tarjetas.

Una vez allí, deberemos buscar un campo denominado Gestor de URLs Adicionales de Tarjetas e incluir la siguiente URL:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

 

Esta línea añadirá soporte para la Wemos D1 Mini y muchas otras placas compatibles con ESP82xx existentes en el mercado en nuestro Arduino IDE. Así que iremos al menú Herramientas y en la opción Placa seleccionaremos «LOLIN(WEMOS) D1 R2 & Mini» (bonito nombre por cierto)

Una vez seleccionada la placa, le indicaremos el tamaño de la flash que utilizaremos. Usando otras opciones yo obtuve pantallazo negro en el display, seleccionando el tamaño de 1MB se soluciona. La opción a elegir será «4MB (FS:1MB OTA:~1019KB)»

Y con esto, ya tendremos configurado nuestro compilador Arduino IDE para operar con las Wemos D1 Mini. Vamos con las librerías que debemos instalar ahora …

 

 

 

Instalando librerías necesarias

Arduino monitor2

Para efectuar la compilación del código fuente de David, el compilador precisará de 3 librerías externas, las cuales deberemos instalar en nuestro ordenador. antes de proceder al siguiente paso.

El proceso es muy sencillo, ya que como comenté en otro artículo sobre Como configurar Marlin 2 desde cero que escribí unos días atrás, podremos obtenerlas online desde el mismo compilador. Para ello iremos a la sección Herramientas y haremos clic en Administrar bibliotecas.

En el cuadro de búsqueda existente, introducimos el nombre de todas y cada una de ellas (son 3 en total) y presionamos INTRO. Nos aparecerán las librerías online disponibles con este parámetro de búsqueda.

Nos aseguraremos que son las correctas, ya que aveces salen por un mismo parámetro de búsqueda varias. Simplemente revisando el nombre y el autor es suficiente. Las librerías en cuestión son estas:

  • WiFiManager (by Tzapu)
  • Arduino OTA Library
  • ESP8266 and ESP32 OLED driver for SSD1306 displays (by ThingPulse)

 

 

 

Descargando el Firmware (Pi-Hole Monitor)

Para descargar el firmware necesario de este proyecto, deberemos acceder a su repositorio correspondiente en la página web de GitHub. Haremos clic en el siguiente enlace: https://github.com/Qrome/Pi-hole-Monitor

Una vez dentro, buscaremos un botón llamado Clone or download (ubicado arriba a la izquierda y de color verde), y tras pinchar en él, seleccionaremos la opción Download ZIP. Guardaremos el proyecto en nuestro escritorio y lo descomprimimos.

De esta forma, se nos creará una carpeta llamada /Pi-hole-Monitor-master, donde se encontrarán todos los archivos disponibles del proyecto, y dentro de ella otra carpeta denominada /piholemonitor.

Dentro de esta es donde hallaremos el fichero piholemonitor.ino, que arrancará nuestro proyecto si pulsamos dos veces sobre él.

 

 

 

Compilando y subiendo el Firmware

Arduino monitor1

Ya teniendo todo instalado, el compilador configurado, librerías instaladas y el Wemos D1 Mini conectado a nuestro ordenador por USB procederemos a su compilación.

Lo primero que haremos ahora será hacer doble clic en el archivo piholemonitor.ino, de esta forma se nos abrirá el proyecto completo. Después en Herramientas -> Puerto seleccionaremos el puerto que ha creado al pinchar nuestra placa, y ya tendremos todo listo. No olvides haber seleccionado el tamaño de flash y el tipo de placa (como comentamos en el punto anterior).

Por último y antes de darle a compilar, indicaros que existe un archivo llamado Settings.h donde se encuentran diversos parámetros de configuración del firmware. Contiene bastantes opciones pero para empezar solo prestaría atención a estas dos.

String PiHoleServer = "192.168.1.54";   // IP or Address of your Pi-Hole Server (DO NOT include http://)
String PiHoleApiKey = "bc90985b2d9c82c68d7fd0ce1b83c159f2c67577dce4899e8f6e40d128417978";   // Optional -- only needed to see top blocked clients

 

En PiHoleServer deberemos configurar la IP del servidor Raspberry Pi corriendo Pi-Hole (os dejo como lo tengo yo configurado), y en PiHoleApiKey la Key que obtendremos más adelante (no es obligatorio ponerla ahora).

Pues ya podemos proceder a la compilación, está tarda muy poquito, bastante menos que cuando compilamos un firmware Marlin (es de agradecer). Si todo va bien, el proceso de compilado finalizará y lo subirá a la Wemos D1 Mini.

pi hole15Nada mas reiniciar el módulo Wemos D1 Mini, este creará un AP (Access Point) y deberemos acceder a él vía WiFi para configurarlo. Seleccionaremos el nombre de red SSID perteneciente al módulo, y tras conectar nos mostrará una pantalla de configuración.

En esta pantalla, deberemos seleccionar nuestra red WiFi e introducir la contraseña correcta para que pueda conectar a nuestro Router, y a Internet.

Una vez configurado, el mismo detectará el Pi-Hole de nuestra red y se actualizará con las estadísticas disponibles (siempre y cuando hayamos configurado la IP correcta del Pi-Hole en el fichero Settings.h.

 

 

 

Configuración de la red (Router + Pi-Hole)

Arduino monitor5

Con todo esto que hemos hecho, ya deberías tener funcionando tu servidor Pi-Hole en tu red local. Ahora puedes probarlo configurando un ordenador o dispositivo usando las DNS de PI-Hole. Para ello, cambia el servidor DNS de tu máquina y pon la dirección IP de tu servidor Pi-Hole.

Otra opción que utilicé yo en mi red local para cambiar de golpe todos los dispositivos es activar el servicio DHCP en mi Pi-Hole. Para ello iremos al panel de control (vía web), nos autenticamos y accederemos a la sección Settings -> DHCP. Una vez allí activaremos la opción «DHCP server enabled«.

Después de haber activado esa opción, iremos a nuestro Router, desactivaremos el servicio DHCP allí y le cambiaremos los DNS haciendo que apunten a la IP local de nuestro Pi-Hole. De este modo, será Pi-Hole quien asignará ya todas las IPs dinámicas (y no nuestro Router) y todos los equipos empezarán a operar a través de él.

Como podéis comprobar en la imagen superior, los 3 equipos primeros de la tabla (con fondo verde), ya están conectados a través del Pi-Hole, el resto lo harán nada más efectuar alguna petición nueva en Internet o al darse de alta en la red (por no estar disponibles en este momento).

 

 

 

Observaciones finales

Espero y deseo que este breve manual os haya servido de utilidad alguna, o que despierte vuestro interés por este tipo de placas de desarrollo tan de moda últimamente que son las Wemos D1 Mini.

De antemano os pido disculpas si existe alguna errata o me he dejado algo por el camino debido a la extensión del artículo o por despiste mío, cosa que no descarto. Si así fuera, no dudéis en indicarlo en vuestros comentarios al final del artículo.

Os recuerdo como siempre que disponemos de una gran comunidad en el Whatsapp del canal, así que si os sentís con ganas, no dudéis en uniros a nosotros en el siguiente enlace, seréis bienvenidos a nuestra comunidad 🙂

 

 

 

 

Otros artículos de interés en 3DWork.io: