One of my first projects in Archaeoinformatics is the Kölner Dome Project, where I want to develop a RTI Dome based on a very basic prototype, that we build after instructions from the internet. The first part of this project wants to create a new user-friendly and adaptable controlling unit. In this article I write about the first step towards that goal.
Since I started my job at the University of Cologne, we started talking about a technology called Reflectance Transformation Imaging (short: RTI). I explain the technology in more detail in a special article (still in progress), and you can get further information on the website of Cultural Heritage Imaging. Basically, it creates a 2D image file, where you are able to interactively change the lighting direction or manipulate the results with different filters in order to see the smallest details, that otherwise are difficult to detect.
This technology is around for a while now, but about ten years ago, the first RTI Dome was build. The dome is a hemisphere with pre-installed lights in it, that are distributed more or less equally. On top, there is an opening where you can put a camera in, in order to get photographs of objects that you have put inside the dome. In contrast to taking these RTI images manually, a dome saves a lot of time, as it automatically lights the object and shoots the camera. By simply pressing a button, you can get a whole dataset that you can edit on a computer later.
On hackaday.io, there are instructions online on how to build a very affordable RTI dome. It uses a plastic hemisphere, 64 12V LED lights and an Arduino-based controlling unit. A while ago, we build this machine according to the instructions. It basically works fine and we were able to achieve pretty good results. I am very unsatisfied with the controlling unit however. So, one of my first projects in Archaeoinformatics is the creation of a better controlling unit.
What should a controlling unit do?
The basic function of the controlling unit is to cycle through all the LED lights in the dome (so to turn them on and off) and to trigger the conntected camera while every single LED is lit. Some basic functions added to the Arduino controlling unit are adjustable delay and LED times, the ability to trigger the camera via infrared and to start a kind of white-balance program, where individual lights of the dome are turned on and off in order to be able to find the correct position and light intensity of the object and camera options.
As I said before, the basic controlling unit is able to do that, but it is not very comfortable. My general plan is, to build a new controlling unit based on a Raspberry Pi that is connected to a 12V relais (in order to control the 12V LEDs) and a touch screen to have a more userfriendly interface. The whole unit should be held together by a self-printed plastic casing. Also, instead of hard-wireing everything, I want to have full control over the application through the software, so I don’t have to worry which buttons or triggers to install. The unit should have the touch screen where all the input happens, a USB connector where I can attach either a camera directly or an infrared trigger and maybe, if this will not get too complicated a HDMI input, where I could stream the feed of the camera onto the touch screen of the controlling unit. We’ll see about that.
Where to start?
So the first thing I did, was to buy all the basic necessary stuff: a Raspberry Pi (henceforth: Pi), a compatible 7″ touch screen, a 16 channel 12V relais and a couple of cables, connectors and LEDs to test the controlling unit. The first thing I wanted to create was an 8 by 8 LED matrix in order to have something to test the initial software, as a RTI Dome is nothing more than a very fancy LED matrix. The one we have at the office is an 8 by 8 matrix, adding up to 64 LEDs. I soldered 64 very cheap LEDs together to create that matrix and connected it to the Pi.
A Raspberry Pi is a wonderful thing actually. It is a very small computer based on Linux and it has something called the GPIO. This GPIO is a double row of pins, where a couple of them have distinct functions like to provide a 3.3V output or to connect the touch screen. A lot of the pins however are Input/Output pins, which can be accessed and controlled by the software. So, after installing a very simple and basic Linux system onto the Pi, I connected my 8 by 8 LED matrix with the controllable pins.
The last thing that remains to do was to code the software that could turn the lights on and off. This is done by a coding language called Python. After some initial problems, I was able to light certain LEDs on that matrix by turning pins on and off. After some refinements, I wrote a double loop, where every single LED of the matrix get turned on and off one after another. The result can be seen below.
Where to go?
As a next step, I would like to activate and use the touch screen, as this ultimatively should become a graphical user interface. Basically, I want to see a button and if I touch it, the LED matrix should light up as in the video above. The other thing to do, would be to connect a camera via USB with the Pi and trigger it also, as soon one of the LEDs is lit. We’ll see what I will achieve first.