My first post about embedded is an old project. In my last year of highschool (2012 – 2013) we had to make a scoreboard for the gym in our school (Gitok). We did this project with the whole class (6TEE). The members involved were Matthias, Steven, Nick, Kristof, Stijn and me! We worked in groups of two people. Every group had another task
Matthias and Steven: (Embedded): The actual control of the displays
Nick and Kirstof: (Hardware) The frame, displays, safetyglass, …
Stijn and me: (Software) We had to make the control system.
Stijn and me choose very early to use a tablet as control system. We choose for an Android tablet because they were a lot cheaper 🙂 (And because f*ck Apple!!) But we had no experience in programming software (we were young 🙂 ). After a lot of research we found AppInventor. A simple tool to program apps for Android! This is the print screen of the “Form” of the application! You can see a toolbox where there are UI components! This is a print screen of the code. At the moment everything is “closed”. But every block is an event or a method / function. The programming environment works with puzzle pieces that fit in each other, somewhere further there will be an example!
Because AppInventer didn’t support resizing and such we made two apps one for a phone and one for a tablet! This went very fast! It’s a really simple tool (Youngster proof). I really advise it for users with no programming knowledge! The biggest challange was to get the bluetooth working so we could communicate between the tablet and our Arduino UNO. On the internet there are a lot of tuturials about it and after some testing we got it working!
So the next part was getting our interface done. Because at that time there wasn’t support for tablet we managed to get it working with a hacky solution. Now there is a new version of AppInventor and I think they added better ways to handle bigger screens. Making the UI is really easy, works the same way as WinForms. Just click and drop! It gets a little bit difficulter when you want stackpanels and such but there are container controls for this purpose. Little example of code behind:
This part of the code will be executed when you press the button! It’s really easy! Just add the ScoreHome with one and than call a method that will take care of the rest!
So this is our method. It will be used every time the score value for the home team needs to be changed. It also change the correct value in a our list. This list is the one that is send by Bluetooth! And last, change the text on screen (UI)! As you can see this is really easy! And with some tutorials you’re ready to go 🙂
Arduino UNO
So sending data with bluetooth from our tablet to a bluetoooth device is done. The next step was to get the data to our Arduino Uno! With the use of a simple bluetooth reciever. There are many in the field! The most popular is the HC-06! We also used this one (Belgium store: http://shop.dwengo.org/nl/bluetooth), there are also alot to find on eBay! This device converts the Bluetooth signal into a RX/TX signal (serial). With the UART on the Arduino you can read this signal. On the UNO they are on pin 0 (RX) and pin 1 (TX). If you simple connect the Arduino with the HC-06 (remember to cross the wires RX->TX & TX-RX) and use the Serial.read you are done 🙂 Don’t forget to chech if there is data available (Check this Arduino page: http://www.arduino.cc/en/Serial/Read). We printed the values to the serial monitor: And it works! So as you can see with the aid of AppInventor it’s quite easy to control your Arduino with Bluetooth! We never taught we would be able to do this without the knowledge of any Java!
Connecting two Arduino’s together!
We needed to connect the Arduino in the scoreboard together with the one in our control unit. We could also put the Bluetooth device in the scoreboard but than the range of the Bluetooth adapter wouldn’t be sufficient! The cable between the two Arduino’s needed to be 100 meter(?). I first tried to use the serial protocol. The Arduino UNO only has only one hardware UART but with a external library (http://www.arduino.cc/en/Reference/SoftwareSerial) you can use every pin as “serial” pin! Still I couldn’t get it working. When I tried it, it only worked when I didn’t use the Bluetooth module a.k.a. if I dindn’t use the hardware serial (UART). So next step was to get 2 Arduino MEGA’s they support more than one UART. However the bluetooth module didn’t work on the MEGA. NOTE: At that time we had a XBee shied + BluetoothBee, later we found out that the Xbee bluetooth module was faulty! So I’m pretty it works with two Arduino MEGA’s with the UART’s. However I changed to I²C as communication protocol! Big problem I²C is used for short distances (Max 1m), we needed hundred times more. I tried it it with an UTP cable with a distance of 100m and guess what it worked! So I²C can be used for long distance (We tested max 100m), little note our data rate was rather low. We sent 8bit every second and a UTP cable is a good quality cable!
Arduino MEGA
The Arduino in the scoreboard recieved the values from the UNO with I²C. Btw we used the wire library for the I²C communication (http://www.arduino.cc/en/Reference/WireWrite). The Arduino MEGA than processed the data. As example if the value for the horn is “1”. A MOSFET will switch the horn on. The most important was ofcourse the score. They first splitted the numbers in two (So 45 => 4 and 5). Than they used a BCD decoder to save some pins of the Arduino MEGA. With a BCD decoder you only need 4 pins to use a 7 segment display! So the Arduino calculated wich pins had to become high. The BCD decoder has 7 outputs one for each segment this outputs where connected to the mosfet that powered the led strips!
Displays
We used led strips for the displays. This was a lot cheaper than buying huge 7 segment displays.
Pictures
Promotion movie:
Final words:
2 years ago we finished this project, everyone had good grades 🙂 Conclusion is that App Inventor is a real good tool to use as a “non software programmer” (Without C# / Java / C++ knowledge)! It has many great features such as Bluetooth integration but it’s also very simple to connect to a database and save values! Our class two Bluetooth module had a reach of 25m (which is a lot more than the 10m specified)! I²C can be used for bigger distances than 1m. It’s not really meant for it but with a low data rate and good cable your good to go!
The scoreboard is used in the gym of Gitok in Kalmthout!
We where sponsored by Zaalvoetbal Kalmthout (http://kzl-kalmthout.be/)
Hello I would be interested to remake the project , can you help ?
LikeLike
In what part are you interested?
Do you already have displays or do you intend to make them yourself also?
Sincerely,
Brecht
LikeLike
I’m going to use the LED strips as you did yourself.
Did you use the shift register 74HC595?
However, the most difficult part is the code.
LikeLike
Can you help me?
LikeLike