Arduino в снековом автомате

    Этот пост – продолжение истории о начинке торговых автоматов простой и доступной электроникой на базе Arduino. И действительно – возможности платформы просто безграничны! И так, второй автомат – снековый автомат по продаже чипсов/воды/шоколадок/etc.





    Главное – начать! Желание купить автомат появилось после доведения до ума первого автомата с кофе. Многие посетители желали что-нибудь пожевать вместе с вкусным кофе.

    На просторах сети и тематических форумах проводил всё свободное время. Исходя из объявлений по продаже б/у снековых аппаратов, уже готовился копить внушительную сумму (около 100 тыс. рублей за простой аппарат).
    И вот оно счастье – нашлось объявление о продаже автомата с простой начинкой (ранее продавал журналы и газеты) за 20 тыс. рублей! Слово за слово, вызвал частников для доставки по городу. 250 килограмм железа грузили втроём.

    И так. Первый месяц владения аппаратом – узнается досконально его начинка, включается в сеть и тестируется. Оказывается ранее это был вполне обычный снековый автомат, только под заказ его мозги перешили под продажу по 2 товара на полку (и по 2 мотора на товар). Просто взяв и подключив дополнительные редукторы – ситуация не изменилась – мозги были перепрошиты окончательно, и продавать больше товара он не мог. Созвонившись с компанией, которая производила «апгрейд», узнал сумму приведения в порядок – порядка 10 тыс. рублей только за обновление ПО контроллера. К слову, на плате стоял чип Atmel Mega-168, что немного напоминает добрую Arduino. Но увы, чтобы перешить его самостоятельно, и тем более разобраться в работе с периферией – пришлось бы убить куда больше времени.

    Делаем мозги автомату самостоятельно


    Сняв всю электронику с автомата, утащил её домой. Прозвонив и проверив работу редукторов, начал рисовать схему для подключения Arduino и всей периферии.
    Первая тестовая сборка работала на Arduino Nano (freeduino), и вполне умела включать мотор выдачи по любому алгоритму.

    Параллельно была нарисована схема расположения товаров на полках. Перерыл весь Интернет в поисках примеров, искал снековые автоматы в ТЦ города (фотографировал расположение и количество товаров на полках), и нарисовал схему для своего автомата. Получилось стандартно 4 товара на первых двух полках (широкие пачки чипсов/сухариков). Одна полка на 8 товаров (батончики, печенье). И полка для бутылок с водой (7 товаров).

    Первая задача – научиться включать/выключать двигатели выдачи товаров


    Двигатель, а точнее моторчик с редуктором – включается обычной подачей питания 12В. На валу редуктора стоит микрик, который реагирует на полный оборот. На вал так же подсоединяется стальная пружина, в витки которой складывается товар. При полном обороте товар сдвигается к краю и самый первый «сникерс» падает в ящик выдачи.

    Имея схему расположения товаров, удалось понять сколько моторов будут выдавать товар. 23 мотора. Была реализована схема с тремя сдвиговыми регистрами 74HC595, соединенными последовательно. Но на первом испытании, а точнее при включении автомата, регистры плясали как хотели и в итоге все двигатели крутились рандомно в течение секунды. Сейчас, посмотрев на схему реализации, вижу что упустил пин управления задвижкой – когда без этого пина выходы не реагировали на переданные данные. Но что было то было… Пришлось просто взять Arduino Mega, плюс биполярные транзисторы для управления двигателями. Получается, что задействовано 23 выхода Arduino для выдачи товаров. С одной стороны это кажется перебором, а с другой – необходимость. Возможно, в следующей версии попробую ещё раз сдвиговые регистры.



    На фотографии сверху вниз: Arduino Mega в пластиковом корпусе, макетная плата с транзисторами и разъемами для подключения, макетная плата с разъемами для клавиатуры выбора товаров и дисплея.

    Вторая задача – подключить клавиатуру





    Сначала эта задача казалась мне самой сложной. Но разобрав клавиатуру, увидел что никакого контроллера там нет и используется обычная матричная схема – колонки и строчки. Поступил простым способом – на 6 строчек подается разное питание (от 5в до 0.5, через резисторы). А с 3х колонок считывается напряжение через аналоговые входы. Итого, задействовав всего 3 входа, мы можем читать кнопки клавиатуры 6x3.

    Третья задача – подключить дисплей





    На плате были установлены четыре 8-сегментных светодиодных дисплеев, светодиодный драйвер, который работает точно так же как сдвиговый регистр. На примере работы с обычным регистром и datasheet драйвера успешно написал функцию, которая тактировала драйвер, выдавала биты по порядку. Плюс два дополнительных светодиода, которые так же включены через этот же регистр.

    Каково же было моё удивление, когда этот дисплей заработал! Это не просто копирование готовой функции и запуск её на контроллере – это нечто иное. Причем светодиодный дисплей в реальности выглядит круче, чем ЖК дисплей. Во время тестов запускал на нём секундный счетчик на ночь, запускал просто бегущую сточку. Причем символы генерируются не сдвиговым регистром, а своей программой – регистру просто передаются биты, которые нужно зажечь. В программу был внесен массив всех цифр, некоторых букв (для слова Err), плюс символ внесения наличности (знак равно).

    Четвертая задача – прием денежных средств





    На этой фотографии видны: купюроприемник, модуль платёжек, монетоприемник с тубами для монет, денежный ящик и кучу проводов — это гиковый автомат, так положено :)

    В автомате уже был купюроприемник и монетоприемник с функцией выдачи сдачи. Они работают на протоколе MDB, который достаточно сложно реализовать, хотя протокол и 1993 года. Фактически, это обычный Serial-протокол, но с некоторой оговоркой – 8 бит данных +бит четности, который указывает направление передачи, а не чётность. В библиотеке SoftwareSerial в Arduino можно было сделать логику под себя, но всплыл ещё один фактор – задержка между командой и ответом не должна превышать 5мс, иначе расценивается как timeout. Нужно было общаться с платёжками в реальном времени, и скорее всего использовать для этого прерывания.
    Ночи на пролёт с отладчиком com-портов ни к чему не привели.
    Но выход был найден – сторонний модуль C-MDB от наших соотечественников с Украины. Модуль просто отличный – он работает с платежками по этому протоколу и в обычном com-порту выдает нужные данные (от характеристик платёжек, до типа принимаемой монеты/купюры и состояния боксов с деньгами).

    Последняя задача – соединить всё это вместе.


    После анализа всего и вся было принято решение добавить обычный системный блок в этот автомат на базе Linux CentOS. Благо места внутри автомата под полками много, как для складирования товара, так и для системника. Какие функции возложены на этот компьютер:

    • веб-интерфейс логами, учетом товара, денег и закупки;
    • общение с модулем платёжек (демон на PHP);
    • доступ через Интернет (на месте установки есть проводной Интернет с выделенным IP, проброс порта – веб-интерфейс и ssh доступны даже с мобильника);
    • веб-камера внутренностей автомата;
    • аудио сопровождение и подсказки (пока в задумке как именно).


    Как всё это подключено


    Arduino по USB через стандартный выход подключено к системнику. В обычном режиме появляется com-порт, в который Arduino пишет логи и получает ответы от демона (запрос цены).

    Модуль C-MDB через стандартный com-порт системника передает информацию о деньгах в демон, который уже передает только информацию о внесенных деньгах в Arduino.

    Двигатели, клавиатура и дисплей подключены к Arduino и управляются только ею. К слову, сейчас неким подобием master-девайса является именно Arduino. Она принимает решение о выдаче товара, запрашивает цену у компьютера, управляет отображением на дисплее и крутит двигатели. В следующей версии хочу перевести всю логику на системный блок (к демону), а у Arduino оставить только исполнительные функции, так как порой для исправления багофичи автомата приходилось выезжать с ноутбуком. А по SSH исправить демона на PHP гораздо проще.

    А веб-интерфейс просто огонь! В реальном времени видны продажи, остаток денег в боксах, информация об остатках товара после закупки, логи операций и сообщений. Хотелось там же видеть веб-камеру, но она не заводится у меня. Вдруг, кто поможет с решением: ID 0c45:608f Microdia PC Camera (SN9C103 + OV7630), при попытке сделать снимок (cat /dev/video) — kernel: usb 3-2: Initialization failed again. I will retry on next open()

    Демон написан на чистом PHP, который мониторит com-порт модуля платежек и общается с ним, занося всю информацию в лог. А USB-COM-порт слушает от Arduino – записывает логи и отвечает на запрос цены. Попутно ведет учет проданного товара в MySQL, а после успешной продажи так же высылает E-mail на личный ящик (приятно пророй видеть десятки продаж в день).

    В выход аудио-карты включены колонки. Хотелось записать звуковые заманухи и приставалки к людям (тихое и проходное место в организации). Плюс подключил датчик движения к Arduino, который реагирует на проход человека рядом. Задумывал включать приставалки именно по датчику движения, но пока не записал фразы. Хотя эффект видится просто потрясающий!

    Один год работы автомата – итоги


    Что хочется сказать – Arduino это не только более простой и дешевый способ сделать мозги железной коробке, но и отличная возможность сделать это своими руками! Да, бывали детские ошибки, когда невнимательность не позволяла запустить автомат (например, просело питание и двигателю не хватало сил докрутить кока-колу), но для того и дается возможность пройти все эти испытания.

    Открыв сейчас веб-интерфейс, могу сказать что за это время было 1355 продаж. Да, каюсь – и сам частенько покупаю кока-колу у себя – пускай и дороже, но зато приятней :) По суммам – автомат полностью окупил себя и всё вложенное время. И приносит только прибыль и радость!

    А теперь о планах!

    Через 2 дня приедет установка для продажи газированных напитков (точно такая же как в барах, только без кранов). Установив её сверху на кофейный автомат, подключив управление к мозгам этого автомата – получится два спаренных автомата с единой платежкой, единым управлением и безграничными возможностями! А ещё те самые идеи, когда цену на кофе можно снижать по расписанию (например, с 09 до 11 утра), выдавать штрих-коды (собери 5 штрих-кодов и получи бесплатно любое кофе), удобный способ наливать кофе «своим» (например по таблеткам ibutton или смарт-картам), оплата по СМС и многое другое!

    И напоследок хотелось бы сказать, что автоматы — это круто! Круто не только со стороны разработчика, но и пользователя — удобно и быстро! Пускай он может обмануть, но сделает это не специально (свет мигнул и всё, пропал твой кредит на экране). Автомат — это круглосуточные продажи и полное доверие ему своих денег и товара. Он не украдёт, не обсчитает своего хозяина, днём и ночью пришлет E-mail об успешной продаже или ошибке, и может угостить бесплатным напитком.

    В комментариях рад был бы услышать, какие ещё функции можно добавить таким автоматам.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 66

      +1
      Неделя вендинговых машин на Хабре? :)

      А по теме… 1300 покупок окупили автомат? Хм… получается, что накрутка с 1 покупки — минимум 15 рублей? Неплохо для бутылки кока-колы или пачки орешков…

      И это без учета арендной платы, электричества и прочих расходников.
        0
        Вполне реально, часто вижу автоматы с нацениванием на уровне 50-70% от первоначальной стоимости.
          +2
          Да, накрутка минимум 10 рублей на товар. В прицнипе, закупаю на 1000 рублей, снимаю 3000 рублей. Примерно. Электричество и арендная плата платится бесплатным кофе для начальника :)
            0
            Получается что автор заработал как минимум 20 000 руб. за год?
              +4
              Снял 100к, а сколько заработал — вопрос риторический :)
              0
              Дык… Я сейчас по ценам не в курсе, но, в принципе, при оптовых закупках разница между пакетиком фисташек в магазине и на оптовой базе может вполне и 15 рублей составить!
              Так ещё-же и этот самый пакетик в разных местах может в ларьке и 30 и 35 и 40 рублей стоить!
              А в вендинговой машине в каком-нить санатории могут и все 50 запросить, т.к. альтернативы труднодоступны!
              0
              Спасибо за статью — вдохновила разобраться со старым телефонным уличным аппаратом. Надо туда тоже ардуино прикрутить :)
                +1
                Если вы про «таксофон», то туда лучше прикрутить мини-комп с SIP и(или) Скайпом! ;)
                  +1
                  Какую шикарную идею вы только что озвучили! У меня как раз имеется «лишняя» плата miniITX и VoIP-шлюз.
                    0
                    ИМХО, мысль очевидная и сама напрашивается.
                    Из минусов — устойчивый канал в Инет, но можно схитрить и прокидывать до IP-АТС по мобильному голосовому каналу, хотя-бы и «Обратным вызовом»:
                    Пользователь набирает номер, на дисплее выдаётся тариф для данного направления, он вносит сумму на сколько минут надо, жмёт «Ок» и АТС дозванивается по сотовой сети до будки и начинает звонить на номер, который он ввёл…

                    ИМХО, но тут лучше, конечно, не купюроприёмник, а какие-нить смарт-карты и т.п. юзать для простоты тарификации…
                      0
                      а лицензию на оказание услуг связи планируете получать?
                        0
                        А при чём тут я? Я высказал идею, а лицензии и т.п. — уже забота тех, кто будет на этом бизнес делать! ;)
                +1
                Захотелось завести себе такой автомат :)
                  0
                  Чота я не понял — зачем вебка?
                    +2
                    Смотреть не разбили ли стекло (1см в толщине, ну а вдруг), или не застрял ли товар например:
                    www.youtube.com/watch?v=5GZXgEO9prQ
                      –1
                      www.youtube.com/watch?v=-Qee1MVe4eY
                      вот настоящий джек-пот )))
                        0
                        Это хрень. Мы с другом как-то 8 сникерсов выбили джекпотом — они застревали, но со спирали снимались (деньги при этом — нет). А потом рухнули все. По цене одного.
                          0
                          В автоматах, которые я виде, если товар снимался со спирали, но не падал вниз — спирали ставился статус «пустая» и больше он не давал с нее ничего заказывать, только с соседних
                            +1
                            В том-то и прикол — если фотодатчик падения товара не зафиксировал падения (застрял товар при «полёте» или он действительно кончился") — хороший ход, но иногда он ведет себя не так как надо.

                            В своем автомате у меня строгий учет: при загрузке у пружины в веб-интерфейсе указывается текущее количество. Когда остаток на пружине 0 — автомат не производит продажу. Думаю такой выход лучше, но сложнее.
                      +6
                      для приманивания предлагаю вставить звуки из R2D2 ;)
                        +1
                        добавил в закладки! Есть интересные звуки, для фона подойдут ))
                        +1
                        Торговые автоматы — очень интересная тема, жаль они у нас не очень популярны… Сам разрабатывал ПО для музыкального автомата когда-то, было очень интересно, там своя специфика. Контингент пользователей такой, что в случае сбоя в работе можно в табло получить (табло автомата )))
                          0
                          Проблема у нас в стране в том, что продавец несёт хоть какую ответственность за товар. А автоматы, хоть и делают вандалоустойчивыми, но 100% защиты не даёт…

                          А так — у нас вполне более-менее была налаженная авто-торговля при СССР:
                          1. Газировка. Автоматы стояли на каждом углу.
                          2. Таксофоны и уличные телефоны. Стояли ВЕЗДЕ! У нас перед домом ещё торчит, вроде, основание от таксофонной тумбы…
                          3. Размен монет в метро.
                          4. Лично видел в детстве авто-фотографию…

                          Потом всё про…

                          Сейчас что-то прорастает, возможно пока и медленно, но торговые автоматы всё чаще встречаются, терминалы оплаты услуг можно найти даже в каком-нить Енисейске, начали снова встречаться газировальные автоматы на новом уровне (никаких стеклянных стаканов, которые вечно спирали алкаши!)…
                          Да, пока не на каждом углу, но…
                          +4
                          Отличная статья. Единственное, что побольше бы информации о работе с купюроприёмником!
                            0
                            Если брать купюрник на протоколе MDB — это достаточно сложно. Но если взять в протоколе Pulse — то там даже ардуиной можно считывать получаемые купюры.
                            В принципе на выходе у демона — номинал принятой купюры и статус её принятия (принята в бокс, или оставлена в теле — ответом её можно пнуть в бокс или выдать клиенту, например при отказе покупать).
                            +3
                            Ваша веб камера не работает с video4linux драйвером версии 2 (во всех современных дистрибутивах она).
                            Нужно либо возится с подключением первой версии драйвера, либо купить вебку, которая прекрасно работает и так благо их можно найти и до 300р.
                              0
                              Хмм, спасибо за наводку. Попробую перейти на vl4l первой версии…
                                0
                                Да ну не жадничайте на 300 рублей-то.
                                  0
                                  Если вот так взять, приехать и купить камеру — с удовольствием! Но на сайте магазина нет описания совместимости камеры. Продавцы разводят руками.
                                    0
                                    Возмите ноутбук с линуксом с собой в магазин. Втыкаете камеру в него, запускаете vlc или cheese и смотрите есть ли картинка. Есть — покупаете, нет — подключаете другую.

                                    Ещё модели камер можно гуглить на совместимость с линуксом.
                              +1
                              Спасибо за статью, у самого в планах купить и поставить несколько кофе-машин, благо, есть хорошие места, можно пойти и по вашему сценарию, переделав аппарат под себя.
                                0
                                помню несколько лет назад делал фотобудку, камера, купюроприемник, принтер, конпки, и дисплей, все крутилось на старом компьютере, было весело…
                                  +1
                                  1. >>>свет мигнул и всё, пропал твой кредит на экране
                                  UPS не пробовали?

                                  2. web-камеру более совместимую с linux за $20 не пробовали?
                                    0
                                    Это риторический пример со светом. Он будет у 99% автоматов. Упс поможет естественно.

                                    Вот был бы актуальный список камер, которые совместимы и ещё продаются (Питер).
                                    • UFO just landed and posted this here
                                        +1
                                        Эмм, могу посоветовать взять нетбук с линуксом в розничный магазин.
                                      0
                                      «Все гениальное — просто» (С)
                                      А в сторону Raspberry Pi не смотрели? Может удалось бы избавиться от большого компа? В смысле Ардуино и Raspberry Pi. Или только Raspberry Pi.
                                        +1
                                        Что-бы смотреть в сторону Малины — надо, что-бы её продавать начали нормально! А то только сейчас начали рассылать сделавшим предзаказ пол-года с лишним назад!!!
                                        И кнопки «Купить» на сайте у них нет: по ссылкам «Где купить» — тоже…
                                          +1
                                          Это верно. Был в первых рядах при старте на заказ, но за 10 минут всё кончилось. Выдали out of stock. А так — конечно, хотелось более меньший компьютер туда поставить — для экономии места и электричества.
                                            0
                                            Можно поискать дешевые нетбуки, у нас ещё где-то продают eee pc 701 серии тысяч за 5..6.
                                        0
                                        Почему именно Ардуино? В смысле почему не ATmega + драйвер COM<>USB? Меньше железной возни?
                                          0
                                          ИМХО, конечно, но такие вопросы может задавать только человек, который с Ардуинами не работал!

                                          1. Меньше возни с железом. Этот самый драйвер надо подключить, Атмегу — прошить, питание развести и т.д. и т.п.
                                          2. Нормального IDE под контроллеры, кроме Ардуиновского, я не видел!
                                            0
                                            Совершенно верно! С ардуиной проще — купил, поставил, подсоединил — и всё работает! Как видно на фотографии, разводка даже сделана простыми проводами (без пайки).

                                            Но с другой стороны при массовом производстве, конечно же, стоит переходить на выделенный контроллер и макетную плату с разводкой.
                                              0
                                              При СИЛЬНО массовом — возможно. При не сильно — проще соорудить полноценный «Шелд» на Дуинку: пайка контроллеров и заказ печаток может встать при мелкой партии в нехилые бабушки!
                                          +1
                                          отличный и очень интересный пост!

                                          А в вашем случае автомат сдачу дает?

                                          Какие-нибудь проблемы с купюрами или монетами принятыми был (типа, фальшивые купюры и тд)?

                                          А какие-нибудь органы (типа санэпид станции) автомат не пытались проверить?
                                            +1
                                            Да, у автомата монетник с функцией выдачи сдачи. Общается просто — говоришь ему сумму какую нужно выдать — он выдает. Для оптимизации накопления монет выдаю ему не общую сумму, а набор монет для выдачи (например при сдаче в 50 рублей, даю 3 десятки и 5 пятаков).

                                            Проблемы есть, но детские — иногда купюру не принимает — перевернешь её и принимает. Монеты в 10 рублей нового образца не принимает (необходимо перешить монетник в конторе). Фальшивок ещё не видел, хотя на форумах народ пишет что попадаются даже пустые болванки похожие на 10ку.

                                            Санэпид может докапаться до кофейного автомата, но при проверке помещений его даже не тронули. Снековый впринципе проверять нет смысла — вся продукция в заводской упаковке. А вот налоговая может проверить всё сразу :)
                                              +1
                                              Спасибо за ответ!

                                              А отсеки для приема и для сдачи разные? Или общие? То есть если я заброшу 6 пятаков чтобы что-то купить, а потом сразу же оплачу 2ую покупку так, что мне будет нужна сдача — я получу свои пятаки обратно?
                                                +1
                                                Сначала принимаемые монеты падают в тубы для сдачи (каждому виду монет своя туба). Если туба полная (оптодатчик), то монета летит вниз в ящик для денег.

                                                В моём автомате реализован принцип — после покупки сразу выдать сдачу (а то многие покупатели не понимали, что получить сдачу нужно нажать на кнопку). Поэтому сразу забираешь сдачу, и если хочешь что-то ещё — закидываешь. Автомат часто используют чтобы получить мелочь (разменять 100 рублей на железки) и потратить их в кофейном автомате :)
                                                  0
                                                  спасибо за ответ!
                                                    0
                                                    Ну и уточнить надо, что по структуре эти тубы ближе к стеку «Первый вошёл-первый вышел» и ИМЕННО СВОИ пятаки вы можете не получить! ;)
                                                      0
                                                      Это верно. Поэтому не стоит ожидать таких же красивых и блестящих пятаков на выходе )))
                                                0
                                                > например при сдаче в 50 рублей, даю 3 десятки и 5 пятаков
                                                3*10+5*5=55 рублей!
                                                МБ всё-же 4 пятака? А то себе в убыток работаете с такой сдачей! ;)
                                                  0
                                                  Да да, очепятка уже вкралась. Естественно он даёт верно, иначе к нему бы «не заросла народная тропа» :))))
                                              0
                                              и еще — в каком городе аппарат используется?
                                                0
                                                Хотите начинку посмотреть?
                                                  0
                                                  да если честно и так вы все хорошо описали. Просто любопытно.
                                                  0
                                                  В Санкт-Петербурге, точнее в пригороде.
                                                    0
                                                    а если не секрет, в каком городе?
                                                      0
                                                      в Пушкине
                                                        0
                                                        спасибо за ответ!
                                                          0
                                                          * мы выехали за аппаратом ))
                                                • UFO just landed and posted this here
                                                    0
                                                    Сложнее, это точно. Тем более под ARM потребуется разводка платы и тем более заказ. А это долгие дни дебага на макетке и в редакторах.

                                                    У меня проект именно для себя и я в любой момент могу поменять всё с ног на голову — планирую отказаться от обычного системника в пользу barebone или на основе тонкого клиента с пассивным охлаждением (по tftp образ системы, дальше такие же скрипты).

                                                    Arduino выступает в роли master-устройства, на котором работает вся логика (ага, нажата клавиша — показать её на экране. Свалились деньги — показать. Посчитать, включить двигатели, посчитать сдачу, etc). Планирую всю логику передать в демон php, а Arduino оставить только исполнительные функции (включение двигателей, анализ датчиков, работа с клавиатурой и дисплеем).
                                                    Если бы на обычном компьютере было около 30 GPIO — другой вопрос, Arduino не нужна была бы. Raspberry PI выглядит аппетитно, но на предзаказ так и не попал, а сейчас — пока и так работает.
                                                    • UFO just landed and posted this here
                                                        0
                                                        Можно, в соседнем автомате модуль и стоит (высылает статистику в виде SMS после звонка с определенного номера). Но комп нужен для более сложных задач (веб-интерфейс, веб-камера, mysql, учет товара).

                                                        Хочу на комп добавить социальные фишки, например после нажатия на большую красную кнопку — делается фотография счастливого клиента и посылается вконтакт на стену группы любителей автомата. Или же кнопка позволяет записать сообщение владельцу, как книга отзывов и предложений.
                                                    0
                                                    Если не секрет, какую модель вендингово аппарата брали за основу?

                                                    Only users with full accounts can post comments. Log in, please.