ruprotaf / MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-

MDB to UART converter based on atmega 644, Arduino Mega and other microcontrollers. Examples of polling bill acceptor, coin acceptor, card reader in Arduino environment are attached.
5 stars 2 forks source link

Проблема со считыванием данных с купюроприемниками CashCode #1

Closed Fantonrko closed 1 year ago

Fantonrko commented 2 years ago

Здравствуйте. Не могли бы вы более подробно объяснить приём данных в вашем коде ?

ruprotaf commented 2 years ago

Наверное, могу. А в каком месте вопрос?

пт, 22 апр. 2022 г., 15:50 Fantonrko @.***>:

Здравствуйте. Не могли бы вы более подробно объяснить приём данных в вашем коде ?

— Reply to this email directly, view it on GitHub https://github.com/ruprotaf/MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-/issues/1, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALQB64KKQ4IVA767JQ22PHLVGKOBTANCNFSM5UCHPHAA . You are receiving this because you are subscribed to this thread.Message ID: <ruprotaf/MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-/issues/1@ github.com>

Fantonrko commented 2 years ago

Я пытаюсь подружить ардуинку/еспешку/нрфку по юарту с достаточно применяемыми у нас купюроприемниками CashCode SM / MVU. Я не прям силён в программирование, написал простенькую библиотеку под отправку данных UART | MDB, так как необходимо было устанавливать Parity бит в 1 лишь на первом пакете. Сейчас столкнулся с проблемой что при отправке данных, например для корректного запуска купюроприемника, необходимо ответить ему. Но не совсем разобрался как можно считать приходящие данные.

Имею готовый адаптер под RS232-MDB, там происходит примерно следующая картина: image

ruprotaf commented 2 years ago

А, ну если не знаешь как данные принять по UART - то учись, материалов полно.

пт, 22 апр. 2022 г., 18:24 Fantonrko @.***>:

Я пытаюсь подружить ардуинку/еспешку/нрфку по юарту с достаточно применяемыми у нас купюроприемниками CashCode SM / MVU. Я не прям силён в программирование, написал простенькую библиотеку под отправку данных UART | MDB, так как необходимо было устанавливать Parity бит в 1 лишь на первом пакете. Сейчас столкнулся с проблемой что при отправке данных, например для корректного запуска купюроприемника, необходимо ответить ему. Но не совсем разобрался как можно считать приходящие данные.

Имею готовый адаптер под RS232-MDB, там происходит примерно следующая картина: [image: image] https://user-images.githubusercontent.com/86648566/164745273-2a054611-60d1-4ef1-ab65-4cdb9661582b.png

— Reply to this email directly, view it on GitHub https://github.com/ruprotaf/MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-/issues/1#issuecomment-1106622880, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALQB64MBURA4FMSXADJFVCTVGLAD5ANCNFSM5UCHPHAA . You are receiving this because you commented.Message ID: <ruprotaf/MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-/issues/1/1106622880 @github.com>

Fantonrko commented 2 years ago

А, ну если не знаешь как данные принять по UART - то учись, материалов полно. --- С уважением, Протасов Федор пт, 22 апр. 2022 г., 18:24 Fantonrko @.***>: Я пытаюсь подружить ардуинку/еспешку/нрфку по юарту с достаточно применяемыми у нас купюроприемниками CashCode SM / MVU. Я не прям силён в программирование, написал простенькую библиотеку под отправку данных UART | MDB, так как необходимо было устанавливать Parity бит в 1 лишь на первом пакете. Сейчас столкнулся с проблемой что при отправке данных, например для корректного запуска купюроприемника, необходимо ответить ему. Но не совсем разобрался как можно считать приходящие данные. Имею готовый адаптер под RS232-MDB, там происходит примерно следующая картина: [image: image] https://user-images.githubusercontent.com/86648566/164745273-2a054611-60d1-4ef1-ab65-4cdb9661582b.png — Reply to this email directly, view it on GitHub <#1 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALQB64MBURA4FMSXADJFVCTVGLAD5ANCNFSM5UCHPHAA . You are receiving this because you commented.Message ID: <ruprotaf/MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-/issues/1/1106622880 @github.com>

Не совсем так, в вашем примере не работает приём сигналов, абсолютно никаких, ни прерываний ничего, потому я и спросил как вы принимаете сигнал, если у вас конечно есть работающий вариант или исправленная библиотека. От которой можно оттолкнуться в приёме данных с других купюроприемников

ruprotaf commented 2 years ago

А, ясно. Может не сразу понятно, но код, который находится например, в [ArduinoMDBBill.ino] предназначен для микроконтроллера, подключаемого к "переходнику-преобразователю" с двумя аппаратными uart. Посмотри файл электросхема.pdf Без переходника ничего работать не будет. Ты собрал его и залил туда прошивку? Этот переходник дописывает девятый бит в пакет при передаче в сторону MDB и удаляет 9й бит при приеме. Поэтому у тебя в логическом анализаторе framing error - выбери типа парсера протокола MDB на 9 байт.

Fantonrko commented 2 years ago

Вот как, теперь понял. А в чём состоит основная проблема при использовании микроконтроллеров с одним юартом, без последующей передачи на ПК или иное устройство ? Почему-то не могу найти похожих решений в интернете.

Фото с логического анализатора сделано при слежке с рабочим адаптеров RS232-MDB, он так же принимает в себя 9-й бит, хоть и не использует его. Хочу вот сделать подобный девайс, но без подключения к пк, лишь обработку на самому микроконтроллере, но материалов не хватает. Не могли бы вы подсказать материалы на счёт чтения данных или же подсказать откуда или с какого кода можно оттолкнуться ?

ruprotaf commented 2 years ago

На микроконтроллере с одним уартом не получается писать 9й байт. Аппартаный - программный не успевает. А вот два аппаратных можно обхитрить. MDB_version_4-2.pdf Пожалуй, в этом файле вся исчерпывающая информация. На 29й странице описание 9го бита - бита режима (адрес или данные). Собери конвертер и управляй оборудованием без компьютера. Без конвертера ни с компьютера ни с МК не получится.

Fantonrko commented 2 years ago

Хмм, а с какой периодичностью идёт отправка пакетов ? Я отправляю с программного юарта под 9 бит, каждые 35 миллисекунд, отправка не сбоит, купюроприемник принимает команды, на некоторые ( без дополнительной корректировки ) реагирует. Или у других купюроприемников потребность в скорости приёма данных выше ?

ruprotaf commented 2 years ago

image Читай документ, тут все есть. С UART невозможно отправлять 9 бит, то что то путаешь. Меньше - можно, а больше - нет. Там буфер то 8ю ограничен, и принимает только по 8. Вот: image

Fantonrko commented 2 years ago

Видимо мне нужно более внимательно читать документацию. Но я всё же отправляю с софтового 9 бит примерно на такой скорости ( первый пакет 0x12 и второй пакет 0x12 ), их купюроприемник распознаёт image

ruprotaf commented 2 years ago

Наверное это бит четности? Девятый? Ну, повезло, что совпало)

Fantonrko commented 2 years ago

Да, бит чётности, но не совсем. Я так понимаю что скорость для одного байта должна быть менее 1мс ?

ruprotaf commented 2 years ago

Откуда ты взял это число? Скорость 9600 бод\с или 9600/11бит=872,7 байт\с или 1/872,7=0,001145834 с на один бит.

Fantonrko commented 2 years ago

Так, а почему тогда программный не успевает ? Я вот вроде отправляю команду, читаю, пока всё работает. Разобрался к стати немного с кодом чтения. Теперь интересна процедура распознавания купюр

ruprotaf commented 2 years ago

Не успевает при передаче между программным и аппаратным в конвертере 9го бита. Если у тебя получилось без конвертера прикрутить 9й бит - что же, круто! Не забудь потом рассказать как ;)

Fantonrko commented 2 years ago

Как допишу обработку купюр залью на гитхаб, пока это единственное что осталось

ruprotaf commented 2 years ago

Ну как успехи? Я смотрю у тебя в репозитории есть обсуждаемаая библиотека, но залита до обсуждаемой проблемы.

Fantonrko commented 2 years ago

Таких результатов удалось добиться: https://youtu.be/dupsBAb5Sjs

Так же делаю эмуляцию купюроприемника, монетника и пейпасса в кофейных автоматах :)

ruprotaf commented 2 years ago

Не, ну это не серьезный ответ. То что работает это понятно. Оно и у меня работает, только через 2 микросхемы. Ты с ардуины сделал 9-битный RX/TX? Покажешь?

Fantonrko commented 2 years ago

не с ардуинки, а с esp32 и к счастью без аппаратного uart, так что теперь имеется возможность допрокинуть пару внешних устройств для отправки данных по юарту

Fantonrko commented 2 years ago

А на счёт показать, жду ответа от краундфандинговой платформы, которая бустит опенсоурсные проекты. Смогу придать проекту большей огласки, нежели забытый гитхаб

ruprotaf commented 2 years ago

А... ну это другое дело. Тут то имено идея в arduino IDE - что бы все кто попало вендингом мог заниматься)

Fantonrko commented 2 years ago

Дак я и использую Arduino IDE. Думаю те кто достаточно освоился в ESP-IDF могут достичь большего, но я не из их числа, потому пока сижу тут

hemchik commented 1 year ago

Здравствуйте:) поделитесь кодом на ESP !

ruprotaf commented 1 year ago

А нету! ;)

сб, 4 февр. 2023 г. в 15:46, hemchik @.***>:

Здравствуйте:) поделитесь кодом на ESP !

— Reply to this email directly, view it on GitHub https://github.com/ruprotaf/MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-/issues/1#issuecomment-1416756243, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALQB64KZ2T2DHCBPOSJAJULWVZMT7ANCNFSM5UCHPHAA . You are receiving this because you modified the open/close state.Message ID: <ruprotaf/MDB-UART-converter-from-Atmega644p--Arduino-mega-etc-/issues/1/1416756243 @github.com>