Arduino Bluetooth Bingo Display for the Hearing Impaired
by dick55 in Circuits > Arduino
1020 Views, 1 Favorites, 0 Comments
Arduino Bluetooth Bingo Display for the Hearing Impaired
My wife and I meet friends and family once a week to play Bingo at a local restaurant/bar. We sit at a long table. Facing me is a man with impaired hearing and vision. The room is very noisy and the man often has to ask his wife to repeat many of the numbers called out. So I decided to make the two-unit Bluetooth-coupled system pictured above. On my unit I enter the number called and he sees it on his unit.
The transmitting unit has a 12-key telephone type keypad. Five of the keys (1, 4, 7, *, 0) are programmed to enter the BINGO alphabetic character of each new number called. This unit also has a 4-character display, with 14-segment LED alpha-numeric characters showing the complete number (e.g., B-15).
The receiving unit has the same display, whose size and brightness is more than adequate for the intended viewer. While the transmitting unit sits flat on the table, the receiving unit can also be tipped up for better viewing.
Each unit has a toggle switch that switches between power-on operation and power-off charging of the internal Li-ion 9V battery, via the barrel jack shown. A blue LED on each unit shows when Bluetooth has connected.
Note: In the following I will denote the transmitting unit as Master and the receiving unit as Slave.
Get Parts, Materials, and Tools
Mail Order Parts
Keypad (1) Adafruit $7.50 ea
Quad alphanumeric display (2) Adafruit $10 ea
PCB-type solderable breadboard (2) Adafruit 3-pack $13, Amazon 4-pack $13
Arduino Nano (2) Amazon 3-pack $13
HC-06 Bluetooth module (2) Amazon $8.50 ea
5mm Barrel jack (2) Amazon 5-pack $8
DPDT switch Amazon 10-pack $6
9V Li-ion rechargeable battery (2) and dual charger Amazon (EBL) $17
Charging cable, with 9V battery clip-on and barrel plug (2) Amazon 5-pack $6
Local Parts
Small Keepsake Box (2), approx 4.75 x 4.75 x 2.5 inches high, JoAnn (locally and online) $5.50
#4 Machine screws and nuts for display installation (8)
Spacers for the machine screws (8)
Small screws (in brass hinge pack) for keypad installation (1 pack) Michaels
Parts probably on hand
Blue LED (2)
LED holder (2), optional
Ribbon jumpers, female-female
Ribbon jumpers, male-female
1K ohm resistor (4)
2K ohm resistor (2)
Male headers
#22 solid copper hookup wire: red, black, white
Materials
Wood sealer
Spray or brush-on paint
Masking tape, preferably regular and blue type
Scotch Permanent Mounting Tape (2-sided foam tape)
Tools
Caliper (recommended)
Powered scroll saw or hand coping saw
File (or sandpaper)
Drill and bits
Drill bit guide (has dimensioned holes for all bits)
Ice pick
Jeweler's screwdriver set
Common Phillips screwdrivers and pliers
Wire cutter
Wire stripper
Soldering equipment
Paint brush
Prepare the Boxes
(Note: You will see in the photos that I made the Master box before finding the hinged box for the Slave at JoAnn. I strongly recommend this box. It is almost the same size, well-made, reasonably priced, and the hinged lid is great, compared to removing and replacing screws, when needing to access the inside. I actually paid more for the Master's ¼ inch JoAnn plywood, that I already had on hand, and wasted time and energy making it. So, I will assume that you will use two of the JoAnn boxes.)
Remove the hinged tops and hinges. Put the hinges and screws in a safe container to avoid losing them.
The displays and keypad mount under the box tops with the obvious parts poking through. Carefully measure those parts to determine the dimensions for the required rectangular holes in the tops, aiming for a neat close fit. A caliper is best for this purpose.
Lay out these outlines on the box tops with pencil and ruler, centering them horizontally and spacing them vertically as desired. Also, remember to locate the LED on the Slave top. I placed (Blue) masking tape on the penciled lines to make a very good guide for cutting.
Drill a hole for the saw blade and proceed to cut as close to the tape as you can without straying over the line. Finish the holes by filing or sanding down to the tape/line. Then test the fit with a display. If it's too tight, you may be able to force the fit in the relatively soft basswood.
Now lay out the center holes for the switch, jack, and LED, marking them with an ice pick (or center punch). Determine hole diameter by test fitting the parts in the drill bit guide. Then drill the holes.
Now is a good time to seal and paint the box exteriors. Basswood absorbs paint, so brush-seal before painting. After drying i sprayed the box bottoms and tops with Rustoleum gloss blue, only doing the outside. I did elect to mask all holes with masking tape on the inside.
When dry, put the hinged box tops back on.
A latch is needed for the hinged top and it needs to be internal In order to enable the Slave to sit upright. I fashioned a simple latch that works well. Cut a plastic business card to the desired shape and glue it to the inside of the box top, centered as shown in the Step 6 open-box photos. Drill a pilot hole and a countersink hole in the box bottom front for a small screw that will engage the plastic. Measure screw center distance down from the top edge of box bottom, transfer it to the plastic, and use the ice pick to punch a hole, centered on the plastic, that will pass the screw. Screw in the screw and the box will be latched. To open, use a thin knife blade to push the plastic off the screw. To close you can actually use your finger, or again use the knife.
Assemble the Two Displays
Note: When I tried to order the display kit in the parts list, Adafruit was out of stock on all colors. So I had to order a different version: the Featherlight Quad Display which differed only in the backpack. See https://www.adafruit.com/product/3130 . However this had no means of mounting in the box tops, so I had to devise my own mount. I simply soldered the four active pins on the headers to a solderable-type perf board that you see in the Step 6 open-cover photos. I drilled four mounting holes in the perfboard. I even duplicated a male header connector for the Master but decided not to go that far in the Slave.
Hopefully, you will be able to get the nicer display I recommended in the parts list.
Each display arrives as a four-part kit: two dual alphanumeric LED displays, a backpack (LED driver), and a 5-pin male header. The LEDs and header must be soldered to the backpack. See the excellent tutorial at https://learn.adafruit.com/adafruit-led-backpack/0.... You will need a fine-point soldering tip when soldering the LED pins adjacent to the backpack's IC. Only 4 connections to the header are used in this project: 5V power (VCC. GND) and I2C data (SDA) and clock (SCL) lines.
Make the Circuit Board
I like to use the PCB version of the common half-size breadboard, especially when I have already done a preliminary system hookup with breadboard and ancillary devices. Wiring up the solderable PCB version is much easier than the alternative solderable perf board (point-to-point) version.
The download table below gives the wiring instructions, including male headers for cabling and female headers to make Nano and HC-06 sockets.. Male headers snap off of 40 pin strips, but female headers must be cut off. I use a Dremel with a cutting wheel.
The table is identical for Master and Slave except for the keyboard header needed on the Master board.
The above photo shows the Slave bare and completed circuit board.
Downloads
Install All Components in the Boxes
Display
Position the display in its hole and mark the four mounting points. Drill holes for the machine screws. Select spacers for the protrusion you are happy with Then bolt it on.
Keypad
The mounting holes are very small. Fortunately, suitable screws are available in the brass hinge pack. Position the keypad in its hole and mark the four mounting points. Use the smallest bit in your set to drill starter holes. Then screw it on. The screws will protrude a little bit above the top. If desired, remove the screws and file down the points. Re-install.
Switch, Jack, and LED
Push the switch into its hole and rotate it to make toggle-up the power on position. Secure it with the provided nut.
Similarly, install the jack, rotating it for best soldering access.
Finally, put the LED in its holder and push it into its hole (from the front). This should be a tight fit.
Circuit Board and Battery
I usually leave enough room in the box to access the micro-controller (Nano) USB jack with a USB cable, without moving the board, because it makes debugging and changes easier. I didn't do that here here because the boxes were already bigger than I had hoped.
I believe that two-sided foam tape is a good way to install the board and battery. If you use minimal tape it allows for easy removal while still providing a firm installation. Leave the taping until you are ready to button up for good.
Install Wiring and Cabling
Wiring
The switch is a DPDT. The center poles connect to the battery. Top poles connect to the charging jack. And bottom poles connect to Nano's Vin/Gnd header.
Solder a 9V battery clip-on to the switch center poles. The red wire will define which pole is positive (+).
Solder hookup wire from the switch top poles to the jack.
CAUTON! Make sure that the negative side goes to jack center pin. Why? Because the charging voltage is negative at the barrel plug center pin. See Step 8 for an explanation.
Use a pair of M-F ribbon jumpers to connect the switch bottom poles to Nano's Vin/Gnd cable header. Solder the pins to the bottom poles, making sure positive will be going to Vin without cable twisting.
Also use a pair of M-F ribbon jumpers to connect the LED to the header at the 1K current limiting resistor on the HC-06 “STATE” output. Solder the pins to the LED leads, making sure the longer (anode) wire goes to the resistor.
Cabling
The keypad, display, and Nano all use male headers and F-F jumpers for connections. Make a note of jumper color orientation when plugged into the headers and tuck it away for future reference.
The keyboard has a matrix key hookup, four rows and three columns, so its header connection uses 7 pins. Plug a 7-wire F-F ribbon jumper into the header and, without twisting, plug the other end into Nano's keyboard header connection.
The display has a 5-pin header connection, but we need only 4 pins, for power and I2C serial data (SDA, SCL) . Plug a 4-wire F-F jumper into it. Separate the other end into two 2-wire connectors and plug them into the breadboard 5v power strip and to Nano's I2C header at pins A4-A5. Make sure that +5V is going to display 5V, and SDA is going to display SDA.
I like to wrap together the female connectors on each cable end to make a stronger connection and make it easier to mate to the male headers.
Download the Sketches and Test the System
Download and copy the two Arduino sketches below and paste them in the Arduino IDE (1.8.9 or later).
https://www.dropbox.com/s/qut4pkywkijbag9/Bingo_Ma...
https://www.dropbox.com/s/4td68e3vspoduut/Bingo_Slave_7-15.odt?dl=0
I believe you will find the sketches easy to understand because I have taken care to add helpful comments. Also, the special functions from the libraries simplify the sketches. Even if you do not fully understand a function you can feel comfortable because it works, and you could probably use it in a sketch of your own with little or no problem.
Connect your computer to the Nano USB Mini B connector in the Master. Unfortunately, the Nano board has to be tilted up to do this. Switch power on and compile/download the Master sketch. Similarly, repeat this with the Slave. You are now ready to operate the system.
Remove the USB cables and switch both boxes on. You should now see both displays activate, showing all hyphens. This shows that power is on and the system is operational. Wait until both Bluetooth LEDs light up, showing that Bluetooth connection of Master and Slave has occurred.
Note : First press of certain keys results in an alphabetic entry.
“1” enters “B”.
“4” enters “I”
“7” enters “N”
“*” enters “G”
“0” enters “O”
Try “B01”. Both Master and Slave displays should show “B-01”
Try other entries.
Now enter "B15" in the Master keypad. You should see B-15 on both displays. Re-enter B15 slowly. The characters on the Master will display as they are entered. The Slave display will not change until all three characters in a Bingo number are entered.
You should be able to erase mistakes at any time by pressing “#”. Do it, and the above last entry should clear in both displays. However, if you enter less than three characters and press “#”, only your Master display will clear. Thus the viewer at the Slave will not be aware of your error.
That completes the test. Hope it was successful!
Learn More About the Components
Keypad
See https://www.adafruit.com/product/1824?gclid=EAIaIQ...
and http://www.circuitbasics.com/how-to-set-up-a-keyp...
The keys are supposedly wired in a matrix of 4 rows and 3 columns that looks just like the keypad:
{'1', '2', '3'},
{'4' ,'5' ,'6'},
{'7', '8', '9'},
{'*', '0', '#'}
The keys in each row and each column wire together. The 7 row and column wires come out to the keypad's 7-pin header connection. According to the first URL above, the first three pins on the left of my header are the columns, and the following four pins to the right are the rows. However, the two URLs seem to reverse the order, unless they are looking at different sides of the board. I assumed that key “1” defines column 1 and row 1, and the other columns and rows proceed in numerical order. However, I found that the columns and rows do not correspond to the orderly progression of pin numbers at Nano, as given in both URLs above. I can find no reason other than the keypad is wired differently.
The keypad ribbon cable connects to Nano's breadboard 7-pin header without twisting. That header connects to Nano's D4-D10 inputs. I found that the the ordering had to be as shown below for the key presses to display properly.:
Keypad pins (1, 2, 3) connect to Nano pins (D8, D10, D6} in that order
Keypad pins (4, 5, 6, 7) connect to Nano pins (D9, D4, D5, D7) in that order
That definitely works right. The sketches in Step 7 take care of assigning the pin hookup.
Display
As already discussed, there are four alpha-numeric, 14-segment LED display sections These are controlled by the backpack, which steps through each, lighting the appropriate LEDs.
Without the backpack you would have to bring 14 LED power wires to Nano, plus a 4-wire display selection/common return. Those 18 lines would use up all 18 Nano digital I/O pins ( D0-D12 and A0-A5), leaving nothing for the 11 pins required for regular serial (Arduino IDE), software serial (Bluetooth), and the keyboard (7 pins).
With the backpack you need only the two I2C digital wires for control, plus two +5V power/ground wires.
Bluetooth (Shown above)
The HC-06 is a great little module. All you have to do is give it the serial characters you want to transmit and read the serial characters transmitted to it. It takes care of all the Bluetooth operations.
It plugs into a standard breadboard or a PCB socket made from a 7-pin length of female header. The six pins are: +5V power and ground, serial input from Nano RXD), serial output to Nano (TXD), and STATE output which we use to drive the LED that shows when there is a connection of the two HC-06 in Master and Slave.
Battery and Charger
The battery is a “9V” lithium-ion. (In this case, 9V applies more to package configuration than voltage.) It has two cells in series, each cell having 3.6-3.7V nominal output. So battery nominal voltage is 7.2-7.4V. At full charge the battery voltage can be as high as 8.4V. The graph below gives a typical discharge curve and shows how voltage stays up for a long time. The battery has internal protection circuitry which includes a cutoff at about 6.6V (3.3V per cell); Li-ion batteries don't like to be fully discharged, and the rapid voltage drop at discharge end calls for a reasonably high cutoff voltage. Note that the cutoff voltage is a little less than the 7V minimum Nano specification, which allows for the voltage regulator head room above the 5V regulated output. So it is possible that Nano will quit working before the battery does.
The rated battery power output is 600 milliamp-hours. I measured Slave current drain at 113mA with a “B-88” display and Bluetooth connected. (That display is equivalent to the most power draining displays in our BINGO application.) The BINGO session I attend lasts for about 2.5 hours, with 6 games and about 10 minutes between games. I have been powering down between games. After one night I came home, powered up, and waited for the Slave to quit working, which it did 2.3 hours later. I read the voltage and it was 6.6V, so the battery quit before Nano did. It is safe to say that the battery is more than adequate for my purpose.
Here are my Slave current measurements (at 7.2V):
Everything running, displaying "B-88" : 113 mA
(Not a real Bingo number, but is expected average: 7 LED segments on in each section)
Display cleared : 27 mA (Display draws most of the current: 113-27 = 86 mA )
Bluetooth not connected, display cleared : 64 mA
(Bluetooth now transmitting, trying to connect. That appears to be a 64 - 27 mA = 37 mA effect.)
Bluetooth module removed after power-down : 51 mA, after power-up
(Display is all bars. Each bar is 2 LEDs, so expect 2/7 x 86 = 25 mA for display.
so the 26 mA difference is due to Bluetooth.)
Master current will effectively be the same. The keyboard doesn't draw power and the Bluetooth transmissions are very brief.
The charger and charging cables are shown in the above photo. Master and Slave can be charged at the same time. Because of the short cables the charger needs to be plugged into an extension cord. The charger works fine except that one of the LEDS does not turn off when the battery is fully charged; there are similar comments on Amazon about the LEDs.
The charging cables are really designed to clip onto a 9V battery and plug into a barrel jack to power an Arduino Uno or other circuit board. I use them to plug into the charger. But you have to be careful about polarity, as I noted in Step 6 and explain below.
When we connect the charging cable to the 9V charger the voltage at the barrel jack's center pin is negative, not positive like it is if we connected to a 9V battery. The charger and charging cable connectors have the same polarities; they have to for each to accept a 9V battery. So the charging cable connector has to be rotated 90 degrees when plugging into the charger, thereby reversing polarities at the barrel plug. This necessitates hooking up battery negative to the charging jack center terminal.