
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.

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.
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.
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.
The hardware is made with the open-source PCB design tool Kicad. The hardware designs include:
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:
common_api-Contains constants and definitions that persist across source files.
controller_api- Contains the abstraction layer that enables/disables the display as well as verification that the text as UTF-8.
external_libs- External libraries that are used. The one currently used is a modified version of the utf_8 decoder library by Bjoern Hoehrman.
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.
updater_api- API that is used to update the system variables in flash.
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.
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.
Setup development environment using the build script in the utils/build folder:
cd utils/build
sh setup.shNow build the firmware and flash to device over UART:
cd ../../../firmware
make flashThe firmware is build for extensibility to support new codepoints under UTF-8.
To add new characters, one just has to:
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.
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.
Add the checks for the new codepoint definitions, added above, in the renderer so that your new implementation is recognised.
Alois Mbutura "aloismbutura@gmail.com"
Felix omwansa "omwansafelixa@gmail.com"
See CONTRIBUTORS file
| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | CONN_02X10 | narra:Pin_Header_Straight_2x10_Pitch2.54mm_staggered | J3, J4, J5 |
| 3 | GS2 | Connectors:GS2 | J1, J7, J8 |
| 2 | 10k | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2, R3 |
| 2 | 10uF | Capacitors_THT:CP_Radial_D5.0mm_P2.50mm | C1, C2 |
| 2 | CONN_01X06 | narra:Pin_header_5mil_staggered_1x06_2.54mm | J2, J6 |
| 1 | 1k | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1 |
| 1 | ESP-32-module | narra:ESP32-module-v2 | U2 |
| 1 | LD1117S33TR_SOT223 | TO_SOT_Packages_THT:TO-220_Neutral123_Vertical_LargePads | U1 |
| 1 | LED | LEDs:LED_D3.0mm | D1 |
| 1 | SW_DIP_x02 | Buttons_Switches_THT:SW_DIP_x2_W7.62mm_Slide_LowProfile | SW1 |
| 1 | SW_Push | Buttons_Switches_THT:SW_PUSH_SMALL | SW2 |
It measures 100 × 45 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).

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.

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.

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.


VoronDesign/Voron-Hardware
Cool Hardware designed by the Voron Design group

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

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:

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.


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