Electronic scoreboard for Carcassonne boardgame

Preface

As a fan of famous Carcassonne boardgame and technology enthusiast, in one sleeples night I got this idea for one unique (I hope) electro-mechanic project. Main goal was to build electronic device for counting and showing the scores of the Carcassonne players. Normally points are counted with 50 point paperboard using meeples as markers and 50/100 points round tiles. At the very beginning of my Carcassonne career I noticed that this original board is quite limited when played with expansions, and using this board wasn't so conveniet either. Standard gameset suffers a lack of round tiles and especially in strongly expanded games you can easily run out and/or mix these markers as the winning player will have 250 points and more. During the game it's not allways easy to see which players is leading and what is the exact score situation between players. I saw this as a problem, because sometimes it wasn't so clear who is in which round on scoreboard, especially at the end phase of the game. Score situation betweem players may also affect to the selected tactics during the game.

On other, more technical basis for this project was the fact that I haven't been built any electronic project using seven segment displays. 7-Segment are not so widely used in todays modern electronics in these days of LCDs and other display technologies. One reason is that 7-Segment displays are not suitable for portable electronics due to the high power consumption. De facto display component in hobby electronic projects is 2x16 etc. alphanumeric LCD displaymodules. These modules are cheap, quite easy to use and data generation is easy for limited capasity 8-bit microcontrolles. Main weaknes of LCD:s is poor contrast, because display itself is not self illuminating, (led)backlight must be used. 7-Segments are modules which have 7+1 invidual leds arraged in "digital" 8-shape (plus decimal point).

scoreboard2_back.jpg scoreboard2_back.jpg scoreboard3_dark.jpg segments.jpg

Features

-Score display 0-999 points for 1-6 players
-Position/rank 1-n display, calculated automatically
-Automatic gamestate saving to eeprom for the case of accidental power loss
-1x8 alphanumeric LCD, buzzler and IR remote controller as user interface
-External 5V power suply
-Robust solid machined aluminium housing with anodization
-Atmel Atmega168 mcu, 3xMAX7219 7-segment drivers, IRM3639 IR-receiver

Use

The use of this device is very easy and straghtforward. When powered, it will firs scroll "Carcassonne scoreboard" -text and then the main menu is shown. Menu is also scrolling text menu, actions is changed by the player selection button (plus-minus channel selection). In main menu there is only Start-Load-Setup actions at the moment, and setup does nothing. If load action is selected by ok-button (mute), last saved gamestate is loaded and game continues. Device save the gamestate (points and time) every time when point are scored. In the case of new game, partisipating players must be selected first. It's done by points-button (plus-minus volume button). If selected player is in, current score is 0, otherwise just ---. When player are selected, game will start when ok-button is pressed, "Game started" scoll text will appear and time starts running. During the game, scoring is performed for selected player by adding scores (supports also negative) by points-button and then accepted by ok-button. When scored, points are shown on LCD, instead of time. User interface also supports holding down feature for all buttons, otherwise it could be hard to get 50 points etc. When button is holded down, point increase will be accelerated over time. After very first rounds of Carcassonne with this superior device ;) I discovered that it would be very handy to give same points for many players easily, as this hapens quite often during the game. When ok-button is pressed and there is no points on LCD, the last scored points will be shown instead of trying to give zero points for selected player. Power-button of the used remote is used for switching LCD backlight on and off, and it's totally useless feature ;)

Design

Usually 7-segment display are controlled using transistor network, first transistors are used for selecting the digit and second for seleceting the segment. As example, all midle segments in all digits are connected together and without digit selecting transistor, all midlesegments of all displays would be lighted if this line is powered. So, the digit selecting transistor is used to ground the selected digit in common cathode connection. Basically it's possible to control only one led/segment of one digit at the time. Using microcontroller it's possible to change this one led very rapidly to crete illusion of some sort of picture/information in all displays together. In this project, I wasn't so intrested to develop this control logic as it was not the main purpose of the project. Thus I searched other alternatives for the control and I found many nice ICs by Maxin semiconductor. Maxim-ic company is also widely known among the hobyists, because of their hobbyist friendly sample policy. I seleceted MAX7219 control IC and ordered some of them as free sample. MAX7219 is integrated 7-segment driver with digital SPI-bus interface. SPI is widely used low level serial bus between various ICs. There could be up to six players in Carcassonne and each player may have several hundrer points. I thought it's very unlike that one player could have more than 999 points in one game. So I desided to put one three digit module for scores and one digit module for position/rank for each player, it makes it four digits per player. As one IC can drive up to eight digits => one IC for each two players, 24 digits in total. I also needed one standard backlighted paraller LCD-module for user interface. I selected only 1x8 digit module, I thought it must be quite small in physical dimensions, but have big enought character size. Later I thought that 2x8 or 2x16 could be easier when developing menus and other advanced features.

Atmel AVR microcontroller was natural choice as main processor, because I have succesfully used it in many other projects, ATMEGA168 was selected (pin compatiple with atmega8, -48 and -88 controllers). I tried to figure out what would be the most convenient user interface for this device. I made several preliminary designs using different button and keyboard configurations. I immedetially rejected all these, when I suddenly got an idea to use standard infrared remote controller. After this excellent idea, I tried to find small and simple remote controller as possible, which would be solt separetly. My search wasn't so succesfull. Luckily I remembered that I have been bought one very simple remote (with one euro) some years ago from one local low cost consumer electronics store. I also managed to find this item. I had not any previous experiense about using the IR remotes in my own projects, but I soon figured out that my remote uses Philips RC5 IR-encoding. There is many descriptions and sample code in web for using this coding in your own projects, but I saw it easier to find it out directly from the IR receiver (IRM3638) with digital oscilloscope. There was some bugs in IR receiver connections, so it took more time to find it out than digging out the IR-coding. Other components in electrical design is yellow leds to indicate selected player and buzzler to give better "touch" for the user. Later I discovered that some sort of PWM volume control would be nice as the buzzled seems to be too loudy.

design_ele1_schematic.jpg design_ele2_layout.jpg design_mask.jpg

Manufacturing

Mechanics design was made with Catia V5 CAD-software. Machanical design and manufacturing is my main profession, so it was clear at the beginning that the housing of this device will be machined from solid aluminium. I used electronic board design as background for mechanical desig. All used components must be modelled to ensure correct mounting. When the mechanical design was finished I proceeded to manufacturing phase. Manufacturing was made with Makino A55 4-axis horizontal machining center. We use this same Catia software for machining simulation and off-line programming (CAM - Computer Aided Manufaturing). NC-machines are programmed using old G-code programming language. CAM-softwares generates this code and it's then transferred to control system of the machine. Our machine uses Fanuc NC-controller. Machining was made in two main phases, first part is main shape machining from the back and then frontal face cut outs for displays and leds. At last some outer roundigs and thread for mounting holes were made. Backplate was machined from 1,5mm anodized aluminum sheet. Also the main body of the case was anodized later (matte gray surface finishing).

machining1.jpg machining2.jpg machining3.jpg machining4.jpg

Progressing of the machining process

plate1.jpg plate2.jpg plate3.jpg plate4.jpg

Laser cutting of the front mask

I have one small XY-type laser cutting machine in my use...among the other nice resources :) This machine is demo/test machine of our company www.kilt.fi Machine itself is Italian made SEI Eureka, it's a 30W CO2 laser cutting/marking machine designed for non-metal materials (paper, wood, plastic etc...).

First I scanned original Carcassonne box, some other pictures and all wooden figures. Then I handled pictures a litle bit and transformed them to vector graphics. Outlines for cutting data is simply reduced 2D projection from Catia CAD, saved in dxf-format. Combining of pictures was made with Inkskape software. Final picture was printed on normal office paper and cut with Eureka. I wanted dark films to hide 7-segment modules to get more professional look. I found a roll of "sun shield film" which is used in car windows (by teenages, at least here in Finland). Laser cut this film very nicely and I got my films very easily. Paper and film pieces were tied together with heat laminating machine and then manually cutted to final shape.

laser1.jpg laser2.jpg laser3.jpg mask1.jpg

You wanna get one?

At the moment I don't have any plans to commercialize this "product". Fact is that this project is done using very professional methods, materials and technologies. Because of all this, the production cost is more than 100 euros each and thus a selling price would be no less than 200 euros, which is quite much I think. Of course there is many things which could be done in much cheaper way, but it would require complete redesigning, programming and prototyping, and I think I don't have time/motivation for that. But I have to say that you would get something with this high price, device is very very high quality, robust and easy to use and it really makes the job in this designed purpose. Machined metal housing is something you don't find from your low cost "made in China" -consumer electronics :) But anyway, if someone is intrested to build your own device or even buy a complete set with given (estimated) price, don't hesitage to contact me.

Design, manufacturing and programming by author http://www.joker.com