Оглавление:

TinyLiDAR в вашем гараже !: 10 шагов
TinyLiDAR в вашем гараже !: 10 шагов

Видео: TinyLiDAR в вашем гараже !: 10 шагов

Видео: TinyLiDAR в вашем гараже !: 10 шагов
Видео: XRAD'S Arduino TEENSY LIDAR w/10m Range 2024, Ноябрь
Anonim
TinyLiDAR в вашем гараже!
TinyLiDAR в вашем гараже!

Проект открывания двери гаража DIY WiFi

Мир Интернета вещей только начинает стремительно расти - каждая технологическая компания по всему миру пытается понять, как они впишутся в этот новый мир. Это просто огромная возможность! Итак, для этого поучительного, в соответствии с этой темой IoT, мы рассмотрим, как вы можете создать свой собственный демонстратор IoT, который действительно полезен;)

TL; сводка DR

  • настроить надежный рабочий процесс для кодирования модуля ESP32 WiFi
  • прошить
  • Собери это на своей макетной плате
  • скачайте код нашего приложения и разархивируйте его
  • добавьте свои учетные данные WiFi и статический IP-адрес
  • подключите его к вашей сети Wi-Fi
  • отредактировать пороги и смонтировать в своем гараже
  • Подключите его к контактам устройства открывания двери гаража
  • и щелкни прочь!
  • ПАЙКА НЕ ТРЕБУЕТСЯ (за исключением штифтов для коммутационных панелей, если требуется)

Требуемые детали

  • TinyLiDAR модуль датчика времени полета
  • Wipy3.0 или аналогичная плата WiFi на базе ESP32
  • Оптически изолированное твердотельное реле (Omron G3VM-201AY1) для управления устройством открывания ворот гаража
  • Резистор 470 Ом (допускается 5% 1/8 Вт или больше)
  • Мгновенный кнопочный переключатель для контакта BOOT (GPIO0) для обновления прошивки на плате ESP32
  • Переходник с USB на последовательный для загрузки кода и взаимодействия с REPL на ESP32 (используйте версию ввода-вывода 3,3 В)
  • Макет + провода
  • Электропитание: от 3,3 В до 5 В при 500 мА или больше. Вы можете использовать зарядное устройство для сотового телефона с разъемом microUSB для блока питания и плату с разъемом microUSB для подключения к макетной плате.

Шаг 1: Интернет вещей Что?

IoT Что?
IoT Что?

Несомненно, вы уже слышали о термине «Интернет вещей» во всех средствах массовой информации, но что он означает?

Грубо говоря, это означает подключение к Интернету всевозможных датчиков и управляемых вещей. В наши дни Интернет является синонимом беспроводной связи, и поэтому у нас все электронное внезапно становится беспроводным, подключенным по какой-то беспроводной связи, такой как WiFi / BT / LoRa / SigFox и т. Д. После подключения к Интернету мы можем ощущать и / или контролировать эти вещи с нашего любимого мобильного контроллера, такого как наш мобильный телефон, или автоматизировать их через какое-то приложение, работающее где-то на сервере (например, в облаке).

Хотя в последнее время более крупные компании предлагают больше возможностей голосового управления, искусственного интеллекта и облачных технологий; основы для того, чтобы все это произошло, остались прежними. Вам необходимо подключить свою «вещь» к беспроводной связи, прежде чем любая из этих концепций станет возможной. Итак, давайте начнем с основ и узнаем, как подключить датчик времени полета tinyLiDAR к недорогому модулю Wi-Fi, а затем показать, как отправлять данные туда и обратно по сети. К концу этой инструкции у вас будет собственный рабочий пульт дистанционного управления гаражными воротами с поддержкой Wi-Fi с монитором в реальном времени, чтобы проверять, открыта ли дверь или закрыта.

С технической точки зрения, как показано на блок-схеме выше, этот проект реализует веб-сервер micropython, работающий на модуле ESP32 WiFi, с использованием протокола связи «веб-сокеты» для передачи данных туда и обратно из любого мобильного веб-браузера. Кроме того, у нас есть датчик времени полета tinyLiDAR, который выполняет измерения по запросу, чтобы вы могли проверить, оставалась ли дверь гаража открытой.

Шаг 2. Попробуйте - нет, попробуйте прямо сейчас

Попробуйте - нет, попробуйте прямо сейчас
Попробуйте - нет, попробуйте прямо сейчас

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

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

Готовый? Начнем с первого шага по настройке вашей собственной стабильной среды разработки.

Шаг 3: Micropython и ESP32

Микропайтон и ESP32
Микропайтон и ESP32

Модули ESP32 WiFi были созданы Espressif, и они значительно улучшились по сравнению с модулями ESP8266 первого поколения, появившимися всего несколько лет назад. Эти новые версии имеют намного больше памяти, более мощный процессор и больше функций, чем оригинальные модули, и по-прежнему имеют низкую стоимость. Диаграмма выше дает вам представление о том, сколько они смогли уместить в этот маленький чип ESP32. Сама микросхема ESP32 представляет собой двухъядерный микроконтроллер с Wi-Fi-радиомодулем 802.11b / g / n, а также интегрированным радиомодулем Bluetooth 4.2. Модули на базе ESP32 обычно добавляют антенну, дополнительную флэш-память и регуляторы мощности.

Обратите внимание: когда мы говорим модуль ESP32 в этом руководстве, мы имеем в виду платы Pycom Wipy3.0, которые основаны на микросхеме / модуле ESP32. По нашему опыту, платы Pycom кажутся более качественными по сравнению с доступными типичными недорогими модулями ESP32. При разработке всегда полезно сокращать как можно больше переменных, поэтому мы выбрали платы Pycom вместо недорогих дженериков.

Для OEM-приложений кодирование ESP32 обычно выполняется на языке C, но, к счастью, у нас также есть много вариантов на выбор, поэтому вам не придется опускаться до этого низкого уровня, если вы не хотите. Мы решили использовать micropython для всего нашего кодирования в этом руководстве.

Micropython, как вы, возможно, догадались, является подмножеством полного языка программирования Python, который поддерживает некоторые менее известные поисковые системы и веб-сайты, такие как Google, YouTube и Instagram;)

Micropython-логотип
Micropython-логотип

Micropython начинался как проект кикстартера изначально для процессора STM32, но сейчас стал очень популярным для множества различных микроконтроллеров. Мы используем последний официальный порт микропитона Pycom ESP32.

Шаг 4: более быстрый путь

Более быстрый путь
Более быстрый путь

Код micropython имеет простой интерфейсный графический интерфейс, который называется REPL, что означает «цикл чтения – оценки – печати». REPL ESP32 обычно работает со скоростью 115,2 Кбод с момента обращения к нему через последовательный порт. На рисунке выше показано это приглашение REPL, обозначенное тремя стрелками, ожидающими прямых команд. Это простой способ попробовать наши простые команды, и большинство программистов используют его для разработки своего программного обеспечения, но мы обнаружили, что это мучительно медленный путь. Поэтому мы решили сделать это по-другому для этого инструктируемого…

Поскольку модули ESP32 имеют быстрое подключение к Wi-Fi, нам просто нужно получить доступ к модулю через Wi-Fi через FTP-сервер, который уже встроен в стандартный код micropython. Затем это позволит нам использовать FTP-клиенты, такие как FileZilla, для простого перетаскивания нашего кода на ESP32.

Итак, для этого нам нужно сначала подключить модуль ESP32 к вашей сети Wi-Fi. Модули Wipy3.0 по умолчанию запускают небольшую точку доступа при включении, поэтому вы можете подключиться к ним напрямую с ноутбука по адресу 192.168.4.1. Ознакомьтесь с подробностями здесь, если вам нравится этот метод.

В нашей лаборатории мы работаем над настольными компьютерами, поэтому вместо этого мы хотели, чтобы модули ESP32 подключались к нашей сети. Для этого нам просто нужно дать модулю статический IP-адрес и информацию о нашем пароле для входа в нашу сеть Wi-Fi.

Шаг 5. Загрузите сейчас

Скачать сейчас
Скачать сейчас
Скачать сейчас
Скачать сейчас
Скачать сейчас
Скачать сейчас
Скачать сейчас
Скачать сейчас

Загрузите код приложения и разархивируйте файлы во временную папку на вашем компьютере. Затем начните редактировать файлы сценариев mywifi.txt и boot.py, используя свои учетные данные для сети Wi-Fi.

Кстати, нашим любимым текстовым редактором по-прежнему остается SublimeText. Его можно скачать здесь.

Вам также следует загрузить программное обеспечение терминала TeraTerm и программное обеспечение FTP FileZilla, если они еще не установлены на вашем компьютере.

Вам нужно будет настроить FileZilla, как показано на рисунках выше. Также в диспетчере сайтов вам нужно «добавить новый сайт» для входа в систему ESP32, используя статический IP-адрес, который вы выбрали, как показано выше. Пользователь - «микро», а пароль - «питон». Важно использовать пассивный FTP и ограничивать его только одиночными соединениями. Мы обнаружили, что ограничение скорости загрузки также помогает предотвратить зависание загрузки. Хотя это не показано на рисунках, было бы полезно связать программу SublimeText с типами файлов, чтобы вы могли редактировать код, дважды щелкнув в левой части экрана FTP. Для этого просто зайдите в меню «Настройки» и в разделе «Редактирование файла / Тип файла» введите расположение вашего exe-файла SublimeText для каждой ассоциации. Например наш был:

js "C: / Sublime Text Build 3065 x64 / sublime_text.exe"

. "C: / Sublime Text Build 3065 x64 / sublime_text.exe" htm "C: / Sublime Text Build 3065 x64 / sublime_text.exe" html "C: / Sublime Text Build 3065 x64 / sublime_text.exe" py "C: / Sublime Текстовая сборка 3065 x64 / sublime_text.exe "css" C: / Sublime Text Build 3065 x64 / sublime_text.exe"

Скопируйте извлеченные файлы приложения для этого руководства в новую папку «FTP» на вашем компьютере, как это сделали мы. Позже будет легче перетащить отсюда внутрь FileZilla.

Обычно рекомендуется иметь самую последнюю версию прошивки для ESP32. Обновление модулей Pycom для использования последней версии micropython очень просто и может быть выполнено примерно за 3 минуты с помощью их инструмента обновления прошивки.

Просто не забудьте установить COM-порт для USB на последовательный ключ и отмените выбор высокоскоростного режима, как показано на рисунке «Связь» выше. У нас был COM-порт 2. Обратите внимание, что для перевода модулей ESP32 в этот режим обновления вам нужно будет нажать кнопку GPIO0 / Boot (на контакте P2), одновременно нажимая и отпуская кнопку Reset.

Шаг 6: аппаратное время

Аппаратное время
Аппаратное время
Аппаратное время
Аппаратное время

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

После этого все будет завершено. Запустите программное обеспечение терминала с соответствующим COM-портом для вашего USB - последовательного ключа, установите его на 115,2 Кбод.

При включении питания модуль должен показать знакомую подсказку REPL с тремя стрелками «>>>».

Теперь перейдите в отредактированный файл mywifi.txt и скопируйте все содержимое (CTRL + C). Затем перейдите на экран терминала REPL и нажмите CTRL + E, чтобы перейти в режим вырезания и вставки. Затем щелкните правой кнопкой мыши, чтобы вставить содержимое в экран REPL, а затем нажмите клавиши CTRL + D, чтобы выполнить то, что вы вставили.

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

После подключения вы можете использовать FileZilla для подключения к FTP-серверу в модулях по статическому IP-адресу, который вы уже выбрали в файлах mywifi.txt и boot.py.

Шаг 7. Все еще с нами?

Все еще с нами?
Все еще с нами?
Все еще с нами?
Все еще с нами?

Если до сих пор все в порядке, тогда хорошо для вас! Тяжелая работа сделана:) Теперь все будет гладко - просто вырезать и вставить, и вы будете готовы к работе, чтобы затем установить его в своем гараже.

Чтобы отредактировать любой код, вы можете дважды щелкнуть в левой части окна FTP в FileZilla, и он запустит SublimeText. Сохраните изменения и перетащите их в правую часть окна ESP32.

На данный момент просто перетащите файлы с левой стороны на правую сторону FileZilla, чтобы загрузить каждый файл отдельно в модуль ESP32. Это занимает всего несколько коротких секунд вместо минут, как при обычном методе REPL. Обратите внимание, что все файлы должны находиться в корневом каталоге под названием «flash» внутри платы Pycom. Вы можете сделать закладку в FileZilla, чтобы вам было легче вернуться сюда в следующий раз.

Если у вас когда-нибудь возникнет проблема, когда FileZilla зависнет и истечет время загрузки, вы заметите файл на стороне ESP32, который имеет 0 байтов. Попытка переписать его может свести с ума, так как он никогда не заканчивается, что бы вы ни пытались! Это очень странное состояние и случается очень редко. Лучшее решение для этого - удалить 0-байтовый файл и выключить и снова включить модуль. Затем получите СВЕЖУЮ копию исходного файла для повторной загрузки в модуль ESP32. Обратите внимание, что ключом здесь является новая копия. Почему-то исходный файл просто не загружается должным образом, если он так зависает хотя бы один раз.

Мы обнаружили, что это помогает перетаскивать каждый файл отдельно в модуль ESP32, начиная с boot.py. Этот первый файл отвечает за передачу вашего модуля в сеть, поэтому вам больше не нужно будет вырезать и вставлять в REPL. Однако вы можете захватить папку www и перетащить ее за один раз. Это всегда помогало нам в развитии. Все эти файлы хранятся во встроенной энергонезависимой флеш-памяти в модуле ESP32, поэтому они будут там после отключения питания. Просто к сведению - main.py будет запускаться после boot.py каждый раз при включении модуля.

Шаг 8: советы по взлому

Советы по взлому
Советы по взлому

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

Если что-то пойдет не так, вы всегда можете очистить код и / или перепрограммировать модуль примерно через 3 минуты, как вы это уже делали ранее.

Чтобы переформатировать вспышку и очистить весь код за один раз, вы можете ввести в REPL следующее:

импорт ОС

os.mkfs ('/ flash')

Затем выполните цикл включения питания или нажмите кнопку сброса на плате Wipy.

Обратите внимание, что есть еще один способ обойти boot.py и main.py, если вам что-то не нравится. Просто временно подключите контакт P12 к выходному контакту 3,3 В и нажмите кнопку сброса, как показано выше. Он обойдет весь ваш код и сразу перейдет к REPL один раз, чтобы вы могли разобраться во всем, не удаляя весь свой код из флэш-памяти.

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

Вы увидите знакомый обратный отсчет на экране терминала REPL, когда он снова войдет в вашу сеть Wi-Fi. Разница в том, что на этот раз этот код запускается из файла boot.py.

Шаг 9: веб-страницы

Веб-страница
Веб-страница
Веб-страница
Веб-страница
Веб-страница
Веб-страница
Веб-страница
Веб-страница

Микровебсервер должен быть запущен и работать на ESP32, так что попробуйте его, используя свой настольный браузер или мобильное устройство.

Просто перейдите на свой статический IP-адрес, и вы увидите экран, аналогичный показанному выше.

Наш микровебсервер, работающий на ESP32, обслуживает две веб-страницы.

Первая - это страница index.html по умолчанию, которая дает вам простую кнопку ОТКРЫТЬ / ЗАКРЫТЬ, чтобы имитировать имеющийся у вас механизм открывания гаражных ворот типа кликера. Когда вы нажмете ее в своем веб-браузере, вы увидите большой синий значок шестеренки. Это подтверждение того, что соединение с веб-сокетом было выполнено успешно, и вы получили подтверждение от сервера о том, что ваша команда «нажать» была получена правильно. Вы также должны увидеть ярко-зеленый светодиод на плате Pycom, когда вы нажмете эту кнопку. Соединение с веб-сокетами передает состояние кнопки, отправляя простые текстовые сообщения «нажать», когда вы ее нажимаете, и «нажатие вверх», когда вы ее отпускаете. Для подтверждения микровебсервер отправляет этот текст, но добавляет к нему «_OK», чтобы сказать, что он получил его правильно.

После того, как вы подключили оптически изолированные клеммы твердотельного реле (SSR) к механизму открывания двери гаража (см. Графическую схему), нажатие кнопки также физически откроет / закроет дверь.

Подождите несколько секунд и попробуйте еще раз, если вы не видите синий значок шестеренки, возможно, он перезагружается или что-то в этом роде. Обратите внимание, что веб-сокет закроется автоматически примерно через 20 секунд, если вы не используете его, чтобы предотвратить блокировку. Также обратите внимание, что веб-сокеты ориентированы на соединение, поэтому вам нужно остановить веб-сокет для изменения страниц, иначе вы не сможете снова подключиться, пока не нажмете сброс на модуле ESP32. Для нашего примера кода у нас есть несколько способов остановки веб-сокета: коснитесь текста состояния, вращающихся точек или гиперссылки, чтобы перейти на следующую страницу.

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

Обе страницы показывают, открыта или закрыта дверь, по расстоянию от tinyLiDAR. Переменная doorThreshold должна быть установлена в обоих html-файлах в разделе скриптов, как показано здесь:

//--------------------------

// **** При необходимости отрегулируйте **** var doorThreshold = 100; // расстояние в см var ws_timeout = 20000; // максимальное время в мс для открытия / закрытия двери по умолчанию составляет 20 секунд // -------------------------- // --- -----------------------

Вам нужно будет отредактировать этот порог для настройки вашего гаража, чтобы он мог определять, когда дверь гаража закатывается и, следовательно, ОТКРЫВАЕТСЯ или откатывается и, следовательно, ЗАКРЫТА. После того, как вы отредактировали свой порог в обоих html-файлах, загрузите эти html-файлы еще раз и перезагрузите его, чтобы убедиться, что все по-прежнему работает нормально.

Если все в порядке, теперь вы можете смонтировать доску вверх ногами в своем гараже, как показано на картинке выше. Подключите контакты 3 и 4 SSR к механизму открывания двери гаража. Полярность не важна, поскольку мы используем версию SSR с полевыми МОП-транзисторами - достаточно замкнуть контакты, чтобы имитировать нажатие кнопки на базовом блоке двери гаража.

Шаг 10: Вот и все

Вот и все!
Вот и все!

Поздравляю! Открыть дверь гаража теперь так же просто, как нажать на телефон, и вы можете проверить, оставалась ли она открытой или нет, измеряя в реальном времени с помощью tinyLiDAR:)

Теперь вы также можете использовать ESP32 с веб-сокетами через Wi-Fi практически для всего, что захотите. Прочтите больше о «веб-сокетах», если вы с ними не знакомы - они действительно довольно быстрые и простые в использовании.

Внедрить tinyLiDAR с ESP32 было очень просто, хотя датчик изначально был разработан для работы на Arduino UNO. У нас есть более продуманная бета-версия графического интерфейса пользователя терминала, которая запускает большинство команд tinyLiDAR в micropython на ESP32 - см. Рисунок выше. Он доступен в нашем разделе загрузок вместе с справочным руководством и т. Д.

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

Имейте в виду, что здесь нет упоминания о безопасности. Безопасность - это огромная область Интернета вещей, и к ней следует относиться серьезно. Если вы хотите использовать этот проект в своем гараже, вам следует хранить надежные и надежные пароли к сети Wi-Fi. В Интернете много информации о безопасности, поэтому обязательно читайте самую последнюю информацию и будьте в курсе.

Спасибо за чтение и удачного взлома! Ваше здоровье.

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