Sisällysluettelo:

$ 1 Arduino-pohjainen myyntiautomaatti: 8 vaihetta
$ 1 Arduino-pohjainen myyntiautomaatti: 8 vaihetta

Video: $ 1 Arduino-pohjainen myyntiautomaatti: 8 vaihetta

Video: $ 1 Arduino-pohjainen myyntiautomaatti: 8 vaihetta
Video: Как сделать 4-канальное реле Wi-Fi ESP8266 ESP01 | ESP01 Домашняя автоматизация | УдаленныйXY 2024, Marraskuu
Anonim
Image
Image
Kotelo
Kotelo

Saimme ideamme insinööriopettajalta - me kaikki ajattelimme, että meidän olisi hyvä olla automaatti luokallemme, ja hän sanoi - "cool, tee yksi". Kävi ilmi, että myyntiautomaatti olisi loistava vanhempi projekti ja kun se olisi valmis, se toimisi varainkeruuna suunnitteluohjelmamme.

Sitä kutsutaan 1 dollarin myyntiautomaateiksi ei siksi, että sen tekeminen maksaa 1 dollari, vaan yksinkertaisesti siksi, että laskujen hyväksyjä on vanhempi malli, joka kestää vain 1 dollarin setelit:)

Vaihe 1: Kriteerit

Halusimme myyntiautomaatin, joka mahtuisi pöydän päälle eikä olisi liian pitkä. Otimme pöydän leveyden mitat varmistaaksemme, ettei myyntiautomaatti roikkunut pöydässä.

Vaihe 2: Kotelo

Kotelo
Kotelo
Kotelo
Kotelo
Kotelo
Kotelo

Teimme laatikkomme 19 tuumaa leveäksi 17 tuumaa pitkäksi ja 25 tuumaa pitkäksi. Leikkasimme puumme CNC -koneella. Suunnittelimme kasvot solidworksin avulla ja muutimme ne sitten piirtotiedostotyypeiksi CNC -ohjelmistollemme. Hioimme reunat ja ruuvasimme ne sitten 1 ¼”. Kiinnitimme etupaneelin saranalla ja käytimme ¼ “-ruuveja, jotta ruuvit eivät menisi toiselle puolelle. Käytimme myös akryylilasia, jonka leikkasimme hyllyille ja etupaneelille.

Vaihe 3: Elektroniikka

Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka
Elektroniikka

Arduino

Käytimme Arduino Mega 2560 -levyä. Käytimme myös Adafruit -moottorilevyjä, jotta ne voivat käyttää askelmoottoreita. Lisäsimme nastat adafruitiin, jotta ne voivat muodostaa yhteyden toisiinsa. Ne asetettiin päällekkäin. Jokainen voi käyttää 2 moottoria. Huomaa myös, että hyppyjohdin on kytkettävä.

Työpöydän virtalähde

Bestek ATX Virtalähde sovittimen avulla pitää virran päällä. Sovitin on osoitteesta sparkfun.com ja tarjoaa erilaisia jännitteitä.

Kääntyy Motorsiin

Teimme solidworks -malleja pitämään moottoria, tarttumaan kelaan ja ohjaamaan kelaa hyllyä pitkin. Olimme saavuttaneet kelat ebaysta ja leikkasimme ne mitoiksi. Jouduimme myös taivuttamaan kolmea niistä, koska emme saaneet kuutta suoraa päätä yhdistämään kelakiinnikkeeseen. Sitten tulostimme ne 3D: llä ja kiinnitimme ne kelaan ja moottoriin. Askelmoottorit, jotka meillä oli, laitoimme telineeseen. Se pitelee moottoria ja ohjaa kelaa suoraa polkua pitkin.

LCD ja näppäimistö

Käytimme Arduino -näppäimistöä ja LCD -näyttöä, joka oli kytketty virtalähteen sovittimen 5 V: n johtoon ja sitten samaan Arduino -korttiin

Johdotus

Suosittelemme käyttämään 18 mittajohtoa. Meidän tapauksessamme jouduimme tekemään kompromisseja käyttämällä erilaisia mittareita, koska 18 mittaria loppui

LED-nauha

Käytimme LED -nauhaa koneen sytyttämiseen. Yhdistimme sen 12 V: n johtoon virtalähteen sovittimessa. Käyttämässämme LED -nauhassa oli onneksi + ja -, mikä helpotti liittämistä.

Vaihe 4: Laskun hyväksyjä

Laskun hyväksyjä
Laskun hyväksyjä
Laskun hyväksyjä
Laskun hyväksyjä
Laskun hyväksyjä
Laskun hyväksyjä
Laskun hyväksyjä
Laskun hyväksyjä

Käytimme Coinco BA30B: tä laskun hyväksyjänä. Se piti kytkeä suoraan seinään virtalähteenä. Yhdistimme sen 24-nastaiseen sovittimeen, joka on peräisin atx-virtalähteestä, jotta se voidaan kytkeä ja helpottaa johdotusta. Seuraamamme pinoutit löytyvät seuraavasta linkistä:

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

Meidän tapauksessamme meidän oli luotava kiinnike nostaaksesi laskun hyväksyjää, koska muuten se olisi liian matala kotelollemme.

Vaihe 5: Testaus

Testaa ensin kotelon ulkopuolella oleva elektroniikka varmistaaksesi, että komponentit toimivat. Mahdolliset ongelmat tulee korjata ennen niiden asettamista kotelon sisään.

Vaihe 6: Elektroniikka koteloon

Kun olet testannut elektroniikan ja olet tyytyväinen niiden tuloksiin, aloita niiden sijoittaminen koteloon. Säädä lankojen pituudet siten, että ne sopivat mukavasti sisälle.

Vaihe 7: Lopullinen testaus

Kun olet asettanut koteloon, testaa kaikki uudelleen. Jos kaikki toimii odotetulla tavalla, onnittelut! Teit myyntiautomaatin.

Vaihe 8: Arduino -koodi + linkit

Lataukset:

Arduino -koodi

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

SolidWorks -kansio osatiedostoineen ja kokoonpanolla

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

Jos linkille on tapahtunut jotain, tässä on arduino -koodi kokonaan näkyvissä. Arduino -koodi <<

#include #include #include "Arduino.h" #include #include #include "-apuohjelma/Adafruit_MS_PWMServoDriver.h" #include

const int stepsPerRevolution = 200; const tavu RIVIT = 4; // neljä riviä const tavu COLS = 3; // kolmen sarakkeen char -näppäimet [RIVIT] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; tavu rowPins [ROWS] = {5, 6, 7, 8}; // muodostaa yhteys näppäimistön rivipistoihin tavu colPins [COLS] = {2, 3, 4}; // muodostaa yhteys näppäimistön sarakkeisiin Näppäimistön näppäimistö = Näppäimistö (makeKeymap (näppäimet), 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); // Digitaaliset nastat, joihin lcd on liitetty // Vakiot // // nasta laskuvahvistimen luottoa varten (-) riville const int billValidator = 22;

// Muuttujat /

/ tallennetaan pulssin kesto (millisekuntia) allekirjoittamaton pitkä kesto;

// pitämällä kirjattuna yhteensä dollareita int dollarCounter = 0; void setup () {lcd.begin (16, 1); // aseta lcd -tekstikoordinaatit lcd.print ("Lisää vain $ 1"); // Aseta teksti Serial.begin (9600); // Alusta sarjaportit tiedonsiirtoa varten. Serial.println ("Stepper -testi!"); // Kirjoita sarjamonitoriin Stepper Test, jotta tiedämme, mitä askelmoottoria painetaan. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Aseta moottorin nopeus, jolla he käyttävät myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Laskun vahvistajan ja pinMode -painikkeen asetukset (billValidator, INPUT); // Asettaa laskurin

// Alusta sarjaportit tiedonsiirtoa varten. Sarja.alku (9600); Serial.println ("Odotetaan dollaria …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // alkaa etsiä laskun vastaanottajalta vastaanotettua pulssin pituutta, jos (kesto> 12000) // Arvo, jonka sen on ylitettävä, jotta se voidaan validoida käsitellyksi ja aidoksi dollariksi {// Count dollar dollarCounter ++; // Tarkistetaan ymmärrystä Serial.print ("Dollari havaittu. / N Yhteensä:"); // Näytä uuden dollarin määrä Serial.println (dollarCounter); // silmukka odottamaan, kunnes painiketta painetaan (kesto> 12000) {char key = keypad.getKey (); // kytkee avaimen kuorman ja alkaa nähdä, mitä painetaan, jos (avain! = NO_KEY) {// etsii näppäintä painettuna Serial.println (avain); // kertoo meille, mitä sarjamonitorissa painettiin} {if (key == '1') {// Jos näppäintä 1 painetaan, toimi seuraavasti: int keyPressed = key - '1'; myMotor8-> askel (580, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor8-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Palaa silmukakoodin alkuun}

if (key == '2') {// Jos näppäintä 2 painetaan, toimi seuraavasti: int keyPressed = key - '2'; myMotor7-> askel (400, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor7-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Palaa silmukakoodin alkuun}, jos (näppäin == '3') {// Jos näppäintä 3 painetaan, toimi seuraavasti: int keyPressed = key - '3'; myMotor6-> askel (400, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor6-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Palaa silmukakoodin alkuun}, jos (näppäin == '4') {// Jos näppäintä 4 painetaan, se tekee seuraavan: int keyPressed = key - '4'; myMotor5-> askel (180, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor5-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Palaa silmukakoodin alkuun}, jos (näppäin == '5') {// Jos näppäintä 5 painetaan, toimi seuraavasti: int keyPressed = key - '5'; myMotor4-> askel (6900, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor4-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Palaa silmukakoodin alkuun}, jos (avain == '6') {// Jos näppäintä 6 painetaan, se tekee seuraavan: int keyPressed = key - '6'; myMotor3-> askel (400, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor3-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Siirtyy takaisin silmukakoodin alkuun}, jos (näppäin == '7') {// Jos näppäintä 7 painetaan, toimi seuraavasti: int keyPressed = key - '7'; myMotor7-> askel (400, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor7-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Palaa silmukakoodin alkuun}, jos (näppäin == '8') {// Jos näppäintä 8 painetaan, toimi seuraavasti: int keyPressed = key - '8'; myMotor8-> askel (400, ETEEN, KAKSOIS); // Käynnistää moottorin ja pyörii 350 astetta eteenpäin. myMotor8-> release (); // Vapauttaa moottorin tilasta, jossa se pysyy paikallaan. palata; // Palaa silmukakoodin alkuun}}}}}} >>

Suositeltava: