Sadržaj:

Automat za prodaju od 1 USD na bazi Arduina: 8 koraka
Automat za prodaju od 1 USD na bazi Arduina: 8 koraka

Video: Automat za prodaju od 1 USD na bazi Arduina: 8 koraka

Video: Automat za prodaju od 1 USD na bazi Arduina: 8 koraka
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Studeni
Anonim
Image
Image
Kućište
Kućište

Ideju smo dobili od našeg učitelja inženjeringa - svi smo mislili da bi bilo dobro imati prodajni automat za naš razred, a on je rekao - "cool, make one". Ispostavilo se da bi automat za prodaju bio sjajan stariji projekt, a kad bi bio dovršen, funkcionirao bi kao prikupljač sredstava za naš inženjerski program.

Naziva se automat za prodaju od 1 USD ne zato što izrada košta 1 USD, već jednostavno zato što je akceptor stariji model koji uzima samo novčanice od 1 USD:)

Korak 1: Kriteriji

Željeli smo automat koji će stati na stol i ne biti previsok. Uzeli smo dimenzije širine stola kako bismo bili sigurni da automat nije visio sa stola.

Korak 2: Kućište

Kućište
Kućište
Kućište
Kućište
Kućište
Kućište

Našu smo kutiju napravili širinom 19 inča, dužinom 17 inča i visinom 25 inča. Za rezanje drva koristili smo CNC stroj. Za oblikovanje lica koristili smo solidworks, a zatim ih pretvorili u vrste datoteka za crtanje za naš CNC softver. Brusimo rubove, a zatim ih uvijamo s 1 ¼”. Prednju ploču smo pričvrstili šarkama i upotrijebili vijke ¼ “, kako vijci ne bi prošli na drugu stranu. Također smo koristili akrilno staklo koje smo izrezali za police i prednju ploču.

Korak 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Koristili smo Arduino Mega 2560 ploču. Koristili smo i Adafruit motorne ploče kako bi mogle pokretati koračne motore. Adafruitima smo dodali igle kako bi se međusobno spojile. Umetali su ih jedan na drugi. Svaki može pokrenuti 2 motora. Također imajte na umu da kratkospojnik mora biti povezan.

Napajanje za stolna računala

Bestek ATX napajanje pomoću adaptera za uključivanje napajanja. Adapter je sa sparkfun.com i pruža različite napone.

Zamota u motore

Napravili smo čvrste modele za držanje motora, hvatanje zavojnice i vođenje zavojnice uz policu. Naše smo zavojnice dobili s ebaya i izrezali ih na dimenziju. Također smo morali saviti 3 od njih jer nismo dobili 6 ravnih krajeva za spajanje na nosač zavojnice. Zatim smo ih 3D ispisali i pričvrstili na zavojnicu i motor. Koračne motore koje smo imali stavili smo u nosač. Držao bi motor i vodio zavojnicu ravnom stazom.

LCD i tipkovnica

Za napajanje smo koristili Arduino tipkovnicu i LCD zaslon spojen na 5V kabel na adapteru za napajanje, a zatim na istu Arduino ploču

Ožičenje

Preporučujemo uporabu žica promjera 18. U našem slučaju morali smo napraviti kompromis pomoću različitih mjerača jer nam je ponestalo 18 mjerača

LED traka

Za osvjetljavanje stroja koristili smo LED traku. Spojili smo ga na 12V kabel na adapteru za napajanje. LED traka koju smo koristili na sreću imala je + i - na sebi što je olakšalo proces povezivanja.

Korak 4: Prihvaćanje računa

Prihvatatelj računa
Prihvatatelj računa
Prihvatatelj računa
Prihvatatelj računa
Prihvatatelj računa
Prihvatatelj računa
Prihvatatelj računa
Prihvatatelj računa

Koristili smo Coinco BA30B za prihvaćanje računa. Morao je biti spojen izravno na zid kao izvor energije. Kombinirali smo ga s 24-pinskim adapterom iz atx napajanja kako bismo ga priključili i omogućili lakše ožičenje. Ispisi koje smo pratili nalaze se na sljedećoj poveznici:

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

U našem slučaju morali smo stvoriti nosač za podizanje akceptora jer bi u protivnom bilo prenisko za naše kućište.

Korak 5: Testiranje

Prvo testirajte elektroniku izvan kućišta kako biste bili sigurni da komponente rade. Bilo koji problemi koji se pojave trebaju se riješiti prije nego što se postave u kućište.

Korak 6: Elektronika do kućišta

Nakon što isprobate elektroniku i budete zadovoljni njezinim rezultatima, počnite je stavljati u kućište. Podesite duljinu žice tako da udobno stane unutra.

Korak 7: Završno testiranje

