Sisukord:

$ 1 Arduino-põhine müügiautomaat: 8 sammu
$ 1 Arduino-põhine müügiautomaat: 8 sammu

Video: $ 1 Arduino-põhine müügiautomaat: 8 sammu

Video: $ 1 Arduino-põhine müügiautomaat: 8 sammu
Video: IBADAH DOA PENYEMBAHAN, 01 JUNI 2021 - Pdt. Daniel U. Sitohang 2024, November
Anonim
Image
Image
Korpus
Korpus

Saime oma idee oma inseneriõpetajalt - me kõik arvasime, et oleks hea mõte omada oma klassi automaat ja ta ütles - "lahe, tee üks". Selgus, et müügiautomaat oleks suurepärane vanemprojekt ja kui see on valmis, toimiks see meie inseneriprogrammi korjandusena.

Seda nimetatakse 1 -dollariliseks müügiautomaadiks mitte sellepärast, et selle tegemine maksab 1 dollarit, vaid lihtsalt sellepärast, et arvete vastuvõtja on vanem mudel, mis võtab ainult 1 -dollarilisi arveid:)

1. samm: kriteeriumid

Tahtsime müügiautomaati, mis mahuks laua peale ega oleks liiga pikk. Võtsime laua laiuse mõõtmed, et veenduda, et meil pole automaati laua küljes.

2. samm: ümbris

Korpus
Korpus
Korpus
Korpus
Korpus
Korpus

Tegime oma kasti 19 tolli laiuseks ja 17 tolli pikkuseks ja 25 tolli kõrguseks. Puidu lõikamiseks kasutasime CNC -masinat. Nägude kujundamisel kasutasime solidworksit ja teisendasime need seejärel oma CNC tarkvara jaoks joonistusfailideks. Lihvisime servad ja kruvisime need 1 ¼”sisse. Kinnitasime esipaneeli hingega ja kasutasime ¼ “kruvisid, nii et kruvid ei läheks teisele küljele. Kasutasime ka akrüülklaasi, mille lõikasime riiulite ja esipaneeli jaoks.

3. samm: elektroonika

Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika

Arduino

Kasutasime Arduino Mega 2560 plaati. Kasutasime ka Adafruit Motor Boards'i, et need saaksid samm -mootoreid käitada. Lisasime adafruitile nööpnõelad, et need üksteisega ühendust saaksid. Need pandi üksteise peale. Igaüks saab töötada 2 mootoriga. Samuti pidage meeles, et hüppaja tuleb ühendada.

Töölaua toiteallikas

Bestek ATX toiteplokk, mis hoiab toiteallika sisselülitamiseks adapterit kasutades. Adapter on pärit aadressilt sparkfun.com ja pakub erinevaid pingeid.

Rullid mootoriteks

Tegime solidworks mudelid mootori hoidmiseks, mähisest haaramiseks ja mähise juhtimiseks mööda riiulit. Olime ebayst oma mähised kätte saanud ja mõõtudeks lõiganud. Samuti pidime neist 3 painutama, kuna me ei saanud 6 sirgete otstega mähise kinnitusega ühendamiseks. Seejärel printisime need 3D -sse ja kinnitasime mähise ja mootori külge. Need samm -mootorid, mis meil olid, panime alusele. See hoiaks mootorit ja juhiks mähist mööda sirget rada.

LCD ja klaviatuur

Toiteallikaks kasutasime Arduino klaviatuuri ja LCD -ekraani, mis oli ühendatud toiteadapteri 5V juhtmega ja seejärel samasse Arduino plaati

Juhtmestik

Soovitame kasutada 18 gabariidiga juhtmeid. Meie puhul pidime tegema kompromisse erinevate näidikute abil, sest meil lõppes 18 näidikut

LED riba

Masina valgustamiseks kasutasime LED -riba. Ühendasime selle toiteadapteri 12V juhtmega. Õnneks kasutasime LED -ribal + ja -, mis hõlbustas selle ühendamist.

4. samm: arve vastuvõtja

Arve vastuvõtja
Arve vastuvõtja
Arve vastuvõtja
Arve vastuvõtja
Arve vastuvõtja
Arve vastuvõtja
Arve vastuvõtja
Arve vastuvõtja

Arve vastuvõtjana kasutasime Coinco BA30B. See tuli toiteallikana ühendada otse seinaga. Kombineerisime selle 24-kontaktilise adapteriga, mis oli ühendatud atx-toiteallikast, et ühendada pistikupesaga ja hõlbustada juhtmete ühendamist. Meie järgitud näpunäited leiate järgmiselt lingilt:

techvalleyprojects.blogspot.com/2011/07/ard…

Meie puhul pidime looma arve vastuvõtja tõstmiseks kinnituse, sest muidu oleks see meie korpuse jaoks liiga madal.

Samm: testimine

Kontrollige esmalt elektroonikat väljaspool korpust, veendumaks, et komponendid töötavad. Kõik tekkivad probleemid tuleks enne korpuse sisestamist lahendada.

6. samm: elektroonika korpuse külge

Kui olete elektroonikat testinud ja nende tulemustega rahul, alustage nende paigutamist oma ümbrisesse. Reguleerige traadi pikkused nii, et need mahuksid mugavalt sisse.

7. etapp: lõplik testimine

Kui olete korpuse sisse pannud, katsetage kõike uuesti. Kui kõik töötab ootuspäraselt, siis palju õnne! Tegite müügiautomaadi.

Samm: Arduino kood + lingid

Allalaadimised:

Arduino kood

drive.google.com/drive/folders/1oC4MhOcMFy…

SolidWorksi kaust koos osade failide ja kokkupanekuga

drive.google.com/drive/folders/1amZoypiWcZ…

Igaks juhuks, kui lingiga midagi juhtus, on siin arduino kood täielikult kuvatud. Arduino kood <<

#include #include #include "Arduino.h" #include #include #include "utiliit/Adafruit_MS_PWMServoDriver.h" #include

const int stepsPerRevolution = 200; const bait RIDA = 4; // neli rida const bait COLS = 3; // kolme veeru sümboliklahvid [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; bait rowPins [ROWS] = {5, 6, 7, 8}; // ühenduda klaviatuuri ridade pistikutega bait colPins [COLS] = {2, 3, 4}; // ühenduda klahvistiku veergude otsikutega Klahvistiku klaviatuur = Klaviatuur (makeKeymap (võtmed), rowPins, colPins, ROWS, COLS); Adafruit_MotorShield AFMS1 = Adafruit_MotorShield (); Adafruit_StepperMotor *myMotor1 = AFMS1.getStepper (-200, 1); Adafruit_StepperMotor *myMotor2 = AFMS1.getStepper (-200, 2); Adafruit_MotorShield AFMS2 = Adafruit_MotorShield (0x61); Adafruit_StepperMotor *myMotor3 = AFMS2.getStepper (-200, 1); Adafruit_StepperMotor *myMotor4 = AFMS2.getStepper (-200, 2); Adafruit_MotorShield AFMS3 = Adafruit_MotorShield (0x62); Adafruit_StepperMotor *myMotor5 = AFMS3.getStepper (-200, 1); Adafruit_StepperMotor *myMotor6 = AFMS3.getStepper (-200, 2); Adafruit_MotorShield AFMS4 = Adafruit_MotorShield (0x63); Adafruit_StepperMotor *myMotor7 = AFMS4.getStepper (-200, 1); Adafruit_StepperMotor *myMotor8 = AFMS4.getStepper (-200, 2); LiquidCrystal LCD (1, 11, 9, 10, 12, 13); // Digitaalsed nööpnõelad, millega LCD on ühendatud // Konstantidega // // arve valideerija krediidipinge (-) rida const int billValidator = 22;

// Muutujad /

/ impulsi kestuse salvestamine (millisekundid) allkirjastamata pikk kestus;

// hoides salvestatud dollareid kokku int dollarCounter = 0; void setup () {lcd.begin (16, 1); // määrake lcd teksti koordinaadid lcd.print ("Insert $ 1 Only"); // Määra tekst Serial.begin (9600); // Initsialiseeri jadapordid suhtlemiseks. Serial.println ("Stepper test!"); // Sisestage seeriamonitorile samm -sammutest, et saaksime teada, millist samm -mootorit vajutatakse. AFMS1.algus (); AFMS2.begin (); AFMS3.algus (); AFMS4.begin (); myMotor1-> setSpeed (100); // Määra mootori kiirus, millega nad töötavad myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Arve valideerija ja nupu pinMode pin seadistused (billValidator, INPUT); // Seab billaccepteri

// Initsialiseerige jadapordid suhtlemiseks. Seriaalne algus (9600); Serial.println ("Ootan dollarit …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Hakkab otsima arve vastuvõtjalt saadud impulsi pikkust, kui (kestus> 12000) // Väärtus, mille ta peab ületama, et seda töödeldava ja autentse dollarina kinnitada {// Count dollar dollarCounter ++; // Serial.print mõistmise kontrollimine ("Dollar tuvastatud. / N Kokku:"); // Kuva uus dollarite arv Serial.println (dollarCounter); // silmus, et oodata, kuni nuppu vajutatakse (kestus> 12000) {char key = keypad.getKey (); // ühendab võtmekoormuse ja hakkab vaatama, kumba vajutatakse, kui (võti! = NO_KEY) {// otsib klahvi vajutamist Serial.println (võti); // annab meile teada, millist neist jadamonitoris vajutati} {{(key == '1') {// Kui klahvi 1 vajutatakse, teeb see järgmist: int keyPressed = key - '1'; myMotor8-> samm (580, ETTE, KAKS) // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor8-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}

if (võti == '2') {// Kui klahvi 2 vajutatakse, teeb see järgmist: int keyPressed = võti - '2'; myMotor7-> samm (400, ETTE, KAKS) // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor7-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}, kui (võti == '3') {// Kui klahvi 3 vajutatakse, teeb see järgmist: int keyPressed = võti - '3'; myMotor6-> samm (400, ETTE, KAKS) // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor6-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}, kui (võti == '4') {// Kui klahvi 4 vajutatakse, teeb see järgmist: int keyPressed = võti - '4'; myMotor5-> samm (180, EDASI, KAHEKORDNE); // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor5-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}, kui (võti == '5') {// Kui klahvi 5 vajutatakse, teeb see järgmist: int keyPressed = võti - '5'; myMotor4-> samm (6900, EDASI, DOUBLE); // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor4-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}, kui (võti == '6') {// Kui klahvi 6 vajutatakse, teeb see järgmist: int keyPressed = võti - '6'; myMotor3-> samm (400, EDASI, DOUBLE); // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor3-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}, kui (võti == '7') {// Kui klahvi 7 vajutatakse, teeb see järgmist: int keyPressed = võti - '7'; myMotor7-> samm (400, ETTE, KAKS) // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor7-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}, kui (võti == '8') {// Kui klahvi 8 vajutatakse, teeb see järgmist: int keyPressed = võti - '8'; myMotor8-> samm (400, ETTE, KAKS) // Käivitab mootori ja pöörleb 350 kraadi edasi. myMotor8-> release (); // Vabastab mootori seisukorrast. tagasipöördumine; // Liigub tagasi silmuse koodi algusesse}}}}}} >>

Soovitan: