Myyntijärjestelmän buildlog

Helsinki Hacklabin keskitetyn myyntijärjestelmän speksausta
Reaaliaikaista stormausta asiasta #helsinkihacklab-myyntilaite @ IRCnet

Speksit
Laitteen ulkoasu

  • 17" LCD vaakasuunnassa
  • 10 kpl valollisia nappeja valkoisella valolla (mallia spede/ray) (5 näytön molemmin puolin tasaisin välein sijoitettuna)
  • Kolikkolukko laitteen kyljessä

Tietokanta

  • SQLite
  • Käyttäjätilit (jäsennumero, nimi, tilin saldo, käyttäjä/admin/jne-statusflagit)
  • Tuotetietokanta (nimi, hinta, varastosaldo, viivakoodi, …)
  • Säännölliset backupit (kerran päivässä verkon kautta vai ulkoiselle kovalevylle?)

UI

  • Kymmenellä napilla toimiva käyttöliittymä
  • Viivakoodilukijalla suurin osa tuotteista ostettavissa
  • Kuvalliset tuotelaatikot
  • “Pankkiautomaatti/bensamaatti”-tyyppinen käyttöliittymä

Rauta

  • Mahdollisimman modulaarinen
  • Raspberrypi B+ (SD-kortti helppo kloonata talteen ja koko raspi helppo korvata jos menee rikki)
  • Arduino Microlla näppisemulaatio ja valojen ohjaus
  • Kolikkolukko jossa erillinen atmega joka muuntaa kolikkolukon signaalit järkevään muotoon ja tarjoaa ne raspille
  • 17" LCD

Kategorisoimattomat asiat

  • Myyntijärjestelmä saa secureNFC -järjestelmän lukijalta jäsennumeron
  • Tilillä maksimisaldo ja minimisaldo
  • Kolikkolukko jolla vieraat voi ostaa tuotteita ilman autentikointia
  • Jäsenet voi ostaa tuotteita ja lisätä ne järjestelmään sekä määritellä hinnan -> lisättyjen tuotteiden summa saldona lisääjän tilille
  • Mahdollinen laitteen sisäinen kuittipaperilogi transaktioista
  • Limux ja karkkimaatti-integraatiot
  • Paypal - rahanlisäys
  • Jäsenten väliset järjestelmän sisäiset rahansiirrot (Jäsen x antaa y:lle 20e setelin, jäsen y siirtää tililtään 20e jäsen x:n tilille, jäsen x voi ostaa tilin saldolla tuotteita)

BOM

  • Raspberrypi B+ (USD 42,88)
  • 17" LCD-näyttö DVI/HDMI-liittimellä (jostain ilmaiseksi)
  • Vanerikotelo (x euroa)
  • 10x Spede tyylisiä valollisia suorakulmionappeja (USD 40.50)
  • Arduino Micro klooni (USD 7,20)
  • Kolikkolukko (25 eur)
  • Ethernet-johto
  • Akryylinen suojalevy LCD:n päälle (labilta)
  • Saranat ja lukko tai joku muu valvottu sisäänpääsy koteloon
  • 2x microSd-kortti, yksi käyttöön toinen backup.
  • Kuittitulostin*
  • PS3 Eye kamera*

Yht. 97 euroa (merkatut hinnat yhteensä)

(*) = Mahdollinen ominaisuus

Milestone 1

  • Tietokanta ja basic käyttöliittymä (jammi)
  • Kolikkolukkointegraatio (psoden)
  • LCD & laitteen kotelointi (psoden)
  • Näppäin&valo-palikka (psoden)

Alle voi keskustella olemassa olevista pointeista tai lisätä omia. Päivitän tätä postausta sen mukaan mikä on yleinen konsensus asioista.

Edit. 29.10. klo 16:20 Lisätty Milestone, tarkennettu pointteja, lisätty tehtävälistaa
Edit 31.10. klo 13:50 Pieniä korjauksia ja asiamuutoksia sekä BOM
Edit 2.11. klo 21:00 Tarkennettu speksejä,

Tilannekatsaus 7.11.

Kolikkolukko saapui ja ohjelmointi oli suhteellisen helppoa kun vaan luki ohjetta. Kiinalaiseen tyyliin add ja minus napit oli tietenkin länsimaisella järjellä ajateltuna väärin päin ja muuta pientä ongelmaa. Suurin ongelma laitteessa oli se, että se antoi signaalin 30ms pulsseina 100ms välein. Jos siis ohjelmoi laitteen hyväksymään 5s-2e kolikot niin kahden euron kolikon pulssien lähettämiseen menisi hieman vajaa kolme sekuntia! Aivan järjettömiä aikoja. Laitteessa on kuitenkin pari 7-segmenttinäyttöä jotka näyttävät pulssimäärän nopeasti aina kolikkoa syötettäessä. Data näihin näyttöihin kulkee laitteen MCU:lta shift registerille HC164 SPI-muodossa. Oli siis suhteellisen yksinkertaista napata tuosta välistä data ja parsettaa se ulkoisella AVR:llä. Nyt kolikon arvon saa sarjaportin kautta heti kun syöttää sen laitteeseen. Eli siis Milestone 1:sen kolikkolukko-osuus alkaa olla lähes kunnossa. Vielä tarvitaan disablointiin fetti ja joku pieni pala verolevyä johon nuo liittimen ja fetin voi kasata. Nappi/valo-puolelta valmiina on sovellukset ja nyt odotellaan nappien saapumista. Sillä välin voin kasata jo R-2R ladderin valmiiksi jotta tuossa arduino microssa (Atmega32u4) riittää IO kaikkeen tarvittavaan.