Оглавление:
- Шаг 1. Создание среды сборки
- Шаг 2. Получите исходный код, настройте и соберите
- Шаг 3: Подключите аппаратные компоненты
- Шаг 4: прошить и запустить
- Шаг 5: взаимодействие
- Шаг 6: Детали реализации
Видео: Светодиодная лента WiFi + датчик температуры с ESP8266: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
В этом руководстве описаны шаги по настройке ESP8266 и его взаимодействие с датчиком температуры и светодиодной лентой, а также возможность принимать входные и выходные данные с помощью MQTT через Wi-Fi. Проект был разработан для курса, пройденного в Калифорнийском Политехническом университете в Сан-Луис-Обиспо осенью 2016 года - CPE 439: Встроенные системы реального времени. Общая цель заключалась в том, чтобы продемонстрировать легкость создания подключенного к Интернету «штуки» с дешевым оборудованием.
Необходимые материалы / оборудование:
- Плата разработчика NodeMCU ESP8266
- Светодиодная лента WS2812B
- MAX31820 Датчик температуры
- Макетная плата
- Резистор 4,7 кОм
- Резистор 220 ом
- перемычки
- кабель micro-usb
- ПК (или виртуальная машина) под управлением Linux (например, Ubuntu)
Предположения / предпосылки:
- опыт использования инструментов командной строки и установки пакетов в дистрибутиве на основе Debian
- базовое понимание синтаксиса Makefile
- соединительные провода
Шаг 1. Создание среды сборки
Для сборки проекта на вашем компьютере должен быть установлен esp-open-sdk. Перейдите по ссылке и прочтите инструкцию по сборке. Короче говоря, вы будете выполнять несколько команд sudo apt-get для установки зависимостей, команду git clone --recursive для клонирования / загрузки esp-open-sdk и, наконец, команду make для сборки esp-open-sdk.
Смотри на меня
Шаг 2. Получите исходный код, настройте и соберите
Теперь, когда esp-open-sdk собран, клонируйте репозиторий проекта.
git clone
Перейдите в каталог проекта, создайте папку.local и скопируйте настройки примера.
компакт-диск esp-rtos-tests
mkdir -p.local cp settings.example.mk.local / settings.mk
Теперь откройте.local / settings.mk в любом текстовом редакторе и измените следующие настройки:
- OPENSDK_ROOT: абсолютный путь к местоположению esp-open-sdk, который вы создали на шаге 1.
- WIFI_SSID: SSID вашей сети Wi-Fi.
- WIFI_PASS: пароль вашей сети Wi-Fi.
- PIXEL_COUNT: количество пикселей на светодиодной ленте WS2812B.
Примечание. Поскольку этот проект использует SPI для управления светодиодами и использует NodeMCU 3.3v для их питания, вы, вероятно, не сможете управлять более чем 60 светодиодами.
Примечание. Остальные настройки изменять не нужно, но при желании их можно изменить. Рекомендуется соблюдать порядок приоритетов задач. Чем ниже номер приоритета, тем ниже приоритет задачи.
Теперь соберите проект:
make -C примеры / cpe439
Если все настроено правильно, он должен начать компиляцию. В конце вы должны увидеть:
Успешно создан 'firmware / cpe439.bin'
Смотри на меня
Шаг 3: Подключите аппаратные компоненты
Теперь, когда код скомпилирован, пришло время подключить наши периферийные устройства.
Сначала прикрепите NodeMCU к макетной плате, затем с помощью перемычек выполните соединения, как показано на схеме.
Несколько вещей, о которых следует знать:
- Важно: линия данных WS2812B не является двунаправленной. Если вы внимательно посмотрите на маркировку на светодиодной стороне полосы, вы увидите маленькие стрелки, указывающие в одном направлении. Выходной сигнал от D7 NodeMCU должен направляться в WS2812B так же, как и маркер направления, который вы можете увидеть на диаграмме, если внимательно присмотритесь.
- В зависимости от того, с какими разъемами поставляется ваш WS2812B, вам может потребоваться внести некоторые изменения, чтобы они надежно подключались к макетной плате. Вы также можете использовать зажимы типа «крокодил», чтобы подключить их к соединительным кабелям для макетной платы.
- Штыри MAX31820 имеют меньший шаг и тоньше стандартных перемычек 0,1 дюйма / 2,54 мм, что затрудняет их подключение. Один из способов решения этой проблемы - использовать перемычки «мама-папа», снять пластиковый корпус со стороны «мама». затем с помощью плоскогубцев плотно обожмите концы перемычки на меньших контактах MAX31820.
Дважды проверьте соединения перед включением NodeMCU, чтобы не повредить компоненты.
Шаг 4: прошить и запустить
Мигает
Когда все оборудование подключено, подключите ваш NodeMCU и выполните прошивку с помощью следующей команды:
сделать flash -C examples / cpe439 ESPPORT = / dev / ttyUSB0
/ dev / ttyUSB0 - это серийный com, под которым должен отображаться NodeMCU. Если у вас подключены другие последовательные устройства, он может отображаться как / dev / ttyUSB1 или какой-либо другой номер. Чтобы проверить, вы можете запустить эту команду дважды, один раз с отключенным NodeMCU и один раз с подключенным, и сравнить разницу:
ls / dev / ttyUSB *
Другая проблема, с которой вы можете столкнуться, - это отсутствие разрешения на доступ к устройству. Два способа исправить это:
-
Добавьте своего пользователя в группу dialout:
sudo adduser $ (whoami) dialout
- chmod или chown устройство:
sudo chmod 666 / dev / ttyUSB0 sudo chown $ (whoami): $ (whoami) / dev / ttyUSB0Первый метод предпочтительнее, так как это постоянное решение.
Бег
После успешного выполнения команды flash устройство немедленно загрузится и начнет выполнение скомпилированного кода. В любой момент после прошивки вы можете запустить следующую команду для просмотра последовательного вывода:
python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q
Чтобы сэкономить время, вы можете добавить это в свой файл ~ /.bashrc:
псевдоним nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q'
.. что позволяет вам просто ввести "nodemcu" в качестве псевдонима для этой команды.
Если все настроено правильно, ваша светодиодная полоса должна загореться зеленым, а на последовательном интерфейсе вы должны увидеть соединение Wi-Fi, получить IP-адрес, подключиться к MQTT и сообщения о том, что данные о температуре отправляются.
подключен к MyWiFiSSID, запуск клиента dhcp канала 1… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23, маска: 255.255.255.0, gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status = 5xQ ConneueuexReceive_Select: (Повторное) подключение к серверу MQTT test.mosquitto.org… xQueueReceive + 25.50xQueueSend ok doneSend MQTT connect… MQTTv311donexQueueReceive +25.56 xQueueSend ok
Шаг 5: взаимодействие
Предполагая, что ваше устройство подключено к Wi-Fi и брокеру MQTT успешно, вы сможете отправлять и получать данные от NodeMCU с помощью MQTT. Если вы еще этого не сделали, установите пакет клиентов mosquitto:
sudo apt-get install mosquitto-clients
Теперь вы можете использовать программы mosquitto_pub и mosquitto_sub из своей оболочки.
Получение обновлений температуры
Чтобы получать данные о температуре, мы хотим использовать команду mosquitto_sub, чтобы подписаться на тему, в которой публикуется NodeMCU.
mosquitto_sub -h test.mosquitto.org -t / cpe439 / temp
Вы должны увидеть данные о температуре (в градусах Цельсия), поступающие в терминал.
+25.87+25.93+25.68…
Удаленная настройка цвета светодиодной ленты
Для отправки значений RGB в NodeMCU через MQTT используется простой формат сообщения. Формат команды выглядит так:
r: RRRg: GGGb: BBB ~
Где RRR, GGG, BBB соответствуют значениям RGB (0-255) цвета, который вы хотите отправить. Чтобы отправить нашу команду, мы воспользуемся командой mosquitto_pub. Вот некоторые примеры:
mosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 0g: 255b: 0 ~ '# greenmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m' r: 0g: 0b: 255 ~ '# синий
Если вы хотите проявить творческий подход, найдите в сети палитру цветов, подобную этой, и отредактируйте команду с любым выбранным вами значением RGB.
Осторожно
Темы в этом проекте настроены на / cpe439 / rgb и / cpe439 / temp на общедоступном брокере MQTT, что означает, что ничто не мешает кому-либо публиковать или подписываться на те же темы, что и вы. Для проверки можно использовать общедоступного брокера, но для более серьезных проектов вам нужно подключиться к брокеру с защитой паролем или запустить своего собственного брокера на сервере.
Шаг 6: Детали реализации
Однопроволочный
ESP8266 имеет только 1 ядро, поэтому блокирующие задачи, такие как ожидание 750 мс, пока датчик температуры выполнит измерение температуры, обычно приводят к сбоям в работе Wi-Fi и, возможно, даже к сбою. В парадигме FreeRTOS вы вызываете vTaskDelay () для обработки этих длинных ожиданий, но между чтением и записью требуется также много более коротких ожиданий, которые короче, чем системный тик FreeRTOS, и поэтому их нельзя избежать с помощью vTaskDelay (). Чтобы также обойти это, драйвер onewire в этом проекте был написан для работы с конечным автоматом, который управляется аппаратным таймером ESP8266, который может запускать события каждые 10 микросекунд, что является самым коротким необходимое время между однопроводными операциями чтения / записи. В большинстве других реализаций для обработки этого используется блокирующий вызов delay_us () или аналогичный, но если вы постоянно принимаете обновления температуры, все эти задержки начинают накапливаться, что приводит к менее отзывчивому приложению. Исходный код этой части кода находится в папке extras / onewire.
WS2812B
ESP8266 не имеет стандартных аппаратных опций для ШИМ, достаточно быстрой для работы светодиодных лент на частоте 800 кГц. Чтобы обойти это, в этом проекте используется вывод SPI MOSI для управления светодиодами. Регулируя тактовую частоту SPI и изменяя полезную нагрузку SPI, вы можете добиться довольно надежного управления каждым отдельным светодиодом. Этот метод не лишен недостатков - во-первых, светодиоды должны питаться от источника 5 В, а к выходу вывода SPI должен быть добавлен переключатель уровня. Но 3,3 В работает. Во-вторых, есть сбои, которые возникают из-за несовершенной синхронизации при использовании метода SPI. И в-третьих, теперь вы не можете использовать SPI ни для чего другого. Дополнительную информацию об этом методе можно найти здесь, а исходный код этой части кода находится в папке extras / ws2812.
Более надежный метод забивки светодиодных лент - использование i2s. Однако в этом методе много хитростей, связанных с конкретными чипами, поэтому SPI казался лучшим выбором в качестве обучающего упражнения.
Рекомендуемые:
Датчик температуры барбекю и мяса на ESP8266 с дисплеем: 5 шагов (с изображениями)
Датчик температуры барбекю и мяса на ESP8266 с дисплеем: в этом руководстве я покажу вам, как создать собственную версию инструмента для барбекю, который измеряет текущую температуру в вашем барбекю и включает вентилятор, чтобы при необходимости зажигать его. Дополнительно к этому есть также датчик температуры ядра мяса
Музыкальные реактивные многоцветные светодиодные фонари - Датчик обнаружения звука Arduino - Светодиодная лента RGB: 4 ступени
Музыкальные реактивные многоцветные светодиодные фонари | Датчик обнаружения звука Arduino | Светодиодная лента RGB: проект многоцветных светодиодных фонарей, реагирующих на музыку. В этом проекте использовалась простая светодиодная лента 5050 RGB (не Addressable LED WS2812), датчик обнаружения звука Arduino и адаптер на 12 В
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: 7 шагов
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: я сделал этот датчик для своего любимого Çipitak. Автомобиль fiat 126 с 2-цилиндровым двигателем с воздушным охлаждением под задним капотом. У ipitak нет датчика температуры, показывающего, насколько горячий двигатель, поэтому я подумал, что датчик будет полезен. Также хотел, чтобы датчик был проводным
Датчик температуры IoT с ESP8266: 6 шагов (с изображениями)
Датчик температуры IoT с ESP8266: я был вдохновлен на создание датчика температуры, который я могу контролировать по Wi-Fi. Этот проект не нов, но мне нравится идея наличия промежуточного уровня безопасности и отсутствия необходимости открывать порт в вашем маршрутизаторе для вашего IoT-устройства. Основная идея позволит
Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация: 9 шагов
Датчик температуры и влажности WiFi IoT. Часть: 8 Интернет вещей, Домашняя автоматизация: Преамбула В этой статье описывается практическая защита и дальнейшее развитие более ранней инструкции: «Прокачка» вашего первого устройства IoT WiFi. Часть 4: Интернет вещей, домашняя автоматизация, включая все необходимые программные функции для достижения успеха