Turinys:
- 1 žingsnis: kriterijai
- 2 žingsnis: korpusas
- 3 žingsnis: Elektronika
- 4 žingsnis: sąskaitų priėmėjas
- 5 žingsnis: bandymas
- 6 žingsnis: elektronika į korpusą
- 7 žingsnis: galutinis bandymas
- 8 žingsnis: „Arduino“kodas + nuorodos
Video: 1 USD „Arduino“pardavimo automatas: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Idėją gavome iš savo inžinerijos mokytojo - visi manėme, kad būtų gera idėja turėti savo klasei skirtą automatą, ir jis pasakė - „šaunu, pasigamink“. Paaiškėjo, kad pardavimo automatas būtų puikus vyresnysis projektas ir, kai jis bus baigtas, veiktų kaip mūsų inžinerinės programos lėšų rinkėjas.
Jis vadinamas 1 USD pardavimo automatu ne dėl to, kad jo pagaminimas kainuoja 1 USD, o tiesiog dėl to, kad sąskaitų priėmėjas yra senesnis modelis, kuris priima tik 1 USD sąskaitas:)
1 žingsnis: kriterijai
Mes norėjome pardavimo automato, kuris tilptų ant stalo ir nebūtų per aukštas. Mes paėmėme stalo pločio matmenis, kad įsitikintume, ar neturime prie stalo kabančio pardavimo automato.
2 žingsnis: korpusas
Mes padarėme savo dėžę 19 colių pločio ir 17 colių ilgio ir 25 colių aukščio. Mes pjaustėme medieną CNC staklėmis. Mes panaudojome „solidworks“veidams suprojektuoti, o tada konvertavome juos į piešimo failų tipus mūsų CNC programinei įrangai. Mes nušlifavome kraštus ir įsukome juos 1 ¼ “. Priekinį skydelį pritvirtinome vyriais ir naudojome screws “varžtus, kad varžtai nepatektų į kitą pusę. Mes taip pat naudojome akrilinį stiklą, kurį supjaustėme lentynoms ir priekiniam skydeliui.
3 žingsnis: Elektronika
Arduino
Mes naudojome „Arduino Mega 2560“plokštę. Mes taip pat naudojome „Adafruit“variklių plokštes, kad jos galėtų paleisti žingsninius variklius. Prie adafruit pridėjome smeigtukus, kad jie galėtų sujungti vienas kitą. Jie buvo uždėti vienas ant kito. Kiekvienas gali paleisti 2 variklius. Taip pat atkreipkite dėmesį, kad trumpiklis turi būti prijungtas.
Stalinio kompiuterio maitinimo šaltinis
„Bestek ATX“maitinimas naudojant adapterį, kad maitinimas būtų įjungtas. Adapteris yra iš sparkfun.com ir teikia įvairią įtampą.
Susisuka į variklius
Mes sukūrėme „solidworks“modelius, kad galėtume laikyti variklį, patraukti ritę ir nukreipti ritę išilgai lentynos. Mes buvome pasiekę savo ritinius iš „ebay“ir supjaustėme juos pagal dydį. Mes taip pat turėjome sulenkti 3 iš jų, nes negavome 6 su tiesiais galais, kad galėtume prisijungti prie ritės laikiklio. Tada mes juos atspausdinome 3D ir pritvirtinome prie ritės ir variklio. Žingsninius variklius, kuriuos turėjome, įdėjome į laikiklį. Jis laikytų variklį ir nukreiptų ritę tiesiu keliu.
LCD ir klaviatūra
Mes naudojome „Arduino“klaviatūrą ir skystųjų kristalų ekraną, prijungtą prie 5 V maitinimo šaltinio maitinimo adapterio maitinimo šaltinio, o tada į tą pačią „Arduino“plokštę
Laidai
Rekomenduojame naudoti 18 gabaritų laidus. Mūsų atveju teko daryti kompromisus naudojant įvairius matuoklius, nes pritrūko 18 matuoklių
LED juostelė
Mašinai apšviesti naudojome LED juostelę. Mes prijungėme jį prie maitinimo adapterio 12 V laido. Laimei, mūsų naudojama LED juostelė turėjo + ir - tai palengvino jos prijungimo procesą.
4 žingsnis: sąskaitų priėmėjas
Mes naudojome „Coinco BA30B“kaip sąskaitų priėmėją. Jis turėjo būti prijungtas tiesiai prie sienos kaip maitinimo šaltinis. Mes sujungėme jį su 24 kontaktų adapteriu iš atx maitinimo šaltinio, kad prijungtume ir palengvintume laidų prijungimą. „Pinouts“, kuriuos sekėme, rasite šioje nuorodoje:
techvalleyprojects.blogspot.com/2011/07/ard…
Mūsų atveju mes turėjome sukurti laikiklį, kad pakeltume sąskaitų priėmėją, nes priešingu atveju jis būtų per mažas mūsų korpusui.
5 žingsnis: bandymas
Pirmiausia patikrinkite elektroniką už korpuso ribų, kad įsitikintumėte, jog komponentai veikia. Visos kilusios problemos turi būti išspręstos prieš dedant jas į korpuso vidų.
6 žingsnis: elektronika į korpusą
Kai išbandysite elektroniką ir būsite patenkinti jų rezultatais, pradėkite juos dėti į korpusą. Sureguliuokite laidų ilgį taip, kad jie patogiai tilptų viduje.
7 žingsnis: galutinis bandymas
Įdėję į korpusą, dar kartą viską išbandykite. Jei viskas veikia taip, kaip tikėjotės, sveikiname! Jūs padarėte pardavimo automatą.
8 žingsnis: „Arduino“kodas + nuorodos
Atsisiuntimai:
Arduino kodas
drive.google.com/drive/folders/1oC4MhOcMFy…
„SolidWorks“aplankas su dalių failais ir surinkimu
drive.google.com/drive/folders/1amZoypiWcZ…
Jei tuo atveju kažkas nutiko su nuoroda, čia yra visiškai rodomas arduino kodas. Arduino kodas <<
#include #include #include "Arduino.h" #include #include #include "naudingumas/Adafruit_MS_PWMServoDriver.h" #include
const int stepsPerRevolution = 200; const baitas ROWS = 4; // keturios eilutės const baitas COLS = 3; // trijų stulpelių simbolių klavišai [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; baitų rowPins [ROWS] = {5, 6, 7, 8}; // prisijungti prie klaviatūros eilučių baitų colPins [COLS] = {2, 3, 4}; // prisijungti prie klaviatūros stulpelių kontaktų Klaviatūros klaviatūra = klaviatūra (makeKeymap (klavišai), 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); // Skaitmeniniai kaiščiai, prie kurių LCD yra prijungtas prie // Konstantos // // pin sąskaitos patvirtintojo kredito (-) eilutės const int billValidator = 22;
// Kintamieji /
/ įrašant impulsų trukmę (milisekundes), nepasirašytą ilgą laiką;
// laikydami visus įrašytus dolerius int dollarCounter = 0; void setup () {lcd.begin (16, 1); // nustatyti LCD teksto koordinates lcd.print ("Įterpti tik $ 1"); // Nustatyti tekstą Serial.begin (9600); // Inicijuoti nuoseklius prievadus ryšiui. Serial.println ("Stepper testas!"); // Įveskite Stepper Test serijiniame monitoriuje, kad žinotume, kuris žingsninis variklis yra paspaustas. AFMS1.begin (); AFMS2.begin (); AFMS3.pradėti (); AFMS4.begin (); myMotor1-> setSpeed (100); // Nustatykite variklio greitį, kuriuo jie veiks myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Sąskaitų patvirtinimo priemonės ir mygtuko pinMode nustatymai (billValidator, INPUT); // Nustato bilietinį receptorių
// Inicijuoti nuoseklius prievadus ryšiui. Serial.begin (9600); Serial.println ("Laukiama dolerio …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Pradeda ieškoti impulsų ilgio, gauto iš sąskaitos priėmėjo, jei (trukmė> 12000) // Vertę, kurią ji turi viršyti, kad ji būtų patvirtinta kaip apdorotas ir autentiškas doleris {// Count dollar dollarCounter ++; // Tikrinama, ar suprantama Serial.print ("Aptiktas doleris. / N Iš viso:"); // Rodyti naujų dolerių skaičių Serial.println (dollarCounter); // kilpa, kad palauktum, kol bus paspaustas mygtukas, kol (trukmė> 12000) {char key = keypad.getKey (); // prijungia raktų apkrovą ir pradeda matyti, kuris iš jų paspaudžiamas, jei (klavišas! = NO_KEY) {// ieškos klavišo paspaudimo Serial.println (raktas); // praneša mums, kuris iš jų buvo paspaustas serijiniame monitoriuje} {{if (key == '1') {// Jei paspaudžiamas 1 klavišas, tai daroma taip: int keyPressed = key - '1'; myMotor8-> žingsnis (580, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor8-> release (); // Išleidžia variklį iš padėties, kai ji laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}
if (key == '2') {// Jei paspaudžiamas 2 klavišas, tai daroma taip: int keyPressed = klavišas - '2'; myMotor7-> žingsnis (400, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor7-> release (); // Išleidžia variklį iš padėties, kai ji laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}, jei (klavišas == '3') {// Jei paspaudžiamas 3 klavišas, tai daroma taip: int keyPressed = key - '3'; myMotor6-> žingsnis (400, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor6-> release (); // Išleidžia variklį iš padėties, kai ji laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}, jei (klavišas == '4') {// Jei paspaudžiamas 4 klavišas, tai daroma taip: int keyPressed = key - '4'; myMotor5-> žingsnis (180, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor5-> release (); // Atleidžia variklį iš padėties, kai jis laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}, jei (klavišas == '5') {// Jei paspaudžiamas 5 klavišas, tai daroma taip: int keyPressed = key - '5'; myMotor4-> žingsnis (6900, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor4-> release (); // Atleidžia variklį iš padėties, kai jis laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}, jei (klavišas == '6') {// Jei paspaudžiamas 6 klavišas, tai daroma taip: int keyPressed = key - '6'; myMotor3-> žingsnis (400, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor3-> release (); // Atleidžia variklį iš padėties, kai jis laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}, jei (klavišas == '7') {// Jei paspaudžiamas 7 klavišas, tai daroma taip: int keyPressed = key - '7'; myMotor7-> žingsnis (400, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor7-> release (); // Atleidžia variklį iš padėties, kai jis laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}, jei (klavišas == '8') {// Jei paspaudžiamas klavišas 8, tai daroma taip: int keyPressed = key - '8'; myMotor8-> žingsnis (400, Į priekį, DUPLAS); // Paleidžia variklį ir sukasi 350 laipsnių į priekį. myMotor8-> release (); // Atleidžia variklį iš padėties, kai jis laikosi vietoje. grįžti; // Grįžta į ciklo kodo pradžią}}}}}} >>
Rekomenduojamas:
„Arduino Pocket“lošimo automatas: 4 žingsniai
„Arduino Pocket“lošimo automatas: Būsiu atviras ir pasakysiu, kad šis projektas niekada nebūtų įvykęs, išskyrus tai, kad koronaviruso protrūkio metu aš prisiglaudžiu vietoje, atsitiktinai pamačiau, kad „Instructables“rengia „LED juostelės“konkursą ir Turiu keletą LED juostų
Benamių pardavimo automatas: 3 žingsniai
Benamių pardavimo automatas: Aš stengiuosi užkirsti kelią badui mūsų bendruomenėje. Oklahomoje gyvena apie 3000 ir daugiau benamių. Mes nusprendėme išspręsti šią problemą, kad pagerintume ir augtume visa mūsų bendruomenė. Didelis skaičius žmonių
„Arduino“valdomas mini automatas: 9 žingsniai
„Arduino“valdomas mini automatas: tai mūsų pardavimo automatas, kuriame parduodami trys linksmo dydžio „snickers“saldainių batonėliai. Bendri matmenys yra apie 12 " x 6 " x 8 ". Šį pardavimo automatą valdo arduino, su duonos lenta ir servo varikliu
„Süßigkeitenautomat“- saldainių pardavimo automatas: 5 žingsniai (su nuotraukomis)
Sistemos - saldainių pardavimo automatas: automatinis išleidimas S ü ß igkeiten (oder andere Objekte), die Schokolinsen haben, auf sehr unst & ndliche Weise. Das Ziel war es, einen interessanten Mechanismus zu bauen und unterschiedliche Methoden aus dem Making-Bereic
Pardavimo automatas -- saldainių dozatorius -- „Arduino Bluetooth“valdomas -- Pasidaryk pats: 11 žingsnių (su paveikslėliais)
Pardavimo automatas || saldainių dozatorius || „Arduino Bluetooth“valdomas || Pasidaryk pats: šioje pamokoje aš parodysiu, kaip sukurti pardavimo automatą naudojant „Arduino“. PASTABĄ KOMENTUOKITE, KĄ Mąstote apie šią instrukciją, kad galėčiau patobulinti savo tolesnes instrukcijas, kad geriau suprastumėte vaizdo įrašo vadovėlį iš viso