Подключение купюроприемника CashCode SM к Arduino

Подключение купюроприемника CashCode SM к Arduino

Так сложилось, что моя основная работа связана с вендинговым оборудованием (терминалы самообслуживания, кофейники и так далее), вот и решил описать подключение купюроприемника CashCode SM к Arduino.

Технические параметры CashCode SM

►  Обработка купюр: продольная
►  Ширина купюр: 67-71 мм
►  Вместимость кассеты: 200 / 400 / 1000 / 1500
►  Скорость обработки купюры: 3 секунды
►  Поддержка протоколов: Pulse / ccNet / ID003
►  Напряжение питания: 12В

Общие сведения

Немного теории, для всех существующих купюропреимниках производитель выпускает прошивки, в которых защиты параметры купюр и реализована микропрограмма для передачи данных «Протокол работы». Существует разные протоколы работы, одни из популярных CCnet, MDB, ID003, ID004, Pulse, обычно производитель реализует от одного до трех (бывают и больше) протоколов работы на устройство. В этой статье, для взаимодействия буду использовать протокол «Pulse», существует два вида протокола:

Виды протокола Pulse
►  последовательный — передача данных осуществляется с помощью одного вывода (пример: 10 руб — 1 импульс, 50 руб — 5 импульса и так далее);
►  параллельный — передача данный осуществляется с помощью несколько выводов (пример: 10 руб — 1-й вывод, 50 руб — 2-й вывод и так далее).

Все зависит от используемого оборудования, например компания CashCode (SM, MVU) использует последовательный протокол работы, а ITL (NV9 и NV10) параллельный. Так как в качестве купюроприемника использую CashCode SM 2073, а он поддерживает протокол «Pulse» (последовательный), скетч будет написан именно для него.

Примечание: протокол работы «Pulse» унифицирован, следовательно вместо CashCode SM 2073 можно использовать например ICT A7, A7, BS7, L70 и так далее.

Кстати, позже добавлю монетоприемник EU9, он отлично подходит, запоминает 12 видов монет и есть функция суммирования, то есть может послать один импульс, при наборе заданной сумме, например: если настроили 10 руб — 1 импульс, то он может принять 5 руб + 5 руб — 1 импульс, 2 руб + 2 руб + 2 руб + 2 руб + 2 руб — 1 импульс, в общем суть поняли и он по сравнению не дорогой (по сравнению цена качество)

А как же выбрать купюроприемник?

Для сравнения, возьму два популярных моделей купюроприемников ICT V7 и CashCode SM:

ICT V7
►  плюсы — дешевый, поддерживает сразу три протокола Pulse, ID004 и MDB (меняется с помощью дипов).
►  минусы — обновление программы через компьютер, нужен программатор, периодически необходимо калибровка с помощью калибровочной бумаги.

CashCode SM 2073
►  плюсы — прошивка через карты SmartStick, поддержка протоколов Pulse, ID003, CCNet (меняется с помощью прошивки), не надо калибровать.
►  минусы — дорогой, с картой SmartStick можно прошить до 100 купюроприемников (саму карту, можно обновить только у официальных представителей в России их не более 10).

В общем, в двух словах, если в день оборот всех купюр составляет порядка 100 шт, выбирайте ICT если оборот более 100 шт, выбирайте CashCode.

Подключение купюроприемниика CashCode и Arduino

Вернемся к Arduino, как говорил ранее, в примере использую CashCode SM (прошитый под Pulse, прошивка SM-RU7620) и плату Arduino. Информация о принятых купюрах, будет отображаться на LCD дисплее и в мониторинге порта, среды разработки IDE Arduino.
Для подключения, советую использовать разъем 3х3 (MFB-3×3), для быстрой замены на другой купюроприемник.

Подключение купюроприемника CashCode SM к Arduino

Необходимые детали:
►  Arduino UNO R3 x 1 шт.
►  Провод DuPont, 2,54 мм, 20 см x 1 шт.
►  Кабель USB 2.0 A-B x 1 шт.
►  CashCode SM 2073 с кассетой x 1 шт.
►  LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
►  Интерфейсный модуль IIC, I2C, TWI для LCD x 1 шт.
►  Блок питания DC 12В, 2А x 1 шт.
►  Резистор 4кОм, 0,125Вт x 1 шт.

Подготовка
Производитель позаботился и дал возможность пользователю менять параметры, передаваемого импульса, сигнала inhibit (сигнал запрета) так далее. Для изменения параметром, необходимо изменить состояние DIP переключателя (всего их два 8 и 4), что находится на центральной плате, для работы в моем примере. необходимо установить:

