️ Это программное обеспечение по умолчанию передает на 915 МГц ISM Band Legal в Соединенных Штатах. Передача этой группы может не быть законным в вашей стране.
Как скомпилировать
$ git clone --recurse-submodules https://github.com/jpaximadas/YeeNet.git
$ cd YeeNet
$ git config core.hooksPath git-hooks # Only necessary if you plan on contributing
$ export YEENET_BOARD=BLUEPILL_F103
$ make -C libopencm3
$ make -C src
Если у вас есть более старый GIT, или вы опередили себя и пропустили --recurse-submodules вы можете исправить ситуацию, запустив git submodule update --init
Если вы нацелены на доску разработки, кроме STM32 «Синяя таблетка», соответственно измените yeenet_board. Список поддерживаемых досок, см. Поддерживаемые доски
Последующие изменения в исходных файлах требуют только make -C src
Как загрузить
В этом репозитории используется инструмент программирования STLINK с открытым исходным кодом STM32 MCU: https://github.com/stlink-org/stlink
- Убедитесь, что Boot0 не установлен так, чтобы плата стерела память после сброса
- Убедитесь, что SWDIO, SWCLK и GND подключены к MCU (подключите только 3.3V, если вы намереваетесь включить плату от программиста)
- Программируйте чип:
Openocd является альтернативой STLINK, но не поддерживается make upload .
Как отлаживать
После того, как бинар был загружен, запустите следующее в каталоге SRC:
- Запустить сервер GDB
- В другом терминале-навязкой в SRC-старт GDB и настройка
$ gdb yeenet_router_firmware.elf
$ set processor armv7
$ target remote localhost:4242
$ load yeenet_router_firmware.elf
Дальнейший GDB на STM Reading:
https://www.st.com/resource/en/user_manual/dm00613038-stm32cubeide-stlink-gdb-server-stmicroelectronics.pdf
Обратите внимание, что этот PDF использует сервер GDB STMCube, а не stlink с открытым исходным кодом. Однако с точки зрения клиента GDB нет разницы. Страница 6/15 PDF показывает, как использовать точки останова и точки наблюдения.
Как использовать серийный интерфейс
Здесь есть серийные драйверы здесь: https://github.com/jpaximadas/yeenet-router-river-python
Каталоги
- SRC содержит программу
- Shared содержит общие файлы из LiboPencm3
Поддерживаемые доски
Yeinet стремится нацелиться на легко доступную и недорогие доски разработки STM32. См. Ниже для таблицы поддерживаемых целей и их соответствующего значения yeenet_board.
| Доска | Yeenet_board |
|---|
| Синяя таблетка STM32F103 | Bluepill_f103 |
| Черная таблетка STM32F411 | Blackpill_f411 |
Поддержка других плат может быть добавлена путем создания соответствующего определения платформы в platform/ и соответствующего обновления yeenet.mk .
Установка макета
В следующей таблице показано, как выводы на поддерживаемых платах разработки должны быть подключены к SX127X и USB к UART. Пожалуйста, прочитайте предупреждения в конце раздела, прежде чем пытаться сделать макет.
| Функция | Синяя таблетка/черная таблетка |
|---|
| Серийный TX | PA9 |
| Серийный RX | PA10 |
| IRQ | PA0 |
| Моси | ПА7 |
| Мисо | PA6 |
| SCK | ПА5 |
| CS/SS | А1 |
| Перстю | B9 |
| Адрес бит 0 | B10 |
| Адрес бит 1 | B11 |
- Serial TX/RX должен подключаться к чипу USB/UART.
- IRQ должен подключаться к DIO0 на SX127X. (Может быть называться D0 или G0 на доске прорыва)
- MOSI, MISO, SCK и SS должны подключаться от платы DEV к соответствующим контактам на прорыве SX127X.
- RST должен подключиться с платы DEV к соответствующему выводу на прорыве SX1276X.
- Биты адреса 0 и 1 должны работать с платы DEV до 3,3 В или земли.
️ Не питайте плату из более чем одного источника напряжения. Это повредит регулятору на печатной плате.
️ Включите плату DEV SX127X или SX127X только с 3,3 вольт. Расположение контактов выше маршрутов сигнализирует от SX127X в контакты чертежа, которые не являются устойчивыми на 5 вольт. Прорыв Adafruit Sx127x излучит 5 вольт логических сигналов и повредит чертеж, если он будет питаться с 5 вольт.
Рекомендуемый способ питания досок
- Включите чертеж из 5 вольт от USB до UART. BluePill будет регулировать это до 3,3 вольт для собственного использования. В качестве альтернативы, чертеж может быть включен с помощью 3,3 вольт от регулятора на USB до UART.
- Включите SX127X из приличного регулятора 3,3 вольт. Регулятор Vluepill 3,3 вольта не достаточно хорош для этой задачи. Используйте тот, что на USB для UART, если он присутствует.
- Оставьте 3,3 вольт на отключенном программисте ST-Link.
Тодо
- Работа над обработчиком пакетов
- Улучшить режим отказа, когда ACK прибывает поздно
- Как Acks влияют на обработчик пакетов при работе с безрезультатными пакетами
- Работает ли TX Snooze работает?
- Предотвратить NULL Packet_handler от NEREFERENCING TX_PKT NULL POINTER сразу после настройки при Rx'ting A NACK?
- Предоставьте функцию более высоких слоев для перемещения местоположения указателя RX_PKT в packet_handler
- Напишите пакет маршрутизатор
- Внедрить USB и сохранить функциональность UART
- Записать документацию
- Улучшить backoff_rng в packet_handler, чтобы он не быстро исчерпал энтропийный бассейн
- Улучшить организацию настройки оборудования
- Start Repo для пользовательского интерфейса (используйте дорогой imgui)
- Добавить функциональность sx127x fsk в modem_xl.c
Получение доски прорыва
Доска прорыва Adafruit может занять слишком много места, чтобы получить доступ ко всем выводам и может быть дорогой. Здесь вы можете получить голую доску для прорыва:
Радиомодуль RFM95 может быть получен из Aliexpress или Banggood за пять долларов за штуку.
Примечания
SX127X Примечания
- ПИН -код сброса на плате Adafruit Breakout должен проводиться низко, чтобы устройство функционировало, в отличие от инструкций на веб -сайте Adafruit.
- Сброс сброса должен быть на мгновение потянуть на мгновение, чтобы сбросить устройство при перезагрузке MCU. Это гарантии регистров сбрасываются в первоначальное состояние. Неспособность сделать это может вызвать странное поведение.
- Чтобы очистить регистр флагов IRQ, нули должны быть записаны дважды над SPI. Это аппаратная ошибка.
- При размещении SX127X в режим LORA он должен быть сначала положить в режим сна в первую очередь. Не в режиме ожидания или любых других режимов.
- Мастер SPI не может записать в FIFO за пределами режима резервного режима
- FIFO не всегда очищается во время изменения режима. Никогда не предполагайте, что FIFO автоматически очищается
- Явный режим заголовка в SF = 6 не работает. Функция конфигурации автоматической модуляции в этом программном обеспечении не отклонит эту конфигурацию модуляции.
- Этот код не касается байта «синхронизационного слова», который позволяет Лорасу автоматически отклонять пакеты.
Bluepill Dev Board Notes
- У светодиода PC13 на плате DEV «Bluepill» есть анод, привязанный к 3,3 вольт, и это катод, привязанный к PC13 (по какой -то причине). Это означает, что PC13 должен быть вытянут низко, чтобы включить светодиод.
- Не пытайтесь питать SX127X из питания Bluepill 3,3 вольта. Встроенный регулятор не может выполнить задачу во время RX или TX. Ваш SX127X пройдет и сбросит.
USB для uart Notes
- Использование платы Arduino с чипом USB -USB для USB в качестве устройства USB -UART - это не простая задача. То, что помечено как TX на печатной плате (но на самом деле RX с точки зрения Arduino) может быть помещено в 5 -вольт -толерантный TX -вывод вашей платы DEV. Здесь приходит тяжелая часть. То, что работает как RX на печатной плате (на самом деле TX с точки зрения Arduino), не будет работать, если вы просто подключите его к Pin Rx вашей платы DEV. Вам нужно припаять прямо в чип CH430. Проконсультируйтесь с таблицей данных, чтобы найти, где находится PIN -код CH430. Письмо в конце «CH430» многое важнее.
YEE: https://youtu.be/iepv31_e__4
