Оглавление:
- Шаг 1. Критерии
- Шаг 2: Оболочка
- Шаг 3: Электроника
- Шаг 4: Купюроприемник
- Шаг 5: Тестирование
- Шаг 6: от электроники к корпусу
- Шаг 7: Заключительное тестирование
- Шаг 8: Код Arduino + ссылки
Видео: Торговый автомат на базе Arduino за 1 доллар: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Мы получили нашу идею от нашего учителя инженерного дела - мы все подумали, что было бы неплохо иметь торговый автомат для нашего класса, и он сказал: «Круто, сделай один». Оказалось, что торговый автомат был бы отличным проектом для старших руководителей, и когда он был завершен, он мог бы служить средством сбора средств для нашей инженерной программы.
Он называется торговым автоматом за 1 доллар не потому, что его изготовление стоит 1 доллар, а просто потому, что купюроприемник - старая модель, которая принимает купюры всего за 1 доллар:)
Шаг 1. Критерии
Нам нужен был торговый автомат, который поместился бы на столе и не был слишком высоким. Мы взяли размеры по ширине стола, чтобы убедиться, что торговый автомат не свисает со стола.
Шаг 2: Оболочка
Мы сделали нашу коробку шириной 19 дюймов, длиной 17 дюймов и высотой 25 дюймов. Мы использовали станок с ЧПУ, чтобы распилить нашу древесину. Мы использовали solidworks для проектирования граней, а затем преобразовали их в типы файлов чертежей для нашего программного обеспечения ЧПУ. Мы отшлифовали края, а затем прикрутили их с шагом 1”. Переднюю панель мы прикрепили на петлю и использовали “шурупы, чтобы шурупы не выходили на другую сторону. Мы также использовали акриловое стекло, которое мы вырезали для полок и передней панели.
Шаг 3: Электроника
Ардуино
Мы использовали плату Arduino Mega 2560. Мы также использовали моторные платы Adafruit, чтобы они могли управлять шаговыми двигателями. Мы добавили контакты к adafruit, чтобы они могли соединяться друг с другом. Их вставляли друг на друга. Каждый может запустить 2 мотора. Также обратите внимание, что перемычка должна быть подключена.
Настольный блок питания
Блок питания Bestek ATX с использованием адаптера, чтобы блок питания оставался включенным. Адаптер от sparkfun.com обеспечивает различные напряжения.
Катушки в моторы
Мы сделали модели solidworks, чтобы удерживать двигатель, захватывать катушку и направлять ее по полке. Мы получили наши катушки с ebay и обрезали их по размеру. Нам также пришлось согнуть 3 из них, так как у нас не было 6 с прямыми концами для подключения к держателю катушки. Затем мы напечатали их на 3D-принтере и прикрепили к катушке и двигателю. Имеющиеся у нас шаговые двигатели мы вставили в крепление. Он будет удерживать двигатель и направлять катушку по прямому пути.
ЖК-дисплей и клавиатура
Мы использовали клавиатуру Arduino и ЖК-экран, подключенные к проводу 5 В на адаптере источника питания для питания, а затем к той же плате Arduino.
Проводка
Мы рекомендуем использовать провода 18-го калибра. В нашем случае нам пришлось пойти на компромисс, используя различные датчики, потому что у нас закончилось 18 датчиков.
Светодиодная полоса
Мы использовали светодиодную ленту, чтобы осветить машину. Мы подключили его к проводу 12 В адаптера питания. К счастью, на светодиодной полосе, которую мы использовали, были значки + и -, что упростило процесс ее подключения.
Шаг 4: Купюроприемник
В качестве купюроприемника мы использовали Coinco BA30B. Его нужно было подключить непосредственно к стене в качестве источника питания. Мы объединили его с 24-контактным адаптером от блока питания atx для подключения и упрощения подключения. Распиновка, которой мы следовали, находится по следующей ссылке:
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 "Утилита / Adafruit_MS_PWMServoDriver.h" #include
const int stepsPerRevolution = 200; const byte ROWS = 4; // четыре строки const byte COLS = 3; // трехколоночные символьные ключи [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // подключаемся к выводам строки байта клавиатуры colPins [COLS] = {2, 3, 4}; // подключаемся к выводам столбцов клавиатуры Keypad keypad = Keypad (makeKeymap (keys), 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 (1, 11, 9, 10, 12, 13); // Цифровые выводы, к которым подключен ЖК-дисплей // Константы // // вывод для линии кредита (-) валидатора счетов const int billValidator = 22;
// Переменные /
/ запись длительности импульса (миллисекунды) беззнаковой большой длительности;
// сохраняем общую сумму записанных долларов int dollarCounter = 0; void setup () {lcd.begin (16, 1); // установка координат текста на ЖК-дисплее lcd.print ("Insert $ 1 Only"); // Устанавливаем текст Serial.begin (9600); // Инициализируем последовательные порты для связи. Serial.println («Шаговый тест!»); // Введите Out 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 («В ожидании доллара…»); } void loop () {{продолжительность = pulseIn (billValidator, HIGH); // Начинает поиск длины импульса, полученного от купюроприемника if (duration> 12000) // Значение, которое он должен превзойти, чтобы подтвердить его как обработанный и подлинный доллар {// Подсчет доллара dollarCounter ++; // Проверка понимания Serial.print («Обнаружен доллар. / N Итого:»); // Отображаем новое количество долларов Serial.println (dollarCounter); // цикл для ожидания нажатия кнопки while (duration> 12000) {char key = keypad.getKey (); // подключает клавиатуру и начинает видеть, какая из них нажата if (key! = NO_KEY) {// будет искать нажатую клавишу Serial.println (key); // сообщает нам, какой из них был нажат в последовательном мониторе} {if (key == '1') {// Если нажата клавиша 1, выполняет следующие действия: int keyPressed = key - '1'; myMotor8-> step (580, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor8-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возвращаемся к началу кода цикла}
if (key == '2') {// Если клавиша 2 нажата, выполняется следующее: int keyPressed = key - '2'; myMotor7-> step (400, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor7-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возврат к началу кода цикла} if (key == '3') {// Если нажата клавиша 3, выполняется следующее: int keyPressed = key - '3'; myMotor6-> step (400, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor6-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возврат к началу кода цикла} if (key == '4') {// Если клавиша 4 нажата, выполняется следующее: int keyPressed = key - '4'; myMotor5-> step (180, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor5-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возврат к началу кода цикла} if (key == '5') {// Если нажата клавиша 5, выполняется следующее: int keyPressed = key - '5'; myMotor4-> step (6900, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor4-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возврат к началу кода цикла} if (key == '6') {// Если клавиша 6 нажата, выполняется следующее: int keyPressed = key - '6'; myMotor3-> step (400, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor3-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возврат к началу кода цикла} if (key == '7') {// Если нажата клавиша 7, выполняется следующее: int keyPressed = key - '7'; myMotor7-> step (400, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor7-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возврат к началу кода цикла} if (key == '8') {// Если нажата клавиша 8, выполняется следующее: int keyPressed = key - '8'; myMotor8-> step (400, ВПЕРЕД, ДВОЙНОЙ); // Запускает двигатель и вращается на 350 градусов в прямом направлении. myMotor8-> release (); // Выводит двигатель из состояния удержания на месте. возвращение; // Возвращаемся к началу кода цикла}}}}}} >>
Рекомендуемые:
Торговый автомат DIY: 8 шагов
Торговый автомат DIY: Три года назад я начал учиться в электронном техникуме. Одним из фактов, которые меня тогда удивили, было количество курильщиков, потому что во время перерывов половина учеников покидала стены школы, чтобы разрядить свои эмоции после
Мини-торговый автомат, управляемый Arduino: 9 шагов
Мини-торговый автомат, управляемый Arduino: это наш торговый автомат, он продает три забавных шоколадных батончика сникерс. Габаритные размеры около 12 дюймов; х 6 дюймов х 8 дюймов. Этот торговый автомат управляется Arduino, с макетной платой и серводвигателем
Детектор лжи + торговый автомат: с Arduino Leonardo: 6 шагов
Детектор лжи + торговый автомат: с Arduino Leonardo: этот детектор лжи не является обычным средним детектором лжи, это детектор лжи, к которому подключен торговый автомат. В основном это так и работает. Вначале игрок нажимает кнопку, которая запускает автомат, а перед ложью
Торговый автомат с сервоприводом Arduino: 8 шагов
Торговый автомат с сервоприводом Arduino: этот торговый автомат содержит три забавных батончика для сникерсов и будет продавать по одному, используя Arduino Uno и серводвигатель
Торговый автомат -- Диспенсер конфет -- Arduino Bluetooth Controlled -- Сделай сам: 11 шагов (с изображениями)
Торговый автомат || Диспенсер конфет || Arduino Bluetooth Controlled || Сделай сам: в этой инструкции я покажу, как построить торговый автомат с использованием Arduino. КОММЕНТАРИЙ, ЧТО ВЫ ДУМАЕТЕ ОБ ЭТОЙ ИНСТРУКЦИИ, ЧТОБЫ Я МОГУ УЛУЧШИТЬ В МОИ ДАЛЬНЕЙШИХ ИНСТРУКЦИЯХ Посмотрите видеоурок для лучшего понимания энти