Driver for Metec Braille-line 20 Cell standard module for Arduino & Raspberry PI
This module is composed of 20 B11 Metec Braille cells driven by piezo-actuators which also feature one interaction button per cell (eg 20 buttons for this module). The module also needs a DC/DC converter (5V to 200V)
This library is compatible with :
- Arduino (tested on Uno & Mini)
- Raspberry PI Linux & wiringPi library
- Rapsberry PI Windows IoT core OS
This repo also includes an example using this driver and liblouis altogether on Raspberry PI (Linux/wiringPi)
git clone git@github.com:bertrandmartel/metec-braille-driver.git
cd metec-braille-driver
git submodule update --init --recursive
.
βββ src # library source
βββ include # library includes
βββ arduino
β βββ arduino-makefile # makefile for arduino (build environment)
β βββ examples # examples containing one folder per example
β βββ Makefile # library Makefile (each sample call this Makefile)
βββ raspberry
β βββ linux-wiringpi # Linux build with wiringPi library folder
β β βββ examples # examples folder
β β βββ raspberry-dev # toolchain & wiringPi build using cmake
β β βββ out # library output directory
β β βββ out_liblouis # liblouis output directory
β β βββ CmakeList.txt # cmake config for building MetecDriver and liblouis
β β βββ liblouis_install.sh # liblouis table install script (to run on Raspberry PI)
β β βββ run.sh # build script
β β βββ clean.sh # clean raspberry pi folder (remove cache, output dir etc...)
β βββ windows-iot # Windows IoT core folder
β β βββ MetecDriver
β β βββ MetecDriverLibrary # library project compiling C++/CX into Windows Runtime Component
β β βββ ExampleButtonSimple # buttons input example in C#
β β βββ ExampleButtons # buttons input + write pattern example in C#
β β βββ ExamplePatternChange # change pattern every x sec example in C++
β β βββ MultiCellsExample # write multiple pattern example in C++
β β βββ SingleCellExample # write single pattern example in C++
β βββ liblouis # liblouis submodule build folder
βββ 8pin-adapter # KiCad files for 2.00mm to 2.52mm 8 pin adapter
ββββ fritzing # Fritzing sketch for wiring pictures
- Go to Arduino README
- Go to Raspberry PI Linux + wiringPi README
- Go to Raspberry PI Windows IoT Core README
The 8 pin adapter 2.00mm to 2.54mm was created on KiCad EDA, files are available under 8pin-adapter
:
3 signals are used :
- STRB (OUTPUT)
- CLK (OUTPUT)
- DIN (OUTPUT)
A shift register is used to write the Braille pattern, the data is written to DIN between each clock transition (data is written on CLK falling edge). All bit are latched on STRB falling edge.
The bit order for the Braille cell is the following XORed :
You can use this tool to test values
For example the following write letter "V" aka β § which is BRAILLE-1236 in unicode :
explanation for above : β § gives 11000011 (XORed), bit order is 6/7/2/1/0/5/4/3 so it gives : 11011000, and XORed : 00100111
3 signals are used :
- STRB (OUTPUT)
- CLK (OUTPUT)
- DOUT (INPUT)
The buttons can be read when strobe is high between each clock transtion (falling edge). B11 module can have 2 buttons so we need to read 20 * 2 times each time we check for button state :
explanation for above: the 2 last bit read are 01 which means the first button has been pressed
-
This amazing post on Arduino forum : https://forum.arduino.cc/index.php?topic=236677.0 special thanks to metec_ab
-
dot converter tool written in React JS is useful to quickly test a Braille pattern
-
liblouis the open source Braille translator which can be used on Raspberry PI along with this driver (see Raspberry PI library usage)
-
raspberry-dev : a quick development environment to develop for Raspberry PI
-
arduino-dev for developping Arduino using a single Makefile
-
Fritzing parts I've made for README aesthetics
The MIT License (MIT) Copyright (c) 2018 Bertrand Martel