สารบัญ:
- ขั้นตอนที่ 1: เกณฑ์
- ขั้นตอนที่ 2: ปลอก
- ขั้นตอนที่ 3: อุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 4: ผู้รับบิล
- ขั้นตอนที่ 5: การทดสอบ
- ขั้นตอนที่ 6: อุปกรณ์อิเล็กทรอนิกส์สู่ปลอก
- ขั้นตอนที่ 7: การทดสอบขั้นสุดท้าย
- ขั้นตอนที่ 8: รหัส Arduino + ลิงค์
วีดีโอ: เครื่องจำหน่ายสินค้าอัตโนมัติที่ใช้ Arduino มูลค่า 1 เหรียญ: 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
เราได้รับแนวคิดจากอาจารย์ด้านวิศวกรรมของเรา เราทุกคนต่างก็คิดว่าควรมีตู้จำหน่ายสินค้าอัตโนมัติสำหรับชั้นเรียนของเรา และเขากล่าวว่า "เจ๋งมาก สร้างขึ้นมาเลย" ปรากฎว่าตู้จำหน่ายสินค้าอัตโนมัติจะเป็นโครงการอาวุโสที่ยอดเยี่ยม และเมื่อเสร็จสมบูรณ์ก็จะทำหน้าที่เป็นกองทุนสำหรับโครงการวิศวกรรมของเรา
มันถูกเรียกว่าเครื่องขายแสตมป์อัตโนมัติมูลค่า 1 เหรียญ ไม่ใช่เพราะต้นทุนการผลิต 1 เหรียญ แต่เพียงเพราะเครื่องรับใบเรียกเก็บเงินเป็นเครื่องรุ่นเก่าที่ใช้ธนบัตรเพียง 1 เหรียญเท่านั้น:)
ขั้นตอนที่ 1: เกณฑ์
เราต้องการตู้จำหน่ายสินค้าอัตโนมัติที่วางบนโต๊ะและไม่สูงเกินไป เราใช้ขนาดความกว้างของโต๊ะเพื่อให้แน่ใจว่าไม่มีตู้ขายของอัตโนมัติห้อยลงมาจากโต๊ะ
ขั้นตอนที่ 2: ปลอก
เราทำกล่องกว้าง 19 นิ้ว ยาว 17 นิ้ว สูง 25 นิ้ว เราใช้เครื่อง CNC ตัดไม้ เราใช้ Solidworks เพื่อออกแบบใบหน้าแล้วแปลงเป็นประเภทไฟล์รูปวาดสำหรับซอฟต์แวร์ CNC ของเรา เราขัดขอบแล้วขันด้วย 1 ¼” เราติดแผงด้านหน้าด้วยบานพับและใช้สกรู ¼ “เพื่อไม่ให้สกรูทะลุไปอีกด้าน เรายังใช้กระจกอะครีลิคซึ่งเราตัดสำหรับชั้นวางและแผงด้านหน้า
ขั้นตอนที่ 3: อุปกรณ์อิเล็กทรอนิกส์
Arduino
เราใช้บอร์ด Arduino Mega 2560 นอกจากนี้เรายังใช้บอร์ด Adafruit Motor เพื่อให้สามารถใช้สเต็ปเปอร์มอเตอร์ได้ เราได้เพิ่มหมุดไปที่ adafruit's เพื่อให้เชื่อมต่อกันได้ ถูกสอดเข้าทับกัน แต่ละตัวสามารถวิ่งได้ 2 มอเตอร์ นอกจากนี้ โปรดทราบว่าต้องเชื่อมต่อจัมเปอร์
เดสก์ท็อปพาวเวอร์ซัพพลาย
แหล่งจ่ายไฟ Bestek ATX โดยใช้อะแดปเตอร์เพื่อให้แหล่งจ่ายไฟเปิดอยู่ อะแดปเตอร์นี้มาจาก sparkfun.com และให้แรงดันไฟฟ้าที่หลากหลาย
คอยล์เป็นมอเตอร์
เราทำโมเดล Solidworks เพื่อยึดมอเตอร์ จับคอยล์ และนำคอยล์ไปตามชั้นวาง เราได้บรรลุขดลวดของเราจากอีเบย์และตัดให้เป็นมิติ เราต้องโค้งงอ 3 อันด้วยเนื่องจากเราไม่ได้ 6 ด้วยปลายตรงเพื่อเชื่อมต่อกับคอยล์ จากนั้นเราพิมพ์ 3D แล้วติดเข้ากับคอยล์และมอเตอร์ เราใส่สเต็ปเปอร์มอเตอร์ที่เรามี มันจะจับมอเตอร์และนำคอยล์ไปตามทางตรง
LCD และปุ่มกด
เราใช้ปุ่มกด Arduino และหน้าจอ LCD ที่เชื่อมต่อกับตะกั่ว 5V บนอะแดปเตอร์จ่ายไฟสำหรับจ่ายไฟ จากนั้นจึงเสียบเข้ากับบอร์ด Arduino เดียวกัน
การเดินสายไฟ
เราแนะนำให้ใช้สายวัด 18 เส้น กรณีของเราต้องประนีประนอมโดยใช้เกจต่างๆ เพราะเราหมดไป 18 เกจ
แถบ LED
เราใช้แถบ LED เพื่อทำให้เครื่องสว่างขึ้น เราเชื่อมต่อกับสายไฟ 12V บนอะแดปเตอร์จ่ายไฟ โชคดีที่เราเคยใช้แถบ LED ที่มีเครื่องหมาย + และ - ซึ่งทำให้กระบวนการเชื่อมต่อง่ายขึ้น
ขั้นตอนที่ 4: ผู้รับบิล
เราใช้ Coinco BA30B เป็นตัวรับบิลของเรา ต้องเชื่อมต่อโดยตรงกับผนังเป็นแหล่งพลังงาน เรารวมเข้ากับอะแดปเตอร์ 24 พินจากแหล่งจ่ายไฟ atx เพื่อเสียบปลั๊กและช่วยให้เดินสายได้ง่ายขึ้น pinouts ที่เราติดตามอยู่ในลิงค์ต่อไปนี้:
techvalleyprojects.blogspot.com/2011/07/ard…
ในกรณีของเรา เราต้องสร้างที่ยึดเพื่อยกตัวรับบิล เพราะไม่เช่นนั้น มันจะต่ำเกินไปสำหรับเคสของเรา
ขั้นตอนที่ 5: การทดสอบ
ทดสอบอุปกรณ์อิเล็กทรอนิกส์ภายนอกเคสก่อนเพื่อให้แน่ใจว่าส่วนประกอบทำงาน ปัญหาที่เกิดขึ้นควรได้รับการแก้ไขก่อนวางลงในเคส
ขั้นตอนที่ 6: อุปกรณ์อิเล็กทรอนิกส์สู่ปลอก
เมื่อคุณได้ทดสอบอุปกรณ์อิเล็กทรอนิกส์และพอใจกับผลลัพธ์แล้ว ให้เริ่มใส่ลงในเคสของคุณ ปรับความยาวของลวดเพื่อให้พอดีกับภายใน
ขั้นตอนที่ 7: การทดสอบขั้นสุดท้าย
เมื่อใส่ลงในเคสแล้ว ให้ทดสอบทุกอย่างอีกครั้ง หากทุกอย่างเป็นไปตามที่คุณคาดหวัง ยินดีด้วย! คุณทำเครื่องขายแสตมป์อัตโนมัติ
ขั้นตอนที่ 8: รหัส Arduino + ลิงค์
ดาวน์โหลด:
รหัส Arduino
drive.google.com/drive/folders/1oC4MhOcMFy…
โฟลเดอร์ SolidWorks พร้อมไฟล์ชิ้นส่วนและการประกอบ
drive.google.com/drive/folders/1amZoypiWcZ…
ในกรณีที่มีบางอย่างเกิดขึ้นกับลิงก์ นี่คือรหัส Arduino ที่แสดงอย่างสมบูรณ์ รหัส Arduino <<
#include #include #include "Arduino.h" #include #include #include "utility/Adafruit_MS_PWMServoDriver.h" #include
const int stepsPerRevolution = 200; ไบต์ const ROWS = 4; //สี่แถว const ไบต์ COLS = 3; // คีย์อักขระสามคอลัมน์ [ROWS][COLS] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; ไบต์ rowPins[ROWS] = {5, 6, 7, 8}; //เชื่อมต่อกับ pinouts แถวของแป้นพิมพ์ไบต์ colPins[COLS] = {2, 3, 4}; // เชื่อมต่อกับ pinouts ของคอลัมน์ของปุ่มกด ปุ่มกด = ปุ่มกด (makeKeymap (คีย์), 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); // หมุดดิจิตอลที่จอแอลซีดีเชื่อมต่อกับ // ค่าคงที่ // // พินสำหรับเครดิตของผู้ตรวจสอบการเรียกเก็บเงิน (-) บรรทัด const int billValidator = 22;
// ตัวแปร /
/ บันทึกระยะเวลาของชีพจร (มิลลิวินาที) ระยะเวลานานที่ไม่ได้ลงนาม;
// ถือเงินดอลลาร์ทั้งหมดที่บันทึกไว้ int dollarCounter = 0; การตั้งค่าเป็นโมฆะ () { lcd.begin (16, 1); //ตั้งค่าพิกัดข้อความ LCD lcd.print("ใส่ $1 เท่านั้น"); //ตั้งค่าข้อความ Serial.begin(9600); // เริ่มต้นพอร์ตอนุกรมสำหรับการสื่อสาร Serial.println("การทดสอบ Stepper!"); //พิมพ์ Stepper Test ในมอนิเตอร์แบบอนุกรมเพื่อให้เราทราบว่ามีการกดสเต็ปเปอร์มอเตอร์ตัวใด AFMS1.begin(); AFMS2.begin(); AFMS3.begin(); AFMS4.begin(); myMotor1->setSpeed(100); //ตั้งค่าความเร็วมอเตอร์ที่พวกเขาจะเรียกใช้ myMotor2->setSpeed(100); myMotor3->setSpeed(100); myMotor4->setSpeed(100); myMotor5->setSpeed(100); myMotor6->setSpeed(100); myMotor7->setSpeed(100); myMotor8->setSpeed(100); // การตั้งค่าพินสำหรับตัวตรวจสอบการเรียกเก็บเงินและปุ่ม pinMode (billValidator, INPUT); //ตั้งค่าตัวเรียกเก็บเงิน
// เริ่มต้นพอร์ตอนุกรมสำหรับการสื่อสาร Serial.begin(9600); Serial.println("กำลังรอเงินดอลลาร์…"); } วงเป็นโมฆะ () { { ระยะเวลา = pulseIn (bilValidator, สูง); //เริ่มค้นหาความยาวพัลส์ที่ได้รับจากตัวรับบิลหาก (duration > 12000) //ค่าที่ต้องเกินเพื่อตรวจสอบว่าเป็นดอลลาร์ที่ประมวลผลและแท้จริงแล้ว { // Count dollar dollarCounter++; // กำลังตรวจสอบความเข้าใจ Serial.print("Dollar found.\n Total: "); // แสดงการนับดอลลาร์ใหม่ Serial.println(dollarCounter); //วนซ้ำเพื่อรอจนกว่าจะกดปุ่มในขณะที่ (duration > 12000){ char key = keypad.getKey(); // เชื่อมต่อคีย์เวิร์ดและเริ่มดูว่ามีการกดแป้นใด (คีย์ != NO_KEY) { //จะมองหาคีย์ที่กด Serial.println (คีย์); // แจ้งให้เราทราบว่าอันไหนถูกกดในมอนิเตอร์แบบอนุกรม } { if (key == '1') { // หากกดคีย์ 1 ให้ทำดังนี้: int keyPressed = key - '1'; myMotor8->ขั้นตอน (580, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor8->ปล่อย(); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; //กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ }
if (key == '2') { //หากกด Key 2 ให้ทำดังต่อไปนี้: int keyPressed = key - '2'; myMotor7->ขั้นตอน (400, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor7->ปล่อย(); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; // กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ } if (key == '3') { //หากกดคีย์ 3 ให้ทำดังนี้: int keyPressed = key - '3'; myMotor6->ขั้นตอน (400, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor6->ปล่อย(); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; // กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ } if (key == '4') { //หากกดคีย์ 4 ให้ทำดังนี้: int keyPressed = key - '4'; myMotor5->ขั้นตอน (180, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor5->ปล่อย(); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; // กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ } if (key == '5') { //หากกดคีย์ 5 ให้ทำดังนี้: int keyPressed = key - '5'; myMotor4->ขั้นตอน (6900, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor4->ปล่อย(); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; // กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ } if (key == '6') { //หากกดคีย์ 6 ให้ทำดังนี้: int keyPressed = key - '6'; myMotor3->ขั้นตอน (400, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor3->ปล่อย (); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; // กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ } if (key == '7') { //หากกดคีย์ 7 ให้ทำดังนี้: int keyPressed = key - '7'; myMotor7->ขั้นตอน (400, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor7->ปล่อย(); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; // กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ } if (key == '8') { //หากกดคีย์ 8 ให้ทำดังนี้: int keyPressed = key - '8'; myMotor8->ขั้นตอน (400, ไปข้างหน้า, สองเท่า); //สตาร์ทมอเตอร์และหมุนไป 350 องศาในทิศทางไปข้างหน้า myMotor8->ปล่อย(); //ปล่อยมอเตอร์ออกจากสถานะยึดตัวเองเข้าที่ กลับ; //กลับไปที่จุดเริ่มต้นของโค้ดวนซ้ำ } } } } } } >>
แนะนำ:
ปุ่ม Home Automation มูลค่า $5: 4 ขั้นตอน
ปุ่ม Home Automation ราคา $5: ปุ่ม Home Automation ราคา $5 บางครั้งวิธีแก้ปัญหาที่ง่ายที่สุดคือปุ่มเดียว เราต้องการวิธีง่ายๆ ในการเรียกใช้กิจวัตร "เวลาเข้านอน" บนฮับระบบอัตโนมัติภายในบ้านของเรา (Hubitat Elevation) ซึ่งจะปิดไฟส่วนใหญ่ ตั้งค่าอื่นๆ ให้อยู่ในระดับที่เฉพาะเจาะจง และ
สร้างหุ่นยนต์ควบคุมระยะไกล ESP8266 มูลค่า 15 เหรียญ / รถ / ถังสำหรับ Ios และ Android: 4 ขั้นตอน
สร้างหุ่นยนต์ควบคุมระยะไกล ESP8266 มูลค่า 15 เหรียญ / รถ / ถังสำหรับ Ios และ Android: คุณเกลียดที่จะเดินไปที่ห้องครัวเพื่อซื้อขนมหรือไม่? หรือเพื่อรับเครื่องดื่มใหม่? ทั้งหมดนี้สามารถแก้ไขได้ด้วยบัตเลอร์ที่ควบคุมด้วยรีโมตแบบง่ายๆ มูลค่า 15 เหรียญ ก่อนที่เราจะไปไกลกว่านี้ฉันกำลังดำเนินโครงการ Kickstarter ในขณะนี้สำหรับแถบไฟ LED RGB ที่ควบคุมด้วยเสียง
นาฬิกา Arduino มูลค่า 5 เหรียญ: 4 ขั้นตอน
นาฬิกา Arduino ราคา $ 5: สร้างนาฬิกาที่เข้ากันได้กับ Arduino ในราคาไม่แพง โครงการนี้สนุกและง่ายต่อการทำซ้ำ สามารถใส่ลงในตู้หรือโครงการที่เลือกได้ ฉันใช้กล่องชุดชิ้นส่วนอิเล็กทรอนิกส์พลาสติก ชิ้นส่วนพื้นฐานมีราคา $5 แต่ยังต้องการพลังงานแบบ micro USB
ตัวควบคุมหัวแร้งอุณหภูมิ DIY Variable มูลค่า 10 เหรียญ: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY Variable Temp Soldering Iron Controller ราคา 10 เหรียญ: คำแนะนำนี้จะแสดงวิธีสร้างหัวแร้ง "firestarter" ของ Radioshack ให้เป็นรุ่นอุณหภูมิผันแปรโดยใช้ชิ้นส่วนประมาณ 10 เหรียญ ความคิดนี้มาถึงฉันหลังจากที่ฉันเริ่มแกะรอยบนแผงวงจรเพราะฉันใช้ 30w
USb Latte Foamer มูลค่า 4 เหรียญ: 4 ขั้นตอน (พร้อมรูปภาพ)
Usb Latte Foamer มูลค่า $4: ม็อดที่ง่ายและรวดเร็วสำหรับเครื่องทำลาเต้แบบใช้แบตเตอรี่ราคา $4 สำหรับสำนักงานของคุณ เพื่อให้คุณสามารถเรียกใช้เครื่องจากพอร์ต USB ของคอมพิวเตอร์ได้ คุณชอบดื่มกาแฟในสำนักงาน และบางครั้งคุณก็ไม่สามารถดื่มกาแฟได้ ดังนั้นคุณจึงชงกาแฟของคุณเอง แต่คุณทำได้