Ардуино сканер своими руками

Как своими руками сделать лазерный 3d сканер

FabScan — это опенсорсный, сделанный своими руками лазерный 3d сканер. Я собрал свой из листов МДФ и различных подручных средств и в качестве примера решил выложить для вас процесс создания.

Шаг 1: Что вам понадобится

Для официального сканера FabScan необходимы:

  • Ардуино УНО
  • Шаговый двигатель A4988
  • Модуль лазерного 3д сканера FabScan-Shield для Ардуино
  • Модуль красного лазера 5mW
  • Биполярный шаговый двигатель — NEMA 17 (200 шагов)
  • Блок питания 12V — 1A
  • Веб-камера Logitech C270

Для создания коробки вам понадобится 4 листа МДФ размером 600*300*5 мм.

В своём проекте я использовал:

  • Ардуино УНО
  • Биполярный шаговый двигатель — NEMA 17 (200 шагов)
  • Шаговый двигатель A4988
  • Модуль красного лазера 5mW
  • Блок питания 12V — 2A
  • Веб-камера Logitech C270

Так как мы будем использовать ПО FabScan, то я рекомендую держаться их списка деталей, всю документацию по эталонному 3 д сканеру FabScan вы легко найдёте в интернете.

Шаг 2: Собираем коробку-галерею для 3D-сканера

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

Шаг 3: Соединяем модули

Сборка железа довольно проста:
Соедините модуль FabScan с Ардуино, а двигатель A4988 установите на своё первое положение шага. Соедините двигатель с выходными пинами, а модуль лазера с аналоговым пином A4. Наконец, подключите блок питания и кабель USB.

Если вы решили собирать сканер по моему списку деталей:
Тогда вам нужно подключить двигатель A4988 к пинам 10, 11, 9, 8 на Ардуино (при желании пины можно поменять), а модуль лазера подключить к пину A4. В конце также подключите блок питания и кабель USB.

Шаг 4: Код для Ардуино

Мы будем использовать официальный код от FabScan. Загрузите его на Ардуино и всё готово.

Если у вас установлен плагин Codebender, то можно залить код на Ардуино, перейдя по этой ссылке.

Если вы собираете сканер по моему списку деталей, то нажмите кнопку Edit и сделайте следующее:

  • Добавить строки
  • Замените функцию step() следующей:

Шаг 5: Софт для компьютера

Мы будем использовать образ «FabScan Ubuntu Live DVD». Вы можете скачать его здесь. В этом образе софт FabScan уже предустановлен. Образ можно записать на флэшку, как это сделать можно найти в интернете.

Важная заметка: Если вы выбрали опцию «Try Ubuntu», то сохраните ваши файлы перед выключением компьютера!

Смотрите на приложенные фото и следуйте пунктам:

  • Выберите порт в SerialPort
  • Выбериет камеру в Camera
  • File — Control Panel
  • Кликнете на detect laser (не кладите ничего в сканер на данном этапе) и выберите ‘enable’
  • Кликните на «Fetch Frame» и убедитесь, что синяя горизонтальная линия касается верхушки вращающегося стола, а желтая горизонтальная линия касается его нижней части. Вертикальная желтая линия должна проходить через центр вращающегося стола. Незакреплённая камера может стать причиной искаженных сканов!

После настройки закройте окно панели управления, поместите объект в сканер, и нажмите на кнопку начала сканирования (start scan).

Сохранение 3D изображения:
Когда процесс сканирования завершится, можно сохранить 3Д объект в файл в форматах .pcd или .ply. Можно сохранить его также в формате stl, но он поддерживается не всеми платформами. Также можно открыть ранее отсканированный объект, выбрав File — OpenPointCloud.

Читайте также:  Вышитая брошь своими руками мастер класс

Что делать с 3Д файлами?
Можно открыть их в MeshLab и напечатать на 3Д-принтере.
Для печати объектов в MeshLab:

  • Сохраните объект в формате .ply
  • Откройте файл в MeshLab
  • В MeshLab рассчитайте нормали (Filters/Point Set/Compute normals for point sets)
  • Реконструируйте поверхность при помощи реконструкции пуассонов (Filters/Point Set/Surface Reconstruction: Poisson)
  • Готово

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Источник

3D сканер моделей с поворотной платформой на Arduino

FabScan — это open-source, DIY 3D лазерный сканер. Начало проекта было положено во время разработки бакалаврского проекта Франциска Энгелманна.

На основании этого проекта, разработан аналог, который и рассмотрен в статье. Для бокса используется мдф. Электронная начинка тоже несколько отличается.

Программа для Arduino взята с оригинального проекта. Так что спасибо команде FabScan за отличный open-source 3D сканер!

Необходимые компоненты

Фото необходимой электроники

Детали и узлы для оригинального проекта FabScan:

  • Arduino UNO;
  • Драйвер шагового двигателя A4988;
  • Шилд FabScan;
  • Модуль лазера на 5 мВт — производитель Red Line;
  • Биполярный шаговый двигатель NEMA 17 (200 шагов);
  • Источник питания 12 В — 1 А;
  • Веб-камера Logitech C270.

Для корпуса надо 4 листа из МДФ. Размеры — 600 мм на 300 мм. Толщина — 5 мм.

Детали и узлы, которые используются в этой инструкции:

  • Arduino UNO;
  • Шаговый двигатель NEMA 17 (200 шагов);
  • Драйвер шагового двигателя L298N;
  • Модуль лазера на 5 мВт — производитель Red Line;
  • Источник питания 12 В — 2 А;
  • Веб-камера Logiteck C270.

То есть мы просто не станем использовать шилд FabScan и используем другой модуль драйвера шагового двигателя

Разработка корпуса для 3D сканера

Процесс и результат разработки корпуса нашего 3D сканера показаны на фотографиях. Основная сложность — максимально точная установка камеры, модуля лазера и шагового двигателя.

Сборка 3Д сканера

Подключение электрооборудования

Подключается все предельно просто. Особенно если вы закажете оригинальный шилд.

Установите FabScan шилд на Arduino. Драйвер шагового двигателя A4988 устанавливается на предусмотренные рельсы. Шаговый двигатель подключается к соответствующим контактам на шилде. Модуль лазера подключается к аналоговому пину A4. После этого можете подключать питание и USB кабель.

Если вы решили собрать сканер без использования шилда, подключите драйвер шагового двигателя L298 к контактам 10, 11, 9, 8 на Arduino (в принципе, эти контакты можно изменить с соответствующими правками в скетче). Модуль лазера подключается к пину A4 на Arduino. Все. Можно подключать питание и USB кабель.

Скетч для Arduino

Скачайте плагин Codebender и нажмите кнопку «Run on Arduino», чтобы прошит ваш Arduino.

Все! Вы загрузили скетч на ваш Arduino напрямую из браузера!

Если вы не использовали шилд, нажмите кнопку Edit и:

const int stepsPerRevolution = 200; // измените этот параметр, чтобы настроить количество шагов на поворот вала вашего шагового мотора

Stepper myStepper(stepsPerRevolution, 10, 11,8,9);

Замените функцию step():

Программа для персонального компьютера

Программа для персонального компьютера в работе

Используется образ «FabScan Ubuntu Live DVD». На образе диска залито программное обеспечение FabScan. Можно записать образ на флэш-носитель с помощью Win32DiskImager и использовать его без установки linux os на ваш персональный компьютер.

Важное примечание! Если вы используете опцию «Try Ubuntu», убедитесь, что вы сохранили файлы перед тем как выключить персональный компьютер!

Следуйте инструкции, фотографии к которой приведены ниже:

  • Выберите SerialPort;
  • Выберите Camera;
  • File — Control Panel;
  • Нажмите detect laser (пока что не устанавливайте никаких объектов перед сканером) и выберите ‘enable’;
  • Нажмите «Fetch Frame» и убедитесь, что синяя горизонтальная линия касается вершины вращающегося стола, а желтая горизонтальная линия касается нижней части вращающегося стола. Кроме того, желтая вертикальная линия должна совпадать с центром вращающегося стола. Если камера установлена некорректно, результат сканирования будет не четким!
Читайте также:  Как сделать красивые кулоны своими руками

После настройки закройте окно, установите объект в 3 D сканере и нажмите кнопку Start Scan.

Сохранение 3D изображения

Когда процесс 3Д сканирования завершится, вы сможете сохранить сканированный 3D объект с расширением .pcd или .ply. Можно сохранить и в формате 3D stl файла, но эта возможность доступна не на всех платформах. Открыть сканированный и сохраненный ранее объект можно, выбрав File — OpenPointCloud.

Что дальше?

Вы можете использовать MeshLab для обработки сканированного 3Д объекта и распечатать его на 3D принтере!

При обработке файла в MeshLab:

1. Убедитесь, что вы сохранили объект как .ply файл.

2. Откройте файл с помощью MeshLab.

3. В MeshLab рассчитайте нормали (Filters/Point Set/Compute normals).

4. После этого перестройте поверхность, используя Poisson reconstruction (Filters/Point Set/Surface Reconstruction: Poisson)

Окончательно собранная конструкция приведена на фото ниже.

Видео работы оригинального FabScan 3-Д сканера:

Огромное спасибо команде FabScan за потрясающий open-source сканер на Arduino.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Источник

IoT сканер штрих-кода с отправкой результатов в облако

Рассмотрим создание IoT сканера штрих-кодов, который позволит проводить инвентаризацию товаров с отправкой результатов на сервер в сети Интернет и сохранением в базе данных. Сканер штрих-кода GM65 идентифицирует продукт по его штрих-коду. Затем мы вводим количество продукта на сенсорном дисплее Nextion и отправляем его через Wi-Fi на сервер, где вводим его в базу данных. Данное устройство позволяет автоматизировать процесс инвентаризации товаров.

Сканер штрих-кодов GM65

Сканер штрих-кодов GM65 – это с цифровая камера и модуль обработки изображений. На AliExpress в среднем стоит 20$. Он имеет алгоритм, который распознает штрих-коды и QR-коды в поле зрения камеры, и если ему не хватает внешнего освещения, включается встроенная светодиодная подсветка. Для точного наведения на штрих-код сканера предусмотрен световой маркер в виде красной полосы.

Для считывания штрих-кода необходимо поднести его к объективу модуля GM65 на расстояние около 20 см, при считывании раздается характерный сигнал зуммера, как на кассе супермаркета. Для ускорения процесса необходимо выровнять плоскость штрихкода перпендикулярно сканеру. Максимальный угол отклонения составляет 60 градусов.

В режиме по умолчанию сканер штрих-кода подключается к компьютеру по USB, работает как HID-клавиатура и выводит данные в виде строки текста.

Вы можете настроить сканер с помощью команд UART, но гораздо проще использовать сервис QR-кодов: переключать режимы чтения, управлять светодиодом и зуммером, сохранять и сбрасывать настройки, просто ориентируясь на соответствующий QR-код в инструкции устройства. Это позволяет изменять конфигурацию на лету.

Кнопка на плате используется по умолчанию для активации процесса сканирования. Встроенный зуммер сигнализирует об успешном считывании кода и изменениях в работе устройства.

Подключение и настройка сканера штрих-кодов GM65

В качестве контроллера будем использовать плату Arduino MKR 1000 WiFi. Для подключения по UART используем последовательный порт Serial1 платы Arduino MKR 1000 WiFi. Схема подключения сканера штрих-кодов.

Теперь необходимо настроить сканер для нашего проекта. Подключим сканер к компьютеру с помощью USB-кабеля и последовательно считаем коды, показанные на на риcунке ниже

Скетч получения кода со сканера

Загружаем скетч на плату Arduino и сканируем разные штрих-коды. Данные выводим в монитор последовательного порта

Подключение дисплея Nextion

В качестве дисплея будем использовать сенсорный дисплей Nextion NX3224K024. Дисплей Nextion представляет собой полноценный компьютер с процессором, видеокартой и экраном, причем он выделяет весь свой вычислительный ресурс на обработку графики и позволяет записывать в него свои программы. На модулях дисплеев Nextion имеется разъем UART и выводы GPIO, что дает возможность использовать дисплеи Nextion как совместно с Arduino — подключая дисплей к Arduino по шине UART (обмен с помощью унифицированных команд), так и отдельно — подключая кнопки, светодиоды, реле и пр. напрямую к выводам GPIO дисплея). Через имеющийся у дисплея Nextion разъем для карт памяти micro-SD в него можно загружать программы.

Читайте также:  Все лучшие игрушки своими руками

Для работы с дисплеями Nextion необходимо установить программу Nextion Editor, которая позволяет создавать интерфейс пользователя с использованием различных библиотечных элементов: кнопок, слайдеров, картинок, графики, текста и т. п., а также прописывать алгоритмы поведения дисплея для различных событий элементов, формирующих этот интерфейс.

Загружаем изображения и создаем интерфейс приложения

Назначьте события Touch Release для отправки команд через последовательный порт при нажатии кнопок

Вы можете просмотреть отправленные коды, запустив отладчик

Для прошивки дисплея через UART понадобится адаптер USB-Serial. Схема подключения Nextion к адаптеру USB-Serial

Для загрузки прошивки выбираем пункт меню Upload и в открывшемся окне нажимаем на кнопку Go. Процесс прошивки будет отображаться в окошке программы и на дисплейном модуле. По окончании прошивки загружаемый проект начнет выполняться и отображаться на дисплейном модуле. Надо отметить, что прошивка через UART занимает весьма долгое время.

Теперь подключим дисплей Nextion к плате Arduino MKR1000 WiFi. Порт Serial мы используем для связи с компьютером и отладки. Порт Serial1 используем для подключения сканера штрих-кодов. Нам необходим еще один последовательный интерфейс для подключения дисплея Nextion.

Одним из преимуществ новых платформ Arduino является упрощение встроенного программного обеспечения, присваивающего каждому контакту микроконтроллера одну из множества возможных функций. Для добавления дополнительных последовательных интерфейсов (Serial2 и Serial3) к микроконтроллерам SAMD (SERCOM)

Рассмотрим как добавить больше последовательных интерфейсов (SERCOM’ов) на плату Arduino, оснащенную микропроцессором SAMD. Эти интерфейсы являются аппаратными и могут быть типов I2C, UART и SPI. Подключение дополнительных интерфейсов возможно, поскольку микроконтроллер SAMD имеет шесть встроенных модулей для последовательной коммуникации, которые можно настраивать отдельно друг от друга. На момент покупки платы настроены лишь четыре:

  • MOSI на контакте 8
  • SCK на контакте 9
  • MISO на контакте 10
  • SDA на контакте 11
  • SCL на контакте 12
  • RX на контакте 13
  • TX на контакте 14

WINC1500 SPI / SEERCOM 2:

  • MOSI на контакте 26
  • SCK на контакте 27
  • MISO на контакте 29

Поэтому оставшиеся два можно вывести на контакты платы.

Код для добавления последовательных интерфейсов Serial2 и Serial3.

Для подключения дисплея Nextion сконфигурируем Serial2 на контактах 0 и 1. Схема соединений

При нажатии кнопок на дисплее, по последовательному порту Serial2 плата Arduino получает данные. Необходимо переводить эти данные в количество (для кнопок 0-9), сброс (кнопка *) или отправка данных на сервер (кнопка OK). При изменении количества необходимо отправлять на дисплей последовательности для изменения содержимого элемента n0.

Код получения данных (нажатие кнопок) с дисплея Nextion и отправка данных с Arduino (штрих-код и количество) на дисплей Nextion

Код установки количества продукта при нажатии кнопок

Подключение платы Arduino MKR 1000 WiFi к интернету.

Для подключения Arduino MKR1000 к сети Wi-Fi мы будем использовать библиотеку WiFi101, которую установим с помощью менеджера библиотек (Sketch Include Include library Manager Manager Libraries).

Скачать эскиз подключения платы Wi-Fi Arduino MK R 1000 к необходимой точке доступа. Загрузите пример из connectWithWPA.библиотека ino на плате, введя данные для вашей точки доступа Wi-Fi во вкладке:

После загрузки эскиза откройте монитор последовательного порта, где вы можете наблюдать за процессом подключения платы Wi-Fi Arduino MKR1000 к точке доступа.

Код отправки данных на сервер

Скачать полный скетч можно по ссылке в конце статьи

Получение данных на сервере с занесением в базу данных

Создание базы данных на хостинге (MySQL) и двух таблиц в ней:

  • tovar – продукция и ее штрих-коды;
  • count – результаты инвентаризации.

На сервере создадим php-скрипт get_barcode.php, который получает приходящие со сканера данные и заносит их в базу данных. Содержимое скрипта

Сканируем и проверяем приход и сохранение данных на сервере

Источник

Оцените статью