Arbalet St-Jean (en)


Introduction about the Arbalet Saint Jean project

The innovation club’s Arbalet project, animated by Patrick Felix and Yoan Mollard, offers the creation of an animated and interactive pixel wall following a simple rule ; « design, experiment improve and even innovate» by offering a project for the Saint Jean train station which interest the SNCF. Some actors participate to the project to carry on it : Bordeaux Université, the SNCF, obviously IUT’s departments and of course Arbalet.

The project was born because of a very simple idea : the conception of an animated LED table ; giving the project’s name : Arbalet for Arduino-Based LED table,

The pixel wall is composed of LEDs and has to follow the idea developped by Arbalet : make pixel-art in an animated, artistic, estetic way and destined for enterteinment (The wall must offers some games). The project must be also programmable and « re-programmable » to improve itself durably. Consequently, we will have to follow some security constraints, (the wall is installed in a public place and will see 30 000 persons a day in front of it), but also dimensional constraints etc. In the end, the wall will mesure 1,5 meters by 2. The objective of the club is to learn the hardware programmation (here by arduino) in a lucrative way. So, each week, a « session secretary » will have to resume all the things that happenned during the session, to demonstrate the project’s progress (he also must render the same report in english to make the informations more visible),

A fonctionnal prototype of the project has to be delivered before Chrismas at the train station to be tested. Some improvements will be inject in the project thanks to another prototype which stay at the department and allows us to work on it.


Session 1 :

We had to define some technology following a few questions :
1) What’s the difference between a microcontroller and a microcomputer ?
A computer deals with informations thanks to an operating system and its components, especially the procesor.
A microcontroller is an integrated circuit (it has his own RAM memory, his own memory etc.), he is less expensive but is less performant than a processor and havn’t got an operating system because of his little memory capacity.
2) What’s an Arduino, how to use it, what is the philosophy of Arduino ?
Arduino is a society which make printed circuit boards with a microcontroller. All these components are free hardware (exept the microcontroller), which means we can modify the system to use it like we want to use it. So it has some applications : domotic, electronic etc. The watchword being the easy use of it.
3) What’s a SPI or I2D protocol ?
These are protocols which define the way the information is transmitted betxeen the systems.
-The SPI protocol use 3 cables : 1 clock (which give the tempo for de data transmission), a cable used for the transmission between the master computer and the slave computer (the master can communicate with one slave at once), and a cable of data transmission between the slave computeur and the master computer (the slaves cannot communicate between them).
-The I2D protocol has the same function than the SPI protocol but only use 2 cables : one cable transmit the tempo and the information of the master computer to the slave computer. The other cable is used to carry on the information from the slave computer to the master computer. This protocol also offers a data synchronization.
4) What’s the Daisy Chain technology ?
The Daisy Chain is the physical data transmission between two computers in a same chain (thanks to cables). There is a cable from the computer 1 to the computer 2, then from computer 2 to 3 etc. So the computer 2 can communicate with the computer 5 for exemple.
5) What’s a color space ? What’s a RGB and HSB color space ?
A RGB color space is a representation of colors in a synthesis system in a 3-dimensional benchmark.
HSB is a coding system of colors according to their values in the colorimetric circle.

  • H : browsing the colors in the spectrum
  • S : manage the saturation
  • B : manage the brightness

6) What’s the ohm law ? What’s the difference between intensity and voltage ?
The ohm law is used in electronic to calculate the circuit’s voltage thanks to the relation U = R*I, with U the voltage, R the resistance and I the intensity of current.
The circuit’s voltage is the difference of « electrical level » between the dipol electrical termianl (for exemple between the + and the – of a battery), the voltage is fix and do not change ina same circuit. The intensity is the « debit of electron » in a circuit, when a circuit has some dipols which consume electricity, the « debit » must be logically more consequent.
7) What’s the IoT ?
It’s basically the exchanges of informations in systems link to Internet (especially thanks to the Sigfox and LoRa technlogies because these technologies present low energy consumption).
8) What’s a computer data bus ?
These are digital converter which are used to transmit data in a same digital system. So it is used to communicate.
9) What’s LPWAN, Sigfox and LoRa ?
These are protocols of wireless communication with low energy consumption (and so, with low debit of data) which use antennas too.
10) Define a bit and a byte :
A bit is the contraction of binary digit which means binary number, indeed, a bit can take only 2 value : 0 or 1. It’s an basic element in comuter science. A byte is a « group » of 8 bits. A data is always coded on 1 byte at least, never coded on « just » some bits.
11) Definition of analog signal and digital signal :
An analog signal is a continueous signal which varies over time (it contains an infinity of values). A digital signal only contains discrete values coded in binary (so it is sometimes less accurate than an analog one). The conversion between the analogic signal and the digital one is did by an ADC (Analog Digital Converter). The signal will pass through 3 steps : the sampling, quantification and coding.
12) What’s the imperative programming VS object-oriented programming ?
We do imperative programming when we manipulate types of abstract variables, it consist to organise fonctions of the program. The object-oriented programming is destined to create objects in the program and is recognized by the organization of objects in the program by the mothods used on these objects (thanks to classes especially).


Session #2

Simplified functionning

We will link the LEDs of every pixel using relays, then link those relays to a mainframe computer.

Regarding inputs/outputs, the peripherals (eg. a joystick) would be linked to the mainframe, which would in turn order the micro-controlers, themselves powering the LEDs.

Functional analysis

1. Use case diagram

We have three users groups ; we are interested by the interactions they can have with the Wall.

  • Travellers
    → Play
    → Watch
    → Comment
  • Internet users
    → Comment
    → Update
    → Publish new animations
    → Simulate (before publishing)
  • SNCF tech support
    → Diagnose

2. Main topics

2.1. LED & Alimentation

Multiple types of LED exists, 3V, 12V or 220V. Because a tension of more than 50V is dangerous for humans, we will not use more than 12V.
LEDs are sold either in RUBANS of 30 LED/m, 50 LED/m or 60 LED/m.

Regarding the alimentation, we need to convert 230V~ in 12V-. We also need to be sure that the intensity of the circuit will never be more than 2A (fire risk).

2.2. Mainframe

The ERP (Établissement Recevant Public) defines five levels of security regarding arsons, from M0 (unflammable) to M4 (easily flammable).
Firstly, we chose to build the mainframe in fireproof wood (M1) ; but the delegate of the GMP department (Génie Mécanique Productique), which will build it, has recommended an alloy of zinc and steel, or stainless steel instead of wood, because this is what they are specialized into. Also, stainless steel doesn’t need to be painted, but is more expensive.

He also recommended the use of aluminium for the grid pattern between the pixels, and we are still unsure of the position of the main computer.

2.3. Interactions

Comment l’utilisateur va-t-il intéragir avec Arbalet ?

How will the user interact with Arbalet ?

We thought of joystick or a console gamepad. These are cheap and easy to handle both for us and the user, but they do not add to the design of Arbalet.

A touchscreen tablet could also be used to choose the animation, etc. The thouchscreen tech is fragile though, which can become a problem in a train station.

Leap Motion might be interesting ; their design and operating make it a really futuristic object which would fit very well the wall. However, the prerequisite are important ; Windows 7+ or Mac only, 2GB of RAM, and an i3, i5 or i7 core.

A Wi-Fi Acces Point with a simplified internet interface could be good too. Easy to create, it permits to anyone with a smartphone to connect to the Wall, without needing to download anything, which is always a good thing for the user. It could, for instance, let the user choose the animation they want to see.

2.4. Controling

The wall will be controlled by a Raspberry Pi (computer equiped to interact with micro-controlers). Raspberries run under Raspbian (Linux), and have a GPIO port (General Purpose In Out) to communicate using the daisy chain architecture.

Every micro-controler would be equiped of 4 LEDs and would have a unique ID to able the Raspberry to communicate with only one of them at a time.

2.5. Website

The website could allow the users to modify their own programs or to publish them on Arbalet’s database to make them usable in the station. It will have an area to edit the code, a difficulty setting (to use a version more or less simplified and high-level of the API), and a simulator to try your code at home.

Published programs will be sent to the moderators, which will then test them, and either accept or refuse them. From this point onward, it will be possible to play them directly on the Arbalet Wall in the station.

Next time ...

We are going to write the bill of specifications to GMP and meet them to get their opinion on the project.


Session 3 :

For this third session we have to verify the good coherence of the specifications, conceived/designed by the circuits Arduino of which a traffic light as well as to visit the DUT GMP which is going to conceive the material part of the project Arbalet St-Jean.

I. Check of the specifications

We had the right in an explanation of the specifications with its constraints :

  • Definition of the main function (MP) and the forced function (FF)
  • MP: contain the rectangle which contains pixels
  • FF: resist the heat, be able to open for the maintenance
  • Criterion: which is going to define the title, to put it units
  • We added things in the board “Characterization”

But also of a large part of the list of materials after our research work:

  • Outline of the zinc-plated steel armoir (resistance fire: M0)
  • Inside with a layer of aluminum ( M0)
  • Place LEDs in Polycarbonate ( M1)
  • Box of the same width as the screen and the length of that of the bulletin board to place the supply below the bulletin board
  • Supply connected with a wall grip

II. Use of circuits Arduino

We had “carte blanche” to understand and create a circuit via Arduino. A group in had the idea to create a traffic light by means of leds three (red, yellow and green), as well as a sound alarm system for partially-sighted persons thanks to a buzzer. Here is the final result :

On travaille sur la partie #Arduino au #DutInfo @arbalet_project @ClubInnoUB

— EL QUEBAS (@hellamphi) 19 octobre 2017

III. Meeting with the GMP for the material part

To finish we went to meet the students of the DUT Mechanical Engineering and Production who are going to conceive the material part of the project Arbalet St-Jean thanks to the specifications realized earlier.

Collaboration entre #DUTinfo et #DUTgmp pour la création du mur de pixels @arbalet_project @ClubInnoUB

— EL QUEBAS (@hellamphi) 19 octobre 2017

We finally arrived at a point all right on the assembly of the garlands of LED. We finished the interview with the test of a garland in the good ladder via a battery for the supply. See you next week !

Mise en pratique de la guirlande des LEDs #DUTinfo #DUTgmp@arbalet_project @ClubInnoUB

— EL QUEBAS (@hellamphi) 19 octobre 2017


"Bonus" session : Arbalet 127

Last Wednesday (22/10), we were invited to participate to a programming workshop about the Arbalet 127 wall at the FabLab 127° at Cap Sciences.

It was a great opportunity to discover how programmers of any level can enjoy the playful and interactive aspects of the wall of pixels.

Yoan started by explaining the functioning of Jupyter Notebook, an interactive programming environment which allows to run easily pieces of Python software. This Notebook as well as the programming language used allowed the present beginners to be able to run quickly and easily the code they were producing.

Yoan teaching speech was done to help them to create and run more and more complex scripts. It had been achieved by introducing new features (like delay, colors or loops). For example, they displayed a three stripes flag, then a delay to display it progressively, then a gradient.

This amazing meeting allowed us to observe people enthusiasm about the programming and the pixel wall, thanks to Arbalet API. No matter they were beginners or advanced, the programmers had fun to create animations during the two hours meeting.


Session 4 :

We have, for this session, really gone into the heart of the matter: the programming of our our long-awaited strips of LEDS.

Our team, cut in groups of 2, continued to manipulate microcontrollers Arduino with as objectives to create animations with a strip of 20 LEDS.
On the agenda coding of Rainbow, Snakes, concentric circles and alot of other animations more colored than the last.

This session, which always takes place in the good mood, aims at familiarizing us with the Arduino equipment with the aim of the programming of a whole wall of LEDS.

We also visualized the data signal driving the LEDS using an oscilloscope. It is based on SPI protocol which normally uses 3 pins: MOSI (master to slave) MISO (slave to master) and CLOCK (clock which tells when a bit must be read on data lines). Master is Arduino, it drivers LEDS which are slaves, so we don’t need MISO. The oscilloscope allowed to display MOSI (yellow plot) and CLOCK (blue) as well as decoding sent Bytes driving LEDS (pink).


Session 5

This session, we had for objective to mount the electrical equipment of our wall, which means that we had to assemble our LEDS but also to think about the organisation of our software used to create the animations.

We then decided to divide in two teams: one worked of the hardware while the other dealt with our software.

Software team

Even if they weren’t many, our technicians first of all created a unique sequence with all our animations created during the last session before studying the general functioning of our software:
It needs an interface which, when used on a program created by a user, will work only if precise rules are respected. This way, the user will know what he has to do and dodge lots of bug risks!

Hardware team

Even if our workspace was not really… generous, our hardware team did not waste its time!
Our goal being to create our electrical equipment, we had to, first of all, strip our cables to supply our LEDS in energy. But how can we link all theses cables to our power source?
We just need to lower their number with our WAGOs! As you can see right after, these objects allow us to link several cables and by doing so to reduce - consequently - their number.

Finally, our team serially linked our LEDS bands, before finally linking them to our command card Arduino.

Combining this to the result of our software team, we were glad to see a conclusive result!


Session 6

This session is an extension of session 5, in fact during this session we have applied or kept doing what’s we had start during session 5.

Software Team

The software team job’s was to implements the sequencer of the twelve animations, implements a fonction allowing user to use RGB as a color, and to convert that RGB color to an HSV color. Also we create a method who can reset the matrix of pixels.

And for a part of us it was their first step using Github

Equipe hardware:

Our team hardware finished during the session the assembly of the LEDs to obtain an assembly of LEDs of 15*20 to test during the next sessions the created animations. However the assembly SPI was modified. Previously the signal SPI was generated by the software, it is now generated by a constituent of the map Arduino. The signal SPINNAKER is a high-frequency signal, this signal being previously uttered by the software slowed down that this because the software was monopolized by the generation of the signal. To cross the signal SPI on the card Arduino thus relieves the software and thus allows a better efficiency.


Session 7 : Start of the final assembly

Hardware : The GMP department having finished the building of the aluminium structure that will host coloured pixels, it is now time to assemble and wire them. There are exactly 226 screws and 120 electrical connections to establish!

Software : While the first are starting the assembly, 6 other sutdents are terminating the first basic animation patterns.

Besides, it is decided to reproduce the same typical animations being the identity of all Arbalet projets: the asynchronized color wheel (swipe) as well as the blue-white flashes (lagoon). These animations are part of the ArbaSDK, which is the Python SDK for Arbalet project? However in our case, hardware and software are different, we are programming in C++. So we have to re-implement these animations. But the job is more difficult than it looks: Python (and the Arbalet SDK) owns a bunch of great tools to make simple the creation of new color patterns. Thus, on this project, it is necessary to think twice to get the same resultvisually speaking, … but with a different code!

A team of filmmakers joins us to shoot a short movie announcing the project. The trailer is now online!

Shipping and showcasing in the train station

On December, 18th, the teachers, Arbalet Living Lab and technical team from SNCF carried and plugged the Arbalet Saint Jean wall in the main train station of Bordeaux. This type of work requires the certification of a dedicated organism which controlled the device the same day. Check out all the pictures on Twitter.

The wall being shipped and showcased in the train station hall, students will continue working on an “unbodied” copy of the wall available at the university. Thy will bring interactivity to this Pixel Art wall in future sessions.


Session 8

Thursday 21 December 2017, it was the last session before the Christmas holidays. We had 3 groups spread over several activities to interact with the wall. In general it was games. One group took care of the code allowing the connection via Bluetooth, from the player to the game. The second group had chosen to make a Snake, and the last to make a breakout.

Bluetooth: this will be the basis of interactions. The Bluetooth option will interact with the developed games. We started to wire the Bluetooth module so that it could communicate with the Arduino. So we chose to take a level shifter to convert the high state of the signal from 3 volts to 5 volts. To be able to code with the module, we had to download the library. After that, we started working on it. We also downloaded a Smartphone application that replicates a joystick, which we managed to connect with the module. Only we fail to correctly translate the received signal.

Snake: the second group chose to work on the game snake. But there are some errors due to pointer problems.

Brick breaker: the last group makes a breakage brick. There are still some problems to solve. But there is still the moving ball (which bounces on the edges), the bricks that disappear when the ball passes over and the racket.