Дополнительная информация
Дополнительная информация
mysku.me
При всей привлекательности микроконтроллера ESP8266 с его большим объемом памяти, железной поддержкой Wi-Fi и массой разных плюшек, он не лишен недостатков. Самый основной — ограниченное количество поддерживаемых одновременных TCP соединений равное 5. Если превысить этот лимит, то контроллер потеряет связь с окружающим миром, при этом watchdog будет думать, что все в порядке, а следовательно, даже не попытается нам помочь. Будем стараться это помнить!
Отладочная плата на базе, и смотрится хорошо, и удобства хоть отбавляй.
Заливаем прошивку, образ SPI Flash и подключаем четырьмя проводами датчики. Справится даже ребенок.
Ссылки:
Базовая плата для NodeMCU V3 с преобразователем питания 5-24V в 5V
Отладочная плата ESP8266 от NodeMCU Естественно никто не запрещает Вам развести свою плату. Если Вы это сделаете, скиньте нам свое творение, возможно мы перейдем на него. В идеале, все должно размещаться в метеобудке.
Датчики взятые за основу
Датчик уровня освещенности Bh2750
Интерфейс шины I2C
Диапазон измерений от 1 до 65535 Lx
Фильтр световых шумов 50/60 Hz
Возможность смены адреса на шине
Не требует калибровки
Рабочая температура от -40 до 85 градусов C
Питание от 2.4 до 3.6 V Датчик атмосферного давления BMP085/180
Фото готовой будки
Шпилька М8 крепится через зажимной хомут к мачте уличной антенны.
Примерка. Шпилька практически не укорачивалась, чтобы не закрывать будку параболической Wi-Fi антенной.
Хотя в моем случае все это сделано не правильно т.к это солнечная сторона дома. Доступа на теневую сторону дома у меня нет, поэтому приходиться довольствоваться тем, что имеем. По прошлой метеостанции мне говорили «на солнечной стороне все эти измерения — сферический конь в вакууме, слепи %описание-многА-букАв% и закрепи на теневой стороне дома».
Я пока живу в панельном многоквартирном доме, как и не малая часть нашей страны. Доступ к теневой стороне дома (а для меня, по факту, это окна в подъезде) — прямой вызов всем гопникам района трущимся рядом, любопытным соседям с бегающими глазками и всей элите человечества скрашивающей фоном мою унылую и слишком простую, по их мнению, жизнь. Думаю, что мысль я донес.
Датчики располагаются на разных уровнях. В основании находится датчик освещенности Bh2750 и смотрит ровно вниз. Мне кажется, так он будет меньше пачкаться и покрываться пылью и при этом смотреть наружу сквозь минимальное количество препятствий для солнечного света. Вообще размещение этого датчика, это целая головная боль. Как не крути, все будет не то. Оставил так, ведь по сути важны не сами показания, а тенденция изменения. Хотя кого я пытаюсь обмануть, точность важна всегда! Предлагайте свои варианты.
Намного проще обстоят дела с датчиком атмосферного давления BMP180 и влажности SI7021, кстати, с последнего мы также будем забирать данные о температуре. Их размещаем в оставшемся свободном пространстве будки, благо его там с избытком, но не в конусе т.к пространство в нем менее проветриваемое.
Все хозяйство подключается между собой следующим образом
NodeMCU | ESP 07/12 | Датчики
——————————
D2 | GPIO 4 | SDA
D1 | GPIO 5 | SCL
3.3V | 3.3V | 3.3V
GND | GND | GND ВАЖНО: при финальном монтаже устройства на его место службы, обязательно установите перемычку между пинами GPIO 0 (D3) и питанием 3.3 Вольта. Причины её установки описаны в закрепленном сообщении с описание обновления от 12.08.2017.
Сам микроконтроллер будет спрятан в уже знаменитую распределительную коробку, закрепленную на шпильке, чуть ниже будки Стивенсона. У меня все находится на стадии неторопливой сборки с попутным поиском более удачных идей.
Плата расширения, на которой будет установлена плата NodeMCU, закреплена через ножки для крепления компьютерных материнских плат в корпусах.
Разъемы для подключения внешних датчиков и питающей линии установил на местах где была пара штатных заглушек. Закрепил все через переходную пластину, выпиленную из куска фольгированного текстолита. Естественно, предварительно пластина была протравлена, а вся медь искоренена, ибо в этом случае она нам не друг.
Также была предусмотрена проставка из полиэтиленового поролона (используется в качестве упаковочного материала при транспортировке грузов) между текстолитом и корпусом, общей толщиной 5мм, а после затяжки крепежных винтов, его толщина не превышает 1мм. Это было сделано из-за опыта эксплуатации предыдущего (временного) бокса для этой метеостанции. Без проставки влага быстро найдет путь вовнутрь, и срок службы устройства снизится.
Производим примерку.
При окончательном монтаже обязательно необходимо удалить все не плотно прилегающие части полиэтиленового поролона, то есть те части, которые располагаются снаружи и не сдавлены крепежной текстолитовой пластиной. Это необходимо сделать для препятствования накоплению влаги в доступных для неё полостях. Также пришлось увеличить число крепежных болтов для более надежного прилегания текстолита, в противном случае он может выгибаться.
Все самое сложное позади, остается только вывести на один разъем шину i2c с питание 3.3 Вольта, а на другой подвести пины питания платы расширения. Но т.к у меня валялся «хвост» отрезанный когда-то от не рабочего блока питания маршрутизатора, и я не побрезговал им воспользоваться по прямому назначению.
Далее останется все подравнять, проверить качество монтажа, возможность замены платы NodeMCU, если это будет необходимо при эксплуатации и самое главное, дважды проверить, что и куда припаяно. Мои кривые руки и невнимательность уже наказывали меня, а т.к ждать новые запчасти долго, повторять не хочется.
Общий вид получился таким
А вот как все выглядит в боевых условиях. Кстати, могу предложить идею с помещением в бокс мешочка содержащий впитывающий влагу гель, они часто встречаются в коробках с обувью. Если все герметично, то он впитает остатки влаги, а если нет, то лишним уж точно не будет.
Требования (!!!Читать обязательно!!!)
Arduino IDE с поддержкой контроллера ESP8266, версия 2.4.2 (на версиях выше работоспособность не проверялась)
Установленный модуль в Arduino IDE для загрузки файлов во Flash память микроконтроллера. Как установить описано тут.
Любой модуль на базе ESP8266 c Flash 4MB (3MB выделяем под SPIFFS)
В параметрах выставляем lwIP версии 2 и максимальную производительность (lwIP v2 Higher Bandwidth)
Сам архив с последней версией проекта. Скачать можно в конце статьи или по этой ссылке.
Обязательные библиотеки (!!!Читать обязательно!!!)
ArduinoJson (v5.13.2)
PubSubClient Ссылки на библиотеки сенсоров указаны в комментариях к коду. Сами библиотеки, как и обслуживаемые ими сенсоры, не являются обязательными. Вы вольны использовать любые датчики, как физические, так и программные.
Порядок установки (!!!Читать обязательно!!!)
Изучите файлы проекта с примерами использования тех или иных сенсоров. Все файлы с примерами начинаются с префикса users_, это users_auto.h, users_bme280_x2.h и т.д. Загрузите необходимые Вам библиотеки или используйте эти файлы как пример для добавления иных датчиков.
Выставите необходимые настройки для контроллера в среде разработки Arduino IDE. Пример настроек указан на скриншоте выше. Обязательно убедитесь, что выбрано правильное распределение места для внутренней файловой системы, это значит, что 3MB должно быть выделено под файловую систему. Также проверяем, чтобы использовался lwIP v2 в режиме максимальной производительности (lwIP v2 Higher Bandwidth).
Произведите загрузку программы с помощью среды разработки (Ctrl + U).
Произведите загрузку содержимого каталога data в файловую систему. Меню/Инструменты/ESP8266 Sketch Data Upload
Перед тем как устанавливать метеостанцию на постоянное место жительства, подтянуть GPIO-0 (пин D3 на плате NodeMCU) к питанию 3.3V. Во время данной процедуры, питание на контроллере должно отсутствовать. Первый запуск (!!!Читать обязательно!!!)
Помните, что вся конфигурация микроконтроллера производится исключительно через web интерфейс. Никаких изменений значений тех или иных параметров в коде не требуется, а подобную практику будем считать плохим тоном.
И так, после запуска микроконтроллера он сразу перейдет в аварийный режим и поднимет собственную точку доступа с именем WeatherStation. Это нормальное поведение т.к подразумевается использование метеостанции в домашней беспроводной сети, ну а раз о ней пока ничего не известно, то и подключаться не к чему.
Подключитесь к данной сети с любого удобного устройства и перейдите в панель управления (для этого имеется соответствующая иконка, запутаться невозможно), контроллер будет доступен по адресу http://espws.local или http://192.168.4.1 При попытке входа в панель управления будет запрошено имя пользователя и пароль, по умолчанию admin/admin. После входа в панель управления перейдите в раздел «Основные настройки WiFi» и укажите имя и пароль Вашей домашней сети, а также, при необходимости, укажите пароль для подключения к точке доступа поднимаемой контроллером в аварийном режиме. Если все сделано правильно, то контроллер подключится к домашней сети в течении 5-и минут.
Если Ваша домашняя сеть скрыта, то после первоначальной настройки необходимо перезагрузить контроллер. Это необходимо из-за частичной поддержки работы со скрытыми сетями. После перезагрузки контроллер увидит Вашу сеть и запомнит её MAC адрес. Помните об этом если захотите сменить домашний маршрутизатор.
Хотите помочь проекту или спонсировать новый?
Yandex.Money
PayPal.me Файлы
it4it.club
Снова в мои руки попали модули «народного WiFI» по цене: $2.18 за ESP8266 ES07 + плата адаптер $1.18 за 10 шт.
Почему именно ES-07? Там есть керамическая антенна и разъем для подключения внешней. При покупке нужно написать продавцу, какие модули отправить. Можно заказать ES-08 без WiFi антенны и ES-12E с антенной, разведенной на плате. О разновидностях модуля ESP8266 можно почитать здесь.
Покупка на Алиэкспресс для терпеливых. Обычно товар приходит за 20-30 дней.
Это модули от производителя «клонов» ESP компании AI-THINKER .
Модули идут в комплекте с платами-переходниками, позволяющими использовать контактные разъемы с шагом 2.5мм.
Платы переходника имеют два подтягивающих резистора 10к: с вывода GPIO2 на землю и CH_PD к VCC. Нога GPIO15 соединена с землей.
Кроме того, на плате модуля имеется площадка для подключения линейного стабилизатора.
Продавец сказал, что туда должен ставиться HT7133-1 в корпусе SOT89. Лично я очень сомневаюсь, так как данный стабилизатор выдает ток 30мА, а ESP-шка судя по даташиту в режиме передачи может потреблять до 170мА. Нет в SOT-89 стабилизаторов такой мощности. Конечно, можно «приколхозить» и LM1117 в SOT-223, но выглядеть это будет не очень.
Припаять модуль к плате адаптеру и припаять штырьковые разъемы — и модуль готов к работе.
Подключаем модуль к TTL-USB конвертеру и питанию 3.3В
Подключаем терминальную программу CoolTerm на скорости 115200 смотрим версию и дату прошивки
С таким помощником все очень просто! )))
О различных вариантах программирования ESP8266, в том числе и в среде Arduino IDE, моя следующая статья.
со своего сайта.
samopal.pro
Чтобы систематизировать всю полученную информацию и была написана эта статья.
Особенностью данного семейства процессоров является то, что они представляют собой конструктор, из которого заказчик с помощью предлагаемого инструмента Xtensa Processor Generator может собрать чип с нужными ему характеристиками и заказать его у производителя. Поэтому различные модификации могут сильно отличаться, например, количеством ядер, дополнительными инструкциями, модулями DSP и так далее.
Вообще все, что касается памяти – расположения, свойств и атрибутов сегментов – это изыскания сообщества. В оригинальной китайской документации этот вопрос почему-то обойден стороной.
Один из вариантов (имеются противоречия с другими источниками) известной на сегодняшний день карты памяти можно посмотреть здесь. Приведу лишь наиболее интересные адреса:
Внутренняя память:
Диапазон | Описание |
---|---|
3FFE8000h — 3FFFBFFFh | оперативная память для пользовательских приложений. При старте модуля может инициализироваться значениями из пользовательской прошивки. |
3FFFC000h — 3FFFFFFFh | системная оперативная память |
40000000h — 4000FFFFh | системный ROM. Отсюда стартует процессор, загружается пользовательская прошивка и здесь находятся основные системные библиотеки. |
40100000h — 4010FFFFh | оперативная память, содержит пользовательскую прошивку |
40240000h — 40271FFFh | вторая часть пользовательской прошивки. Здесь находятся код подключенных библиотек и SDK. Подмаплено к flash по адресу 40000h. |
Flash:
Диапазон | Описание |
---|---|
00000h — 3DFFFh | адрес загрузки пользовательской прошивки |
40000h — 7BFFFh | адрес загрузки библиотек SDK (также может являться частью пользовательской прошивки) |
Блок, начинающийся с 40000h содержит простой бинарный код, который загружается и работает в неизменном виде. А вот блок, начинающийся с 00000h, представляет собой структурированные данные о находящихся в нем сегментах и выглядит следующим образом:
Смещение | Описание |
---|---|
0 | идентификатор прошивки, всегда `0xE9` |
1 | количество сегментов в прошивке |
2,3 | параметры SPI Flash |
4-7 | адрес запуска прошивки (Entry Point) |
8… | далее идут данные сегментов |
Смещение | Описание |
---|---|
0-3 | адрес для загрузки сегмента |
4-7 | размер сегмента |
8… | далее идут данные сегмента |
Заполнен нулями для выравнивания до границы 16 байт минус 1 байт. После этого добавляется последний байт, представляющий собой контрольную сумму данных всех сегментов, вычисляемая функцией xor над всеми байтами и константой `0xEF`.
Формат прошивки взят из описания к утилите esptool.
При подаче питания или поступлении сигнала сброса процессор начинает выполнение инструкций с адреса 40000080h (системный ROM). По адресу 40001308h располагается процедура, которая считывает блок 00000h flash и копирует сегменты, хранящиеся в ней по заданным адресам.
После всех инициализаций управление передается по адресу, указанному в заголовке прошивки. Обычно это адрес пользовательского кода 40100000h.
Для проектирования, разработки и отладки продуктов на базе SoC Xtensa существует пакет Xtensa Xplorer от производителя процессора, в состав которого входит множество утилит, включая TurboXIM – симулятор SoC. Теоретически, эта утилита могла бы быть полезной, но даже бесплатная версия требует лицензионных ключей, выдаваемых по запросу. Написав такой запрос я не получил ответа, поэтому воспользоваться симулятором не удалось. Скачать весь набор инструментов можно здесь, возможно, вам повезет больше.
Для разработки, сборки прошивок и выгрузки отладочной информации нам будет полезно развернуть среду разработки, как описано здесь.
Из традиционных инструментов воспользуемся IDA Pro и HIEW.
Для изучения кода процессора Xtensa необходимо использовать IDA Pro версии 6.6 и выше со встроенным интерпретатором питона для выполнения скриптов. В перечень стандартно поддерживаемых процессоров Xtensa не входит, поэтому каждый раз при запуске IDA Pro перед открытием исследуемого файла необходимо загружать скрипт “xtensa.py”, который можно взять здесь.
Также для автоматического создания сегментов и наименования функций системного ROM нам понадобится скрипт для IDA Pro. Скрипт и дамп системной прошивки можно скачать здесь.
HIEW будет полезен для исследования структуры ELF- и готовых двоичных файлов прошивки.
В следующей части мы рассмотрим процесс загрузки прошивки для исследования.
Update. Продолжение здесь.
habr.com