Code Monkey home page Code Monkey logo

mdb-arduino's Introduction

Контроллер 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).

mdb-arduino's People

Contributors

sergomor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mdb-arduino's Issues

Связь

Добрый день. Подскажите, как можно с Вами связаться по-поводу консультации по этому проекту? за вознаграждение )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.