Spaceport is inspired from the great Carontepass , although it employs similar hardware and paradigms, the software has been fully rewritten and hardware aspects have been refined and redesigned.
Spaceport is designed to be an access control system by means of low cost RFID tags. Developed by and for Surrey and Hampshire Makerspace, it is ideally suited for all makerspaces and similar.
It’s design adheres to the following principles:
- Open source
- Open Hardware(ish)
- Low cost
- Self contained, whilst exposing actions for other distributed applications to interact with
- Easy to implement and use
Spaceport is made of several components, employing the same client-server paradigm as Carontepass; clients consisting of WEMOS (ESP8266) wifi micro-controllers, which reads RFID tags via a RC522 RFID reader and controls a lock after authorisation from the server via a REST API request and response cycle.
The client connects of a Wifi network of the administrator's choosing to perform it's API access requests.
The Client consists of 2 PCBs (Spaceport controller and Spaceport reader) these allow mounting of the off the shelf PCBs (Wemos and RC522), power management (a 12V DC power supply is the only power input required). Control of the door lock is via MOSFETs (configurable for a fail open or fail closed door lock) and connectivity between the controller and reader (RJ45).
The PCBs are designed in EagleCAD and are available in a separate repo here: PBC Repo
The choice of 2 PCBs with RJ45 connectivity was taken so that the controller can be easily mounted in a location that cannot be accessed (and therefore not tampered with) whilst the reader can be mounted in a more open location. RJ45 was chosen due to it's low cost and relative density of connections.
The controller and reader both have a 3D printed case and laser cut (although could also be 3D printed) lid. The casing has been designed in the free to use software Autodesk Fusion 360. Designs are available here: Controller Reader
The client firmware has available in a separate repos here: WEMOS firmware repo
The server Spaceport application is developed in the Python using the Django web framework and the Django REST framework.
There is very little custom UI, Spaceport relies heavily on a tuned configuration the Django admin interface.
The core of the data model is the following: Users, Tags and Security Nodes (The first 2 are self explanatory, security node is to be considered as a single client, as described above). A user may be active or inactive, they may have a number of tags assigned to them and the user can be given permission to access to a security node.
A client can make an API request containing it's security node ID and Tag making the access request to the server for authorisation. The server will check the user the tag is assigned to and check if the user has the permission to access the security node, it will then respond to the client to grant or deny access.
There is also an API endpoint to register new tags, ready for a Spaceport administrator to associate with a user.
Spaceport emits all valid access requests to a MQTT server of the administrators choosing, this is to fulfil one of the core Spaceport principles of being self contained, whilst exposing actions for other distributed applications to interact with ~ this allows anyone to create all kinds of weird and wonderful applications that react to Spaceport actions without having to touch the Spaceport application (We have visions of all kinds of bells, whistles and das blinken lights when users enter the makerspace).
Currently there is simple application that emits states to a Slack channel as Surrey and Hampshire Makerspace use slack as one of their communication mediums, repo for the slack app here: Slack Client repo
The Spaceport server was developed on an Orange Pi Zero due to it's low cost and inclusion of ethernet connectivity, but it could run on just about any linux computer (Including Raspberry Pi).