Skip to the content
PCBKitNew board
2 layers100 × 45 mmESP-32-programmer, the printed circuit board in 3D

ESP-32-programmer

bitsoko-services/narra

This repository contains hardware designs and software for Narra, an open source, BLE advertising and control, LED signage platform. The project utilises the ESP32 and the ESP-IDF framework.

Size
100 × 45 mm
Copper layers
2
Thickness
1.6 mm
Parts
18
Nets
49
Pads
141
Tracks, vias
433, 83
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20170123)
Created
17 Feb 2017
Updated
26 Dec 2017

Overview

ESP-32-programmer is an open-source printed circuit board by bitsoko-services, from the bitsoko-services/narra repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 100 × 45 mm with 18 parts on 49 nets, routed with 433 tracks and 83 vias.

Its parts include 8 connectors, 3 resistors, 2 capacitors, 2 ICs and 2 switches. It belongs with the interfaces and adapters boards and the ESP32 and RISC-V boards of this library.

README

README.md

Narra - An LED Signage Development Project

This repository contains hardware designs and software for Narra, an open source, BLE advertising and control, LED signage platform. The project utilises the ESP32 and the ESP-IDF framework. The signage device had to be able to be controlled over BLE via a mobile connection with web bluetooth running on the client web browser that would control the signage device functions such as what to display and change the device state by writing to predefined BLE characteristics.

This repository is Bluetooth v4.2 compliant.

Hardware

The hardware is made with the open-source PCB design tool Kicad. The hardware designs include:

  1. A custom programmer that made using a common commercial off the shelf CP210x UART-USB converter.
  2. The LED driver board as at different versions.
  3. A custom ESP32 module, friendly for development and product placement made from the ESP WROOM32. It is meant to be programmed using the programmer above.

Firmware

The fimware is divided into different components that are abstracted from each other and written in Pure C utilising the ESP-IDF framework and include:

Communication stack:
  1. ble_api- Contains utilities to control the BLE hardware. Interacts directly with the ESP BLE HAL. It is strictly written with multiple level of sanity checks on the input data from user prior to writing to flash.
Other components:
  1. common_api-Contains constants and definitions that persist across source files.

  2. controller_api- Contains the abstraction layer that enables/disables the display as well as verification that the text as UTF-8.

  3. external_libs- External libraries that are used. The one currently used is a modified version of the utf_8 decoder library by Bjoern Hoehrman.

  4. loader_api- API that is used to load from flash newly written variables via BLE. This is done at boot and after update via BLE dynamically.

  5. updater_api- API that is used to update the system variables in flash.

  6. renderer_api- This is the API that is heavily tied to the hardware itself and display method. The current display method is a row-scan method that takes advantage of the human persistence of vision.It also includes a header file containg the implemented character glyphs.

  7. main file- Is used to setup the various tasks and coordinates the various task interactions.

The communication stack is meant to be purely independent of other components thus one could use a TCP/IP or cellular stack and just reuse the same interface and function calls or add to them.

Building and uploading the code to device

Setup development environment using the build script in the utils/build folder:

shell
cd utils/build
sh setup.sh

Now build the firmware and flash to device over UART:

shell
cd ../../../firmware
make flash

The firmware is build for extensibility to support new codepoints under UTF-8.

To add new characters, one just has to:

  1. create the glyphs that represent the characters for that language and add to the existing in renderer_api/include/glyphmap.h . The characters are defined in codepoint ranges. To add a single character, the character range is 1.

  2. Change the allowed character UTF-8 codepoint ranges in common_api/narra_defines "UTF-8 implementation defines" section and add your own following the UTF-8 encoding ranges.

  3. Add the checks for the new codepoint definitions, added above, in the renderer so that your new implementation is recognised.

Contributors

Alois Mbutura "aloismbutura@gmail.com"

Felix omwansa "omwansafelixa@gmail.com"

See CONTRIBUTORS file

Parts

18
QtyValueFootprintReferences
3CONN_02X10narra:Pin_Header_Straight_2x10_Pitch2.54mm_staggeredJ3, J4, J5
3GS2Connectors:GS2J1, J7, J8
210kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R3
210uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC1, C2
2CONN_01X06narra:Pin_header_5mil_staggered_1x06_2.54mmJ2, J6
11kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
1ESP-32-modulenarra:ESP32-module-v2U2
1LD1117S33TR_SOT223TO_SOT_Packages_THT:TO-220_Neutral123_Vertical_LargePadsU1
1LEDLEDs:LED_D3.0mmD1
1SW_DIP_x02Buttons_Switches_THT:SW_DIP_x2_W7.62mm_Slide_LowProfileSW1
1SW_PushButtons_Switches_THT:SW_PUSH_SMALLSW2

Questions

How big is the ESP-32-programmer PCB?

It measures 100 × 45 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ESP-32-programmer use?

18 parts. 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 ESP-32-programmer KiCad files?

From the bitsoko-services/narra repository on GitHub, at the commit this page was made from: the board is hardware/esp32_programmer/ESP-32-programmer.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the ESP-32-programmer design in my own project?

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

More from bitsoko-services/narra

3
  • 4 layers207.6 × 134.7 mmND-03, the printed circuit board in 3D

    ND-03

    bitsoko-services/narra

    This repository contains hardware designs and software for Narra, an open source, BLE advertising and control, LED signage platform. The project utilises the ESP32 and the ESP-IDF framework.

    130 partsApache-2.0
  • 4 layers232.4 × 53.3 mmND-01, the printed circuit board in 3D

    ND-01

    bitsoko-services/narra

    This repository contains hardware designs and software for Narra, an open source, BLE advertising and control, LED signage platform. The project utilises the ESP32 and the ESP-IDF framework.

    76 partsApache-2.0
  • 2 layers40.6 × 27.9 mmBitsoko ESP32-module v2, the printed circuit board in 3D

    Bitsoko ESP32-module v2

    bitsoko-services/narra

    This repository contains hardware designs and software for Narra, an open source, BLE advertising and control, LED signage platform. The project utilises the ESP32 and the ESP-IDF framework.

    6 partsApache-2.0

Similar boards

  • 2 layers27.9 × 16.5 mmPowerSSO-24 breakout, the printed circuit board in 3D

    PowerSSO-24 breakout

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    18 parts1.2k
  • 2 layers42.7 × 13.7 mmStm32-mini12864, the printed circuit board in 3D

    Stm32-mini12864

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    18 parts1.1kGPL-3.0
  • 2 layers41.2 × 46.6 mmThumb cluster left, the printed circuit board in 3D

    Thumb cluster left

    JesusFreke/lalboard

    A 3D-printed keyboard inspired by the DataHand

    18 parts993
  • 2 layers44 × 51.3 mm4272MAVcoder R4, the printed circuit board in 3D

    4272MAVcoder R4

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    18 parts915
  • 2 layers28.3 × 14.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    18 parts716GPL-3.0
  • 2 layers20.3 × 15.2 mmL0 stepper driver, the printed circuit board in 3D

    L0 stepper driver

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    18 parts546MIT
  • 2 layersMooltipass, the printed circuit board in 3D

    Mooltipass

    limpkin/mooltipass

    Github repository dedicated to the mooltipass project

    18 parts531
  • 2 layers42.5 × 28.8 mmC5VRX JACK DIY V2, the printed circuit board in 3D

    C5VRX JACK DIY V2

    Twotoz/C5VRX

    Ultra-minimal, zero-CPU 5.8 GHz analog FPV video receiver using ESP32-C5 Wi-Fi 6 PHY MODEM_DIAG, BitScrambler WBFM demodulation & resistor DAC CVBS

    18 parts515GPL-3.0