Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Диспенсер конфет

Компоненты и расходные материалы

Arduino UNO
× 1
сервопривод (поворот на 180 градусов)
× 1
Стандартный ЖК-экран Adafruit - 16x2, белый на синем
× 1
Кнопочный переключатель SparkFun, 12 мм
× 1
PHPoC Shield для Arduino
× 1
ИК-датчик расстояния
× 1
Кнопка включения питания
× 1
Макет (общий)
× 1

Необходимые инструменты и машины

Паяльник (общий)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Проект

Это простой способ создать дозатор конфет, используя только:ИК-датчик, сервопривод и кнопку. Его можно разбить на следующие этапы:

  • Создание и использование Arduino Uno R3
  • Кодирование и настройка Arduino
  • Создание корпуса и механических частей.
  • Установка электроники
  • Тестирование и использование

Вот короткое демонстрационное видео:

Написание кода было для меня самой сложной частью, потому что я все еще новичок в написании языка кодирования, но мне удается это сделать после нескольких ошибок и помощи от мистера Google и друзей. Написание кодов - самое долгое время в этой части проекта.

Благодарим человека, который ВДОХНОВИЛ меня на создание этого диспенсера для конфет! Это упрощенная версия: https://www.hackster.io/gatoninja236/candy-dispenser-with-google-assistant-564724

Создание коробки и механических деталей

Это самая интересная часть проекта. Мне потребовался как минимум 1 день, чтобы полностью завершить его после нескольких ошибок и частей, которые не подходят.

Шаг 1

Компоновка компонентов

Это может выглядеть очень запутанным, но это самый простой способ отсортировать каждый компонент и протестировать каждую часть, чтобы увидеть, есть ли какие-либо ошибки. Я разложил провода разного цвета, чтобы на них было легче смотреть. Разложил все компоненты на картоне и разобрался, какой из них идет первым.

Шаг 2

Создание коробки

Я нарисовал технический чертеж того, как коробка должна выглядеть. Большинство деталей сделаны из картона, а некоторые - из акрила. Затем я измеряю каждую деталь.

  • Передняя и задняя =20 см x 16 см (задняя часть из акрила)
  • Сторона - Сторона =12 см x 16 см
  • Верх и низ =20 см x 12 см.

Шаг 3

Вот как это будет выглядеть после того, как все они будут скреплены (предварительно используя малярный скотч).

Затем вырезаю места для компонентов:

  • ЖК-экран =7,2 x 2,5 см
  • Пуговицы =1,2 см x 1,2 см.

Для чашки:

  • Длина x высота =9 см x 12 см.
  • Ширина x Глубина =9 см x 9 см.

Не забудьте вырезать и под датчики:

Диспенсер я сделал ступенями, чтобы конфета не падала сразу:

Шаг 4

Я разложил макетную плату и Ардуино друг за другом. Чтобы склеить их, я использую акрил. Таким образом вы сэкономите много места.

Шаг 5

Начните прикреплять компоненты к плате. Начну с ЖК-дисплея и кнопок.

Затем, подключив все кабели к компонентам, я прикрепил их в середине коробки.

Присоединение сервопривода:

Вот так это выглядит сзади. Я также добавил кнопку питания для включения диспенсера от батареи.

Шаг 6

Готовый вид.

Код

  • Диспенсер для конфет
Диспенсер для конфет Arduino
 // ------ БИБЛИОТЕКИ ----- # include  #include  #include  // ------ БИБЛИОТЕКИ --- - // Установите адрес ЖК-дисплея на 0x27 для 16-символьного и 2-строчного дисплея LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; int pos =90; // начальное положение сервопривода int buttonCLK =7; // buttonClock по часовой стрелке buttonAntiCLK =6; // buttonAntiClockwise pin // int sensorPin =2; // ИК-датчик для подключения к цифровому выводу №2 // int sensorState =0; // переменная sensorState для хранения статистики о состоянии сенсора int set =0; const int avoidPin =5; // ИК-датчик препятствий подключается к выводу 5void setup () {lcd.begin (); // инициализируем ЖК-дисплей lcd.clear (); myservo.attach (9); // Серво цифровой 9 pinMode (buttonCLK, INPUT); pinMode (buttonAntiCLK, ВХОД); pinMode (escapePin, INPUT); // устанавливаем escapePin как INPUT Serial.begin (9600); lcd.backlight (); // Включаем черный свет lcd.setCursor (3,0); lcd.print («Добро пожаловать»); lcd.setCursor (3,1); lcd.print («Конфетная страна»); задержка (2000); lcd.clear (); lcd.setCursor (0,0); lcd.print («Сколько конфет?»); lcd.setCursor (0,1); lcd.print («Немного много»); delay (5000);} void loop () {// ---------- ЭТО ЕСЛИ ФУНКЦИИ ДЛЯ КНОПОК ----------- if (digitalRead (buttonCLK) ==HIGH ) // Нажата кнопка по часовой стрелке {// TurnClockwise (); // SensorDetection (); lcd.clear (); lcd.print («Поставьте чашку»); задержка (2000); lcd.clear (); набор =набор + 1; } if (digitalRead (buttonAntiCLK) ==HIGH) // нажата кнопка против часовой стрелки {// TurnAntiClockwise (); // SensorDetection (); lcd.clear (); lcd.print («Поставьте чашку»); задержка (2000); lcd.clear (); набор =набор + 2; } если (установить ==1) {IRCLK (); } если (установить ==2) {IRAntiCLK (); } // ---------- ЭТО ЕСЛИ ФУНКЦИИ ДЛЯ КНОПОК -----------} void TurnClockwise () {Serial.println ("Конфеты 1 раздаются"); CandyText1 (); // отображение текста типа конфеты для (pos =90; pos <180; pos + =1) // изменяется от 0 градусов до 180 градусов {myservo.write (pos); // сообщаем сервоприводу перейти в позицию в переменной 'pos' delay (15); // ожидает 15 мсек, пока сервопривод достигнет позиции} if (pos ==180) {delay (2000); ThankYouText (); // отображаем текст благодарности}} void TurnAntiClockwise () {Serial.println ("Конфеты 2 раздаются"); CandyText2 (); // отображение текста типа конфеты для (pos =90; pos <180; pos + =1) // изменяется от 0 градусов до 180 градусов {myservo.write (pos); // сообщаем сервоприводу перейти в позицию в переменной 'pos' delay (20); // ожидает 15 мсек, пока сервопривод достигнет позиции} if (pos ==180) {delay (3000); ThankYouText (); // отображаем текст благодарности}} void IRCLK () {delay (1000); // создаем задержку в 1 с boolean escapeVal =digitalRead (escapePin); // считываем значение pin4 lcd.setCursor (0,0); lcd.print («Чашка обнаружения»); lcd.setCursor (0,14); lcd.print ("..."); if (escapeVal ==LOW) // если значение LOW level {lcd.clear (); lcd.print («Чашка поставлена»); задержка (2000); TurnClockwise (); }} недействительным IRAntiCLK () {задержка (1000); // создаем задержку в 1 с boolean escapeVal =digitalRead (escapePin); // считываем значение pin4 lcd.setCursor (0,0); lcd.print («Чашка обнаружения»); lcd.setCursor (0,14); lcd.print ("..."); if (escapeVal ==LOW) // если значение LOW level {lcd.clear (); lcd.print («Чашка поставлена»); задержка (2000); TurnAntiClockwise (); }} void CandyText1 () {lcd.clear (); lcd.setCursor (4,0); lcd.print («Заливка»); lcd.setCursor (1,1); lcd.print ("Маленькая конфетка");} void CandyText2 () {lcd.clear (); lcd.setCursor (4,0); lcd.print («Заливка»); lcd.setCursor (3,1); lcd.print ("Лот конфет");} void ThankYouText () {lcd.clear (); lcd.setCursor (5,0); lcd.print («Спасибо»); lcd.setCursor (6,1); lcd.print («Вы»); задержка (15); software_Reset ();} void software_Reset () // Перезапускает программу с самого начала, но не сбрасывает периферийные устройства и регистры {asm volatile ("jmp 0"); } 

Схема

Это выглядит немного сложно, но следите за тем, как устроена цветная проводка.

Производственный процесс

  1. Конфетная трость
  2. Конфетная кукуруза
  3. Jawbreaker
  4. Сахарная вата
  5. Мармеладные конфеты
  6. M &M® Candy
  7. Переключатель / светодиодная панель с Arduino для FS2020
  8. Arduino Spybot
  9. FlickMote
  10. Самодельный телевизор B-Gone