Mục lục:
- Bước 1: Tiêu chí
- Bước 2: Vỏ bọc
- Bước 3: Điện tử
- Bước 4: Người chấp nhận hóa đơn
- Bước 5: Kiểm tra
- Bước 6: Điện tử sang vỏ bọc
- Bước 7: Thử nghiệm cuối cùng
- Bước 8: Mã Arduino + Liên kết
Video: Máy bán hàng tự động dựa trên Arduino $ 1: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Chúng tôi nhận được ý tưởng từ giáo viên kỹ thuật của mình - tất cả chúng tôi đều nghĩ rằng sẽ là một ý tưởng hay nếu có một máy bán hàng tự động cho lớp học của mình và ông ấy nói - "tuyệt vời, hãy làm một chiếc". Hóa ra máy bán hàng tự động sẽ là một dự án cấp cao tuyệt vời và khi hoàn thành sẽ hoạt động như một hoạt động gây quỹ cho chương trình kỹ thuật của chúng tôi.
Nó được gọi là Máy bán hàng tự động 1 đô la không phải vì nó tốn 1 đô la để tạo ra, mà đơn giản vì máy chấp nhận hóa đơn là một mô hình cũ hơn chỉ lấy hóa đơn 1 đô la:)
Bước 1: Tiêu chí
Chúng tôi muốn có một máy bán hàng tự động vừa vặn trên bàn làm việc và không quá cao. Chúng tôi đã lấy kích thước chiều rộng của chiếc bàn để đảm bảo rằng chúng tôi không có máy bán hàng tự động treo trên bàn.
Bước 2: Vỏ bọc
Chúng tôi làm cho chiếc hộp của mình rộng 19 inch, dài 17 inch x cao 25 inch. Chúng tôi sử dụng Máy CNC để cắt gỗ. Chúng tôi đã sử dụng solidworks để thiết kế các khuôn mặt và sau đó chuyển đổi chúng thành các loại tệp bản vẽ cho phần mềm CNC của chúng tôi. Chúng tôi chà nhám các cạnh và sau đó vặn chúng bằng 1 ¼”. Chúng tôi đã gắn bảng điều khiển phía trước bằng một bản lề và sử dụng vít ¼ “để các vít này không xuyên qua mặt khác. Chúng tôi cũng sử dụng kính Acrylic mà chúng tôi cắt cho các kệ và bảng điều khiển phía trước.
Bước 3: Điện tử
Arduino
Chúng tôi đã sử dụng một Bảng Arduino Mega 2560. Chúng tôi cũng sử dụng Bo mạch động cơ Adafruit để chúng có thể chạy động cơ bước. Chúng tôi đã thêm các ghim vào adafruit's để chúng kết nối với nhau. Chúng đã được chèn chúng trên đầu trang của nhau. Mỗi chiếc có thể chạy 2 động cơ. Ngoài ra, xin lưu ý rằng jumper cần được kết nối.
Nguồn cung cấp cho máy tính để bàn
Bestek ATX Nguồn điện sử dụng bộ chuyển đổi để giữ nguồn điện luôn bật. Bộ chuyển đổi từ sparkfun.com và cung cấp các điện áp khác nhau.
Cuộn vào động cơ
Chúng tôi đã làm các mô hình solidworks để giữ động cơ, lấy cuộn dây và dẫn hướng cuộn dây dọc theo giá. Chúng tôi đã đạt được các cuộn dây của chúng tôi từ ebay và cắt chúng thành kích thước. Chúng tôi cũng phải uốn cong 3 trong số chúng vì chúng tôi không có được 6 với các đầu thẳng để kết nối với giá treo cuộn dây. Sau đó, chúng tôi in 3D chúng và gắn chúng vào cuộn dây và động cơ. Các động cơ bước mà chúng tôi có, chúng tôi đã lắp vào một giá đỡ. Nó sẽ giữ động cơ và hướng cuộn dây theo một đường thẳng.
LCD và bàn phím
Chúng tôi đã sử dụng Bàn phím Arduino và màn hình LCD được kết nối vào dây dẫn 5V trên bộ chuyển đổi nguồn điện để cấp nguồn và sau đó vào cùng một Bảng Arduino
Đấu dây
Chúng tôi khuyên bạn nên sử dụng 18 dây đo. Trong trường hợp của chúng tôi, chúng tôi phải thỏa hiệp bằng cách sử dụng các đồng hồ đo khác nhau vì chúng tôi đã hết 18 đồng hồ đo
Dải đèn LED
Chúng tôi đã sử dụng một dải đèn LED để tăng sáng cho máy. Chúng tôi đã kết nối nó với một dây dẫn 12V trên bộ chuyển đổi nguồn điện. Rất may, dải đèn LED mà chúng tôi sử dụng đã có dấu + và - giúp quá trình kết nối dễ dàng hơn.
Bước 4: Người chấp nhận hóa đơn
Chúng tôi đã sử dụng Coinco BA30B làm người chấp nhận hóa đơn của mình. Nó phải được kết nối trực tiếp với tường như một nguồn điện. Chúng tôi đã kết hợp nó với bộ chuyển đổi 24 chân từ bộ cấp nguồn atx để cắm và cho phép đi dây dễ dàng hơn. Sơ đồ chân mà chúng tôi đã theo dõi được tìm thấy trong liên kết sau:
techvalleyprojects.blogspot.com/2011/07/ard…
Trong trường hợp của chúng tôi, chúng tôi phải tạo một giá đỡ để nâng cao bộ chấp nhận hóa đơn vì nếu không nó sẽ quá thấp so với cách viết của chúng tôi.
Bước 5: Kiểm tra
Kiểm tra thiết bị điện tử bên ngoài vỏ trước để đảm bảo rằng các thành phần hoạt động. Mọi vấn đề phát sinh cần được khắc phục trước khi đặt chúng vào bên trong vỏ.
Bước 6: Điện tử sang vỏ bọc
Khi bạn đã kiểm tra thiết bị điện tử và hài lòng với kết quả của chúng, hãy bắt đầu đặt chúng vào vỏ của bạn. Điều chỉnh độ dài dây sao cho vừa vặn với bên trong.
Bước 7: Thử nghiệm cuối cùng
Sau khi được đặt vào vỏ, hãy kiểm tra lại mọi thứ. Nếu mọi thứ hoạt động như bạn mong đợi, xin chúc mừng! Bạn đã tạo ra một máy bán hàng tự động.
Bước 8: Mã Arduino + Liên kết
Tải xuống:
Mã Arduino
drive.google.com/drive/folders/1oC4MhOcMFy…
Thư mục SolidWorks với các tệp bộ phận và lắp ráp
drive.google.com/drive/folders/1amZoypiWcZ…
Đề phòng có điều gì đó đã xảy ra với liên kết, đây là mã arduino được hiển thị đầy đủ. Mã Arduino <<
#include #include #include "Arduino.h" #include #include #include "tiện ích / Adafruit_MS_PWMServoDriver.h" #include
const int stepsPerRevolution = 200; const byte ROWS = 4; // bốn hàng const byte COLS = 3; // khóa ký tự ba cột [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // kết nối với sơ đồ hàng của byte bàn phím colPins [COLS] = {2, 3, 4}; // kết nối với sơ đồ cột của bàn phím Bàn phím bàn phím = Bàn phím (makeKeymap (các phím), 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); Màn hình LCD LiquidCrystal (1, 11, 9, 10, 12, 13); // Ghim kỹ thuật số màn hình LCD được kết nối với // Hằng số // // ghim cho dòng tín dụng (-) của người xác thực hóa đơn const int billValidator = 22;
// Biến /
/ ghi lại khoảng thời gian của xung (mili giây) thời lượng dài không được đánh dấu;
// nắm giữ tổng số đô la được ghi int dollarCounter = 0; void setup () {lcd.begin (16, 1); // đặt tọa độ văn bản lcd lcd.print ("Chèn chỉ $ 1"); // Đặt văn bản Serial.begin (9600); // Khởi tạo các cổng nối tiếp để giao tiếp. Serial.println ("Kiểm tra bước!"); // Gõ Out Stepper Test trong màn hình nối tiếp để chúng ta biết động cơ bước nào được nhấn. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Đặt Tốc độ động cơ tại đó chúng sẽ chạy myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Thiết lập mã pin cho trình xác thực hóa đơn và nút pinMode (billValidator, INPUT); // Đặt hóa đơn
// Khởi tạo các cổng nối tiếp để giao tiếp. Serial.begin (9600); Serial.println ("Đang đợi đô la…"); } void loop () {{time = pulseIn (billValidator, HIGH); // Bắt đầu tìm độ dài xung nhận được từ bộ chấp nhận hóa đơn if (thời lượng> 12000) // Giá trị mà nó phải vượt qua để xác thực là một đô la được xử lý và xác thực {// Đếm đô la dollarCounter ++; // Kiểm tra sự hiểu biết Serial.print ("Đã phát hiện thấy đô la. / N Total:"); // Hiển thị số đô la mới Serial.println (dollarCounter); // vòng lặp để đợi cho đến khi một nút được nhấn trong khi (thời lượng> 12000) {char key = keypad.getKey (); // kết nối keyoad và bắt đầu xem phím nào được nhấn if (key! = NO_KEY) {// sẽ tìm phím được nhấn Serial.println (key); // cho chúng tôi biết cái nào được nhấn trong màn hình nối tiếp} {if (key == '1') {// Nếu phím 1 được nhấn, thực hiện như sau: int keyPressed = key - '1'; myMotor8-> step (580, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor8-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp}
if (key == '2') {// Nếu Phím 2 được nhấn, thực hiện như sau: int keyPressed = key - '2'; myMotor7-> step (400, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor7-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp} if (key == '3') {// Nếu phím 3 được nhấn, thực hiện như sau: int keyPressed = key - '3'; myMotor6-> step (400, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor6-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp} if (key == '4') {// Nếu phím 4 được nhấn, thực hiện như sau: int keyPressed = key - '4'; myMotor5-> step (180, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor5-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp} if (key == '5') {// Nếu phím 5 được nhấn, thực hiện như sau: int keyPressed = key - '5'; myMotor4-> step (6900, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor4-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp} if (key == '6') {// Nếu phím 6 được nhấn, thực hiện như sau: int keyPressed = key - '6'; myMotor3-> step (400, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor3-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp} if (key == '7') {// Nếu phím 7 được nhấn, thực hiện như sau: int keyPressed = key - '7'; myMotor7-> step (400, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor7-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp} if (key == '8') {// Nếu phím 8 được nhấn, thực hiện như sau: int keyPressed = key - '8'; myMotor8-> step (400, FORWARD, DOUBLE); // Khởi động động cơ và quay 350 độ theo hướng về phía trước. myMotor8-> release (); // Giải phóng động cơ khỏi trạng thái tự giữ nguyên vị trí. trở lại; // Quay lại phần đầu của mã vòng lặp}}}}}} >>
Đề xuất:
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Nhiệt kế hồng ngoại không tiếp xúc dựa trên Arduino - Nhiệt kế dựa trên IR sử dụng Arduino: 4 bước
Nhiệt kế hồng ngoại không tiếp xúc dựa trên Arduino | Nhiệt kế dựa trên IR sử dụng Arduino: Xin chào các bạn trong phần hướng dẫn này, chúng tôi sẽ tạo một Nhiệt kế không tiếp xúc bằng arduino. nhiệt độ sau đó trong phạm vi đó
Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): 4 bước (có hình ảnh)
Trình tạo nhạc dựa trên thời tiết (Trình tạo âm trung dựa trên ESP8266): Xin chào, hôm nay tôi sẽ giải thích cách tạo trình tạo nhạc dựa trên thời tiết nhỏ của riêng bạn. Nó dựa trên ESP8266, giống như Arduino và nó phản ứng với nhiệt độ, mưa và cường độ ánh sáng. Đừng mong đợi nó có thể tạo ra toàn bộ bài hát hoặc hợp âm
Một cửa hàng bán hàng tự động AFM: 14 bước (có hình ảnh)
Một cửa hàng tự làm AFM: Cập nhật: đây là một công ty sản xuất loại AFM này http://www.stromlinet-nano.com/ Hãy tận hưởng! Có một hội thảo tự làm AFM với một người có sở thích đến từ Hoa Kỳ và một giáo sư đến từ Ấn Độ. Họ đã tự lắp ráp AFM tự làm trong vòng 2 giờ trong thời gian chế tạo
Cách biến điện thoại di động LG EnV 2 của bạn thành một Modem quay số di động cho máy tính xách tay (hoặc máy tính để bàn) của bạn: 7 bước
Cách biến điện thoại di động LG EnV 2 của bạn thành một Modem quay số di động cho máy tính xách tay (hoặc máy tính để bàn) của bạn: Tất cả chúng ta đều có nhu cầu sử dụng Internet ở những nơi không thể, chẳng hạn như trong ô tô hoặc trong kỳ nghỉ, nơi họ tính một khoản tiền đắt đỏ mỗi giờ để sử dụng wifi của họ. cuối cùng, tôi đã nghĩ ra một cách đơn giản để