Giter VIP home page Giter VIP logo

mask_lights's Introduction

Mask Lights

This project is a simple, inexpensive and scalable method of relaying the Red and Green scoring lights from a Favero Full-Arm-05 scoring machine to LED lights attached to the interior sides of a fencing mask. The cost for a single light setup for a mask is about $15 USD and the transmitter cost is about $2 USD. Here is a video of the lights while fencing.

Lights_Snapshot_2.png

Parser and Transmitter

The output data from the Favero using an RJ11 Connector to an Arduino ESP8266 WeMos D1 Mini using the wiring Favero Serial Parser schematic with the exception that the LED Relay Control was left off for this build. The Arduino code 8266 Parser and Transmitter Favero was then uploaded the Wemos. The only change that should be needed to the code is line 4, "Favero_One", which is the scoring machine's name. The code should function either way, but it will be easier to use if each scoring machine has a unique name. The code uses the Wemos' MAC address to differentiate between scoring machines, but the human interface uses the name defined by line 4. The code used for the Transmitter is 8266_Parser_and_Transmitter.

Mask_Red_Light.jpg

Receiver

The code used for the Receiver is 8266_Receiver_Mask_Lights.

The circuit for the LED Lights Receiver was then designed and the PCB ordered using the gerber file. Some of the parts used where an OLED SSD1306, a MH-CD42 Charging Module, stout 15mm tall push buttons, 3mm LEDs, a power switch, a LiPo 3.7V battery and an 8 by 8 LED Matrix. A couple of notes on the PCB design, it is functional but by no means optimized. There should be some resistors in series with the 3mm LEDs and I suspect there should also be some capacitors involved to minimize the transients. This is beyond my level of expertise and I am not yet willing to make the investment in learning to improve this aspect of the project while it still works well enough. There are also a couple of errors in the PCB. Specifically the Green_Red_Button connects to D0/GPIO16, which is internally pulled down so the button should instead be connected to 3.3V while it is instead actually connected to GND and therefore the button will not function. The Arduino code is adapted to not use the left Green_Red_Button.

To operate the interface, the OLED SSD1306 will initially display "Select Box". Pressing the button will cycle to first detected transmitter and will display the "Green" lights. Pressing the button again will receive from the same transmitter but will now display the "Red" lights. Pressing the button again will now cycle to the next transmitter and cycle through "Green"/"Red" until the list is exhausted and start over at "Select Box". For a large number of transmitters this can become tedious, at present this is not designed for more than a handful of transmitters.

The Battery life seems to be adequate. I have not run the receiver till failure yet, but it seems to last at least for a full night of fencing, afterwards I usually charge the battery through the USB connection on the receiver.

Also, the Battery connection markings are reversed and the + and - are marked backwards from what they actually are on the circuit. If you connect the battery as indicated, as one would reasonably do, the PCB will start to heat up and smoke.

There are also slightly different designs of the SSD1306, one of the designs has the Vcc and GND reversed from the one used in the PCB design; I would recommend using the SSD1306 that lines up with the PCB. Similarly, the pins for the power switch also line up poorly, so they require mechanical inducement to fit, though it does make the switch feel more snug in the PCB.

The Pairing LED is also redundant. There was initially a goal to pair with other Arduinos before transmitting the data but I decided it would be simpler and more straightforward to broadcast the scoring machine data instead of first establishing a paired connection.

PCB_Top.PNG

The PCB is stored in a 3D printed enclosure and secured to the mask using velcro straps. The LED matrix was connected to the mask using lockwire, though there may be better alternatives and I worry about sharp edges despite dulling the edge afterwards. I use magnetic usb chargers to protect the Wemos USB connection and hopefully prolong its life.

Mask_Lights_PCB.jpg

Relay Receiver

I included the code 8266_Receiver_Relay. The code acts similarly to the mask receiver except a High/Low signal is passed using the same receiver PCB at the Green and Red LED +/- connections and will send both Red and Green signals for both "clicks" of the button. This allows someone to connect relays to the PCB and actuate repeater lights using the same platform, enclosures and boards.

Future Development

Some thoughts going forward, all the data from the box, mostly, is transmitted and the 8 by 8 matrix uses individually addressable LEDs, so more can be conveyed than solely the score lights. For example there could be indication of the score or a count down when the timer is about to run out.

Sleep Mode: The charging circuit is set up so that power is applied through the Arduino when charging. The power switch only isolates the Arduino from power when the Arduino is powered from the battery. One goal will be to create a sleep mode so that when charging, the Arduino will be less active.

Add code to momentarily light the LEDs when changing between which box is being monitored. This will allow to test the LEDs and feel reassuring that the system works.

Since the Receiver is effectively part of the mask and most masks are owned by a single person, it would be reasonably easy for a fencer to customize their lights making the lighting display unique to them or could display their national colors. This can then be further simplified by adjusting the code so that the actual code to light the LEDs is external to the main program and therefore easily changed or swapped out.

Adapt the interface button so that it can easily accommodate many more transmitters.

This can of course can be adapted to other scoring machines as well. It would be reasonable to use the other repositories on this Github to transmit both St. George Machines and the Virtual Scoring Machine.

mask_lights's People

Contributors

benkohn2004 avatar

Stargazers

Jeff Borck avatar Simon Gibson avatar  avatar  avatar  avatar Louis Guillou avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.