ΠΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° https://github.com/justintconroy/MdbBillValidator
ΠΡΠΏΡΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΈ/ΠΈΠ»ΠΈ ΠΌΠΎΠ½Π΅ΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΠΊ HardwareSerial Arduino. ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ MDB ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΏΠΎΡΡ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ serial Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡ ΡΡΠΎΡ.
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ Π² MDB ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ½ΡΡΠ° ΠΌΠΎΠ½Π΅ΡΠ°), ΠΈΠ· SoftwareSerial ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: ##12#10* - ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΌΠΎΠ½Π΅ΡΡ Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ Π² 10Ρ. ΠΈΠ»ΠΈ ##13#100* - ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΊΡΠΏΡΡΡ Π² 100Ρ.
Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΡΠ»Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² SofwareSerial Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: ##100#1* - ΡΠ±ΡΠΎΡΠΈΡΡ ΠΌΠΎΠ½Π΅ΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ, ##100#2* - ΡΠ±ΡΠΎΡΠΈΡΡ ΠΊΡΠΏΡΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ, ##110#35* - Π²ΡΠ΄Π°ΡΡ ΡΠ΄Π°ΡΠΈ 35Ρ. ΠΈ Ρ.Π΄.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡ Π΅ΠΌΠ΅ doc/MDB_interface.pdf ΠΊ HardwareSerial ΠΏΠΎΡΡΡ Arduino (ΠΏΠΈΠ½Ρ 0 ΠΈ 1) ΠΠ΅ΡΠΊΠ°ΠΌΠΈ RX(0) ΠΈ TX(1) ΠΎΡΠΌΠ΅ΡΠ΅Π½Ρ Π²Ρ ΠΎΠ΄Ρ/Π²ΡΡ ΠΎΠ΄Ρ Π½Π° ΡΡΡΠΎΠ½Π΅ Arduino (Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠΊΠ°Π·Π°Π½Ρ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΈΠ½ΠΎΠ²).
ΠΠ°ΠΆΠ½ΠΎ! ΠΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌ ΡΠ°Π·ΡΠ΅ΠΌ USB Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ ΠΎΡ Arduino, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌ USB ΡΡΠΈ ΠΏΠΈΠ½Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ ΠΎΡ ΠΏΠ»Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ USB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΏΠΎΡΡ Arduino Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ Ρ ΠΠ, ΡΡΠΎ ΠΈ Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ Ρ MDB ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ.
ΠΠ»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ (SoftwareSerial Π² Arduino). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΠΏΠΈΠ½Π°ΠΌ 10(RX) ΠΈ 11(TX). ΠΠΎΠΌΠ΅ΡΠ° ΠΏΠΈΠ½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ»Π΅ libraries/mdb-bridge/link-data.h:
#define LINK_CONTROLLER_RX_PIN 10
#define LINK_CONTROLLER_TX_PIN 11
Π’Π°ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠΎΡΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 9600 Π±ΠΎΠ΄):
#define LINK_BAUD_RATE 9600
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ##, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ *
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΡΠΎ ΠΎΠ½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ #. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: ##100#1* - ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΡΠΏΡΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° (ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ 100 ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°).
Π ΡΠ°ΠΉΠ»Π΅ libraries/mdb-bridge/mdb-commands.h ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠ°ΠΊ ΠΈΡ ΡΠΈΡΠ°ΡΡ:
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
#define MDB_CMD_RESET (MDB_CMD_OFFSET + 0),1
ΡΡΠΎ ΡΠ±ΡΠΎΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (MDB_CMD_OFFSET = 100)
ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΎΠΉ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ reset Π΄Π»Ρ Π΄Π»Ρ ΠΌΠΎΠ½Π΅ΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°: ##100#2* (Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ΅ΡΡΠΈΠΈ) Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π° enable (MDB_CMD_ENABLE): ##104#2* (2 - ΡΡΠΎ ΠΌΠΎΠ½Π΅ΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ, 1 - ΠΊΡΠΏΡΡΠΎΠΏΡΠ΅ΠΌΠ½ΠΈΠΊ, 3 - ΡΠ΅ΡΠΌΠΈΠ½Π°Π»).
Π£ΡΡΡΠΎΠΉΡΡΠ²Π°, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ°ΡΡΠΈΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ##108* ΠΌΠΎΠ½Π΅ΡΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΡΠ±ΠΎΠΊ (MDB_ANS_CHANGER_TUBE_STATUS) Ρ Π²ΠΎΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
ΠΡΠ»ΠΈ ΠΌΠΎΠ½Π΅ΡΠΎΠΏΡΠ΅ΠΌΠ½ΠΈΠΊ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠ½Π΅ΡΡ, ΡΠΎ ΠΎΠ½ ΠΎΡΠΏΡΠ°Π²ΠΈΡ Π² ΠΏΠΎΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ##142#10*, Π³Π΄Π΅ 142 - ΡΡΠΎ ΠΊΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ° (MDB_ANS_CHANGER_COIN_ACCEPTED), Π° 10 - Π½ΠΎΠΌΠΈΠ½Π°Π» ΠΌΠΎΠ½Π΅ΡΡ.
Π Π°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΡΠΏΡΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΈ ΠΌΠΎΠ½Π΅ΡΠΎΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ. Cashless Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΡΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π²Π°Π½ΠΊΠ°.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΌΠ°Π½Π΄. Π’ΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΡΠΊΡΠΏΠ»ΡΠ°Π°ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΄ΠΎΡΠ°Π±Π°ΡΡΠ²Π°Ρ Π²Π°ΠΌ ΡΠ°ΠΌΠΈΠΌ.
Π‘ΠΊΠ΅ΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π² ΡΠ°ΠΉΠ»Π΅ mdb-controller/mdb-controller.ino
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ Π² ΡΠ°ΠΉΠ»Π΅ mdb-client/mdb-client.ino (Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° Π²ΠΎΡΠΎΡΠΉ arduino ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΡΠ΅ΡΠ΅Π· SofwareSerail).