Simple Card-based Access Control

This simple project demonstrates all main techniques that are important to building access control solutions with LTPS.

Similar projects worth following
This project implements a very common access control device. The LTPS is equipped with Tibbit #08 (clock/data and Wiegand interface). It gets card codes from an external RFID card reader. The project lets you save user names and their ID codes into the database, as well as verify the cards you read against the records of the database. When you read a card which ID code matches any ID code from the database, the terminal "grants access" (the blue LED turns on). If this ID code has no match in the database, the terminal "denies access" (the red LED turns on).

Some other distinctive features of this project:
- The project utilizes a full-featured embedded SQLite SQL database engine.
- The web interface shows card reader events in a real time.

On-board Software

  • SQLite database engine to store cardholder's info and events;
  • Node.js V6.x.x (pre-installed during production)

GitHub Repository

Name: wiegand-demo

Repository page:

Clone URL:

Updated At: Mon Oct 10 2016

Node.js Application

  • The app utilizes the sqlite3 module as a permanent event and cardholder data store. The module is a serverless, self-contained SQL database engine which does not need any other software to be installed on the device.*
  • Express and support web interface functionality.

* The module is written in C++. A precompiled version will be installed from Tibbo's GitHub during the app installation. If you want to install the module from NPM, you should also install build-essential on the device.

Web Client

The web interface includes three tabs:

1. Add a user tab

To enroll a user:

  • Click READ CARD;
  • Read a card; the ID code from this card will be displayed in the User ID field;
  • Fill in the First Name and Last Name fields manually;
  • Click ADD USER to make a new record in the database.

2. User List tab

This tab displays all the records you've created. It also allows you to delete user records.

3. Events tab

This tab displays access control events on-the-fly.

  • 1 × Tibbit #20 (9 terminal blocks)
  • 1 × Linux TPS3 (LTPS3) board
  • 1 × TBP3 enclosure
  • 1 × Tibbit #10 (power supply)
  • 1 × Tibbit #08 (Wiegand & clock/data port)

View all 10 components

  • 1
    Step 1

    Configuration and Installation

    • Define the configuration in the LTPS Web Interface
    • Login to the LTPP3 board from the SSH client
    • Install NPM and other tools as required. Git-perltools are needed to install the precompiled sqlite3 module from GitHub.
    • Install the app:
    • git clone
      cd wiegand-demo
      npm install .
  • 2
    Step 2
    • Launch a simple app called app0 :

    node app0
  • 3
    Step 3
    • Read an RFID card. Its binary code should be printed in the console.
    • Stop app0
    • Launch the main app:

    node app

View all 3 instructions

Enjoy this project?



Dmitry Slepov wrote 01/25/2017 at 14:04 point

The TPB2L variant is too much different. It's based on Tibbo C/Tibbo BASIC and we decided to sell it as a complete AggreGate + TPS2L solution:

  Are you sure? yes | no

Paul H. wrote 01/23/2017 at 17:14 point

Neat! Could you use the TPB2L box instead? It would look a lot more professional in that enclosure (though none of the size 2 boxes seem to have Linux as an option).

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates