Обновления 8/10/2024, фиксированная попытка итератор, если соединение не сделано
Ebyte приемопередатчики
Эта библиотека предназначена для использования с Ebyte Tbyte Tbyte Tybyte Tybyte Trainceivers (например, E44-TTL-100), небольшими беспроводными единицами для MCU, таких как Teensy и Arduino. Эта библиотека позволяет пользователям запрограммировать операционные параметры и отправлять и получать данные. Эта компания производит несколько модулей с различными возможностями, но большинство #Defines здесь должны быть совместимы с ними, все константы были извлечены из нескольких листов данных и перечислены в двоичном изображении, так как именно так лист данных представлял каждую настройку. Надеемся, что любые изменения или дополнения к константам могут быть вопросом копирования констант листа данных непосредственно в #Defines. Использование этой библиотеки потребляет около 970 байтов.
Вам действительно нужна эта библиотека, чтобы запрограммировать эти единицы Ebyte.
Для чтения структур данных вы можете вызвать метод Readbytes непосредственно на серийном объекте Ebyte:
Eserial.readbytes ((uint8_t*) & mydata, (uint8_t) sizeof (mydata));
Для написания структур данных вы можете вызвать метод записи непосредственно на серийном объекте Ebyte
Eserial.write (((uint8_t*) & mydata, (uint8_t) sizeof (mydata));
EBYTE Model numbers (only a partial list shown) Old model number scheme E30-TTL-100,E30-490T20D, E31-TTL-100, E32-TTL-100, E32-TTL-500, E32-TTL-1W, E41-TTL-100, E41-TTL-100, E44-TTL-100, E44-TTL-500, E44-TTL-1W, E50-TTL-100, E50-TTL-500, E51-TTL-100, E51-TTL-500, E51-TTL-1W
New model number scheme E22-900T22S, E22-230T22S, E22-400T22S, E22-230T30S, E22-400T30S, E22-900T30S, E30-433T20S3, E30-170T20D, E30-170T27D, E30-780T20S, E30-868T20S, E30-868T20D, E30-915T20D, E30-490T20D, E30-433T20S, E30-433T20D, E30-915T20S, E30-490T20S, E31-433T30S, E31-433T17S3, E31-230T33D, E31-230T17D, E31-230T27D, E31-433T17S, E31-433T17D, E31-433T27D, E31-433T30D, E31-433T33D, E32-433T20DC, E32-433T20S, E32-433T20S2T20DC, E32-43T20S, E32-433T20S2T20S23T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2T20S2 E32-433T30D, E32-433T30S, E32-868T20D, E32-868T20S, E32-868T30D, E32-868T30S, E32-915T20D, E32-915T20S, E32-915T30D, E32-915T30S, E32-915T30D, E32-915-915T30S, E32-915T30D, E32-915-915T30S, E32-915T30D, E32-915-915T30S, E32-915T30D, E32-915-915T20S. E32-170T30D, E32-400T20S
Примечание. Проверьте веб -сайт Ebyte, чтобы убедиться, что выбранная модуль поддерживает коммуникации UART, некоторые модули являются только SPI.
Вот видео на YouTube об использовании библиотеки: https://youtu.be/hmjarkgucfa
Модульное соединение
Модуль MCU Описание
- МО любой цифровой вывод* для управления режимами работы/программы
- M1 Любой цифровой вывод* PIN -код для управления рабочими/программиру
- RX любой цифровой вывод* PIN -код MCU TX (модуль передает в MCU, следовательно, MCU должен получать данные от модуля
- TX любой цифровой вывод* PIN -код MCU RX (модуль передает в MCU, следовательно, MCU должен получать данные от модуля
- Aux любой цифровой штифт, чтобы указать, когда операция завершена (низкий уровень занят, высокий) (вы можете опустить с -1, но фиксированное время восстановления используется и может быть недостаточно длинным, чтобы завершить операцию)
- VCC +3V3 или 5V0, обратите внимание, что единицы могут работать теплее с 5V0 и потреблять больше энергии
- Земля VCC должна быть общей для модуля и MCU
примечания
- Внимание в подключении к Arduino Pin 0 и 1, поскольку эти контакты предназначены для USB -соединения с ПК, поэтому вы не можете подключить Ebyte во время программирования. Я рекомендую не использовать Arduino Pins 0 и 1
- Линии сигналов для этих единиц составляют 3V3, но стоят 5 вольт, однако 5 вольт могут привести к сбоям связи. При использовании 5 -вольт MCU, такого как Arduino, вам может потребоваться сделать следующее. A) Вам может потребоваться подтягивание 4K7-10K в RX и AUX-контакты (возможно, TX), если использование и Arduino B) При использовании Arduino вам может потребоваться резистор серии 4K7 между MCU TX и трансивером RX.
- В некоторых из моих приложений у меня не было достаточно цифровых контактов, чтобы подключить штифт AUX. Не беспокойтесь (просто передайте -1 в списке аргументов в объекте Create Code). Библиотека имеет встроенную задержку, чтобы обеспечить соответствующую задержку, чтобы завершить передачу-вам, возможно, придется экспериментировать с суммой.
- Последовательные контакты для соединения зависят от MCU, Teensy 3.2 Например: Serial1 являются Rx = 0, Tx = 1, Serial2 Rx = 9, Tx = 10, Serial3 Rx = 7, Tx = 8. Arduino может быть наиболее последовательными булавками, используя Softwareserial (MCU_RX_PIN, MCU_TX_PIN), за исключением контактов 0 и 1, как это для использования USB
- Некоторые MCU, такие как Teensy, и ESP32, не позволяют использовать Softwareserial для создания порта связи. Не беспокойтесь, просто жесткий провод Ebtye к выделенному порту UART (контакт 0 и контакт 1 на подростке 3.2 для Serial1.
Сайт производителей
http://www.ebyte.com/en/ Пример модуля Эта библиотека предназначена для использования с http://www.ebyte.com/en/product-view-news.aspx?id=174
Общее использование кода
- Создать серийный объект
- Создать объект ebyte, который использует серийный объект
- начать серийный объект
- init () объект Ebyte
- Установите параметры (необязательно, но требуется, если отправитель и приемник разные)
- Отправить или прослушать отправленные данные (один байт) или создать и отправить структуру данных
Советы по использованию
Для лучшего диапазона:
- Лист данных показывает, что наилучшие результаты - с антеннами 2 метра от земли
- Линия обзора идеален, но мое личное тестирование, передача все еще успешна с некоторыми препятствиями
- Медленные показатели передачи данных могут улучшить диапазон, но из -за более длительного времени передачи, как часто можно отправлять данные
- Рассмотрим антенны с высоким усилением (могут быть приобретены у производителя) см. На их веб -сайте подробно
- В листе данных говорится, что для максимального диапазона питания единиц с 5,0 вольт (сохраните 3V3 на сигнальных линиях). Я лично обнаружил, что небольшой диапазон отличается от более высокого напряжения питания
- В листе данных говорится, что для максимального диапазона установите скорость передачи данных воздуха на 2,4 бит / с. Я лично обнаружил, что небольшой диапазон отличается с низкими показателями передачи данных, и низкие показатели передачи данных могут ограничить то, как часто вы можете отправлять данные.
Пакеты передачи данных
- Эта библиотека имеет метод отправки отдельных байтов, но если следует отправить больше данных, создайте структуру данных и отправьте структуру данных, используя метод библиотеков SendStruct (& struct, sizeof (struct)). ПРИМЕЧАНИЕ ПЕРЕДАЧА ПОСЛЕДНЕЙ REF, так что включите имя и перед структурой
- Опять же медленные скорости передачи данных занимают больше времени, вам нужно будет экспериментировать с идеальным диапазоном скоростей передачи данных на основе размера данных
- Если вам нужно отправлять данные, используя структуру между различными изменениями MCU о том, как каждый процессор, вероятно, будет отличаться. Если вы получаете поврежденные данные на приемлемости, есть способы заставить компилятора не оптимизировать упаковку Struct-я еще не заставил их работать. Что сработало для меня, так это использовать библиотеку, которая создает стойку и направляет отправку. Проверьте easytransfer.h (Google It и получите своего любимого автора). В этих LIBS вы будете использовать их метод отправки и получения struct (есть аппаратные и программные либера, используйте соответствующим образом. Это означает, что вы можете использовать эту библиотеку для программы и управления настройками, но используйте easytransfer для обработки посылки данных через последовательные строки, которые использует Ebyte. Звучит странно, но это не отличается от того, что Serial1.sendbytes (...). Это на самом деле, что это библиотека, возможно, в этом дне.
Отладка
- Если ваш беспроводной модуль возвращает все 0 для метода PrintParameters () или только для модели, и вы используете аппаратный сериал и используете ESP32, убедитесь, что вы используете полное последовательное определение в операторе begin ()
#include <hardwareserial.h>
#define serial_0 serial2
Serial_0.begin (9600, serial_8n1, 16, 17);
- Если ваш беспроводной модуль возвращает все 0 для метода PrintParameters (), убедитесь, что ваша проводка верна и работает, MCU RX необходимо подключиться к Ebyte TX и наоборот. Также убедитесь, что M0, M0 и AUX подключены к действительным цифровым портам. Большинство проблем связаны с неправильными подключениями к линии данных
- Если ваш беспроводной модуль возвращает все 0 для метода PrintParameters (), и вы уверены, что ваша проводка верна, ваш модуль может медленно реагировать на изменение PinMode, выполненное во время изменения режима. В таблице данных говорится, что задержка 2 мс необходима, но я обнаружил, что 10 мс более надежна. С некоторыми подразделениями необходимо еще больше времени. По умолчанию библиотеки составляет 50 мс, но увеличивайте это в файле .h, если параметры не считываются правильно.
- Если ваш беспроводной модуль возвращает все 0 для метода PrintParameters (), и вы уверены, что ваша проводка верна, а ваш MCU составляет 5V0, вам, возможно, придется добавить разделители напряжения на линии MXU TX и AUX. Эти модули могут быть привередливыми, если на него отправляется сигнал 5V0. Я получаю очень надежные результаты при питании модуля отдельным источником питания 3V3. Я обычно использую конвертеры Buck или линейные регуляторы.
- При использовании 5V0 MCU вам могут потребоваться просто серии резисторов на линии MCU TX до линии Ebyte RX и, возможно, линии M0 и M1. Эти единицы Ebyte должны быть устойчивы к 5 вольт, но лучше, чем сожалеть. Также MFG утверждает, что на линии MCU TX и Aux могут потребоваться 4K7. Я использовал эти приемопередатчики на UNO, Mega's и Nano без каких -либо резисторов, и все было хорошо. У меня был один случай, когда нано не работал с этими трансиверами и требовал нечетного питания.
- Если вы используете их единицы 1 Вт (выходной сигнал 30 дБ), питайте устройство отдельно от бортового источника питания MCU. Текущий розыгрыш может превышать встроенный рейтинг, что приводит к уничтожению MCU. Я уничтожил встроенный регулятор напряжения на Nano, пытаясь питать 1 Вт.
- Если передатчик и приемник являются разными MCU (Arduino <--> Teensy), отправка структур данных платит пакет по-разному, независимо от типов структурных данных. Это связано с тем, как 8-битный процессор и 32-битный процессор обрабатывают процесс упаковки. Вариант 1) - использовать EaStransfer Lib. Я использую эту LIB, и это хорошо работает. Вариант 2) Попробуйте __attribute __ (((упакованный)) атрибут переменной. Вариант 3) и не смейтесь, но при отправке поплавка с учетом умножения поплавка на 100 (и повторно на int), то разделите это значение на 100 на приемном конце (переосмысливая на поплавок)
- Если вы, кажется, получаете коррумпированные данные от .printparameters, попробуйте добавить #include "avr/io.h" к вашей программе .ino
- Если вы питаете свои модули Ebyte из отдельного источника питания, убедитесь, что все основания подключены