All Projects → temoto → vender

temoto / vender

Licence: CC0-1.0 license
Open source vending machine controller firmware

Programming Languages

go
31211 projects - #10 most used programming language
c
50402 projects - #5 most used programming language
awk
318 projects

Projects that are alternatives of or similar to vender

Arduino-MDB-UART
Atmega1284 PLC as MDB-UART converter/MDB Master/MDB VMC emulator
Stars: ✭ 70 (+66.67%)
Mutual labels:  vending
ArduinoVendingMachine
Arduino code for an old vending machine
Stars: ✭ 16 (-61.9%)
Mutual labels:  vending-machine
atlas-for-rust
Atlas is an unofficial interactive map experience for Rust.
Stars: ✭ 34 (-19.05%)
Mutual labels:  vending-machine

What

Vender is free open source VMC (Vending Machine Controller).

Status:

  • MDB adapter hardware module - works
  • VMC - in development
  • Configuration editor - planned

Hardware

Required for VMC:

  • Works on RaspberryPI and OrangePi Lite (H3). Possibly anything with GPIO that runs Go/Linux.
  • MDB signal level inverter and current limiter - required, see files in hardware/schematic
  • MDB adapter, takes care of 9bit and timing, we use ATMega328p with hardware/mega-firmware It is not mandatory, software option is available: https://github.com/temoto/iodin

Supported peripherals:

  • MDB coin acceptor, bill validator
  • Evend MDB drink devices
  • any MDB device via configuration scenarios (work in progress)
  • MT16S2R HD44780-like text display
  • TWI(I2C) numpad keyboard
  • SSD1306-compatible graphic display (planned)

Design

VMC overall structure:

  • engine (see internal/engine packages) executes actions, handles concurrency and errors
  • device/feature drivers provide actions to engine
  • configuration scenario specifies action groups and when to execute them

Build

  • Install Go 1.15 from https://golang.org/dl/
  • Set target environment, default is GOARCH=arm GOOS=linux
  • Run script/build
  • Deploy file build/vender to your hardware

Supported Go versions: 1.13 and 1.15

Vender compiled with Go 1.13 was successfully running in production until release v0.200630.0. Go 1.14 introduced async preemtible runtime by interrupting syscalls. Go 1.15 os and net packages automatically retry on EINTR.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].