Talaan ng mga Nilalaman:

$ 1 na Vending Machine na nakabatay sa Arduino: 8 Hakbang
$ 1 na Vending Machine na nakabatay sa Arduino: 8 Hakbang

Video: $ 1 na Vending Machine na nakabatay sa Arduino: 8 Hakbang

Video: $ 1 na Vending Machine na nakabatay sa Arduino: 8 Hakbang
Video: Magpie_trades 3 bottle-caps for food. High definition 2024, Nobyembre
Anonim
Image
Image
Casing
Casing

Nakuha namin ang aming ideya mula sa aming guro sa engineering - naisip naming lahat na isang magandang ideya na magkaroon ng isang vending machine para sa aming klase at sinabi niya - "cool, make one". Ito ay naka-out na ang isang vending machine ay magiging isang mahusay na proyekto ng senior at kung kumpleto ay gagana bilang isang fundraiser para sa aming programa sa engineering.

Tinatawag itong $ 1 Vending Machine hindi dahil nagkakahalaga ito ng $ 1 upang makamit, ngunit dahil lamang sa ang tumatanggap ng bill ay isang mas matandang modelo na tumatagal lamang ng $ 1 bill:)

Hakbang 1: Pamantayan

Gusto namin ng isang vending machine na magkakasya sa tuktok ng isang desk at hindi masyadong matangkad. Kinuha namin ang mga sukat ng lapad ng talahanayan upang matiyak na wala kaming vending machine na nakabitin sa mesa.

Hakbang 2: Casing

Casing
Casing
Casing
Casing
Casing
Casing

Ginawa namin ang aming kahon na 19 pulgada ang lapad ng 17 pulgada ang haba ng 25 pulgada ang taas. Gumamit kami ng isang CNC Machine upang putulin ang aming kahoy. Gumamit kami ng mga solidworks upang idisenyo ang mga mukha at pagkatapos ay i-convert ito sa pagguhit ng mga uri ng file para sa aming software na CNC. Inilagay namin ang mga gilid at pagkatapos ay inirintas ito gamit ang 1 ¼”. Ikinabit namin ang front panel gamit ang isang bisagra at ginamit ang screw “mga turnilyo, upang ang mga turnilyo ay hindi dumaan sa kabilang panig. Gumamit din kami ng Acrylic Glass na pinutol namin para sa mga istante at front panel.

Hakbang 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Gumamit kami ng isang Arduino Mega 2560 Board. Gumamit din kami ng Adafruit Motor Boards upang mapatakbo nila ang mga stepper motor. Nagdagdag kami ng mga pin sa adafruit's upang magkonekta sila sa bawat isa. Ipinasok ang mga ito sa isa't isa. Ang bawat isa ay maaaring magpatakbo ng 2 mga motor. Gayundin, mangyaring tandaan na ang jumper ay kailangang ikonekta.

Desktop Power Supply

Bestek ATX Power supply gamit ang isang adapter upang mapanatili ang power supply. Ang adapter ay mula sa sparkfun.com at nagbibigay ng iba't ibang mga voltages.

Mga Coil sa Motors

Gumawa kami ng mga modelo ng solidworks upang hawakan ang motor, kunin ang likaw, at gabayan ang likaw sa istante. Nakamit namin ang aming mga coil mula sa ebay at pinutol ito sa laki. Kailangan din nating yumuko ang 3 sa kanila dahil hindi kami nakakuha ng 6 na may tuwid na mga dulo upang kumonekta sa coil mount. Pagkatapos ay naka-print namin ang mga ito sa 3D at ikinabit ang mga ito sa likid at motor. Ang mga stepper motor na mayroon kami, inilagay namin sa isang bundok. Hahawak nito ang motor at gagabay sa coil kasama ang isang tuwid na landas.

LCD at Keypad

Gumamit kami ng isang Arduino Keypad at LCD screen na konektado sa isang 5V lead sa power supply adapter para sa lakas at pagkatapos ay sa parehong Arduino Board

Kable

Inirerekumenda namin ang paggamit ng 18 mga gauge wires. Sa aming kaso, kinailangan naming makompromiso sa pamamagitan ng paggamit ng iba't ibang mga gauge dahil naubusan kami ng 18 mga gauge

LED Strip

Gumamit kami ng isang LED strip upang magaan ang makina. Ikinonekta namin ito sa isang 12V lead sa power supply adapter. Ang LED strip na ginamit namin nang mabuti ay nagkaroon ng isang + at - dito na ginawang madali ang proseso ng pagkonekta nito.

Hakbang 4: Tagatanggap ng Bill

Tagatanggap ng Bill
Tagatanggap ng Bill
Tagatanggap ng Bill
Tagatanggap ng Bill
Tagatanggap ng Bill
Tagatanggap ng Bill
Tagatanggap ng Bill
Tagatanggap ng Bill

Gumamit kami ng isang Coinco BA30B bilang aming tagatanggap ng singil. Kailangan itong konektado direkta sa dingding bilang isang mapagkukunan ng kuryente. Pinagsama namin ito sa isang 24-pin adapter mula sa isang supply ng lakas na atx upang mai-plug in at payagan ang mas madaling mga kable. Ang mga sinusundan naming pinout ay matatagpuan sa sumusunod na link:

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

Sa aming kaso, kinailangan naming lumikha ng isang bundok upang itaas ang tatanggap ng singil dahil kung hindi man ay napakababa para sa aming pambalot.

Hakbang 5: Pagsubok

Subukan muna ang electronics sa labas ng pambalot upang matiyak na gumagana ang mga sangkap. Ang anumang mga isyu na lumitaw ay dapat na maayos bago ilagay ang mga ito sa loob ng pambalot.

Hakbang 6: Electronics sa Casing

Kapag nasubukan mo na ang electronics at nasiyahan ka sa kanilang mga resulta, simulang ilagay ang mga ito sa iyong pambalot. Ayusin ang mga haba ng kawad upang magkasya silang kumportable sa loob.

Hakbang 7: Pangwakas na Pagsubok

Sa sandaling mailagay sa pambalot, subukang muli ang lahat. Kung ang lahat ay gumagana tulad ng iyong inaasahan, binabati kita! Gumawa ka ng isang vending machine.

Hakbang 8: Arduino Code + Mga Link

Mga Pag-download:

Code ng Arduino

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

SolidWorks Folder na may mga bahagi ng file at pagpupulong

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

Kung sakali may nangyari sa link, narito ang code ng arduino na buong ipinakita. Arduino Code <<

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

Const int stepsPerRevolution = 200; const byte ROWS = 4; // four row const byte COLS = 3; // three columns char keys [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // kumonekta sa mga row ng pinout ng keypad byte colPins [COLS] = {2, 3, 4}; // kumonekta sa mga pinout ng haligi ng keypad Keypad keypad = Keypad (makeKeymap (key), 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); // Digital Pins ang lcd ay konektado sa // Constants // // pin para sa credit validator ng bill (-) line const int billValidator = 22;

// Variable /

/ pagtatala ng tagal ng pulso (milliseconds) na hindi pirmahan ng mahabang tagal;

// hawak ang kabuuang dolyar na naitala int dollarCounter = 0; void setup () {lcd.begin (16, 1); // set lcd text coordinate lcd.print ("Ipasok ang $ 1 Lamang"); // Set text Serial.begin (9600); // Initialize serial port para sa komunikasyon. Serial.println ("Stepper test!"); // Type Out Stepper Test sa serial monitor upang malaman namin kung aling stepper motor ang pinindot. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Itakda ang Bilis ng Motor kung saan tatakbo ang myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // I-pin ang mga pag-setup para sa nagpapatunay ng bill at pinMode ng pindutan (billValidator, INPUT); // Itinatakda ang billaccepter

// Initialize serial port para sa komunikasyon. Serial.begin (9600); Serial.println ("Naghihintay para sa dolyar …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Nagsisimulang maghanap para sa haba ng pulso na natanggap mula sa tagatanggap ng singil kung (tagal> 12000) // Halaga na kailangan nitong malampasan upang mapatunayan bilang isang naproseso at tunay na dolyar {// Count dollar dollarCounter ++; // Checking for understand Serial.print ("Nakita ang dolyar. / N Kabuuan:"); // Ipakita ang bagong bilang ng dolyar na Serial.println (dollarCounter); // loop upang maghintay hanggang ang isang pindutan ay pinindot habang (tagal> 12000) {char key = keypad.getKey (); // nakakakonekta ang keyoad at nagsisimulang makita kung alin ang pinindot kung (key! = NO_KEY) {// ay naghahanap ng key na pinindot Serial.println (key); // ipaalam sa amin kung alin ang pinindot sa serial monitor} {kung (key == '1') {// Kung ang Key 1 ay pinindot, ginagawa ba ang sumusunod: int keyPressed = key - '1'; myMotor8-> hakbang (580, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor8-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumabalik sa simula ng loop code}

kung (key == '2') {// Kung ang Key 2 ay pinindot, ginagawa ang sumusunod: int keyPressed = key - '2'; myMotor7-> hakbang (400, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor7-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumalik sa simula ng loop code} kung (key == '3') {// Kung ang Key 3 ay pinindot, ginagawa ang sumusunod: int keyPressed = key - '3'; myMotor6-> hakbang (400, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor6-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumalik sa simula ng loop code} kung (key == '4') {// Kung ang Key 4 ay pinindot, ginagawa ang sumusunod: int keyPressed = key - '4'; myMotor5-> hakbang (180, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor5-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumalik sa simula ng loop code} kung (key == '5') {// Kung ang Key 5 ay pinindot, ginagawa ang sumusunod: int keyPressed = key - '5'; myMotor4-> hakbang (6900, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor4-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumalik sa simula ng loop code} kung (key == '6') {// Kung ang Key 6 ay pinindot, ginagawa ang sumusunod: int keyPressed = key - '6'; myMotor3-> hakbang (400, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor3-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumalik sa simula ng loop code} kung (key == '7') {// Kung ang Key 7 ay pinindot, ginagawa ang sumusunod: int keyPressed = key - '7'; myMotor7-> hakbang (400, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor7-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumalik sa simula ng loop code} kung (key == '8') {// Kung ang Key 8 ay pinindot, ginagawa ang sumusunod: int keyPressed = key - '8'; myMotor8-> hakbang (400, FORWARD, DOUBLE); // Nagsisimula ang Motor at umiikot para sa 350 degree sa pasulong na direksyon. myMotor8-> bitawan (); // Pinapalabas ang motor mula sa estado ng pagpigil sa sarili nito sa lugar. bumalik; // Bumabalik sa simula ng loop code}}}}}} >>

Inirerekumendang: