Оглавление:

4 проекта в 1 с использованием DFRobot FireBeetle ESP32 и крышки LED Matrix: 11 шагов (с изображениями)
4 проекта в 1 с использованием DFRobot FireBeetle ESP32 и крышки LED Matrix: 11 шагов (с изображениями)

Видео: 4 проекта в 1 с использованием DFRobot FireBeetle ESP32 и крышки LED Matrix: 11 шагов (с изображениями)

Видео: 4 проекта в 1 с использованием DFRobot FireBeetle ESP32 и крышки LED Matrix: 11 шагов (с изображениями)
Видео: DFRobot FireBeetle ESP32 2024, Июль
Anonim
Image
Image
Установите общие библиотеки для проектов
Установите общие библиотеки для проектов

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

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

Итак, что такое оборудование: все оборудование было предоставлено моими друзьями из DFRobot, у них есть очень хорошие учебные пособия и простые в установке основные платы для этого. Также имейте хорошую систему поддержки и довольно быструю доставку в США.

Полное описание платы Firebeetle ESP32 и светодиодной матрицы были предоставлены DF Robot, представленные проекты и видео являются моими собственными.

Все эти проекты используют микроконтроллер DFRobot FireBeetle ESP32 IOT.

www.dfrobot.com/product-1590.html

Вики-страницу поддержки - с инструкциями по установке ядра платы можно найти здесь:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Нам также понадобится светодиодная матрица FireBeetle Covers 24x8 (СИНИЙ).

www.dfrobot.com/product-1595.html

Не люблю СИНИЕ светодиоды - у них тоже разные цвета.

ЗЕЛЕНЫЙ -

КРАСНЫЙ -

БЕЛЫЙ -

ЖЕЛТЫЙ -

Вам понадобится только одна светодиодная матрица - цвет на ваш выбор, все они работают одинаково.

Вики-страницу поддержки LED Matrix можно найти здесь:

www.dfrobot.com/wiki/index.php/FireBeetle_…

Здесь мы находим ссылку на библиотеку Arduino.

github.com/Chocho2017/FireBeetleLEDMatrix

Подробнее об этом чуть позже….

Что-то, что необязательно, но может быть удобно, - это держатель батареи MicroUSB 3xAA.

www.dfrobot.com/product-1130.html

Итак, вот необходимое оборудование - каковы 4 проекта -

Шаг 1: проекты

Image
Image

Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или AMPM, Эти часы будут подключаться к NTP (серверу времени), захватывать время и применять смещение, чтобы вы получали местное время. Время будет отображаться на светодиодной матрице. - Это очень простые часы, и очень простой 1-й проект.

Проект 2: Дисплей прогноза прохождения ISS, в этом проекте используется 2-е ядро процессора. Он покажет, насколько близко (в милях) находится МКС, когда ожидать следующего прохождения МКС в вашем местоположении (по времени UTC) и, возможно, сколько людей находится в космосе. Поскольку большая часть этой информации не меняется часто, мы используем 2-е ядро только для проверки обновлений прогнозов прохождения или количества людей в космосе каждые 15 минут. Таким образом мы можем предотвратить слишком много вызовов API к серверу. Этот проект немного сложнее, но все же довольно прост.

Проект 3: простой движущийся знак сообщения с использованием MQTT, я пересмотрел проект, который был разработан для мини-платы ESP8266 D1, и это светодиодная матрица 8x8. Идея состоит в том, чтобы подключиться к брокеру MQTT, отправить сообщение в тему, на которой находится устройство. слушать - и отображать это сообщение. Это довольно просто и очень просто сделать, когда все настроено. И есть несколько шагов, чтобы настроить клиентское программное обеспечение MQTT на настольном компьютере. После настройки MQTT представляет собой очень мощный протокол обмена сообщениями, используемый многими устройствами IoT для отправки и получения сообщений.

Проект 4: Дисплей метеостанции - основан на мини-метеостанции ESP8266 D1 производства Squix78 и ThingPulse. Мы берем наши данные из Wunderground и отображаем текущие условия и температуру в градусах Фаренгейта. Мы используем 2-е ядро ESP32 для обновления наших данных каждые 10 минут. Его также легко настроить.

ПРИМЕРЫ BOUNS MINI: в библиотеке (и скетчах выше) используется шрифт 8x4, библиотека также содержит шрифт 5x4, который я использовал для большинства этих мини-примеров BOUNS. Я могу отметить несколько проблем с мелким шрифтом, одна из которых, кажется, вызывает проблемы при использовании WIFI устройства. Это то, что я хочу изучить больше, но у меня было время. Другая проблема в том, что он не прокручивается, можно прокручивать только более крупный шрифт. Таким образом, ни один из этих примеров не использует WIFI - они просто обновляют дисплей, и подробнее об этом будет позже.

Давайте начнем…..

Шаг 2. Установите плату DFRobot FireBeetle ESP32 в Arduino IDE

Итак, я собираюсь порекомендовать вам DF Robot Wiki по установке ядра платы для Arduino IDE.

Это довольно просто сделать в современной среде IDE (1.8.x или лучше).

www.dfrobot.com/wiki/index.php/FireBeetle_…

Я обнаружил, что библиотека WiFi, встроенная в IDE Arduino, вызывает проблемы (PS любая другая библиотека WiFi, которая может быть установлена в вашем каталоге библиотеки, может вызывать или не вызывать проблемы). Единственный способ (или, по крайней мере, самый простой), который я нашел для решения проблемы, - это удалить библиотеку WiFi из каталога IDE. К сожалению, нет хорошего способа сказать вам, где он может быть установлен - это зависит от того, как установлена IDE и от какой ОС вы используете.

Что я сделал, так это обнаружил библиотеку WiFi, которая вызывает проблемы, и просто переместил каталог WiFi на рабочий стол… и перезапустил среду IDE. Таким образом, вы можете сохранить библиотеку на случай, если она вам понадобится для плат Arduino WIFI.

90% проблем, которые я видел, были связаны с вышеуказанной проблемой. Если вы получаете много ошибок компиляции, связанных с использованием WiFi из каталога Arduino IDE или каталога библиотеки Arduino, это ваша проблема.

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

И, наконец, если вы открыли последовательную консоль, а затем закрыли ее - FireBeetle зависает.

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

* Espressif имеет «общий» менеджер ядра, который можно установить, ядро действительно включает плату FireBeetle ESP32, но у меня возникла проблема с тем, как пронумерованы контакты. Интересно то, что библиотека WiFi работает со встроенной библиотекой WiFi, поэтому я знаю, что решение этой проблемы не за горами.

Если вы хотите попробовать ядра Espressif, вы можете найти дополнительную информацию здесь:

github.com/espressif/arduino-esp32

Мне лично нравится, как работает ядро DF-Robot, даже с некоторыми проблемами, которые у меня возникают.

** ПРИМЕЧАНИЕ. Я использую LinuxMint 18, основанный на Ubuntu 16.04. Я думаю, я не пробовал это ни на одной другой машине, но я считаю, что проблема присутствует во всех операционных системах, основываясь на некоторых поисковых запросах в Интернете. **

Шаг 3. Установите общие библиотеки для проектов

Установите общие библиотеки для проектов
Установите общие библиотеки для проектов

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

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

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

www.arduino.cc/en/guide/libraries

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

Все эти проекты используют WiFi Manager, чтобы упростить подключение к вашему Wi-Fi - я решил сделать это, чтобы, если вам нужно переместить свой проект, вам не нужно перепрограммировать плату. Это то, что я использую для плат ESP8266, и он работает хорошо - не идеально. Удачи в использовании. Библиотека была перенесена на использование ESP32 пользователем github по имени bbx10. (Этот менеджер также должен работать с платами ESP8266)

Для этого нам нужно установить три библиотеки.

WiFiManager -

Веб-сервер -

И, наконец, DNSServer -

Также для всех эскизов характерна библиотека DF Robot DFRobot_HT1632C для светодиодной матрицы.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Библиотеку можно найти здесь (опять же, я бы порекомендовал ручную установку)

github.com/Chocho2017/FireBeetleLEDMatrix

Особое замечание: в моем репозитории github - у меня есть пара слегка измененных библиотек DFRobot_HT1632C

github.com/kd8bxp/DFRobot-FireBeetle-ESP32…

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

Если вы решите использовать слегка измененную версию, вам необходимо переименовать каталог «modified-library» в FireBeetleLEDMatrix и переместить эту папку в каталог библиотеки Arduino. Вам не обязательно использовать эту версию для этих проектов, она необходима, если вы хотите попробовать некоторые из более мелких шрифтов из бонусных примеров.

Это общие библиотеки - мы будем устанавливать определенные библиотеки для каждого проекта.

Перейдем к светодиодной матрице….

Шаг 4: крышка светодиодной матрицы 24x8

Крышка для светодиодной матрицы 24x8
Крышка для светодиодной матрицы 24x8
Крышка для светодиодной матрицы 24x8
Крышка для светодиодной матрицы 24x8
Крышка для светодиодной матрицы 24x8
Крышка для светодиодной матрицы 24x8

Потому что мы будем следовать руководству DF Robot Tutorial для светодиодной матрицы.

www.dfrobot.com/wiki/index.php/FireBeetle_…

Введение: Этот светодиодный матричный дисплей 24 × 8 специально разработан для серии FireBeetle. Он поддерживает режим низкого энергопотребления и прокручиваемый дисплей. Благодаря высокопроизводительному чипу драйвера светодиода HT1632C каждый светодиод имеет независимый регистр, что упрощает управление отдельно. Он включает в себя тактовую частоту RC с частотой 256 кГц, всего 5 мкА в режиме низкого энергопотребления, поддерживает регулировку яркости PWM по 16 шкалам. Этот продукт также работает с другим микроконтроллером Arduino, таким как Arduino UNO.

Технические характеристики:

  • Рабочее напряжение: 3,3 ~ 5 В светодиод
  • Цвет: один цвет (белый / синий / желтый / красный / зеленый)
  • Чип привода: HT1632C
  • Рабочий ток: 6 ~ 100 мА
  • Низкое энергопотребление: 5uARC
  • часы: 256 кГц
  • Выбор микросхемы (CS): выбор D2, D3, D4, D5
  • Поддержка прокрутки дисплея

PIN-коды по умолчанию:

  1. DATAD6
  2. WRD7 (обычно не используется)
  3. CSD2, D3, D4, D5 по выбору (D2 по умолчанию)
  4. RDD8
  5. VCC 5VUSB; 3.7VLipo Батарея

(Все эти проекты используют D2 для выбора вывода, это можно легко изменить при необходимости.)

На задней панели светодиодной матрицы вы увидите 4 маленьких переключателя, убедитесь, что вы выбрали только один из контактов CS. С помощью этих маленьких переключателей вы выбираете свой вывод CS, значение по умолчанию - D2.

В WIKI DF Robot есть пример кода, этот код также есть в примерах для библиотеки. (Я считаю)

Еще одно примечание: используйте номера Dx для ваших контактов - в противном случае номера контактов будут номерами / именами контактов ввода-вывода.

И это может вызвать у вас проблемы.

Установка точки:

X составляет от 0 до 23 (или, если вы думаете об этом как о электронной таблице, это столбцы).

Y составляет от 0 до 7 (или, если вы думаете об этом как о электронной таблице, это строки).

Библиотека предоставляет функцию уставки.

display.setPoint (x, y) это установит курсор в то место, где теперь вы можете распечатать сообщение.

display.print («Привет, мир», 40); // это заставит дисплей отображать «Hello World», начиная с точки x, y и прокручивая экран.

Также есть setPixel (x, y) и clrPixel (x, y) - setPixel включит один светодиод в местоположении x, y, а clrPixel выключит светодиод в местоположении x, y.

Есть еще кое-что, что может делать эта библиотека, и большинство из них включено в примеры.

(Я бы порекомендовал запустить и изменить примеры, чтобы увидеть, на что он способен).

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

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

Однако одна из модифицированных библиотек, которые я включил, использует шрифт 5x4.

Переходим к проектам…..

Шаг 5: Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или дисплеем AMPM

Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или дисплеем AMPM
Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или дисплеем AMPM
Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или дисплеем AMPM
Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или дисплеем AMPM
Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или дисплеем AMPM
Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или дисплеем AMPM

Проект 1: простые светодиодные матричные часы NTP с дисплеем военного времени или AMPM, Эти часы будут подключаться к NTP (серверу времени), захватывать время и применять смещение, чтобы вы получали местное время. Время будет отображаться на светодиодной матрице. - Это очень простые часы, и очень простой 1-й проект.

Прежде чем мы начнем с этого простого проекта, может быть хорошей идеей узнать, что такое NTP -

NTP - это интернет-протокол, используемый для синхронизации часов компьютеров по некоторой временной привязке. Это стандартный протокол. NTP означает протокол сетевого времени.

NTP использует UTC в качестве эталонного времени (UTC - это всемирное координированное время), оно эволюционировало от GMT (время по Гринвичу), и в некоторых кругах оно называется Zulu Time (военное время). UTC основан на квантовом резонансе атома цезия.

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

*

Часы по всемирному координированному времени не очень полезны для большинства людей, поэтому нам нужно настроить часы на местное время. К счастью, мы можем сделать это довольно легко. Итак, давайте начнем с этих простых часов NTP….

Во-первых, нам нужно установить библиотеку, которая упрощает общение с серверами NTP.

github.com/arduino-libraries/NTPClient (эта библиотека, вероятно, находится в диспетчере библиотек)

Вы пропустили шаг 3 - и не знаете, как установить библиотеки (?) Лучше вернитесь и прочтите шаг 3:-)

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

www.epochconverter.com/timezones

Когда вы нажмете Enter, вы увидите «Результаты преобразования», и в результатах вы увидите свое смещение (разницу в GMT / UTC) в секундах (для меня это -14400).

В скетче dfrobot_firebeetle_led_matrix_ntp_clock в строке 66 вы увидите:

#define TIMEOFFSET -14400 // Найдите смещение часового пояса здесь https://www.epochconverter.com/timezones OFF Установить в секундах # define AMPM 1 // 1 = AM PM время, 0 = MILITARY / 24 HR Time

замените -14400 своим смещением. В следующей строке вы увидите AMPM 1 - это заставит часы отображать время в AM / PM - если вы предпочитаете видеть его через 24 часа, сделайте единицу равной нулю.

Затем загрузите эскиз на свою доску, подключитесь к точке доступа (менеджер Wi-Fi) и введите данные для своего Wi-Fi. ЕСЛИ вы уже сделали это, вы должны увидеть «подключенный» прокрутку по экрану, а через несколько секунд вы должны увидеть время.

Вот и все для этого проекта - простой и легкий в использовании…..

(Возможные улучшения: отображение месяца, дня и года, установка зуммера и сигналов тревоги - обычно управляйте тем, что вы видите через веб-страницу. Эта идея потребовала бы большого переписывания текущего простого эскиза)

Готов к другому простому проекту - Показать, где находится МКС - Прогнозы пройдены и сколько людей находится в космосе! (PS этот скетч действительно использует веб-страницу для управления тем, что отображается)…..

Шаг 6: Проект 2: Отображение прогноза прохождения ISS,

Проект 2: Дисплей прогноза прохождения МКС,
Проект 2: Дисплей прогноза прохождения МКС,
Проект 2: Дисплей прогноза прохождения МКС,
Проект 2: Дисплей прогноза прохождения МКС,
Проект 2: Дисплей прогноза прохождения МКС,
Проект 2: Дисплей прогноза прохождения МКС,

Проект 2: Дисплей прогноза прохождения ISS, в этом проекте используется 2-е ядро процессора. Он покажет, насколько близко (в милях) находится МКС, когда ожидать следующего прохождения МКС в вашем местоположении (по времени UTC) и, возможно, сколько людей находится в космосе. Поскольку большая часть этой информации не меняется часто, мы используем 2-е ядро только для проверки обновлений прогнозов прохождения или количества людей в космосе каждые 15 минут. Таким образом мы можем предотвратить слишком много вызовов API к серверу. Этот проект немного сложнее, но все же довольно прост.

Этот проект основан на одном из моих более ранних проектов, который можно найти здесь:

(Простая система уведомлений ISS) В этом случае я использовал ESP8266 со встроенным OLED-экраном (D-Duino). По большей части в этом проекте просто используется другая система отображения, я расширил ее, чтобы вы могли изменять то, что хотите видеть на лету, через веб-страницу. Итак, приступим….

Большая заслуга в простоте использования принадлежит https://open-notify.org, который имеет очень простой и легкий в использовании API. В API open-notify есть три вещи, которые могут отображаться: местоположение МКС по широте и долготе, передавать прогнозы на основе заданной широты и долготы. И наконец, сколько людей (и их имен) находится в космосе.

Нам потребуется установить еще одну библиотеку - библиотеку ArduinoJson.

github.com/bblanchon/ArduinoJson

Нам также нужен TimeLib.h, но я не уверен, откуда он у меня и включен ли он в IDE (извините)….

Так зачем предсказывать, где будет МКС - МКС содержит различное любительское радиооборудование, и когда оно находится "над головой", радиолюбитель может установить контакт с МКС, используя очень простые (и дешевые) радиоприемники. Я даже делал это в мобильном (за рулем машины). Вам действительно не нужно много, чтобы эта работа работала. Единственное, что вам нужно, - это знать, где он находится. И направление антенны в общем направлении помогает.

Строки 57, 58, 59 - это некоторые отображаемые переменные - если они установлены в 1, вы увидите дисплей, если они установлены в 0 (ноль), вы не увидите дисплей. (Эти переменные могут быть установлены в эскизе или обновлены с веб-страницы, которую создает firebeetle - подробнее об этом позже).

int locDis = 1; // Отображение местоположения ISSint pasDis = 0; // Отображение прогнозов прохождения int pplDis = 1; // Отображение людей в космосе

поэтому locDis будет отображать местоположение МКС по широте и долготе - он также показывает, сколько миль она находится.

pasDis получит прогнозы прохождения с open-notify.org и отобразит их.

и, наконец, pplDis отобразит имена и количество людей в космосе - это может быть очень длинным, это не так.

тоже часто меняются. (вы можете изменить их или оставить, это совершенно необязательно)

Также нам нужно знать нашу широту и долготу и нанести их на эскиз.

Это не обязательно должно быть точное широта / долгота, это может быть центр вашего города или совсем немного. След от МКС широк, пока он над головой, и можно преодолеть сотни (или тысячи) миль, поэтому небольшое отклонение от широты / долготы не будет препятствием для сделки (в большинстве случаев), общение на расстояние более 500 миль - обычное дело.

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

www.latlong.net Рядом с строкой 84 скетча вы увидите что-то вроде этого:

// Найдите здесь свою широту и долготу // https://www.latlong.net/ float mylat = 39.360095; float mylon = -84,58558;

Это должно быть все, что нужно изменить. Загрузите эскиз и подключите Firebeetle к Интернету - и вы должны увидеть местоположение МКС, указанное в широте и долготе, и сколько миль от нее (помните, что это приблизительное расстояние. МКС движется очень быстро, и к моменту завершения отображения МКС отошла на много миль от того места, где была). Вы также должны увидеть людей в космосе. (ЕСЛИ вы не меняли указанную выше переменную).

Мы используем второе ядро ESP32 для запуска веб-сайта, использование сайта дает нам контроль над тем, что отображается на светодиодной матрице. Он должен быть довольно интуитивно понятным в отношении того, как это работает, в одном разделе показано, что включено для отображения, в другом разделе есть кнопки «да» и «нет» - нажатие «да» означает, что вы хотите его увидеть, «нет» означает, что не нужно не показать это. Вы также должны увидеть, что верхняя часть меняется в зависимости от кнопок.

Единственное, что здесь не так уж и сухо, - это как найти IP-адрес Firebeetle - к сожалению, я не смог придумать хороший способ его найти - поэтому я просто использовал последовательную консоль IDE для отображения it (9600 бод).

Откройте консоль, и вы должны увидеть IP-адрес. (откройте его до того, как вы получите сообщение о подключении) - другим моим вариантом было отобразить его на светодиодной матрице один раз прямо при запуске - я решил этого не делать, потому что вы можете не смотреть в это время, и вы его пропустите. Я думал отправить смс или что-то в этом роде, но, в конце концов, я просто стараюсь. (Я также пытался назначить статический IP / шлюз и т. Д., Я не мог заставить его работать правильно с менеджером Wi-Fi - код все еще в скетче, поэтому, если кто-то выяснит, дайте мне знать)

Скетч также продвигает встроенную FreeRTOS в ядро ESP32 - у нас есть задача, которая выполняется каждые 15 минут или около того, она обновляет прогнозы прохождения, а также людей в космосе. Как я уже сказал ранее, люди в космосе не так сильно меняются, так что, вероятно, это можно было бы перенести на другую задачу и, возможно, запускать один раз каждые 12 часов (или 6 часов) - но это работает и упрощает работу.

Для тех, кто не знает, FreeRTOS - это способ позволить одноядерному микроконтроллеру выполнять несколько задач.

Обычно вам нужно включать некоторые библиотеки и другие вещи, чтобы он работал, но он встроен в ядро ESP32, что делает ESP32 очень мощным устройством. для получения дополнительной информации о FreeRTOS

freertos.org/

УЛУЧШЕНИЯ: есть ряд вещей, которые можно улучшить для этого проекта, и почти каждый день я думаю о чем-то, что можно было бы сделать немного по-другому, или изменить, или добавить.

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

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

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

Улучшенный способ получить IP-адрес - это еще кое-что, что я хотел бы сделать (все еще думаю об этом)

Перейдем к нашему следующему проекту…..

Шаг 7. Проект 3: простой движущийся знак сообщения с использованием MQTT

Проект 3: простой движущийся знак сообщения с использованием MQTT
Проект 3: простой движущийся знак сообщения с использованием MQTT
Проект 3: простой движущийся знак сообщения с использованием MQTT
Проект 3: простой движущийся знак сообщения с использованием MQTT
Проект 3: простой движущийся знак сообщения с использованием MQTT
Проект 3: простой движущийся знак сообщения с использованием MQTT

"loading =" ленивый "" loading = "ленивый"

Бонусная часть 2 - Отображение изображений
Бонусная часть 2 - Отображение изображений
Бонусная часть 2 - Отображение изображений
Бонусная часть 2 - Отображение изображений
Бонусная часть 2 - Отображение изображений
Бонусная часть 2 - Отображение изображений

Итак, оказывается, что библиотека может отображать изображения - вы по какой-то причине эта функция кажется «частной» - ну, для следующих скетчей я еще раз изменил библиотеку и сделал drawImage общедоступной функцией.

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

*** Я планирую отправить это изменение в DFRobot, так как это действительно очень круто и отчасти изящно иметь возможность делать такие наброски ***

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

xantorohara.github.io/led-matrix-editor/ - похоже, работает нормально, создает изображения 8x8, и вы хотите их в виде байтовых массивов.

www.riyas.org/2013/12/online-led-matrix-fo… этот работает хорошо и имеет возможность делать дисплеи размером более 8x8, дисплей, кажется, повернут на его стороне с этим дисплеем тем не мение. Здесь лучше всего работают байтовые массивы. Я использовал его для создания «космических захватчиков», показанных на видео выше.

Так, как это работает, drawImage (const byte * img, uint8_t width_t, uint8_t height_t, int8_t x, int8_t y, int img_offset);

переменная массива байтов изображения, ширина изображения (8), высота изображения (8), начальная позиция на экране x (0), y (0) обычно и номер смещения, который я не На 100% уверен, что он делает, поэтому большую часть времени я оставлял его на нуле.

В скетче LED Matrix Images есть 8 различных байтовых массивов с тремя разными методами.

- фейерверки - это первые массивы, честно говоря, я не уверен, как это работает - но он работает.

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

За ним следует первый marioImg - он слишком велик для дисплея, и я думаю, что здесь вступает в игру смещение - я использовал его здесь, и вы можете увидеть переднюю часть марио, если вы измените смещение на 1 you ' Увидим его спину. (вы, я действительно не могу сказать вам, почему или что делает смещение. Кажется, что изображение сдвигается, но почему 2 сдвигает его так, чтобы вы могли видеть его спереди, и почему 1 сдвигает в другом направлении, я не могу вам сказать)

ИЗОБРАЖЕНИЯ - байтовый массив - это знак @, который я сделал - похоже, что я сделал с помощью инструмента на

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

mario2Img - это моя собственная версия большего Марио, сделанная для размера экрана 8x8 - и вы видите, что один или два пикселя неуместны (моя вина, а не дисплеи), он действительно похож на маленького Марио (вроде как).

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

В справочнике есть два эскиза фейерверков, каждый немного отличается, и его стоит попробовать.

В одном фейерверк движется по экрану, поэтому немного больше / другая анимация … в другом одновременно отображаются два фейерверка.

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

Еще больше: в каталоге тестирования репозитория есть несколько набросков - большинство из них работали не совсем так, как я хотел, или были идеями, которые я хотел реализовать, но не работали так, как я хотел. Я оставил их, потому что у кого-то есть идеи * (я сделал небольшой «щит» с пикселем WS2812 на нем для использования с дисплеем ISS, но я подключил его к линии 3v, и мне просто не хватило мощность при работающей светодиодной матрице, пиксель работал нормально, без светодиодной матрицы ты, так что есть еще кое-что, что я мог бы с ней сделать) *

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

Надеюсь, вам понравилось это руководство так же, как мне понравилось создавать эти проекты:-)

Шаг 11: Ссылки…

Этот проект спонсировался и поддерживался DF Robot. Воспользуйтесь ссылками ниже для продуктов:

Firebeetle ESP32 -

Крышка Firebeetle LED Matrix 24x8 -

Мой репозиторий кода:

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

www.patreon.com/kd8bxp

Библиотека NTPClient

ArduinoJson.h

Библиотека погоды ESP8266

Библиотека Json-Streaming-Parser

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