Obsah:

1 dolár automat na Arduino: 8 krokov
1 dolár automat na Arduino: 8 krokov

Video: 1 dolár automat na Arduino: 8 krokov

Video: 1 dolár automat na Arduino: 8 krokov
Video: 202 Купюры в 1 Банкомат 2024, Júl
Anonim
Image
Image
Plášť
Plášť

Náš nápad sme dostali od nášho učiteľa inžinierstva - všetci sme si mysleli, že by bolo dobré mať automat pre našu triedu a on povedal - „v pohode, vyrob si“. Ukázalo sa, že automat by bol skvelý seniorský projekt a po dokončení by fungoval ako finančná zbierka pre náš inžiniersky program.

Hovorí sa mu automat na 1 dolár nie preto, že by jeho výroba stála 1 dolár, ale jednoducho preto, že akceptor faktúry je starší model, ktorý vyžaduje iba účty za 1 dolár:)

Krok 1: Kritériá

Chceli sme automat, ktorý by sa zmestil na stôl a nebol príliš vysoký. Zobrali sme rozmery šírky stola, aby sme sa presvedčili, že nám predajný automat nevisí zo stola.

Krok 2: Plášť

Plášť
Plášť
Plášť
Plášť
Plášť
Plášť

Náš box sme vyrobili 19 palcov široký a 17 palcov dlhý a 25 palcov vysoký. Na rezanie dreva sme použili CNC stroj. Na navrhnutie tvárí sme použili program Solidworks a potom ich previedli na typy výkresových súborov pre náš CNC softvér. Okraje sme obrúsili a potom zaskrutkovali 1 ¼”. Predný panel sme pripevnili závesom a použili ¼ “skrutky, aby skrutky neprešli na druhú stranu. Tiež sme použili akrylové sklo, ktoré sme vyrezali na police a predný panel.

Krok 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Použili sme dosku Arduino Mega 2560. Použili sme tiež motorové dosky Adafruit, aby mohli poháňať krokové motory. Do adafruitov sme pridali kolíky, aby sa mohli navzájom spojiť. Vložili ich na seba. Každý z nich môže poháňať 2 motory. Upozorňujeme tiež, že prepojku je potrebné pripojiť.

Stolný napájací zdroj

Bestek ATX Napájanie pomocou adaptéra, aby bol napájací zdroj zapnutý. Adaptér je z sparkfun.com a poskytuje rôzne napätia.

Cievky do motorov

Vyrobili sme modely Solidworks na držanie motora, uchopenie cievky a vedenie cievky pozdĺž police. Naše cievky sme získali z ebay a rozrezali na rozmer. Tiež sme museli ohnúť 3 z nich, pretože sme nedostali 6 s rovnými koncami na pripojenie k držiaku cievky. Potom sme ich 3D vytlačili a pripevnili k cievke a motoru. Krokové motory, ktoré sme mali, sme vložili do držiaka. Držal by motor a navádzal cievku po priamej ceste.

LCD a klávesnice

Na napájanie sme použili klávesnicu Arduino a obrazovku LCD pripojenú k 5V káblu na napájacom adaptéri a potom k tej istej doske Arduino

Elektrické vedenie

Odporúčame použiť drôty s rozchodom 18. V našom prípade sme museli urobiť kompromis pomocou rôznych meradiel, pretože nám došlo 18 meradiel

LED pásik

Na rozsvietenie stroja sme použili LED pás. Pripojili sme ho k 12V vodiču na napájacom adaptéri. LED pásik, ktorý sme našťastie použili, mal na sebe + a -, čo uľahčilo proces jeho pripojenia.

Krok 4: Účtovník

Účtovník
Účtovník
Účtovník
Účtovník
Účtovník
Účtovník
Účtovník
Účtovník

Ako náš akceptátor účtov sme použili Coinco BA30B. Ako zdroj energie musel byť pripojený priamo k stene. Skombinovali sme to s 24-kolíkovým adaptérom z atx zdroja, aby sme ho zapojili a umožnili jednoduchšie zapojenie. Pinouty, ktoré sme sledovali, nájdete v nasledujúcom odkaze:

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

V našom prípade sme museli vytvoriť držiak na zvýšenie akceptora účtov, pretože inak by bol pre náš plášť príliš nízky.

Krok 5: Testovanie

Najprv vyskúšajte elektroniku mimo krytu, aby ste sa presvedčili, že súčiastky fungujú. Akékoľvek problémy, ktoré nastanú, by mali byť vyriešené pred ich umiestnením do puzdra.

Krok 6: Elektronika k puzdru

Akonáhle ste otestovali elektroniku a ste spokojní s jej výsledkami, začnite ich vkladať do krytu. Dĺžky drôtu nastavte tak, aby sa pohodlne zmestili dovnútra.

Krok 7: Záverečné testovanie

Po vložení do krytu všetko znova vyskúšajte. Ak všetko funguje tak, ako ste očakávali, gratulujeme! Vyrobil si automat.

Krok 8: Arduino kód + odkazy

K stiahnutiu:

Arduino kód

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

Priečinok SolidWorks so súbormi súčiastok a zostavou

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

Len pre prípad, že by sa s odkazom niečo stalo, tu je arduino kód úplne zobrazený. Arduino kód <<

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

const int stepsPerRevolution = 200; konštantný bajt ROWS = 4; // štyri riadky tvoria bajt COLS = 3; // tri stĺpce znaky kľúča [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; bajtové riadky [ROWS] = {5, 6, 7, 8}; // pripojenie k riadkovým vývodom bajtu klávesnice colPins [COLS] = {2, 3, 4}; // pripojenie k stĺpcom pinouts klávesnice Keyboard keypad = Keypad (makeKeymap (klávesy), 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); // Digitálne piny, na ktoré je lcd pripojený // Konštanty // // pin pre kredit (-) riadka kreditu overovateľa účtu const int billValidator = 22;

// Premenné /

/ záznam trvania impulzu (milisekundy) bez znamienka, dlhého trvania;

// držanie celkových dolárov zaznamenaných int dollarCounter = 0; neplatné nastavenie () {lcd.begin (16, 1); // nastavenie súradníc textu LCD lcd.print ("Vložiť iba 1 dolár"); // Nastavenie textu Serial.begin (9600); // Inicializácia sériových portov na komunikáciu. Serial.println („Krokový test!“); // Napíšte krokový test na sériový monitor, aby sme vedeli, ktorý krokový motor je stlačený. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Nastavte rýchlosť motora, pri ktorej budú bežať myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Nastavenia pinov pre validátor faktúr a tlačidlo pinMode (billValidator, INPUT); // Nastaví billaccepter

// Inicializácia sériových portov na komunikáciu. Serial.begin (9600); Serial.println („Čakanie na dolár …“); } void loop () {{duration = pulseIn (billValidator, HIGH); // Začína sa hľadať dĺžka impulzu získaná od príjemcu faktúry if (trvanie> 12000) // Hodnota, ktorú musí prekročiť, aby sa mohla validovať ako spracovaný a autentický dolár {// Count dollar dollarCounter ++; // Kontrola porozumenia Serial.print ("Zistený dolár. / N Celkom:"); // Zobrazí nový počet dolárov Serial.println (dollarCounter); // slučka, aby počkal, kým sa nestlačí tlačidlo (trvanie> 12 000) {char key = keypad.getKey (); // spojí klávesnicu a začne vidieť, ktorá je stlačená, ak (kláves! = NO_KEY) {// bude hľadať stlačenú klávesu Serial.println (kláves); // dá nám vedieť, ktorý z nich bol stlačený na sériovom monitore} {if (key == '1') {// Ak je stlačený kláves 1, urobí nasledujúce: int keyPressed = key - '1'; myMotor8-> krok (580, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor8-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok cyklu slučky}

if (key == '2') {// Ak je stlačený kláves 2, urobí nasledujúce: int keyPressed = kláves - '2'; myMotor7-> krok (400, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor7-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok kódu slučky} if (kláves == '3') {// Ak je stlačený kláves 3, vykoná nasledujúce: int keyPressed = kláves - '3'; myMotor6-> krok (400, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor6-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok kódu slučky} if (kláves == '4') {// Ak je stlačený kláves 4, vykoná nasledujúce: int keyPressed = kláves - '4'; myMotor5-> krok (180, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor5-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok kódu slučky} if (kláves == '5') {// Ak je stlačený kláves 5, vykoná nasledovné: int keyPressed = kláves - '5'; myMotor4-> krok (6900, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor4-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok kódu slučky} if (kláves == '6') {// Ak je stlačený kláves 6, vykoná nasledujúce: int keyPressed = kláves - '6'; myMotor3-> krok (400, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor3-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok cyklu slučky} if (kláves == '7') {// Ak je stlačený kláves 7, urobí nasledujúce: int keyPressed = kláves - '7'; myMotor7-> krok (400, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor7-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok cyklu slučky} if (kláves == '8') {// Ak je stlačený kláves 8, vykoná nasledujúce: int keyPressed = kláves - '8'; myMotor8-> krok (400, Vpred, DVOJNÁSOBEK); // Spustí motor a otočí sa o 350 stupňov vpred. myMotor8-> release (); // Uvoľní motor zo stavu, kedy sa drží na mieste. návrat; // Vráti sa na začiatok cyklu slučky}}}}}} >>

Odporúča: