Автоматический 3D сканер размера упаковки
Поставили нам недавно вполне конкретную задачу, от склада одного из российских дистрибьюторов электронных компонентов, с которого мы отправляем свою продукцию нашим покупателем, среди множества других посылок. Ну, хорошо! Попробуем…. Тем более, еще некоторое время назад у нас в образцах появился такой ультразвуковой датчик для измерения расстояний. По цене он заметно отличался от широко распространенных, но производитель обещал лучшую точность измерения. Да и как раз в это время мы сделали собственную версию микроконтроллера, по функциям совместимую с Ардуино Леонардо, снабдив плату винтовыми разъемами, гнездами для LCD и рядом других примочек, рассчитанных на расширение возможностей модуля в дальнейшем.Вот так вот выглядит рабочее место упаковщика, где он взвешивает и измеряет упаковку:
Попробуем его улучшить и автоматизировать.Серебристая поверхность это весы, они подключены к компьютеру через собственный COM-порт и автоматически передают вес в учетную систему. А вот для измерения размеров коробки местные рационализаторы разместили рядом с весами линейки, из подручных средств. Это заметно повысило производительность труда, но данные в систему приходилось вводить руками с помощью клавиатуры.
Итак, для опытного образца берем рабочее место за основу и добавляем к Древесно-Декартовой системе координат датчики, разворачиваем их внутрь осей, подключаем к микроконтроллеру, в ARDUINO IDE пишем скетч, используя библиотеку датчика и встроенные возможности Leonardo. А именно то, что в используемом микроконтроллере Atmega 32u4 реализовано подключение к компьютеру по встроенному интерфейсу USB по технологии HID-устройств. Так работают клавиатуры, мыши, торговые сканеры штрих-кодов. Это именно то, что нам и надо — передать данные в буфер клавиатуры, сымитировав ручной ввод данных.
Вот посмотрите ролик, что получилось в «черновом варианте»
[embedded content]
Мы написали простой скетч. Реализовав только основные функции, но ничто не мешает дополнить его различным сервисом типа ручной калибровки, изменения единицы измерения, настройка передаваемых символов в зависимости от используемой учетной системы и т.п. Память контроллера достаточно большая и позволит это сделать в будущем при необходимости.
А пока скетч работает по такой логике:
• После включения каждый из трех датчиков измеряет расстояние от себя до противоположно стенки и запоминает это расстояние как базовое• Переходит в рабочий режим и циклически измеряет текущее расстояние• Если текущее расстояние заметно отличается от базового — прибор считает, что в зону измерения помещена коробка. Измерение происходит по трем осям по формуле: Размер стороны = Базовое — текущее расстояние• Размер по трем осям записывается в соответствующие переменные.• Передача в компьютер осуществляется по нажатию кнопки оператором. Это сделано для устранения ложных срабатываний.• После передачи данных нажатие кнопки блокируется до момента, пока коробку не уберут. Система почувствует это по измерению текущего расстояния — оно опять станет равным базовому.• Цикл повторяется — система ждет новую коробку
Итак, мы сделали, установили, настроили датчики для эксперимента на фиксированные базовые расстояния… и оставили на опытную эксплуатацию. Что она показала? Наноточности измерений мы не получили, но для поставленной логистической задачи точность вполне подходящая.
Кроме этого:
• Повышение производительности — Да.• Удобство для упаковщика — Да.
Наступил второй этап нашей разработки — приведение к товарному виду. За дело взялся конструктор и с помощью программы SketchUp и нескольких чашек кофе разработал конструкцию, чем-то похожую на хорошо известный 3D-принтер RepRap.
Собственно говоря на 3D принтере мы и собирались напечатать необходимые для конструктора детали. Вот что получилось в итоге:
Здесь можно скачать STL файлы.
Поразвлекавшись с ушками и безумными наручными часами, мы нашли и коммерческое применение нашему 3D принтеру.
Итоги: Сейчас мы доделаем наш сканер и отправим его на склад в постоянную эксплуатацию, о чем обязательно напишем и снимем новый ролик.