Skip to the content
PCBKitNew board
4 layers232.4 × 53.3 mmND-01, the printed circuit board in 3D

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
232.4 × 53.3 mm
Copper layers
4
Thickness
1.6 mm
Parts
76
Nets
167
Pads
505
Tracks, vias
6,450, 667
Pours
4
Routed
Yes
KiCad
KiCad 5 (file 20170123)
Created
17 Feb 2017
Updated
26 Dec 2017

Overview

ND-01 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 4-layer board of 232.4 × 53.3 mm with 76 parts on 167 nets, routed with 6,450 tracks and 667 vias.

It is built around the 74HC595 and ULN2803A. Its parts include 41 connectors, 17 capacitors, 14 ICs, 2 diodes and 1 resistor.

Main components

2

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

76
QtyValueFootprintReferences
23GS2Connectors:GS2J17, J18, J19, J20, J21, J22, J23, J24, J25, J26, J27, J28, J29, J30, J31, J32 +7
14CCapacitors_THT:C_Disc_D3.4mm_W2.1mm_P2.50mmC4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
14CONN_01X08Connectors_Molex:Molex_KK-6410-08_08x2.54mm_StraightJ3, J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16
1274HC595Housings_DIP:DIP-16_W7.62mm_LongPadsU3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14
2GS3Connectors:GS3J40, J41
10.1uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC2
11000uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC1
110uFCapacitors_THT:CP_Radial_D5.0mm_P2.50mmC3
14017Housings_DIP:DIP-16_W7.62mm_LongPadsU2
1CONN_01X02Connectors:Banana_Jack_2PinJ1
1D_ZenerDiodes_THT:D_A-405_P10.16mm_HorizontalD1
1HIROSE-USB-MICROBpochi:Hirose_ZX62D_B_5PA830J2
1LEDLEDs:LED_D5.0mmD2
1MATRIXpochi:Dot_matrix_CC_2088-ASM1
1RResistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR1
1ULN2803AHousings_DIP:DIP-18_W7.62mm_LongPadsU1

Questions

How big is the ND-01 PCB?

It measures 232.4 × 53.3 mm and has 4 copper layers, 1.6 mm thick.

What parts does the ND-01 use?

76 parts, built around the 74HC595 and ULN2803A. 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 ND-01 KiCad files?

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

Can I use the ND-01 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
  • 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.

    18 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 layers28 × 36 mmBlisplay driver, the printed circuit board in 3D

    Blisplay driver

    hzeller/blisplay

    A tactile display for the blind.

    17 parts21
  • 2 layers110 × 31.5 mmMirobot, the printed circuit board in 3D

    Mirobot

    mirobot/mirobot-pcb

    The CAD files for the Mirobot PCB

    55 parts12
  • 2 layers66.7 × 61.7 mmVday, the printed circuit board in 3D

    Vday

    niteshkadyan/Hearty-LED-Necklace-Badge

    Kicad project files and Android app for the Hearty LED wearable necklace cum badge

    179 parts10MIT
  • 2 layers100 × 100 mmFlipdot brose, the printed circuit board in 3D

    Flipdot brose

    julianschick/flipdot-brose

    Microcontroller code (ESP32) and Circuit Design for controlling Brose Flipdot Modules.

    185 parts5MIT
  • 2 layers73 × 94 mm8FilPilotes Base, the printed circuit board in 3D

    8FilPilotes Base

    LudovicLemarinel/EspHomeAutomation

    Home Automation based on ESP8266 and MQTT

    75 parts3
  • 2 layers95 × 72 mmISysProgrammingTrainerTypeA, the printed circuit board in 3D

    ISysProgrammingTrainerTypeA

    I-Sys-UF/Trainer

    プログラミング初心者向け練習キット「Trainer」

    20 parts2