Подключение купюроприемника 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

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

комментарий 71

  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 ;))

      • Павел:

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

        • Сергей:

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

  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кОм.

  16. Антон:

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

  17. Руслан:

    День добрый! Не поделитесь схемой подключения для новичка. Не понимаю как по представленным схемам подключить. пример для новичка https://ph0en1x.net/uploads/Image/news/raspberry-pi/raspberry-pi-led-key-test-application-in-fritzing.jpg.

  18. Ильяс:

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

    • Сергей:

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

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

  19. Руслан:

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

  20. Дмитрий:

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

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

  22. IgorV:

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

  23. IgorV:

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

  24. Дима:

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

  25. Виталий:

    Подошло к ICT-P77, спасибо)

  26. Сергей:

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

  27. Алекс:

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

    • Сергей:

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

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

      • Алекс:

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

        • Сергей:

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

          • Алекс:

            cashcode 2073

          • Сергей:

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

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

          • Ю:

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

  28. Ramiz:

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

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

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