กระปุกออมสินแบบนับเงินทุกครั้งที่มีการออมเข้ามา โดยมูลค่าที่สะสมไว้จะถูกเก็บไว้ใน Local Storage ของเครื่อง ทำให้สามารถดูยอดเงินที่สะสมไว้ได้แม้ไฟตก
✔️ รองรับธนบัตร 20, 50, 100, 500, 1000
✔️ รองรับเหรียญ 1, 2, 5, 10
เมื่อเครื่องถูกเปิดขึ้นมา ระบบจะดึงค่ายอดเงินที่เครื่องเคยออมไว้มาแสดงผลก่อน หากยังไม่เคยออมเลยจะแสดงผลเป็น 0
เมื่อมีการใส่เหรียญ ระบบจะทำการอ่านค่าเหรียญที่ใส่เข้ามา โดยตัว S-626 จะส่งสัญญาณ LOW-HIGH ออกมาสำหรับเหรียญแต่ละแบบ โดยมีสูงสุด 4 แบบ คือ
| เหรียญ | สัญญาณ |
|---|---|
| 1 | 1 ครั้ง |
| 2 | 2 ครั้ง |
| 5 | 3 ครั้ง |
| 10 | 4 ครั้ง |
สามารถดูวิธีตั้งค่า S-626 ที่นี่
โดยระบบจะทำการนับจำนวนครั้งที่ได้รับสัญญาณ และแปลงเป็นจำนวนเงิน แล้วทำการเพิ่มยอดเงินใน Local Storage เพื่อทำการแสดงผลยอดเงินที่สะสมไว้ในเครื่อง
แต่สำหรับในธนบัตร ผู้ใช้ต้องเลือกว่าจะใส่แบงค์มูลค่าเท่าไรก่อนใส่ลงไป โดยสามารถใส่ลงไปได้เรื่อย ๆ ในประเภทธนบัตรเดียวกัน
กรณีที่มีการนำเงินออกทั้งหมด ผู้ใช้สามารถกดปุ่มซ้ายพร้อมกับปุ่มขวา เพื่อทำการล้างยอดเงินที่สะสมไว้ในเครื่อง
ในโปรเจคนี้เขียนโดยใช้ class ของ C++ ในแบบที่ port ไปใช้กับไมโครคอนโทรลเลอร์อื่นได้ง่าย แต่สำหรับโปรเจคนี้ จะสร้างโดยอิงอุปกรณ์ดังนี้
| LCD | ESP8266 |
|---|---|
| GND | GND |
| VCC | 5V |
| SDA | D2 |
| SCL | D1 |
| Left Button | ESP8266 |
|---|---|
| NO | GND |
| COM | D4 |
| Right Button | ESP8266 |
|---|---|
| NO | GND |
| COM | D6 |
| QRE1113 | ESP8266 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| OUT | A0 |
| S-626 | ESP8266 |
|---|---|
| VCC | 12V |
| GND | GND |
| COIN | D5 |
| DRV8833 | ESP8266 | Step Down |
|---|---|---|
| VM | OUT+ | |
| GND | GND | GND |
| AIN1 | D7 | |
| AIN2 | GND | |
| STBY | OUT+ |
| Step Down | Power adapter 12v | ESP8266 |
|---|---|---|
| IN+ | 12V | |
| IN- | GND | |
| OUT+ | VIN | |
| OUT- | GND |
| Motor | DRV8833 |
|---|---|
| + | AOUT1 |
| - | AOUT2 |
โดยข้อมูลขาสัญญาณของ ESP8266 สามารถดูได้จากในโค้ดส่วนนี้
/* --------------------------------- Pinout --------------------------------- */
pin_t _pin_lcd_sda(4, OUTPUT); //D2 on Nodemcu v2
pin_t _pin_lcd_scl(5, OUTPUT); //D1 on Nodemcu v2
pin_t _pin_coin(14, INPUT_PULLUP); //D5 on Nodemcu v2
pin_t _pin_bill(A0, INPUT); //ADC0 on Nodemcu v2
pin_t _pin_puller(15, OUTPUT); //D8 on Nodemcu v2
pin_t _pin_bleft(2, INPUT_PULLUP); //D4 on Nodemcu v2 *** HIGH At boot
pin_t _pin_bright(12, INPUT_PULLUP); //D6 on Nodemcu v2
โมดูลมอร์