Create a working Passenger Interface Unit (PIU) prototype.
Accept magstripe fare media
Accept RFID fare media
Accept QR fare media
Communicate back to DIU (via RS232 connection)
Show DIU messages to rider
Communicate fare media back to DIU
The high level structure is:
"kiosk" web front end to display text and video feed
web front end uses a websocket connection to receive communication about message updates
video camera feed is processed via an OpenCV Python script to interpret QR codes (and overlay other information over the video feed) that is then pumped through ffmpeg to utilize v4l2loopback//dev/video[01]
motion is used to provide the video feed for the web server, taking it's feed from /dev/video1
magstripe credentials are read in from a USB magstripe reader that behaves as an input device but that has been corralled through a Python script to interpret it
RFID credentials are read through a proxmark3 sensor
socat bridge is used to connect the i2c input through to a virtual RS232 interface to communicate back to the DIU through
An Arduino is used on the a shield as in the case of the DIU
Credential information is deposited in /home/bus/log/credential.(rfid|magstripe|barcode) files with a format of <timestamp>: <data>
Credential files are scanned for, with new credentials being communicated to the communication bridge to the DIU, storing local state so credentials aren't communicated more than once
Create a working Passenger Interface Unit (PIU) prototype.
* Accept magstripe fare media
* Accept RFID fare media
* Accept QR fare media
* Communicate back to DIU (via RS232 connection)
- Show DIU messages to rider
- Communicate fare media back to DIU
The high level structure is:
* "kiosk" web front end to display text and video feed
* web front end uses a websocket connection to receive communication about message updates
* video camera feed is processed via an OpenCV Python script to interpret QR codes (and overlay other information over the video feed) that is then pumped through ffmpeg to utilize `v4l2loopback`/`/dev/video[01]`
* `motion` is used to provide the video feed for the web server, taking it's feed from `/dev/video1`
* magstripe credentials are read in from a USB magstripe reader that behaves as an input device but that has been corralled through a Python script to interpret it
* RFID credentials are read through a `proxmark3` sensor
* `socat` bridge is used to connect the i2c input through to a virtual RS232 interface to communicate back to the DIU through
- An Arduino is used on the a shield as in the case of the DIU
* Credential information is deposited in `/home/bus/log/credential.(rfid|magstripe|barcode)` files with a format of `<timestamp>: <data>`
* Credential files are scanned for, with new credentials being communicated to the communication bridge to the DIU, storing local state so credentials aren't communicated more than once
clean up the "manager" scripts in the rc.local file, making the managed scripts be called directly if possible
setup the socat bridge on startup
create the communication bridge
test with DIU to verify PIU is receiving good messages
test with DIU to verify PIU can send credential information
create the fare monitor to detect delta credential information
do a full integration test to verify it's accepting fare media etc.
Lower priority TODO:
flip camera to have 'mirror' effect and make sure text is displayed properly
move log files to /home/bus/log
setup watchdogs on the various scripts and have a facility to restart if need be
TODO:
* ~~clean up the "manager" scripts in the `rc.local` file, making the managed scripts be called directly if possible~~
* ~~setup the `socat` bridge on startup~~
* ~~create the communication bridge~~
- ~~test with DIU to verify PIU is receiving good messages~~
- ~~test with DIU to verify PIU can send credential information~~
* ~~create the fare monitor to detect delta credential information~~
* ~~do a full integration test to verify it's accepting fare media etc.~~
Lower priority TODO:
* flip camera to have 'mirror' effect and make sure text is displayed properly
* ~~move log files to `/home/bus/log`~~
* setup watchdogs on the various scripts and have a facility to restart if need be
There are some things that need to be done before this can built out:
Magstripe reader for both orientations (instead of one)
At worst, this can be two mag strip readers jammed into a single hardware with two USB outs
RFID reader that can read MiFare media in addition to the 125KHz
Watchdogs on the processes to make it more robust
Flip camera to give better user feedback
Server side and DIU side QR code infrastructure
The last point is out of scope for the prototype but is required to get the QR code functionality working. The PIU is setup to pass the QR code verbatim so is agnostic as to the content.
The PIU prototype is finished.
There are some things that need to be done before this can built out:
* Magstripe reader for both orientations (instead of one)
- At worst, this can be two mag strip readers jammed into a single hardware with two USB outs
* RFID reader that can read MiFare media in addition to the 125KHz
* Watchdogs on the processes to make it more robust
* Flip camera to give better user feedback
* Server side and DIU side QR code infrastructure
The last point is out of scope for the prototype but is required to get the QR code functionality working. The PIU is setup to pass the QR code verbatim so is agnostic as to the content.
Create a working Passenger Interface Unit (PIU) prototype.
The high level structure is:
v4l2loopback//dev/video[01]motionis used to provide the video feed for the web server, taking it's feed from/dev/video1proxmark3sensorsocatbridge is used to connect the i2c input through to a virtual RS232 interface to communicate back to the DIU through/home/bus/log/credential.(rfid|magstripe|barcode)files with a format of<timestamp>: <data>TODO:
clean up the "manager" scripts in therc.localfile, making the managed scripts be called directly if possiblesetup thesocatbridge on startupcreate the communication bridgetest with DIU to verify PIU is receiving good messagestest with DIU to verify PIU can send credential informationcreate the fare monitor to detect delta credential informationdo a full integration test to verify it's accepting fare media etc.Lower priority TODO:
move log files to/home/bus/logThe PIU prototype is finished.
There are some things that need to be done before this can built out:
The last point is out of scope for the prototype but is required to get the QR code functionality working. The PIU is setup to pass the QR code verbatim so is agnostic as to the content.