Payment Terminal with TFT screen: verschil tussen versies
(→possible changes revision 3) |
(→EPS32 board) |
||
Regel 122: | Regel 122: | ||
|- | |- | ||
| 27 || TFT_DC, A0, data/command | | 27 || TFT_DC, A0, data/command | ||
+ | |- | ||
+ | | 4 || TFT_BL, backlight, ''Revision 3 only.'' | ||
|- | |- | ||
| 2 || TFT_RESET | | 2 || TFT_RESET |
Versie van 3 nov 2021 om 18:38
Prototype voor bier/koffie afrekenen. Zie SpaceTegoed voor een overzicht/plan, Payment and Paring REST protocol for the protocol and [github for code] -- not yet versioned or tested. Screen documentation is at https://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf
Inhoud
Versions build
There are currently two in use
- In de schone ruimte
- Achter, bij de grijpvoorraad.
Terminal met beeldscherm
Video: https://player.vimeo.com/video/628163050?h=e344411a85
Bij dit type terminal kun je kiezen wat je betaald met een "+" en "-" knop.
- Het display toont de text 'Swipe to Pay" met daaronder iets als "Bier" of "Koffie" en het bedrag.
- Met de + en - knop blader je door de opties. Totdat je de juiste hebt.
- Swipe je tag langs de terminal.
- Indien het bedrag groter is dan 5 euro komt de vraag "Pay <bedrag>" -- OK of Cancel. Bij cancel ga je terug naar stap 1. Bij Pay naar de volgende stap.
- Het display toont `paying' ... en tot slot 'Paid by <je eigen naam>'.
- En gaat daarna terug naar stap één.
Indien er iets fout gaat zie je op het scherm een foutmelding. Op de server wordt bijgehouden wat er fout ging. Als gebruiker kun je in dit geval niet veel meer doen dan cash betalen, het bij de mailing lijst melden, of het later weer proberen. Na een minuut geen gebruik gaat de terminal ook altijd terug naar stap 1.
Lasercut prototype
Settings for the laser cutter: Letters; 1500 at 30%; holes 1000 at 60% from 3mm plexiglass. Order: letters, small holes, big holes and then the outline.
Buttons are ~29-30 mm arcade style pushbuttons.
Bill of material
In decreasing cost
- ESP32, 38 pin version; ~7 euro (https://www.amazon.nl/gp/product/B074RG86SR)
- 1.77" 160(RGB)x128 TFT screen; ~7 euro (https://www.amazon.nl/AZDelivery-Display-128x160-compatibel-Inclusief/dp/B07TJGF8HS). Pulls 40+ mAmp; too much for GPIO direct drive.
- 1 RFID reader; ~2.50 Euro; (https://www.amazon.nl/gp/product/B074S9FZC5)
- 2 arcade buttons; ~ 2x2 Euro, donation to the space van Leon. LEDs pull about 11 milliAmps (direct GPIO drive ok). https://www.amazon.nl/EG-booglichten-ingebouwde-schakelaar-verlichte/dp/B01N11BDX9
- Stukje plexiglas uit lasercut restjes
- 3D printed spacers/pinnen van plastic voor RFID reader mount.
- 4 boutjes/moertjes 2.3mm uit space voorraad voor scherm - mag wel metaal zijn.
- Wat draadjes uit electronica voorraad.
- USB kabeltje en adaptortje (lag op tafel).
- Restje hipster hout
In versie 2
- Added capacitor across 5volt
- Added capacitor (10uF) across 3v3 to the TFT
- Added 2 resistors of 2k2 to pull the GPIO pins of the buttons low; as they now just 3 (rather than 4) wires; and we need the common wire to be 5Volt as the LEDs won't light up at 3v3.
Totaal: < 20 euro; 10 minuten 3D printen; 15 minuten lasersnijden; 15 minuten hout zagen, nachtje drogen (dank aan de Bandspanner/Belt clamp strap) en 30 minuten solderen/assemblage.
Wiring
Code to check buttons and backlight wiring:
void setup() { Serial.begin(115200); Serial.println("Compiled: " __DATE__ " " __TIME__); pinMode(32, INPUT); pinMode(33, INPUT); pinMode(4,OUTPUT); } void loop() { Serial.print(digitalRead(32)); Serial.print(" "); Serial.print(digitalRead(33)); Serial.println(); digitalWrite(4,(millis()/1000) & 1); delay(200); }
This will show which buttons are pressed and will flash the TFT.
EPS32 board
GPIO | Functie |
---|---|
Vin | to buttons LED, to power supply (5V) |
3V3 | To both boards, VCC, Both Anodes TFT (8,9) |
GND | To buttons, to both boards |
23 | LED button 1 |
22 | LED button 2 |
32 | Switch button 1; with pull-up & connect to GND for board v1; with 2k2 resistor to ground and switch wired to 5V for v2. |
33 | Switch button 2; with pull-up & connect to GND for board v1; with 2k2 resistor to ground and switch wired to 5V for v2. |
12 | TFT_MOSI |
14 | TFT_SCLK / clock |
26 | TFT_CS, SS, Select |
27 | TFT_DC, A0, data/command |
4 | TFT_BL, backlight, Revision 3 only. |
2 | TFT_RESET |
16 | RFID_SCLK |
16 | RFID_SCLK |
5 | RFID_MOSI |
13 | RFID_MISO |
25 | RFID_CS, SS, SDA |
16 | RFID_RESET |
3 | RFID_IRQ - label is RX0 |
Changes revision 3
- 1k2 / 2k2 resistor divider on the switches; as they are not reliable right now.
- Backlight screen takes about 40mA max; the max draw on the EPS32 is 40mA too; so add backlight switch off with 8-20 ohm resistor or drive it through a fet/transistor; on GPIO 4.
Button 1
Wiring for board 2; were we make use of the GPIO _in_put being 5Volt tolerant. And an extra 2k2 Resistor was added to the ground on the PCB.
pin | kleur | label | functie |
---|---|---|---|
1 | geel | Switch | GPIO 32 |
2 | zwart | LED A, Switch | 5V |
3 | rood | LED K | GPIO 23 |
Button 1
Wiring for board 2; were we make use of the GPIO _in_put being 5Volt tolerant. And an extra 2k2 Resistor was added to the ground on the PCB.
pin | kleur | label | functie |
---|---|---|---|
1 | geel | Switch | GPIO 33 |
2 | zwart | LED K, Switch | GND |
3 | rood | LED A | GPIO 22 |
RFID
pin | kleur | label | functie |
---|---|---|---|
1 | zwart | SDA | RFID_CS, GPIO25 |
2 | rood | SCK | RFID_SCLK, GPIO16 |
3 | wit | MOSI | RFID_MOSI, GPIO5 |
4 | geel | MISO | RFID_MISO, GPIO13 |
5 | orange | IRQ | RFID_IRQ, GPIO3, Labeled RX0 |
6 | groen | GND | GND |
7 | blauw | RESET | RFID_RESET, GPIO 17 |
8 | paars | 3V3 | 3V3 |
Scherm
pin | kleur | label | functie |
---|---|---|---|
1 | zwart | GND | GND |
2 | rood | VCC | 3V3 |
3 | wit | SCK | TFT_SCLK, GPIO14 |
4 | geel | SDA | TFT_MOSI, GPIO12 |
5 | orange | RES | TFT_RST, GPIO2 |
6 | groen | RS | TFT_DC, GPIO27 |
7 | blauw | CS | TFT_CS, GPIO26 |
8 | paars | LED A | 3V3 with Capacitor. |