Nakon postavljanja u kućište, sve ponovo testirajte. Ako sve radi kako ste očekivali, čestitamo! Napravili ste automat.

Korak 8: Arduino kod + veze

Preuzimanja:

Arduino kod

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

Mapa SolidWorks s datotekama dijelova i sklopom

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

U slučaju da se nešto dogodilo s vezom, evo arduino koda koji je u potpunosti prikazan. Arduino kod <<

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

const int stepsPerRevolution = 200; const byte ROWS = 4; // četiri retka const byte COLS = 3; // ključevi s tri stupca char [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // povezivanje s ispisom reda bajta tipkovnice colPins [COLS] = {2, 3, 4}; // povezivanje s ispisima stupaca tipkovnice Tipkovnica tipkovnice = Tipkovnica (makeKeymap (tipke), retke, 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); LCD tekući kristal (1, 11, 9, 10, 12, 13); // Digitalni pinovi na koje je LCD spojen // Konstante // // pin za kreditnu sposobnost provjeritelja računa (-) redak const int billValidator = 22;

// Varijable /

/ snimanje trajanja impulsa (milisekunde) nepotpisano dugo trajanje;

// držanje ukupno zabilježenih dolara int dollarCounter = 0; void setup () {lcd.begin (16, 1); // postavlja lcd tekstualne koordinate lcd.print ("Umetni samo 1 USD"); // Postavljanje teksta Serial.begin (9600); // Pokretanje serijskih portova za komunikaciju. Serial.println ("Stepper test!"); // Utipkajte Stepper Test u serijskom monitoru tako da znamo koji je koračni motor pritisnut. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Postavi brzinu motora pri kojoj će pokretati myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Pin postavke za validator računa i gumb pinMode (billValidator, INPUT); // Postavlja billaccepter

// Pokretanje serijskih portova za komunikaciju. Serial.begin (9600); Serial.println ("Čekanje na dolar …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Počinje tražiti duljinu impulsa primljenu od akceptora ako (trajanje> 12000) // Vrijednost koju mora premašiti kako bi se potvrdio kao obrađen i autentičan dolar {// Broji dolar dollarCounter ++; // Provjera razumijevanja Serial.print ("Dollar otkriven. / N Ukupno:"); // Prikaz novog broja dolara Serial.println (dollarCounter); // petlja kako bi se čekalo dok se gumb ne pritisne while (trajanje> 12000) {char key = keypad.getKey (); // povezuje tipkovnicu i počinje vidjeti koja je pritisnuta ako (tipka! = NO_KEY) {// tražit će pritisnutu tipku Serial.println (tipka); // daje nam do znanja koji je pritisnut u serijskom monitoru} {if (key == '1') {// Ako je tipka 1 pritisnuta, čini sljedeće: int keyPressed = key - '1'; myMotor8-> korak (580, NAPRIJED, DVOJNO); // Pokreće motor i okreće se za 350 stupnjeva u smjeru naprijed. myMotor8-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje}

if (key == '2') {// Ako pritisnete tipku 2, učinite sljedeće: int keyPressed = key - '2'; myMotor7-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru naprijed. myMotor7-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje} if (key == '3') {// Ako je tipka 3 pritisnuta, čini sljedeće: int keyPressed = key - '3'; myMotor6-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se za 350 stupnjeva u smjeru naprijed. myMotor6-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje} if (key == '4') {// Ako je tipka 4 pritisnuta, čini sljedeće: int keyPressed = key - '4'; myMotor5-> korak (180, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru naprijed. myMotor5-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje} if (key == '5') {// Ako se pritisne tipka 5, čini se sljedeće: int keyPressed = key - '5'; myMotor4-> korak (6900, NAPRIJED, DVOJNO); // Pokreće motor i okreće se za 350 stupnjeva u smjeru naprijed. myMotor4-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje} if (key == '6') {// Ako je tipka 6 pritisnuta, čini sljedeće: int keyPressed = key - '6'; myMotor3-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se za 350 stupnjeva u smjeru naprijed. myMotor3-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje} if (key == '7') {// Ako je tipka 7 pritisnuta, čini sljedeće: int keyPressed = key - '7'; myMotor7-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se 350 stupnjeva u smjeru naprijed. myMotor7-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje} if (key == '8') {// Ako je tipka 8 pritisnuta, čini sljedeće: int keyPressed = key - '8'; myMotor8-> korak (400, NAPRIJED, DVOJNO); // Pokreće motor i okreće se za 350 stupnjeva u smjeru naprijed. myMotor8-> release (); // Oslobađa motor iz stanja da se drži na mjestu. povratak; // Vraća se na početak koda petlje}}}}}} >>

Preporučeni: