Умный Arduino-автомат: полное руководство по мехатронке DIY
В этом проекте научимся делать Arduino-торговый автомат. Весь процесс: резка и сборка МДФ, электроника, код. Смотрите видео или читайте урок. 4 отдающие ячейки на сервоприводах непрерывного вращения (DS04-NFC), подвижная платформа (карьер) на двух шаговых двигателях, LCD 16×2, 4 кнопки выбора, монетоприёмник (IR-датчик). Платформа делает проект сложнее и интереснее — отлично для курсовых по мехатронике. МДФ 8 мм, разметка по 3D-модели (Thangs). Круговая пила (самоделка на базе Creativity Hero), лобзик для вырезов и мелких деталей. Осторожно — травмоопасно! Сборка на клее и саморезах 3 мм, угловые зажимы, контрсверловка. F-зажимы для больших панелей. Алюминиевые трубы: горизонтальная 16 мм (2×27 см), вертикальная 20 мм (3×45 см). Пазы фрезой, трубы закреплены. Слайдеры: доски 21×21 см, M8 шпильки, подшипники 22 мм (верт.) и 16 мм (гориз.). Устранение люфта: расширение пазов, перпендикулярные пробивки, затяжка трёщотками. Дополнительно: болт с шкивом для горизонтального ремня, 2 подшипника на левом вертикальном рельсе. Справа — шаговый горизонтального движения на МДФ с опорой, собранный на вертикальном слайдере. Контейнер на горизонтальном слайдере из кусков дерева на клее. Эпоксидка в пазы, дополнительная доска для жёсткости. Сборка рельс в корпусе — работает отлично. Ремни: горизонтальный — на слайдере стяжка, вертикальный — шаговый сверху, шкив снизу. Работает плавно. Спирали из 3 мм проволоки на банке 7 см диаметром. Клеим на серво непрерывного вращения термоклеем. Дверца на петлях, магнитный защёлк. Акрил 5 мм на большом окне, алюминий на малом. 4 отверстия под кнопки, монетоприёмник, LCD. Дрилл + металлопила. Электроника на алюминии, крепится к двери M5 болтами. Два микроконцевика для парковки карьера. Направляющая для монет (клей). IR-датчик близости для монет. БП 12В ≥2А (шаговые + LED-лента). Buck converter LM2596 → 5В для серв, LCD, датчиков, кнопок. Сервы DS04-NFC — 5В, PWM от Arduino. Шаговые — драйверы A4988. Кнопки и концевики — на GND и цифровые пины с INPUT_PULLUP. Провода — перемычки (немного беспорядок, но работает). LED-ленты на двери для подсветки. Библиотеки: LiquidCrystal, Servo. Пины: LCD(27-22), сервы(4-7), шаговые: V(0,1), H(2,3), монетник(9), кнопки(13-10), концевики V(15), H(14). Loop(): «Insert a coin!» → ждём LOW на coinDetector → «Select your item 1,2,3,4?» → ждём кнопку → «Delivering...» → switch по buttonPressed. Case 1 (верхний левый): moveUp(4900), moveLeft(1700), servo1 2000μs 950мс → стоп 1500μs, возврат moveRight(1700), moveDown(4900). Case 2 (верхний правый): только moveUp(4900), servo2. Case 3 (нижний левый): moveUp(2200), moveLeft(1700), servo3, возврат. Case 4 (нижний правый): moveUp(2200), servo4, moveDown(2200). Драйверы A4988 в 1/4 шага → 4900 шагов на верх. Функции moveUp/Down/Left/Right: установка DIR, цикл шагов с задержкой 300 мкс. В конце «Item delivered!» на 2 сек. Просто и работает. Вопросы в комментариях, смотрите коллекцию проектов.Обзор

Сборка корпуса



Рельсовая система






Отдающие механизмы


Фронтальная панель


Электрическая схема

Компоненты

Arduino-код
#include <LiquidCrystal.h> #include <Servo.h>
LiquidCrystal lcd(27,26,25,24,23,22);
Servo servo1,servo2,servo3,servo4;
#define dirPinVertical 0 #define stepPinVertical 1
#define dirPinHorizontal 2 #define stepPinHorizontal 3
#define coinDetector 9
#define button1 13 #define button2 12 #define button3 11 #define button4 10
#define microSwitchV 15 #define microSwitchH 14
int buttonPressed;
void setup() {
lcd.begin(16,2);
servo1.attach(4); servo2.attach(5); servo3.attach(6); servo4.attach(7);
pinMode(dirPinVertical,OUTPUT); pinMode(stepPinVertical,OUTPUT);
pinMode(dirPinHorizontal,OUTPUT); pinMode(stepPinHorizontal,OUTPUT);
pinMode(coinDetector,INPUT);
pinMode(button1,INPUT_PULLUP); pinMode(button2,INPUT_PULLUP);
pinMode(button3,INPUT_PULLUP); pinMode(button4,INPUT_PULLUP);
pinMode(microSwitchV,INPUT_PULLUP); pinMode(microSwitchH,INPUT_PULLUP);
// Парковка по концевикам
digitalWrite(dirPinVertical,HIGH);
while(true){ if(digitalRead(microSwitchV)==LOW){ moveUp(70); break; }
digitalWrite(stepPinVertical,HIGH); delayMicroseconds(300);
digitalWrite(stepPinVertical,LOW); delayMicroseconds(300); }
digitalWrite(dirPinHorizontal,LOW);
while(true){ if(digitalRead(microSwitchH)==LOW){ moveLeft(350); break; }
digitalWrite(stepPinHorizontal,HIGH); delayMicroseconds(300);
digitalWrite(stepPinHorizontal,LOW); delayMicroseconds(300); }
}while(true){ if(digitalRead(coinDetector)==LOW) break; }
while(true){
if(digitalRead(button1)==LOW){buttonPressed=1;break;}
if(digitalRead(button2)==LOW){buttonPressed=2;break;}
if(digitalRead(button3)==LOW){buttonPressed=3;break;}
if(digitalRead(button4)==LOW){buttonPressed=4;break;}
}case 1:
moveUp(4900); delay(200); moveLeft(1700); delay(300);
servo1.writeMicroseconds(2000); delay(950); servo1.writeMicroseconds(1500); delay(500);
moveRight(1700); delay(200); moveDown(4900); break;servo1.writeMicroseconds(2000); delay(950); servo1.writeMicroseconds(1500);void moveUp(int steps){
digitalWrite(dirPinVertical,LOW);
for(int x=0;x
Производственный процесс
- Торговые автоматы: индустрия США на $36,6 млрд
- Сборка домашней машины для написания домашних заданий (плоттер-писатель)
- DIY-консоль управления Photoshop на Arduino Nano RP2040 Connect
- Создание потрясающей системы Ambilight для монитора на Arduino
- Создание ультразвукового левитатора на Arduino: пошаговое руководство
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Надежный ИК-датчик пульса на Arduino: пошаговое руководство
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
- Цифровые часы на Arduino с конечным автоматом (YAKINDU Statechart Tools)