Привет, ютюберы! это опять парень
со швейцарским акцентом. Некоторые из моих
зрителей спрашивают меня, как я могу использовать
Nextion с esp8266 или Arduino Uno?
Те, кто смотрел мои видео с номерами 56 и
59, знают, что я использовал Arduino Mega в
моих тестах, поскольку она имеет больше
одного последовательного порта, так что я мог
подсоединить мой дисплей Nextion к первому и
использовать второй для отладки.
Другие платы Arduino, включая Uno,
поддерживают только один последовательный порт, и esp8266
имеет два, но один из них не совсем полноценный.
В этом видео я покажу вам, как
использовать Nextion дисплей и на этих
платформах. Начнем со стандартной
библиотеки Nextion. Она поддерживает два последовательных
соединения - одно для самого дисплея
и одно для отладки. Задание
обоих соединений
делается в файле nexConfig.h в
папке ардуиновской библиотеки. Вы
можете открыть nexConfig.h в
своем любимом текстовом редакторе.
В нем вы найдете три важных для данного видео
определения констант. Первое - DEBUG_SERIAL_ENABLE,
второе - nexSerial и третье - dbSerial.
Для Arduino Mega мы определяли DEBUG_SERIAL_ENABLE,
задавали nexSerial равным Serial2
и dbSerial равным Serial.
Таким образом Nextion был подсоединен ко второму порту
и мы могли видеть отладочные
сообщения в мониторе последовательного порта. Если вы не
задавали DEBUG_SERIAL_ENABLE, или просто закомментировали эту определение,
то вы не получали никаких отладочных сообщений
и могли жить с одним последовательным портом.
Я покажу вас как это сделать для Arduino
Uno. Файл nexConfig.h должен
выглядеть следующим образом: мы "закомментируем" определение
DEBUG_SERIAL_ENABLE, зададим
nexSerial равным Serial, а значение dbSerial неважно,
поскольку DEBUG_SERIAL_ENABLE не
незадано. Чтобы быть уверенным, что мы не поимеем
проблем впоследствии, мы зададим его равным последовательному
порту, который не существует на этой плате.
Для Arduino Uno это Serial1 или
Serial2. В нашей программе мы также должны
"закомментировать" все вызовы методов dbSerial. Поскольку мы
задали dbSerial равным несуществующему
последовательному соединению, компилятор поможет нам
найти все эти вызовы поскольку мы получим ошибки,
если забудем "закомментировать" какое-нибудь
из них. Для наших тестов я использую
пример из видео номер 59. Я соединил
десплей Nextion с пинами RX и TX
и обратите внимание что, я соединяю RX
Arduino с TX дисплея и
наоборот. Сейчас я попробую загрузить
программу. Она компилируется, но, к сожалению,
не загружается! Я только получаю сообщения
об ошибках. Почему это происходит? Сердцем нашего
Arduino Uno является микросхема Atmega328p.
Поскольку в нем нет USB порта,
Плата Uno содержит микросхему конвертора USB-to-Serial,
которая соединена с
с пинами последовательного порта RX и TX
микроконтроллера. Если мы соединим наш дисплей Nextion
с нашей Arduino Uno, то мы будем использовать
в точности те же пины. Поскольку 328p допускает
единственное последовательное соединение, то в этом случае
мы имеем конфликтующие сигналы, поступающие
на одни и те же пины, что ломает все
коммуникации. Простым решением
проблемы будет отсоединение
дисплея Nextion на время загрузки программы.
Сейчас все отработало правильно. После загрузки
просто присоединим дисплей заново.
Поскольку от USB больше не поступает сигналов,
дисплей раьотает как
положено. Если мы посмотрим на монитор
последовательного порта, мы даже увидим "сырые" сообщения
приходящие от дисплея. Такой же в точности
сценарий работает для esp8266.
Здесь мы также соединяем  Nextion с
пинами RX и TX и также должны
отключать дисплей на время загрузки программы.
Я называю это "промышленный образец", это версия
моих устройств, которые уже
отлажены и используются в реальной
среде. При таком сценарии я не хочу
производить какие-либо отладочные сообщения. Но если
наша программа еще пока не работает и нам нужна
какая-нибудь отладочная информация, то в этом случае
нам надо найти какий-то способ получить второй
последовательный порт для отладки!
Для Arduino возможно
создать второй последовательный порт,
используя библиотеку SoftwareSerial.
С этой библиотекой вы можете задать два других
пина в качестве RX и TX для отладки.
К сожалению, у меня не получилось заставить
SoftwareSerial работать с библиотекой Nextion
так что единственная возможность, которую я нашел -
запретить отладочные функции
в библиотеке Nextion, создать новый последовательный
порт прямо в нашей программе и положить
пины равными 2 и 3. Я назвал этот
порт debugSerial. Теперь мы можем печатать
какие-нибудь отладочные сообщения. Чтобы показать
сообщения мы должны соединить пин 3 с
последовательным адаптером и установить маленькую
программу, например, putty на наш компьютер.
Так мы будем видеть отладочные сообщения и
к тому же мы все еще спосбеы видеть "сырые"
сообщения, идущие из дисплея Nextion, в
в нашем мониторе последовательного порта.
Таким образом мы можем отлаживать нашу программу.
А как мы можем соединить дисплей с ESP? esp8266, подобно
Arduino Mega имеет два последовательных
соединения.
К сожалению, один из пинов второго порта
не может быть использован, поскольку
он соединен внутри с flash памятью.
Но для нас хорошо, что пин, который нельзя
использовать - это RX, так что нам все еще доступен TX пин
чтобы производить наши отладочные сообщения.
Базовые установки в этом случает такие же, как для
Arduino Uno. То есть, соединяем дисплей
с последоваттельным портом Serial, а для отладки используем
Serial1. Пин TX1 - это или gpio2 на
модулях ESP12, или D4 на плате
NodeMCU. И опять мы должны
отсоединить дисплей Nextion во время
загрузки программы. Файл nexConfig.h выглядит так:
Мы оставляем определение DEBUG_SERIAL_ENABLE
и задаем nexSerial равным Serial
dbSerial теперь равен Serial1.
Используя этот метод мы можем теперь применять
дисплеи Nextion во всех наших проектах на Arduino
и esp8266. Спасибо, что посмотрели.
Надеюсь, что это видео было полезным или, хотя бы
интересным для вас. Пока!
