Innholdsfortegnelse:

$ 1 Arduino-basert salgsautomat: 8 trinn
$ 1 Arduino-basert salgsautomat: 8 trinn

Video: $ 1 Arduino-basert salgsautomat: 8 trinn

Video: $ 1 Arduino-basert salgsautomat: 8 trinn
Video: Amazing arduino project 2024, November
Anonim
Image
Image
Hylster
Hylster

Vi fikk ideen vår fra ingeniørlæreren vår - vi trodde alle at det ville være en god idé å ha en automat til klassen vår, og han sa - "kult, lag en". Det viste seg at en salgsautomat ville være et flott seniorprosjekt og når den var ferdig ville fungere som en innsamling for vårt ingeniørprogram.

Det kalles en salgsautomat på $ 1, ikke fordi det koster $ 1 å lage, men ganske enkelt fordi regningsakseptoren er en eldre modell som bare tar $ 1 regninger:)

Trinn 1: Kriterier

Vi ønsket en salgsautomat som ville passe på et skrivebord og ikke være for høy. Vi tok dimensjonene på bredden på bordet for å sikre at vi ikke hadde automaten hengende av bordet.

Trinn 2: Hylster

Hylster
Hylster
Hylster
Hylster
Hylster
Hylster

Vi lagde boksen vår 19 tommer bred og 17 centimeter lang og 25 centimeter høy. Vi brukte en CNC -maskin til å kutte treverket vårt. Vi brukte solidworks til å designe ansiktene og konverterte dem deretter til tegnefiltyper for vår CNC -programvare. Vi pusset kantene og skrudde dem deretter inn med 1 ¼”. Vi festet frontpanelet med et hengsel og brukte ¼ “skruer, slik at skruene ikke skulle gå gjennom til den andre siden. Vi brukte også akrylglass som vi kuttet til hyllene og frontpanelet.

Trinn 3: Elektronikk

Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk
Elektronikk

Arduino

Vi brukte et Arduino Mega 2560 Board. Vi brukte også Adafruit Motor Boards slik at de kan kjøre trinnmotorene. Vi la til pins til adafruitene for at de skulle koble seg til hverandre. De ble satt dem oppå hverandre. Hver enkelt kan kjøre 2 motorer. Vær også oppmerksom på at jumperen må være tilkoblet.

Desktop strømforsyning

Bestek ATX Strømforsyning ved hjelp av en adapter for å holde strømforsyningen på. Adapteren er fra sparkfun.com og gir forskjellige spenninger.

Spoler seg inn i motorer

Vi laget solidworks -modeller for å holde motoren, ta tak i spolen og lede spolen langs hyllen. Vi hadde oppnådd spolene våre fra ebay og kuttet dem til dimensjon. Vi måtte også bøye 3 av dem siden vi ikke fikk 6 med de rette endene for å koble til spolefeste. Vi trykte dem deretter 3D og festet dem til spolen og motoren. Steppermotorene vi hadde, satte vi inn i et feste. Den ville holde motoren og lede spolen langs en rett bane.

LCD og tastatur

Vi brukte et Arduino -tastatur og LCD -skjerm koblet til en 5V -ledning på strømforsyningsadapteren for strøm og deretter til det samme Arduino -kortet

Kabling

Vi anbefaler bruk av 18 gauge ledninger. I vårt tilfelle måtte vi gå på kompromiss ved å bruke forskjellige målere fordi vi gikk tom for 18 målere

LED -stripe

Vi brukte en LED -stripe for å lyse opp maskinen. Vi koblet den til en 12V -ledning på strømforsyningsadapteren. LED -stripen vi brukte hadde heldigvis en + og - på den som gjorde prosessen med å koble den lettere.

Trinn 4: Bill Acceptor

Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor
Bill Acceptor

Vi brukte en Coinco BA30B som vår godkjennelse av regninger. Den måtte kobles direkte til veggen som en strømkilde. Vi kombinerte den med en 24-pinners adapter fra en atx strømforsyning for å koble til og muliggjøre enklere ledninger. Pinoutene vi fulgte finnes i følgende lenke:

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

I vårt tilfelle måtte vi lage et feste for å heve regningsakseptoren fordi det ellers ville være for lavt for huset vårt.

Trinn 5: Testing

Test elektronikken utenfor foringsrøret først for å sikre at komponentene fungerer. Eventuelle problemer som måtte oppstå bør løses før du plasserer dem i foringsrøret.

Trinn 6: Elektronikk til foringsrør

Når du har testet elektronikken og er fornøyd med resultatene, begynner du å plassere dem i kabinettet. Juster ledningslengdene slik at de sitter godt inne.

Trinn 7: Sluttesting

Når alt er plassert i foringsrøret, tester du alt igjen. Hvis alt fungerer som forventet, gratulerer! Du har laget en automat.

Trinn 8: Arduino -kode + koblinger

Nedlastinger:

Arduino -koden

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

SolidWorks -mappe med delfiler og montering

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

Bare i tilfelle noe har skjedd med lenken, her er arduino -koden fullstendig vist. Arduino -kode <<

#include #include #include "Arduino.h" #include #include #include "-verktøy/Adafruit_MS_PWMServoDriver.h" #include

const int stepsPerRevolution = 200; const byte RADER = 4; // fire rader const byte COLS = 3; // tre kolonner tegnetaster [RADER] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // koble til radutklippene til tastaturbyte colPins [COLS] = {2, 3, 4}; // koble til kolonnen pinouts på tastaturet Tastatur tastatur = Tastatur (makeKeymap (nøkler), 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); // Digitale pinner LCD-en er koblet til // Konstanter // // pin for bill validator's credit (-) line const int billValidator = 22;

// Variabler /

/ registrering av varigheten av puls (millisekunder) usignert lang varighet;

// å holde den totale dollar registrert int dollarCounter = 0; ugyldig oppsett () {lcd.begin (16, 1); // sett lcd -tekstkoordinater lcd.print ("Sett bare inn $ 1"); // Sett tekst Serial.begin (9600); // Initialiser serielle porter for kommunikasjon. Serial.println ("Stepper test!"); // Skriv ut trinntest i seriell monitor slik at vi vet hvilken trinnmotor som trykkes inn. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Angi motorhastighet som de skal kjøre myMotor2-> setSpeed (100) med; myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Pin -oppsett for regningsvaliderer og knapp pinMode (billValidator, INPUT); // Setter billaccepter

// Initialiser serielle porter for kommunikasjon. Serial.begin (9600); Serial.println ("Venter på dollar …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Begynner å lete etter pulslengden mottatt fra regningsakseptoren hvis (varighet> 12000) // Verdien som den må overgå for å validere som en behandlet og autentisk dollar {// Count dollar dollarCounter ++; // Kontrollerer om Serial.print er forstått ("Dollar oppdaget. / N Totalt:"); // Vis nytt dollartall Serial.println (dollarCounter); // loop for å vente til en knapp trykkes mens (varighet> 12000) {char key = keypad.getKey (); // får tastaturet koblet til og begynner å se hvilken som trykkes hvis (tast! = NO_KEY) {// vil lete etter tastetrykk Serial.println (tast); // gir oss beskjed om hvilken som ble trykket på den serielle skjermen} {if (key == '1') {// Hvis tast 1 trykkes, gjør følgende: int keyPressed = key - '1'; myMotor8-> trinn (580, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning forover. myMotor8-> utgivelse (); // Frigjør motoren fra å holde seg på plass. komme tilbake; // Går tilbake til begynnelsen av sløyfekoden}

if (key == '2') {// Hvis tast 2 trykkes, gjør følgende: int keyPressed = key - '2'; myMotor7-> trinn (400, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning fremover. myMotor7-> utgivelse (); // Frigjør motoren fra at den holder seg på plass. komme tilbake; // Går tilbake til begynnelsen av sløyfekoden} if (key == '3') {// Hvis tast 3 trykkes, gjør følgende: int keyPressed = key - '3'; myMotor6-> trinn (400, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning fremover. myMotor6-> utgivelse (); // Frigjør motoren fra at den holder seg på plass. komme tilbake; // Går tilbake til begynnelsen av sløyfekoden} if (key == '4') {// Hvis tast 4 trykkes, gjør følgende: int keyPressed = key - '4'; myMotor5-> trinn (180, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning forover. myMotor5-> utgivelse (); // Frigjør motoren fra å holde seg på plass. komme tilbake; // Går tilbake til begynnelsen av sløyfekoden} if (key == '5') {// Hvis tast 5 trykkes, gjør følgende: int keyPressed = key - '5'; myMotor4-> trinn (6900, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning fremover. myMotor4-> utgivelse (); // Frigjør motoren fra å holde seg på plass. komme tilbake; // Går tilbake til begynnelsen av sløyfekoden} if (key == '6') {// Hvis tast 6 trykkes, gjør følgende: int keyPressed = key - '6'; myMotor3-> trinn (400, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning fremover. myMotor3-> release (); // Frigjør motoren fra å holde seg på plass. komme tilbake; // Går tilbake til begynnelsen av sløyfekoden} if (key == '7') {// Hvis tast 7 trykkes, gjør følgende: int keyPressed = key - '7'; myMotor7-> trinn (400, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning fremover. myMotor7-> utgivelse (); // Frigjør motoren fra at den holder seg på plass. komme tilbake; // Går tilbake til begynnelsen av sløyfekoden} if (key == '8') {// Hvis tast 8 trykkes, gjør følgende: int keyPressed = key - '8'; myMotor8-> trinn (400, FREM, DOBBELT); // Starter motoren og roterer 350 grader i retning fremover. myMotor8-> utgivelse (); // Frigjør motoren fra å holde seg på plass. komme tilbake; // Går tilbake til begynnelsen av løkkoden}}}}}}} >>

Anbefalt: