pinout.vvzero.com/draft/overlay/mdb2pi-hat.md
2017-05-04 08:42:49 +02:00

4.0 KiB

MDB2Pi HAT

The MDB2Pi HAT can serve as a MDB master or as a peripheral MDB Device for Vending Machines (VMC). 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 HAT is powered from the MDB bus (10...42V regulated or unregulated supply) and backpowers the Raspberry Pi with up to 2.5A at 5V. Thus no separate power supply is required for the pi. Furthermore, the MDB2Pi HAT contains a Real Time Clock (RTC), buffered by a super capacitor.

A housing for the MDB2Pi HAT is available under 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 temperature environment 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 being charged; then restart your pi to let the rtc daemon detect the chip again.