pinout.vvzero.com/draft/overlay/mdb2pi-hat.md
2017-11-14 15:52:08 +01:00

4.2 KiB

MDB2Pi HAT

The MDB2Pi is a Raspberry Pi HAT which can serve as a MDB master (VMC), as MDB cashless peripheral, or as tracer for MDB Vending Machines. It takes care of the MDB specific 9-bit format, electrical and timing constraints. It forwards the MDB payload to the Raspberry Pi UART using a simple serial protocol. The MDB2Pi is powered through the MDB bus (10...42V regulated or unregulated supply) and back-powers the Raspberry Pi with up to 2.5A at 5V. Therefore, no separate power supply is required. Furthermore, the MDB2Pi contains a Real Time Clock (RTC), buffered by a super capacitor.

A housing for the MDB2Pi (and the MDB2Pi itself) is available at the Abrantix Web Shop: http://blog.abrantix.com/webshop/product/mdb-to-raspberrypi/. Alternatively, you can download a free 3D model here: http://www.thingiverse.com/thing:2209661

Configuration

Enable UART and RTC by adding the following lines to /boot/config.txt:

enable_uart=1
dtoverlay=i2c-rtc,pcf8563

disable serial console output:

sudo nano /boot/cmdline.txt

--> remove the "console=..." parameter

MDB Master and Cashless Device Demo:

Install mono runtime:

sudo apt-get install mono-runtime

Get the Demo code:

wget https://secure.abrantix.com/downloads/MDBConverter/MDBConverter.zip
unzip MDBConverter.zip

How to run the Master Demo:

cd MDBConverter
mono MDBMasterSimulatorConsole.exe /dev/serial0 115200

-> For master operation, please make sure to set the DIP Switch to ON-OFF-OFF-ON-ON

How to run the Cashless Device Demo:

cd MDBConverter
mono MDBCashlessDeviceSimulatorConsole.exe /dev/serial0 115200

-> For slave operation, please make sure to set the DIP Switch to OFF-ON-ON-OFF-OFF

Hint: On newer raspbian releases, the serial port is available as /dev/serial0 - older releases may use dev/ttyAMA0.

RTC

A PCF8563 I2C chip in conjunction with a SuperCapacitor is used for Real-Time-Clock capability (no battery required). This allows buffering of the time up to 7 days when fully charged (or even more, depending on environment temperature and chip/capacitor variance).

Read the RTC:

pi@raspberrypi:~ $ sudo hwclock -r
Thu 04 May 2017 06:22:13 UTC  -0.310218 seconds

Write the RTC:

pi@raspberrypi:~ $ sudo hwclock -w

RTC Troubleshooting: Check if the chip responds over I2C:

pi@raspberrypi:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Check dmesg for RTC

pi@raspberrypi:~ $ dmesg | grep rtc
[    2.937443] rtc-pcf8563 1-0051: chip found, driver version 0.4.4
[    2.943665] rtc-pcf8563 1-0051: rtc core: registered rtc-pcf8563 as rtc0

Hint: In case that the SuperCap has fully discharged, the daemon might be unable to talk to the RTC at first startup:

pi@raspberrypi:~ $ dmesg | grep rtc
[    2.900119] rtc-pcf8563 1-0051: chip found, driver version 0.4.4
[    2.900403] rtc-pcf8563 1-0051: pcf8563_write_block_data: err=-5 addr=0e, data=03
[    2.900428] rtc-pcf8563 1-0051: pcf8563_probe: write error
[    2.900459] rtc-pcf8563: probe of 1-0051 failed with error -5

In this case, please wait a few minutes to let the SuperCap recharge, then restart your pi so the RTC daemon can detect the chip again.