Skip to the content
4 layers51 × 48 mmEsperDNS, the printed circuit board in 3D

Ad Blocking with an ESP32

Size
51 × 48 mm
Copper layers
4
Thickness
1.6 mm
Parts
60
Nets
101
Pads
266
Tracks, vias
1,462, 118
Pours
8
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
9 Apr 2021
Updated
24 May 2021

Overview

EsperDNS is an open-source printed circuit board by zachmorr, from the zachmorr/esper repository on GitHub, published under the MIT licence. It is a 4-layer board of 51 × 48 mm with 60 parts on 101 nets, routed with 1,462 tracks and 118 vias.

It is built around the DP83848CVV, ESP32-WROOM-32E and AZ1117EH-3.3TRG1, with the RS-3535MWAR among its other parts. Its parts include 29 resistors, 14 capacitors, 5 transistors, 4 ICs and 2 diodes. It belongs with the ESP32 boards of this library.

Main components

4

README

README.md

Imgur

About Esper

Heavily inspired by the Pi-Hole, this project aims to bring network wide ad-blocking to another popular device popular among makers and hobbyists, the ESP32.

What is DNS?

Commonly referred to as the "phone book for the internet", the DNS protocol is how devices map human readable urls like google.com or facebook.com into IP addresses that the device can use.

How does Esper block ads?

Just like the Pi-Hole, Esper acts as a DNS server for devices. When sent a DNS query, Esper will read the url the device is requesting, then decide to block the request by returning 0.0.0.0 or forward the request on to a real DNS server.

Differences between Pi-hole and Esper

The biggest, and most obvious difference is the hardware these projects run on. Pi-hole aims to be available on any Linux powered hardware, while Esper is an ESP32 specific project. Due to being run on a microcontroller, Esper is much more limited in it's capabilities and is therefore much more minimal in it's design.

Why choose Esper instead of Pi-hole?

Choose whatever one suits you! If you like tinkering with hardware, and do not have much experience with the Raspberry Pi/Linux ecosystem, setting up the Esper software on an ESP32 dev board might be an interesting project. And while Esper may not be nearly as powerful as a Raspberry Pi, DNS protocol is very lightweight in nature. Unless you are in a household with 10+ people that are always online you will likely never going to need more computing power than a microcontroller can provide.

At the same time, if you have no problem using a shell and Linux environment, the Pi-hole is a much more feature rich and powerful piece of software that is a joy to use.

How can I get an Esper?

The easiest way, is to purchase a pre-made one from the Tindie store.

If you have some ESP32 development boards collecting dust, it will work on those too! (Just follow the instructions here!)

DISCLAIMER: It is heavily recommended to use a device with ethernet. Even the best Wifi will significantly increase latency and decrease reliability compared to a good copper connection.

If you want to try you hand an making an Esper from scratch, the repository contains all the schematic, pcb, and enclosure files needed to build one yourself.

Reprogramming Esper

Do you like the Esper hardware, but want to use it for something other than ad-blocking? Great! The Esper hardware is completely reprogrammable and includes an on-board USB-UART converter, no extra programmers are needed!

Esper Development

Tools Used

  • KiCAD - EDA tool used to design PCB
  • FreeCAD - 3D modeling tool for designing enclosure
  • ESP-IDF - Contains ESP32 API and build tools for firmware development
  • Python 3.7 - Scripts to glue everything together

Directory Structure

text
├── hardware                    # Hardware root directory
│   ├── custom components           # Custom KiCad component files
│   ├── enclosure                   # FreeCAD project and STL files for enclosure
│   ├── product                     # KiCad projects for Esper
│   │   ├── usb-programmable        	# Includes CP2102 for easy usb programming
│   │   └── jtag-header             	# 10-pin header for JTAG & UART, meant to be used with programmer
│   └── programmer                  # KiCad project for programmer/debugger
└── software                    # Software root directory
    ├── firmware                    # ESP-IDF project that contains all code for Esper
    ├── scripts                     # Scripts used in build process and testing
    └── website                     # For website development, contains symbolic links to HTML files

Parts