SW1 — первый линейка переключателей
►  1 — ON — цена одного импульса 1 импульс — 10 руб или 1 импульс — 50 руб.
►  2 — ON — запрет 50 руб.
►  3  — ON — запрет 100 руб.
►  4 — ON — запрет 200 руб.
►  5 — ON — запрет 500 руб.
►  6 — ON — запрет 1000 руб.
►  7 — OFF — положительный или отрицательный импульс
►  8  — OFF — сигнал запрета, Inhibit можно переключить в положение ON и не подключать 3-й вывод к Arduino

SW2 — вторая линейка переключателей
►  1 — ON — запрет 2000 и 5000 руб.
►  2 — OFF — настройка импульса
►  3 — ON — включение усиленного распознавания купюр
►  4 — ON — переключение в сервисный режим

Для более подробной информации, можно скачать мануал по прошивке или посмотреть на фото ниже. Управление Inhibit реализовано в скетче (хотя можно было и не использовать), необходим он, для отключения приема купюр, например изза ошибки или кончился размен, в общем, все зависит от вас. Чтобы Inhibit работал, необходимо в разъем 2х8, установить перемычку между 3 и 4 контактом.

Подключение купюроприемника CashCode SM к Arduino

Подключение
Схему подключения можно посмотреть на рисунке ниже использовался разъем MFB-3×3.

Подключение купюроприемника CashCode SM к Arduino

Назначение выводов на купюроприемнике CashCode SM-2073

Подключение купюроприемника CashCode SM к Arduino
Подключение купюроприемника CashCode SM к Arduino

После того как вы собрали схему, необходимо залить скетч в плату Arduino UNO, LCD дисплей подключаю с помощью интерфейса I2C, для нее необходимо установить библиотеку.

  Скачать скетч

Если один недостаток данного скетча, программа всегда опрашивает pin 2, чуть позже покажу пример работы MDB, для примера выложил фото с подключенным купюроприемником ICT V7, скетч не меняется

Ссылки
  
Документация к купюроприемнику CashCode SM-2073
  Документация к прошивке SM-RU7622 (страница 1, страница 2)
  Библиотека LiquidCrystal_I2C
  Документация к LCD1602A

Купить на Aliexpress
  Контроллер Arduino UNO R3
  Провода DuPont, 2,54 мм, 20 см
  LCD-дисплей 1602A

Купить в Самаре и области
 
Купить контроллер Arduino UNO R3
 Купить провода DuPont, 2,54 мм, 20 см
 Купить LCD-дисплей 1602A и модуль I2C

Читайте также:

комментариев 46

  1. Александр:

    Спасибо вам большое, всё работает! Сначала были проблемы, но резистор на 4.7кОм всё решил.

    • Сергей Мир:

      Очень рад, что пример программы помог.

      • Сергей:

        Спасибо большое за пример! С нетерпением и большим интересом жду пример работы MDB.

      • Денис:

        Подскажите какой купюроприемник будет совместно работать с планшетом на Андройд? И как это можно реализовать?

  2. Константин:

    Схему подключения плохо видно .__.
    страшно подключать…. пойду еще уроки посмотрю. пусть полежит на полке попылиться

    • Сергей Мир:

      Можно нарисовать принципиальную схем. Так же к купюроприемника CashCode есть защита от неправильного включения питания.

    • Константин:

      Собрал работает. но… код pulseCount = 0; непонятно зачем в программе.

      • Сергей Мир:

        Это пример, стоку можно и исключить, но тогда при принятии первых 10 руб. отобразиться 10 руб., при принятии следующих 10 руб, будет уже сумма из 20 руб. и так далее.
        Если скачать скетч из архива, в нем присутствует описание.

      • я так думаю потому что потом стоит инкремент, и както он не сможет ставить инкремент к значению null

  3. Дмитрий:

    Спасибо! Все работает отлично! Ждем пример работы MDB, было бы очень интересно и познавательно!!!

    • Сергей Мирошниченко:

      Рад что статья помогла, по MDB чуток попозже, не хватает времени.

  4. Hop6:

    Тоже интересно было бы почитать про MDB.
    Жду его 🙂

  5. Александр:

    К Raspberry pi никто не подключал CashCode sm?

  6. Виктор:

    Спасибо за отличную статью.
    С нетерпением жду статью о работе по MDB.

  7. Толясик:

    А куда документация по купюрнику загуляла?)

    • Сергей Мир:

      Добрый день, спасибо, поправил.

      • Владимир:

        Сергей, обещали выложить пример работы с MDB, получилось? А то не получается ничего, купюрник GPT Aurora, работает только в mdb и v2.2

        • vip.sergey.mir:

          Добрый день, с первого раза не получилось и как то время не нашел, может в этом году найду время на протокол MDB

          • Владимир:

            А если я свои наработки с кодом вам скину, может сможем вместе довести дело до конца?

          • vip.sergey.mir:

            Здравствуйте, думаю доведу, напишите мне на почту

  8. sanodin:

    К Raspberry pi подключал, но по протоколу CCNET, и матричный модуль табло, работает.
    А вот к ардуино протокол CCNET пока не прикрутил.

  9. Андрей:

    Автор Вы еще тут? Вопрос можно задать?

  10. Михаил:

    Здравствуйте, имею разукомплектованный автомат по продаже жетонов (корпус, бп, хоппер cube MK2, cashcode sm) , надеюсь вышеописанная схема поможет его вернуть к жизни. Подскажите пожалуйста как подключить к Arduino UNO R3 хоппер?

    • Сергей Мир:

      Добрый день, Максим.
      Хопер MK2 не подключал к ардуино. Но если память не изменяет, при подачи питания он начинает беспрерывно выдавать монеты и при этом выдает импульс при каждой выданной монеты.
      Программу можно поправить, сложного нету не чего

  11. Юрий:

    Здравствуйте, подскажите, пожалуйста: Cashcode SM — 2073RU1335 есть ли опыт работы? А именно как настроить Inhibit. По задумке аппарат принимает деньги только после выбора клиентом услуги.

    • Сергей Мир:

      Добрый день, Юрий.
      Как понимаю 2073RU1335, это написано на бирке спереди купюроприемника? Изначально был прошить прошивкой SM-RU1335 протокол CCNet. Первым делом необходимо прошить купюроприемник под протокол PULSE и использовать inhibit как описано в статье.

      • Юрий:

        Сергей, можно еще вопрос: уточнить по поводу перемычки в разъеме 2*8… В тексте написано 3 и 4, на схеме 5 и 7 контакт соединен. И на картинке даташита картинка с нумерацией это клемма или гнездо?

        • Сергей Мир:

          Опечатка, спасибо за замечание, поправлю статью. Используемый разъем 2×9. Картинка с документации, это клемма.

          • Юрий:

            Все получилось! Спасибо! Действительно 3 и 4 контант согласно картинки клеммы(зеркально по горизонтали для гнезда). Большое спасибо за статью, с нетерпением ждем про MDB ;))

  12. Михаил:

    Сергей, напишите пожалуйста свою почту.

  13. Антон:

    Сергей, добрый день, тоже задам вопрос про перемычку для включения режима неприёма купюр (inhibit). Перепробовал уже все варианты, как мне кажется, установки перемычки, но купюры продолжают приниматься. Могли бы Вы пожалуйста уточнить — какие точно пины надо закоротить?

    • Сергей Мир:

      Добрый день, Антон.
      1. Необходимо переключить 8-oй дип в положение OFF.
      2. Установить перемычку (верно фото с купюроприемником).
      3. Подключить провод Inhibit- к земле (GND)
      4. Подключить провод Inhibit+ к +5В
      При подачи питания, купюроприемник сделает тестирование (покрутит двигателями), затем загорится зеленая индикация, при отключении провода Inhibit+ от 5В, загорится красная индикация.

      При переключенном 8-ом дипе (OFF) и не установленной перемычки купюроприемник не перейдет в режим приема (зеленая индикация), то есть не будет реагировать на подучу питания на линию Inhibit+.
      При переключении дипа и установки перемычки необходимо отключать питание купюроприемника, так как все показания переключателей снимается один раз при подачи питания на купюроприемник.

  14. Алексей:

    Здравствуйте.

    А можно ли в пульсовом протоколе отслеживать, если купюроприемник в ошибке? Например «зажевало» купюру.

    • Сергей Мир:

      Добрый день, Алексей.
      Нет нельзя.

      • Влад:

        Здравствуйте Сергей, скажите пожалуйста, есть ли вариант подключить купюроприёмник к одноплатнику orange pi под linux? если есть, то не могли бы скинуть инструкцию, очень интересная тема

        p.s. статья очень годная

  15. Павел:

    Здравствуйте, Сергей. Не совсем понял, как пин pulse подключен к порту ардуино. Там же напряжение на выходе 12 вольт

    • Сергей:

      Здравствуйте, Павел.
      Выход Pulse с открытым коллектором, на какое напряжение вы его подтянете такое и будет. В примере подтянули к 5В, через резистор 4.7кОм.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *