User Tools

Site Tools


infra:tools:vending

name=Hackvend | status=being moved to new vending machine | founder=[[user>q3k]] (maintenance: [[user>informatic]], new vending: [[user>enleth]]) | repo=[[code>q3k/vending-interface-hardware]] \\ [[code>informatic/bitvend]]

Vending machine

Vending jest to szaro bura, a tak naprawdę jasnoniebieska maszyna, która dostarcza szczęśliwcom przebywającym w HS:

  • nawilżacze organizmu z wysoką dawką kofeiny,
  • przeżuwalne składniki węglowadanowo-tluszczowe oraz
  • dobrze schłodzone części elektroniczne.

Operatorzy tej pięknej maszyny (kluczo-posiadacze) to:

  • enleth
  • nuke
  • q3k
  • inf

Podgląd na przepływ funduszy: google.docs

Jeżeli jakimś dziwnym cudem Vending wyjdzie na plus to(jest parę groszy na plusie) zarobki zostaną przeznaczone na (do edycji):

  • opłaty za prąd elektryczny w HS
  • fajne projekty

Aktualni operatorzy nie czerpią korzyści majątkowych z obsługi maszyny, ale istniej hipotetyczna możliwość by członek HS zarobkował na przyniesionych przez siebie produktach.

Kontakt w sprawie zjedzonych monet, powiększenie asortymentu, itd: nuke@hackerspace.pl

TODO

  1. obsługa bitcoin (patrz niżej)
  2. obsługa kart NFC
  3. wzbogacenie asortymentu
  4. przekablowanie
  5. obsługa banknotów fiat (nuke: aczkolwiek niechętnie widziana)
  6. obsługa lightning network

Dane od Q3k:

Stos technologiczny w vendingu wygląda następująco

VMC (vending management controller) który przyszedł z vendingiem (Vega). Sflashowany polskim firmwarem przez janusza który tym handluje. Gdzieś się wala dump firmware'u który zrobiłem.

Wrzutnik monet MEI CashFlow ileśtam, kupiony osobno na Allegro za grosze. Robi złotówki, ale tak sobie. Ma port serwisowy, do którego wpięty jest jakiś drut ktory teraz wystaje przez wrzutnik. Niewiele wiadomo o protokole serwisowym.

VMC i wrzutnik gadają po magistrali MDB (skrót od Multi-Drop Bus), w jakiejś starej wersji. To jest standardowy protokół i warstwa fizyczna używana m. in. w vendingach i maszynach arkadowych i kasynach. Chyba multimaster, na pewno multislave, w zasadzie UART tylko że z a) nietypową warstwą fizyczną b) ciasnymi timingami na komunikacji c) 9 bitami danych. Jak się okazuje, nasz VMC robi MDB tylko… w odwrotnej polaryzacji.

Customowe PCB: https://code.hackerspace.pl/q3k/vending-interface-hardware/ . W zamierzeniu miało odwaracać polaryzację na we/wy VMC ażeby było to standardowe MDB (i się dogadało z wrzutnikiem), ale też miało móc się na tej magistrali odzywać STM32Fcoś, które na tym PCB siedzi. Nie wyszło mi coś, i nie jestem w stanie widzieć ruchu MDB na STM32 - albo błąd w projekcie, albo w wykonaniu, nie debugowałem. (Został wymieniony rezystor i działa) Ale dzięki niemu VMC i wrzutnik są w stanie się dogadać.

Do mojego PCB siedzi podpięty SBC Olinuxino z jakimś SAM9, 64MB RAMu i jakimś Linuxem. Miało w zamerzeniu służyć jako interfejs mojego PCB do świata. Dodatkowo, jest podpiętych para rzeczy debugowych - RPi i programator JTAG, które miały mi pozwolić flashować STMa w trakcie działania vendingu. Ethernet od RPi wystaje sobie też przez wrzutnik wrzutnik, tak samo jak interfejs debugowy.(aktualnie wyjęte)

Stan na 2017/01/14

informatic usiadł i dostarczył. vuko debugował martwy tor nadawczy (również złe rezystory), Olinuxino znikło, pojawiło się raspi z jumperami z UART_RX/UART_TX wpiętymi do odpowiednio GPIO 4 i 17. Wszystko oparte jest na kawałku pythona z zaimplementowanym mdb. Do obsługi MDB/9-bit UART używane jest pigpiod. Działa niespodziewanie dobrze. Transakcje na adres BTC ustawiony w konfiguracji softu (w tym momencie adres pod kontrolą infa) są konwertowne na złotówki po aktualnym kursie BTC. Multivend jest w tym momencie wyłączony, więc jakiekolwiek nadmiary zostają w środku… (i prawdopodobnie służą do pokrycia wahań kursu).

Webówka z listą przykładowych produktów/cen i qrkodami dostępna na: http://vending.waw.hackerspace.pl/.

Zakupy w BTC są logowane wraz z hashem transakcji, kwotą, wartością produktu i numerem produktu. There is no privacy in the amazing world of bitcoin. Dodatkowo (bardzo na około) wykrywane są eventy wrzucenia monety oraz wydania produktu przy użyciu płatności fiatem. To wszystko logowane jest do spejsowego prometheusa, z (docelowo) ładnymi grafami w grafanie.

Po kod proszę bić na NICKNAME at hackerspace dot pl.

Stan na 2021/09/29

Na początku 2020 vending został wymieniony w całości na model Vendo Vue 40. Fragmenty dokumentacji serwisowej/użytkowej: https://hackerspace.pl/~enleth/vuevend/

Został w końcu zaimplementowany interfejs USB-MDB na STM32F1: https://code.hackerspace.pl/informatic/bitvend/tree/usb-interface

Działał akceptowalnie do połowy 2021, gdy PDC (Product Delivery Controller - “ramię” do wydawania produktu) po wielu podejściach napraw/serwisów części mechanicznej przestało odpowiadać. We wrześniu 2021 q3k z enleth zrobili drugą wersję interfejsu USB-MDB pozwalającą na odbieranie danych na linii “MDB Master RX” w celu ułatwienia debugowania. VMC (Vending Machine Controller - główna płyta) komunikuje się z PDC również przez MDB, na dokładnie tej samej szynie na której obecne są wrzutniki/akceptory.

  • Sama szyna MDB działa - jesteśmy w stanie poprosić VMC o wydawanie monet z wrzutnika.
  • Płytka PDC mryga na zielono co sekundę (wygląda jakby dostawała zapytania od VMC bo taki był standardowo cykl komunikacji z urządzeniami)
  • Wygląda na to że mamy continuity MDB RX/MDB TX/MDB Common między wtyczką wchodzącą do płytki PDC a wtyczką wchodzącą do VMC.
  • Wygląda jakby VMC próbowało skomunikować się z VMC pod adresem F0h (Vending Machine Specific Peripheral #1) i nie dostaje żadnej odpowiedzi.
infra/tools/vending.txt · Last modified: 2021/09/29 14:25 by informatic