60
QtyValueFootprintReferences
1149.9Resistor_SMD:R_0402_1005MetricR6, R7, R9, R13, R14, R15, R16, R18, R19, R20, R22
92.2kResistor_SMD:R_0402_1005MetricR10, R12, R21, R23, R24, R25, R26, R27, R28
80.1uFCapacitor_SMD:C_0402_1005MetricC2, C5, C6, C7, C11, C13, C14, C16
52N7002Package_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4, Q5
310uFCapacitor_SMD:C_0402_1005MetricC3, C10, C15
31uFCapacitor_SMD:C_0402_1005MetricC1, C4, C12
210KResistor_SMD:R_0402_1005MetricR2, R8
2270Resistor_SMD:R_0603_1608MetricR11, R17
247Resistor_SMD:R_0603_1608MetricR3, R4
2MountingHoleMountingHole:MountingHole_2.2mm_M2_PadH1, H2
14.87Resistor_SMD:R_0402_1005MetricR29
1470Resistor_SMD:R_0402_1005MetricR1
182Resistor_SMD:R_1206_3216MetricR5
1AZ1117EH-3.3TRG1Package_TO_SOT_SMD:SOT-223U1
1CP2102-GMR_NRNDEsperFootprints:VFQFN-28-1EP_5x5mmU4
1DP83848CPackage_QFP:LQFP-48_7x7mm_P0.5mmU5
1ESP32-WROOM-32ERF_Module:ESP32-WROOM-32U2
1Ferrite_BeadInductor_SMD:L_0805_2012MetricFB2
1GRNDiode_SMD:D_0603_1608MetricD1
1PTS645VH83-2 LFSButton_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx83-2LFSSW1
1RJ45_Amphenol_RJMG1BD3B8K1ANRConnector_RJ:RJ45_Amphenol_RJMG1BD3B8K1ANRJ3
1RS-3535MWARLED_SMD:LED_RGB_PLCC-6D2
1USB_B_MicroConnector_USB:USB_Micro-B_Molex-105017-0001J1

More from zachmorr/esper

2
  • 4 layers51 × 48 mmEsperDNS, the printed circuit board in 3D

    EsperDNS

    zachmorr/esper

    Ad Blocking with an ESP32

    50 parts175MIT
  • 2 layers40 × 20 mmProgrammer, the printed circuit board in 3D

    Programmer

    zachmorr/esper

    Ad Blocking with an ESP32

    21 parts175MIT

Similar boards

  • 2 layers148 × 30 mmUi board 1u, the printed circuit board in 3D

    Ui board 1u

    betz-engineering/ui_board_1u

    User interface PCB for 1U chassis front-panels

    85 parts1CERN-OHL-P-2.0
  • 4 layers75 × 100 mmDP83848C EvalBoard, the printed circuit board in 3D

    DP83848C EvalBoard

    kuellenberg/DP83848C-EvalBoard

    DP83848C + STM32F407 Development Board

    184 parts1
  • 2 layersDemoBoardPIC32, the printed circuit board in 3D

    DemoBoardPIC32

    ffich/Athena_HW

    Repository that contains the Kicad HW project for Athena Pic32 EVB.

    141 parts
  • 2 layers57.9 × 65.4 mmDisplinux, the printed circuit board in 3D

    Displinux

    Ivansquark/displinux

    155 parts
  • 2 layers111.1 × 61.2 mmSTM32F4-UCC, the printed circuit board in 3D

    STM32F4-UCC

    UCC-LCRS/STM32F4Discovery-expansion

    Placa de expancion para la plataforma STM32F4Discovery.

    121 partsBSD-3-Clause
  • 2 layers100 × 100 mmDb25 bob v2, the printed circuit board in 3D

    Db25 bob v2

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    129 parts990GPL-3.0
  • 4 layers58 × 85 mmBase Station v3b, the printed circuit board in 3D

    Base Station v3b

    TIGERs-Mannheim/electronics

    TIGERs Mannheim Open-Source Electronics

    130 parts9

Questions

How big is the EsperDNS PCB?

It measures 51 × 48 mm and has 4 copper layers, 1.6 mm thick.

What parts does the EsperDNS use?

60 parts, built around the DP83848CVV, ESP32-WROOM-32E, AZ1117EH-3.3TRG1 and RS-3535MWAR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the EsperDNS KiCad files?

From the zachmorr/esper repository on GitHub, at the commit this page was made from: the board is hardware/product/usb-programmable/EsperDNS.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the EsperDNS design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).