Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Контроллер MDB устройств на базе Arduino UNO

Код основан на https://github.com/justintconroy/MdbBillValidator

Описание

Купюроприемник и/или монетоприемник подключены через дополнительную плату согласования к HardwareSerial Arduino. Контроллер постоянно опрашивает MDB устройства и транслирует события в порт по протоколу serial в виде текстовых сообщений, контроллер в свою очередь принимает команды через порт этот.

Когда происходит какое-либо событие в MDB устройстве (например, принята монета), из SoftwareSerial контроллера считываются данные в виде последовательности символов, например: ##12#10* - получили монету номиналом в 10р. или ##13#100* - получили купюру в 100р.

Таким же образом управляем устройствами, посылая команды в SofwareSerial например: ##100#1* - сбросить монетоприемник, ##100#2* - сбросить купюроприемник, ##110#35* - выдать сдачи 35р. и т.д.

Подключение

Подключение осуществляется согласно схеме doc/MDB_interface.pdf к HardwareSerial порту Arduino (пины 0 и 1) Метками RX(0) и TX(1) отмечены входы/выходы на строне Arduino (в скобках указаны номера пинов).

Важно! При подключении контроллера к устройствам разъем USB должен быть отключен от Arduino, и наоборот, при подключенном USB эти пины должны быть отключены от платы согласования. Так как USB использует тот же самый порт Arduino для связи с ПК, что и наш контроллер для связи с MDB устройствами.

Для обмена информацией с контроллером и приемником используется последовательный порт (SoftwareSerial в Arduino). По умолчанию, нужно подключаться к пинам 10(RX) и 11(TX). Номера пинов можно изменить в файле libraries/mdb-bridge/link-data.h:

#define LINK_CONTROLLER_RX_PIN 10
#define LINK_CONTROLLER_TX_PIN 11

Там же можно изменить скорость подключения к порту (по умолчанию 9600 бод):

#define LINK_BAUD_RATE 9600

Команды

Команды представляют собой последовательность символов. Команда всегда начинается с символов ##, за которыми следует код команды и заканчивается *

Команды могут принимать параметры в виде цифр, если параметров несколько, то они разделяются символом #. Пример команды: ##100#1* - инициализация купюроприемника (код команды 100 и параметр номер устройства).

В файле libraries/mdb-bridge/mdb-commands.h описаны команды для устройства. Как их читать:

например:

#define MDB_CMD_RESET                    (MDB_CMD_OFFSET + 0),1

это сброс устройства (MDB_CMD_OFFSET = 100)

число после запятой означает количество параметров для команды вот пример команды reset для для монетоприемника: ##100#2* (ее следует передавать перед началом сессии) другой пример, команда enable (MDB_CMD_ENABLE): ##104#2* (2 - это монетоприемник, 1 - купюропремник, 3 - терминал).

Устройства, в свою очередь, отвечают подобными последовательностями, которые вы должны парсить на стороне приемника.

Например, на команду ##108* монетроприемник должен показать состояние трубок (MDB_ANS_CHANGER_TUBE_STATUS) с восемью параметрами.

Если монетопремник примет монету, то он отправит в порт последовательность ##142#10*, где 142 - это код ответа (MDB_ANS_CHANGER_COIN_ACCEPTED), а 10 - номинал монеты.

Работают только купюроприемник и монетоприемник. Cashless не работает, в коде присутсвует как болванка.

Поддерживается минимальное кол-во количество комманд. То есть для эксплуаатации код придется дорабатыват вам самим.

Скетч для контроллера в файле mdb-controller/mdb-controller.ino

Пример обмена информации с контроллером в файле mdb-client/mdb-client.ino (запускается на воторй arduino которая подключена к контроллеру через SofwareSerail).

About

MDB controller based on Arduino UNO board

Topics

Resources

Stars

21 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages