Подключение купюроприемника 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 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  LCD-дисплей 1602A

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

73 комментария для “Подключение купюроприемника CashCode SM к Arduino”
  1. Спасибо вам большое, всё работает! Сначала были проблемы, но резистор на 4.7кОм всё решил.

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

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

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

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

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

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

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

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

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

      1. Аналогично, очень хотелось бы найти побольше информации по этой связке.

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

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

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

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

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

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

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

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

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

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

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

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

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

      2. Здравствуйте, Сергей. А где вообще можно найти эту прошивку под протокол pulse? В моём городе нет официальных сервисов cashcode, а у человека, продавшего мне купюрник, есть карты для прошивки только под CCNet. Вроде как у него есть карты, куда можно заливать свою прошивку, но в открытом доступе именно под pulse я не нашёл

        1. Здравствуйте, а какой у вас город?
          В открытом доступе не найдете прошивку под pulse для CashCode SM, ее можно получит через специальный программатор также можно обновить прошивку на этой карте под Pulse, но через программатор.

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

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

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

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

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

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

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

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

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

  11. Здравствуйте! Подскажите, пожалуйста, есть ли возможность подключения онлайн кассы на аппарат с протоколами ccnet cctalk? Никто ничего не знает и подсказать не может. Может есть какой-то решение?

  12. А можно фото переключателей дип ? Что то у меня не выдает сигнал , вроде все подключил правильно , может у меня в купераприемнике не прошивка pulse , а как узнать ?

    1. Здравствуйте, напишите на почту info@robotchip.ru.

      Чтобы узнать, прошит ли купюроприемник под протокол pulse, просто подайте питание, купюропримник должен покрутит двигателями и индикация загорится зеленным.

  13. Большое Вам спасибо за помощь новичку! Редко встретишь такую отзывчивость!

  14. Спасибо большое!
    Подскажите пожалуйста, а вы работали с данным устройством в режиме штрих-кода?

  15. На прктике, в 6-ти контактном разъёме питания, используются только 1й и 2й контакты для подачи питания 12V. А вот 3й и 5й для MSM и MVU купюрников не используют.

  16. Спасибо за статью и качественный код! Много дилетантских версий в сети, но это просто бомба! Версия в MDB появилась на свет?)

  17. Кстати, все заметили, что при режиме импульса «высокого уровня» (Credit-Pulse Normal LOW) идет недостача ровно на 1 импульс?)
    В режиме Credit-Pulse Normal HIGH — все ок!

  18. а у меня почему-то без смарт стика не работает…(( Ставлю-работает,снимаю-нет…

  19. здравствуйте! интересна реализация CCNet по RS-232. скажите пожалуйста, чтоб перевести аппарат в этот режим, что нужно сделать? исходя из документации нужно чего то там подать на 3-й пин 18-пинового коннектора, верно? помогите пожалуйста! просто я не электронщик, но программист.

  20. 5000р импульсы считает 50 сек, 1000р — 10 сек.
    что можно сделать, чтоб ускорить процесс?

    1. Здравствуйте, сейчас у вас 1 руб — 1 импульс, измените на 10 руб — 1 импульс.

      Так же у CashCode есть настройка 1 импульс — 10 рублей, 2 импульса — 50 рублей, 3 импульса — 100 рублей и так далее.

      1. Сейчас 1 импульс уже равен 10руб. Для 5000р это 500 иммпульсов. Каждый импульс по 50 мс, получаем 25с. и, как я понимаю, есть пауза между импульсами те же 50мс, в итоге имеем 50 секунд на распознавание купюры 5000р.
        При установке 1 импульса=50руб, получаем 10 сек на 5000 руб, что тоже не быстро.

        1. Это один из минусов протокола Pulse, вам тогда надо переходить на другой протокол. У вас како купюроприемник cashcode, ict, itl?

          1. В конце статьи есть документация

            Откройте ее, справа вверху есть таблица 1, если в правильно выставите дипы на купюрнике, то получите 2 импульс — 50 руб, 3 импульса — 100 руб …. 6 импульсов — 5000 руб и так далее.

          2. Здравствуйте, Сергей! Очень хорошая статья! Если мы договоримся, смогли бы написать подобный скетч для ESP8266 ну или NodeMCU с некоторыми доработками (удаленный доступ и мониторинг)?

  21. Здравствуйте, Сергей.
    А не подскажите и нам решение. У нас 300 машин с CashCode SM для Азербайджанского маната. У нас в оборот вышли новые купюры номиналом 1, 5, 20 манат. Нужна прошивка для новых купюр. А производитель отказывается поставлять, ссылаясь на то, что они остановили производство этой модели и у программистов нет времени писать для нас. Помогите решением, пожалуйста 🙏🏻 994 55 211 91 50 для экстренной связи

  22. Здравствуйте, проблема возникла подключил все правильно пульс работает но на экране не меняется значение NO MANY все время, подскажите как проверить сигнал есть с приемника на ардуинку или софт не обрабатывает сигнал?

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

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