Оглавление:

CleanBot от Гийома Мерильона: 8 шагов
CleanBot от Гийома Мерильона: 8 шагов

Видео: CleanBot от Гийома Мерильона: 8 шагов

Видео: CleanBot от Гийома Мерильона: 8 шагов
Видео: Новинка робот-мойщик окон Cleanbot Ultrasprey 2024, Ноябрь
Anonim
CleanBot от Гийома Мерильона
CleanBot от Гийома Мерильона
CleanBot от Гийома Мерильона
CleanBot от Гийома Мерильона

Это руководство по проекту, который я сделал для школы. Целью было создать устройство с Raspberry Pi, которое было бы подключено к Интернету, собирая данные с датчиков. Эти данные должны были храниться в базе данных (MySQL). Данные должны были быть визуализированы с помощью веб-сайта, написанного на Python с помощью пакета веб-приложений Flask и шаблонов Jinja2.

Моя идея заключалась в том, чтобы создать «взломанный» робот-пылесос, используя Raspberry Pi, Arduino, уже сломанный робот-пылесос и кучу датчиков.

Шаг 1: Сбор деталей

Сбор деталей
Сбор деталей
Сбор деталей
Сбор деталей
Сбор деталей
Сбор деталей
Сбор деталей
Сбор деталей

Прежде чем что-либо создать, я провел много исследований о том, какие части использовать, как их соединить, написал классы программного обеспечения на Python и так далее.

Список деталей будет включен в виде файла, чтобы вы могли легко найти нужные детали.

Я решил использовать Arduino Uno рядом с Raspberry Pi, чтобы я мог эффективно считывать данные с датчиков, не нагружая Raspberry Pi. Я также выбрал Uno, потому что у него хорошая тактовая частота и из-за аналоговых контактов. Я мог бы использовать АЦП (например, MCP3008) для моего Raspberry Pi, но мне нужно было бы намного больше проводов, это было бы дороже, и моему Pi пришлось бы работать намного тяжелее.

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

Список деталей:

  • Raspberry Pi 3 минимум с 8 ГБ MicroSD класса 10 и футляром;
  • T-сапожник и макет Raspberry Pi;
  • Arduino Uno или аналогичный (желательно не китайская версия с приличным АЦП, у некоторых китайцев есть проблемы с AREF) с каким-то корпусом;
  • Ethernet-кабель;
  • (Сломанный) робот-пылесос;
  • 3 ультразвуковых модуля HC-SR04;
  • 1x модуль датчика холла;
  • Несколько резисторов разного номинала;
  • LDR;
  • 6 литий-ионных аккумуляторов 18650 + 3-элементные держатели на 12 В (желательно использовать новые аккумуляторы или даже лучше использовать LiPo аккумуляторы, они прослужат намного дольше);
  • 18650 (или любой другой тип аккумулятора, который вы будете использовать) 12v 3-элементная зарядная плата;
  • Некоторые платы для самостоятельной пайки печатных плат для пайки ваших компонентов;
  • Лист полиуретанового пластика;
  • Ноутбук / настольный компьютер.

Список инструментов:

  • Дрель с несколькими сверлами;
  • Угловая шлифовальная машина (не пользуйтесь ею, если у вас нет опыта) или что-то вроде Dremel;
  • Кусочек наждачной бумаги;
  • Несколько отверток;
  • Суперклей, монтажный клей,…;
  • Паяльник (используйте смазку, чтобы легче припаять провода);
  • Пара кусачков и инструмент для снятия изоляции.

Список программного обеспечения (необязательно):

  • Adobe XD: каркасное моделирование и создание прототипа;
  • Фритцинг: создание электрической схемы;
  • PyCharm Professional: Python IDE с возможностью использования развертывания и удаленного интерпретатора;
  • Putty: быстрое и простое соединение по ssh с Pi;
  • Etcher.io: простой инструмент для прошивки образа Raspbian на SD-карту;
  • Win32DiskImager: простой инструмент для создания образа из существующей установки Raspbian;
  • Блокнот программиста: простой инструмент, который можно использовать для безопасного редактирования файла /boot/cmdline.txt.

Шаг 2: окраска распылением и разработка интерфейса

Покраска распылением и разработка интерфейса
Покраска распылением и разработка интерфейса
Покраска распылением и разработка интерфейса
Покраска распылением и разработка интерфейса
Покраска распылением и разработка интерфейса
Покраска распылением и разработка интерфейса
Покраска распылением и разработка интерфейса
Покраска распылением и разработка интерфейса

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

Дав краске высохнуть, я нашел точный шестнадцатеричный цветовой код для краски, которую я использовал, чтобы я мог идеально согласовать свой веб-интерфейс с моим устройством. Найти этот шестнадцатеричный код было довольно просто, так как я использовал граффити Montana 94, а шестнадцатеричные коды и коды RGB были на их веб-сайте.

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

Шаг 3: Создание базы данных

Создание базы данных
Создание базы данных

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

На изображении показан макет моих таблиц, нарисованный в MySQL Workbench, со всеми связями между таблицами.

Для моих пользователей я хотел отслеживать их имя и фамилию, чтобы персонализировать интерфейс и электронные письма. Конечно, чтобы отправлять электронные письма, мне также нужен был их адрес электронной почты. Я также добавил таблицу, чтобы отслеживать предпочтения моих пользователей электронной почты (независимо от того, хотят ли они получать электронные письма). Последнее, что я хотел сохранить о пользователях, - это их роль в устройстве. Я делю пользователей на администраторов и обычных пользователей. Администраторы имеют право добавлять, удалять и управлять пользователями в системе, в то время как обычные пользователи не могут получить доступ к этим инструментам.

Следующая таблица содержит «deviceruns», которые представляют собой фактические запуски, выполненные устройством. Deviceruns принадлежат определенному пользователю (человеку, который запустил запуск) и имеют время начала и время окончания для расчета времени выполнения.

Другая таблица используется для привязки сенсорных данных к каждому devicerun. Сами датчики хранятся в еще одной таблице, содержащей их идентификатор, имя и описание.

Шаг 4: Соединение частей вместе

Соединение частей вместе
Соединение частей вместе
Соединение частей вместе
Соединение частей вместе

После создания схемы базы данных я начал использовать макеты и проводку для соединения всех частей в один рабочий прототип.

Шаг 5: Настройка Raspberry Pi

Настройка Raspberry Pi
Настройка Raspberry Pi

Чтобы загрузить последний образ Raspbian, перейдите на сайт Raspbian. Здесь вы можете выбрать, какой дистрибутив вы хотите скачать. Для более быстрой работы вы можете загрузить безголовый дистрибутив для меньшего использования оперативной памяти или загрузить рабочий стол с графическим интерфейсом пользователя, если вы предпочитаете графический пользовательский интерфейс.

Чтобы установить ОС, просто скачайте Etcher, это инструмент с графическим интерфейсом, позволяющий быстро и легко записать образ на карту micro SD.

Чтобы включить безголовый режим, чтобы вы могли получить доступ к пи, вам необходимо установить Putty на свой компьютер. Следующим шагом является переход в папку Boot, созданную Etcher, и открытие файла cmdline.txt в вашем любимом текстовом редакторе, например, в Блокноте программистов. Добавьте этот текст в конец файла:

ip = 169.254.10.1

Только убедитесь, что вы не создаете новую строку, добавьте ее в конец строки!

Затем вернитесь в корень папки Boot и создайте файл с именем ssh. Не добавляйте никаких расширений, это обеспечит запуск SSH-сервера при каждом запуске вашего Pi. Теперь просто вставьте SD-карту в свой Pi, подключите достаточный источник питания к вашему Pi и добавьте кабель Ethernet между вашим Pi и вашим компьютером.

Откройте putty и введите IP-адрес: 169.254.10.1. Теперь нажмите ДА и войдите в систему, имя пользователя по умолчанию - pi, а пароль - raspberry.

Затем выполните следующую команду, чтобы получить актуальную информацию:

sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

Последний шаг - создать виртуальный интерпретатор Python на вашем Raspberry Pi, он выполнит ваш код. Для этого просто откройте шпатлевку и введите следующее:

sudo mkdir project1

cd project1 python3 -m pip install --upgrade pip setuptools wheel virtualenv python3 -m venv --system-site-packages venv

Шаг 6: Написание веб-приложения

Написание веб-приложения
Написание веб-приложения

После подключения каждой части и настройки Raspberry Pi я начал писать свое основное веб-приложение, используя Flask и Jinja2. Flask - это простой в использовании серверный фреймворк для Python, а Jinja2 - это язык шаблонов, который я использовал. С помощью Jinja вы можете создавать обычные HTML-файлы с циклами for, структурами if и т. Д.

При кодировании серверной части я также написал интерфейс для приложения, включая HTML, CSS и JavaScript для некоторых элементов. Я использовал метод ITCSS и нотацию БЭМ для своих таблиц стилей.

Помимо основного веб-приложения, я также создал 2 другие основные программы. Один написан для отправки IP-адреса устройства пользователям в списке. Каждый зарегистрированный пользователь, который согласился получать электронные письма, получит письмо со ссылкой для запуска веб-интерфейса. Эта программа работает как служба systemd.

Другой главный файл предназначен для реального устройства. Это главное приложение можно вызывать через мое приложение Flask, чтобы запускать и останавливать устройство, а также собирать данные. Собранные данные также загружаются в базу данных устройства через этот main. Затем эти данные можно визуализировать в веб-приложении.

Веб-приложение подключено к основному устройству с Python Threading. Когда пользователь нажимает кнопку запуска, создается поток для запуска устройства в фоновом режиме. Между тем, пользователь может отлично просматривать приложение. При нажатии кнопки «Стоп» этот поток останавливается, и поэтому устройство останавливается.

Шаг 7: Создание деталей для отделки обсадной колонны

Создание деталей для отделки обсадной колонны
Создание деталей для отделки обсадной колонны
Создание деталей для отделки обсадной колонны
Создание деталей для отделки обсадной колонны
Создание деталей для отделки обсадной колонны
Создание деталей для отделки обсадной колонны
Создание деталей для отделки обсадной колонны
Создание деталей для отделки обсадной колонны

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

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

Другой кронштейн является опорой для моих ультразвуковых датчиков HC-SR04, которые расположены в передней части устройства.

Последнее, что оставалось сделать, это вырезать отверстие в арматуре одного из колес и вставить магнит, чтобы я мог следить за вращением колеса.

После завершения этих скобок я также покрасил их оставшейся краской, чтобы она соответствовала дизайну.

Шаг 8: Код

Для установки программы скачайте файл code.zip и разархивируйте его в директорию project1.

Затем выполните эту команду в терминале на Raspbian или Putty:

sudo cp project1 / conf / project-1 * / и т. д. / systemd / system /

sudo cp project1 / conf / project1- * / etc / systemd / system / sudo systemctl daemon-reload sudo systemctl enable project-1 * sudo systemctl enable project1 * sudo systemctl restart nginx

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

Наслаждаться!

Рекомендуемые: