Wi-Fi Eye, часть 2: прошивка, подключение и сетевое подключение
В этом проекте мы построим устройство, которое может обнаруживать сигналы Wi-Fi и «реагировать» соответственно. Далее: прошивка.
Добро пожаловать в серию Wi-Fi Eye! Целью этого проекта является создание устройства, которое может обнаруживать и анализировать сигналы Wi-Fi, с которыми он сталкивается. Перед продолжением ознакомьтесь с вложением в проект Wi-Fi Eye.
Содержание:
- Часть 1: Введение и спецификация проекта
- Часть 2. Прошивка, подключение и подключение
- Часть 3: Сервоприводы
- Часть 4: Силовые и неопиксельные огни
Кроме того, ознакомьтесь с этими статьями по DIY Hacking, которые проведут вас через 3D-печать вашего собственного дела:
- Введение в 3D-печать
- Глаз кожи агамотто
- Призрачная кожа
В этой статье мы сосредоточимся на большом количестве прошивки в этом проекте.
Компиляция прошивки
Сначала рассмотрим программное обеспечение, которое я считаю наиболее раздражающим. Хорошей новостью является то, что вам нужно только сделать это раз и навсегда, у вас будут все инструменты и код с открытым исходным кодом, которые я использовал для написания прошивки.
Arduino IDE ~ 1.6.12 (приложение)
Это доступно для Linux, Mac и Windows. Возможно, у вас уже есть это программное обеспечение, если раньше вы работали с микроконтроллерами. Если нет, я рекомендую вам прочитать / посмотреть несколько руководств, чтобы ускориться.

Драйверы FTDI (устройство OS)
Драйверы операционной системы для вашего адаптера FTDI. Если вы подключите адаптер, и появится последовательный / COM-порт, вы добры.
Многие адаптеры используют тот же чип Cypress USB, который находится на Arduino, поэтому у вас могут быть уже драйверы. В противном случае ваш адаптер должен иметь диск или инструкции для загрузки их из Интернета.
esp8266 ~ 2.3.0 (Board Target)
Внутри IDE Arduino используйте пункт меню «Инструменты / Совет / Контроллер … …» и выполните поиск «esp8266». Установите это, если его еще нет. Это позволяет IDE компилировать код для нового (не Atmel) микроконтроллера. (И, надеюсь, другие варианты, такие как ESP32 в будущем.)

Библиотеки добавляются в среду разработки Arduino с помощью меню «Sketch / Include Library / Library Manager …»
FastLED ~ 3.1.3 (Библиотека)
Откройте диспетчер библиотеки и найдите «FastLED». Это управляет Neopixel и является еще одной очень распространенной библиотекой, которую вы, возможно, уже имеете.

ArduinoJSON ~ 5.7.2 (Библиотека)
Вместо того, чтобы изобретать собственные форматы файлов для файлов конфигурации и пакетов данных, я решил, что могу просто использовать проверенный и проверенный формат, который все уже знают.

ESP AsyncTCP и Async WebServer ~ 1.0.0
Это сервер http / websockets, который является основой интерфейса администратора Eye и библиотеки, которой у вас меньше всего меньше всего.

Wi-Fi Eye (Sketch)
И, наконец, это код «эскиза», который я написал. Загрузите и распакуйте ZIP-файл или используйте инструменты настольного компьютера GitHub для клонирования репозитория (для дополнительных точек запустите новую ветку для своей сборки).
Затем просто откройте файл «WifiEye.ino», и среда разработки Arduino должна загрузиться, и вы увидите экран, полный кода на C +.
Предварительная проверка компиляции
Включите адаптер FTDI, и новый новый последовательный порт должен появиться в среде IDE в разделе «Инструменты / Порт». Выберите его и убедитесь, что установлены следующие параметры IDE:

Нажмите стрелку «компиляция и загрузка», и среда IDE будет довольно долгое время компилировать библиотеки и, как правило, готовиться к ESP8266.
В конце концов, загрузка должна начинаться и заканчиваться неудачей, поскольку до сих пор нет подключенной платы. Если это не так далеко (из-за ошибок компилятора или других махинаций), вам нужно будет разобраться с этим, прежде чем продолжить. Проверьте доски обсуждений - это, вероятно, изменение API снова.

Успешная компиляция, но микроконтроллер еще не подключен
Вы также должны иметь опцию в разделе «Инструменты» под названием «Загрузка данных эскиза ESP8266». Эта утилита не загружает основной эскиз (эта стрелка уже делает это). Он загружает содержимое файла эскиза / datadirectory в файловую систему SPIFFS на «флеш-накопителе» микроконтроллера (в нашем случае все файлы конфигурации и содержимого, которые требуется веб-серверу). Недавно были внесены некоторые изменения в эту утилиту, и она больше не может быть установлена с остальной библиотекой. Но тебе это понадобится.
Если все это сработает, наша станция программирования готова написать прошивку по кабелю к нашему контроллеру, и мы сможем легко добраться до зачистки проводов и припоя.
Проводка ESP-12F для программирования
ESP8266 - это чип, но вы найдете его на модулях с именем «ESP-1» до «ESP-13». Чем отличается объем флэш-памяти на борту и сколько контактов GPIO направлено на доступные соединители.
Я проектировал вокруг «ESP-12E» или «ESP-12F», который имеет 4 МБ вспышки, встроенную антенну и большинство контактов GPIO, доступных по краю. Подпись этих модулей - это жестяная радиочастотная защита с печатью «AI» на передней панели. Основное различие между «E» и «F» заключается в том, что третий ряд штифтов внизу, который, на самом деле, вы никогда не будете использовать. Кроме того, форма антенны немного отличается.
Они хорошо сконструированы, прочны и - в то время как штифты - раздражающие 2, 00 мм друг от друга (поэтому стандартные штыри IDC диаметром 2, 45 мм не подходят) - они все еще достаточно легки, чтобы припаять непосредственно.

Минимальные части, необходимые для программирования. (Адаптер FTDI не показан)
Чтобы модуль ESP12-F загрузился правильно, нам нужно добавить две проводные линии: route Enable to Vcc и GPIO15 в GND.
Теперь модуль будет загружаться из внутренней вспышки при подаче питания. Да, было бы правильно использовать понижающий резистор для GPIO15, но просто оставите его в программном обеспечении, и все будет в порядке. Мы дешевы.
Чтобы перегрузить загрузчик в режим обновления прошивки, нам нужно вытащить GPIO0 в GND во время сброса. Это проще всего сделать с помощью небольшого внешнего переключателя или перемычки. Действительно, действительно классный хакер просто сжимал бы эти булавки одной рукой, а другой - USB, но я не рекомендую. Было бы безответственно, если бы я даже предложил использовать скрепку.

Минимальная настройка для режима загрузки / программирования (как видно из верхней части модуля)

Теперь, вот что: когда мы использовали этот проводной интерфейс для загрузки нашей прошивки, скорее всего, мы никогда не будем использовать его снова, потому что ESP8266 имеет программирование по эфиру (OTA). Программирование OTA более удобно (вы получаете список устройств для выбора в среде IDE) и намного быстрее (есть больше полосы пропускания на интерфейсе Wi-Fi, чем на последовательном).
Нам понадобится только это снова, если мы испортим прошивку настолько плохо, что она больше не может физически загрузиться, или она переходит в цикл сброса, который, если вы разумный, встречается редко. Я потратил два месяца на разработку прошивки на оригинальном прототипе Eye, исключительно делая OTA-загрузку и никогда не сломал его (у него даже не было проводного порта программирования. Это называется «стимулом, чтобы все исправить»).
Даже если при обновлении OTA не удается выполнить среднее соединение (это Wi-Fi, в конце концов), устройство не остается в полупрограммированном, не загружаемом состоянии. Вам просто нужно продолжать повторять попытку, пока это не сработает.
Я лично стандартизован на 4-контактных мини-разъемах JST. Они крошечные, оцененные до усилителя, поступают в год поставки пакетов за пару долларов, а цветовая кодировка хороша. 5-контактные разъемы, вероятно, будут еще лучше, что позволит также отключить программный переключатель.
После использования этого разъема для первоначальной загрузки прошивки он будет переназначен в качестве основного шнура питания регулятору напряжения. Если ваш проект имеет какой-то возможности последовательного порта, эти контакты все еще доступны. Если нам нужно снова повторить трудный путь, мы поменяем вилки на программиста и вернем переключатель.

Сейчас самое подходящее время, чтобы дважды проверить, что ваш адаптер FTDI определенно настроен на 3, 3 В, и все соединения - это правильный путь. Затем подключите микроконтроллер к адаптеру FTDI, убедитесь, что ничто не закорачивает ни на что металл, не пересекает пальцы, не проверяет расположение огнетушителей, а затем подключайте адаптер FTDI к компьютеру через USB-кабель.
Не должно быть никакого дыма, а самый короткий - мигает от светодиода на модуле ESP-12.
Если есть дым, вы должны остановиться и справиться с этим.
Модуль может нагреться, но он не должен становиться настолько горячим, что вы боитесь прикоснуться к нему. (Обратите внимание, что он будет получать scorchingly hot при 5v, если вы не настроили адаптер правильно.)
Если вам нравится, вы можете запустить серийный терминал (при скорости 115200 бод) и - в зависимости от того, включен или выключен программный переключатель, и какая прошивка уже находится на нем - вы увидите что угодно: от мусорного мусора (обычно загрузчик, говорящий «whazzup»), в командную строку AT «модем» (которая обычно отвечает на пустые строки с помощью «ERROR») или даже с интерпретатором LUA или Python. Синий светодиод должен мигать во времени с последовательной связью.
Переключатель режима программирования должен быть включен только в начальные моменты загрузки, поэтому убедитесь, что он установлен, перезагружен (цикл питания) ESP и снова щелкните стрелку «Скомпилировать и загрузить» в IDE Arduino.

Успешная загрузка
На этот раз загрузка должна выполняться правильно. Вы получите точки прогресса в среде IDE, и синий светодиод будет мигать, как сумасшедший. В конце концов, ESP перезагрузится.
Однако мы еще не загрузили наши файлы конфигурации. Используйте «Загрузка данных эскиза / ESP8266» для передачи содержимого флэш-файловой системы. Возможно, вам придется перезагрузить / снова включить ESP, чтобы вернуться в режим программирования. Эта загрузка займет намного больше времени (много минут), после чего она снова перезагрузится. После этого выключите «режим программирования».
Когда синий светодиод загорается и остается включенным, это означает, что наша новая прошивка загружена и запущена. (Почему он остается? Что-то связанное с FastLED. Длинная история.)
Настройка сетевого подключения
Если вышеуказанный процесс работает, вы можете использовать мобильное устройство для поиска точки доступа Wi-Fi под названием Agomotto и подключиться к ней с помощью пароля shamballa, а затем использовать браузер для перехода на URL //192.168.4.1 и должен появиться веб-интерфейс.


Вы заметили, что перед загрузкой мы не модифицировали один исходный файл? Как правило, есть шаг, когда вам нужно жестко закодировать имя и пароль локальной точки доступа в прошивке IoT. Мы этого не сделали (хотя вы можете).
Вместо этого используйте веб-интерфейс для просмотра доступных параметров. Вы можете динамически подключаться к любой видимой точке доступа (после ввода правильного пароля, конечно) так же, как и на обычном ноутбуке или мобильном телефоне.

Возможно, вам нужно будет сохранить настройки и перезагрузиться, чтобы получить некоторые опции, - код по-прежнему не идеален при обновлении конфигурации «живого».
Как бы ни был хорош интерфейс, также очень удобно автоматически подключать устройство к локальной сети при первой загрузке (особенно, если у вас нет мобильного телефона для его настройки), и поэтому перед выполнением «Загрузка данных эскиза», вы можете создать запись в каталоге sketch / data / wifi / ap с вашей собственной конфигурацией сети.
например: Если ваша точка доступа WiFi называется « Мория », добавьте файл с именем « / ap / wifi / Moria » (та же самая капитализация) с содержимым:
{ "password":"YouShallNotPass", "priority":10, "auto":true, "ota":true }
Это дает указание прошивке автоматически подключиться к точке доступа под названием «Мория» с данным паролем и включить обновления Over-The-Air, как только это произойдет. Если доступно более одного параметра, сначала проверяется точка доступа с наибольшим приоритетом.
Убедитесь, что этот файл является строго действующим JSON. Имена должны быть в кавычках, без дополнительных запятых в конце. Если файл не имеет никакого эффекта, это, скорее всего, из-за синтаксической ошибки.
Это сильно отличается от компиляции в прошивку, поскольку эти параметры могут быть изменены впоследствии через веб-интерфейс или даже загружать новые файлы с проверенными
Самое приятное в OTA заключается в том, что он использует протокол Bonjour для трансляции присутствия, поэтому через некоторое время новое устройство IoT перечислит себя в меню «Порты» в среде Arduino (иногда часто длительное время, десять минут или Больше). Это хорошо, потому что в противном случае очень сложно понять, какой IP-адрес для вашего нового устройства был выделен локальной сетью.

Agomotto появляется как сетевой порт в меню «Инструменты» IDE и теперь может быть запрограммирован «Over The Air»
Если процесс обнаружения слишком длится в Windows (MacOS, вероятно, намного лучше), есть программа Bonjour Browser, которая, как представляется, дает Windows удар в штаны для осмотра. Я мог бы представить это. Иногда помогает перезапуск IDE. Это еще не идеальный процесс.

Если Agomotto не появляется в сети, и у вас нет клиента Wi-Fi для проверки интерфейса, вам может потребоваться контролировать последовательный порт и посмотреть, есть ли какие-либо сообщения (сообщения об ошибках или IP-адрес адрес должен быть указан после назначения). Или вы можете использовать различные инструменты сетевого сканирования (или радиопередачи), чтобы попытаться найти его.
Как только вы узнаете, какой IP-адрес был выделен для Eye вашей сетью, используйте браузер своего рабочего стола, чтобы перейти к этому адресу. Например: 10.1.1.18 в моей сети. Большинство современных браузеров должны быть совместимы, если они реализуют новые API-интерфейсы HTML5. Я предпочитаю Chrome, но Mozilla, iOS и IE10 должны быть в основном прекрасными.
Обратите внимание, что для этого пользовательского интерфейса администратора очень мало безопасности (на самом деле, как вы изменяете безопасность). Предполагается, что если вы подключаетесь к Глазу с мобильного устройства (таким образом, вы подтверждаете, что знаете пароль WiFi) или вы командуете Eye, чтобы сделать себя доступным в сети, все в этой сети с браузером считаются «доверенными». Это не достаточно хорошо для агрессивной среды, но это шаг безопасности от «ни одного».
Если все это сработает, то поздравления! Ваш крошечный мозг робота готов!
Теперь вы можете контролировать, контролировать и перепрограммировать свой дроид по беспроводной сети из любого места в доме. Мы могли бы удалить коммутатор сейчас, но вы знаете, что нам понадобится его снова, если мы это сделаем. Оставь это немного.

Это тот момент, когда вы можете взять на себя покупку этих сверхдорогих сервоприводов за 5 долларов, батарей LiPo и красивого рулона 3D-принтера Filament (или пенополистирола и красок, если хотите) и начать думать о физической механике в следующий раз.
При этом, принципиальная схема и контроллер, который мы уже построили, вы, возможно, могли бы решить все остальное.
Просто помните контекст здесь, так как я продолжаю обновлять код: вы должны предположить, что микроконтроллер будет рушиться регулярно, и сервоприводы будут безумно случайными. Если вы используете его, чтобы контролировать все, что опасно для жизни или бритвы, тогда вы тоже сумасшедшие. (Тот факт, что мой Глаз работает в течение нескольких дней за один раз дольше, чем мой компьютер с Windows, не имеет значения или даже очень высокий бар.)
В следующий раз…
Затем мы занимаемся бодибилдингом! Мы будем хорошо говорить о сервоприводах и трехмерных печатных «случаях», собрать некоторые подергиваемые роботы и глубже погрузиться в то, что может сделать интерфейс.