INHOUDSOPGAWE:

$ 1 Arduino-verkoopautomaat: 8 stappe
$ 1 Arduino-verkoopautomaat: 8 stappe

Video: $ 1 Arduino-verkoopautomaat: 8 stappe

Video: $ 1 Arduino-verkoopautomaat: 8 stappe
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, November
Anonim
Image
Image
Omhulsel
Omhulsel

Ons het ons idee van ons ingenieursonderwyser gekry - ons het almal gedink dat dit 'n goeie idee sou wees om 'n automaat vir ons klas te hê, en hy het gesê: 'cool, make one'. Dit het geblyk dat 'n verkoopautomaat 'n uitstekende senior projek sou wees en as dit klaar was, sou funksioneer as 'n geldinsameling vir ons ingenieurswese -program.

Dit word 'n verkoopautomaat van $ 1 genoem, nie omdat dit $ 1 kos om te maak nie, maar bloot omdat die rekeningontvanger 'n ouer model is wat slegs $ 1 -rekeninge kos:)

Stap 1: Kriteria

Ons wou 'n automaat hê wat bo -op 'n lessenaar sou pas en nie te lank was nie. Ons het die afmetings van die breedte van die tafel geneem om seker te maak dat die automaat nie aan die tafel hang nie.

Stap 2: Omhulsel

Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel
Omhulsel

Ons het ons boks 19 cm breed, 17 cm lank en 25 cm lank gemaak. Ons het 'n CNC -masjien gebruik om ons hout te sny. Ons het solidworks gebruik om die gesigte te ontwerp en dit toe omgeskakel na tekenlêertipes vir ons CNC -sagteware. Ons skuur die rande en skroef dit dan vas met 1 ¼”. Ons het die voorpaneel met 'n skarnier vasgemaak en ¼ skroewe gebruik sodat die skroewe nie na die ander kant toe kan gaan nie. Ons het ook akrielglas gebruik wat ons vir die rakke en voorpaneel gesny het.

Stap 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Arduino

Ons het 'n Arduino Mega 2560 Board gebruik. Ons het ook Adafruit -motorborde gebruik sodat hulle die stepper -motors kan bestuur. Ons het penne by die adafruit gevoeg sodat hulle met mekaar kon skakel. Hulle is op mekaar geplaas. Elkeen kan 2 motors dryf. Let ook daarop dat die jumper gekoppel moet word.

Desktop kragbron

Bestek ATX -kragtoevoer met behulp van 'n adapter om die kragtoevoer aan te hou. Die adapter is van sparkfun.com en bied verskillende spannings.

Spoel in motors

Ons het soliede modelle gemaak om die motor vas te hou, die spoel te gryp en die spoel langs die rak te lei. Ons het ons spoel van ebay af gekry en in maat gesny. Ons moes ook 3 van hulle buig, aangesien ons nie 6 met die reguit ente gekry het om aan te sluit op die spoelhouer nie. Ons het dit dan in 3D gedruk en aan die spoel en motor vasgemaak. Die stepper motors wat ons gehad het, het ons in 'n houer gesit. Dit hou die motor vas en lei die spoel op 'n reguit pad.

LCD en klavier

Ons gebruik 'n Arduino -bedieningspaneel en 'n LCD -skerm wat gekoppel is aan 'n 5V -aansluiting op die voedingsadapter vir krag en dan in dieselfde Arduino -bord

Bedrading

Ons beveel aan dat u 18 gauge drade gebruik. In ons geval moes ons 'n kompromie aangaan deur verskillende meters te gebruik, want ons het nie meer as 18 meters gehad nie

LED strook

Ons het 'n LED -strook gebruik om die masjien te verlig. Ons het dit gekoppel aan 'n 12V -kabel op die kragadapter. Die LED -strook wat ons gebruik het, het gelukkig 'n + en - op wat die proses om dit aan te sluit makliker gemaak het.

Stap 4: Bill Acceptor

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

Ons het 'n Coinco BA30B as ons rekeningaannemer gebruik. Dit moes as 'n kragbron direk aan die muur gekoppel word. Ons het dit gekombineer met 'n 24-pins adapter van 'n atx-kragtoevoer om aan te sluit en makliker bedrading moontlik te maak. Die pinouts wat ons gevolg het, word gevind in die volgende skakel:

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

In ons geval moes ons 'n houer skep om die rekeningaannemer te verhoog, want anders sou dit te laag wees vir ons omhulsel.

Stap 5: Toets

Toets eers die elektronika buite die omhulsel om te verseker dat die komponente werk. Enige probleme wat opduik, moet opgelos word voordat dit in die omhulsel geplaas word.

Stap 6: Elektronika na omhulsel

Nadat u die elektronika getoets het en tevrede is met die resultate, begin u dit in u omhulsel plaas. Pas die draadlengtes aan sodat hulle gemaklik binne pas.

Stap 7: Finale toetsing

Sodra dit in die omhulsel geplaas is, toets alles weer. As alles werk soos u verwag het, baie geluk! Jy het 'n automaat gemaak.

Stap 8: Arduino -kode + skakels

Aflaaie:

Arduino -kode

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

SolidWorks -gids met onderlêers en samestelling

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

As daar iets met die skakel gebeur het, is die arduino -kode volledig vertoon. Arduino -kode <<

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

const int stepsPerRevolution = 200; const byte RYDE = 4; // vier rye const byte COLS = 3; // drie kolomme char sleutels [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // maak verbinding met die ry -uitknoppies van die sleutelbord -byte colPins [COLS] = {2, 3, 4}; // maak verbinding met die kolomknoppies van die bedieningspaneel Toetsenbordblok = Toetsenbord (makeKeymap (sleutels), 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 penne waarmee die lcd gekoppel is // Konstante // // pen vir die kredietrekening (-) reël const int billValidator = 22;

// Veranderlikes /

/ die opname van die duur van die pols (millisekondes) ongetekende lang duur;

// hou die totale dollar aangeteken in dollarCounter = 0; ongeldige opstelling () {lcd.begin (16, 1); // stel lcd -tekskoördinate lcd.print in ("Voeg slegs $ 1 in"); // Stel teks Serial.begin (9600); // Initialiseer seriële poorte vir kommunikasie. Serial.println ("Stepper toets!"); // Tik die stappertoets in die seriële monitor uit, sodat ons weet watter stappermotor ingedruk word. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Stel motorsnelheid in waarmee hulle myMotor2-> setSpeed (100) sal laat loop; myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Speldopstellings vir rekeningbekragtiger en knoppie pinMode (billValidator, INPUT); // Stel die billaccepter

// Initialiseer seriële poorte vir kommunikasie. Serial.begin (9600); Serial.println ("Wag vir dollar …"); } leemte -lus () {{duration = pulseIn (billValidator, HIGH); // Begin soek na die polslengte wat ontvang word van die rekeningaannemer as (duur> 12000) // Waarde dit moet oortref om as 'n verwerkte en outentieke dollar te valideer {// Count dollar dollarCounter ++; // Kontroleer of Serial.print verstaan word ("Dollar opgespoor. / N Totaal:"); // Vertoon nuwe dollar telling Serial.println (dollarCounter); // lus om te wag totdat 'n knoppie gedruk word terwyl (duur> 12000) {char key = keypad.getKey (); // kry die sleutellading gekoppel en begin om te sien watter een ingedruk word as (sleutel! = NO_KEY) {// op soek is na die toets wat ingedruk word Serial.println (sleutel); // laat ons weet watter een in die seriële monitor gedruk is} {if (sleutel == '1') {// As sleutel 1 ingedruk word, doen die volgende: int keyPressed = sleutel - '1'; myMotor8-> stap (580, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor8-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode}

as (sleutel == '2') {// As sleutel 2 ingedruk word, doen die volgende: int keyPressed = sleutel - '2'; myMotor7-> stap (400, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor7-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode} as (sleutel == '3') {// As sleutel 3 ingedruk word, doen die volgende: int keyPressed = sleutel - '3'; myMotor6-> stap (400, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor6-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode} as (sleutel == '4') {// As sleutel 4 ingedruk word, doen die volgende: int keyPressed = sleutel - '4'; myMotor5-> stap (180, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor5-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode} as (sleutel == '5') {// As sleutel 5 ingedruk word, doen die volgende: int keyPressed = sleutel - '5'; myMotor4-> stap (6900, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor4-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode} as (sleutel == '6') {// As sleutel 6 gedruk word, doen die volgende: int keyPressed = sleutel - '6'; myMotor3-> stap (400, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor3-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode} as (sleutel == '7') {// As sleutel 7 ingedruk word, doen die volgende: int keyPressed = sleutel - '7'; myMotor7-> stap (400, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor7-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode} as (sleutel == '8') {// As sleutel 8 ingedruk word, doen die volgende: int keyPressed = sleutel - '8'; myMotor8-> stap (400, VOORUIT, DUBBEL); // Begin motor en draai 350 grade in die voorwaartse rigting. myMotor8-> release (); // Maak die motor los van die toestand waarin hy homself hou. terugkeer; // Gaan terug na die begin van die luskode}}}}}} >>

Aanbeveel: