Arduino Projects

our Arduino, connected with Ethernet, the barcode scanner, and an RFID tag

My experiments using an Arduino - a small, easily programmable computer - began when I found a tutorial on how to build a barcode scanner with an Arduino. The resulting book lending system is described below.
Future plans include a visitor detection device and a control device for our group's tabletop soccer.

Book Lending System

our group's book shelf

We have several books at our institute that my colleages and I can lend whenever we want. But we didn't have a lending system and thus often somebody was looking for a particular book in the shelf and couldn't find it. Thus, we decided to build a small Arduino-based system for scanning and storing the book's barcode whenever someone is lending a book.

Many thanks to Daniel for writing the Android and iPhone apps and for implementing and refactoring the source code to support arbitrary EANs (including lookup!) and to Jürgen for designing the web application.


  • An Arduino. We decided to buy an Arduino Ethernet, since Ethernet is readily available and with a POE module we have no problems with power supply.
  • A portable PS/2 barcode scanner. Some colleague had a rather old one lying around.
  • A computer for running the database and the web application.

The barcode scanner is connected with the Arduino and the Arduino with the Ethernet (as is the computer ;-).

  • An IDE for developing the client and server application. I prefer Eclipse, which works fine for Arduino development.
  • Some clever code to decode the PS/2 protocol of the barcode scanner. Our code is currently based on this tutorial, though we are planning to substitute it by an interrupt-based solution.
  • (or is this hardware?) A list of user barcodes. Can nicely be generated from a file "names.txt" containing one name per line using barcode -e "code39" -i names.txt -u "mm" -p "110x297" -t "2x10+5+5" -m "5,5" -c | ps2pdf -sOutputFile=names.pdf -

How it works

The user scans first his or her personal barcode and then the barcode of the book. The Arduino then sends a request containing the user name and barcode to the server. The server retrieves information about the book from its database, or, if the book is new, from WorldCat or our libraries OPAC using the corresponding scraper from BibSonomy. The book's metadata and the lending user and current date is then stored in a database. Success and error is then signaled using audio files played on the computer (which stands nearby the book shelf).

the web application

Who lend which book can then be seen in a web application:

Future Plans

  • Extended search functionality for books in the web application.
  • Use the RFID technology from the Ubicon platform to identify users. We have already connected an RFID tag with the Arduino to collect usage data for training the classification algorithm.
  • Integrate the "recently lend books" list into Ubicon's GroupRadar.
  • Allow users to scan and store arbitrary barcodes. (done by Daniel)
  • An Android/iPhone app as scan client for the lending web application. (done by Daniel)
  • Include thumbnails of book covers. (done by Daniel)
  • Protect the Arduino with a case.
  • Send a tweet when a book is scanned. (done, see @KDEArduino)
  • Signal success and error using LEDs at the Arduino.
  • Integrating BibSonomy as backend.