️ Este software predeterminado se transmite en la banda ISM de 915MHz Legal en los Estados Unidos. Transmitir en esta banda puede no ser legal en su país.
Cómo compilar
$ 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
Si tiene un GIT más antiguo, o se adelanta y se salta los --recurse-submodules puede arreglar las cosas ejecutando git submodule update --init (esto solo es necesario una vez)
Si se dirige a la placa de desarrollo que no sea la "píldora azul" STM32, cambie Yeenet_Board en consecuencia. Para una lista de tablas compatibles, ver tableros compatibles
Los cambios posteriores a los archivos de origen solo requieren make -C src
Cómo subir
Este repositorio utiliza el conjunto de herramientas de programación MCU STLink Open Source STM32: https://github.com/stlink-org/stlink
- Asegúrese de que Boot0 no esté configurado de manera tal que la placa borre la memoria después de un reinicio
- Asegúrese de que SWDIO, SWCLK y GND estén conectados a la MCU (solo conecte 3.3V si tiene la intención de alimentar la placa del programador)
- Programa el chip:
OpenOCD es una alternativa a stlink, pero no es compatible con make upload .
Cómo depurar
Una vez que se ha subido el binario, ejecute lo siguiente en el directorio SRC:
- Inicie el servidor GDB
- En otro terminal, todavía en SRC, inicie GDB y configure
$ gdb yeenet_router_firmware.elf
$ set processor armv7
$ target remote localhost:4242
$ load yeenet_router_firmware.elf
Más GDB en la lectura de STM:
https://www.st.com/resource/en/user_manual/dm00613038-stm32cubeide-stlink-gdb-server-stmicroelectronics.pdf
Tenga en cuenta que este PDF utiliza el servidor GDB STMCube, no el de código abierto Stlink. Sin embargo, desde la perspectiva del cliente GDB, no hay una diferencia. Página 6/15 del PDF muestra cómo usar puntos de interrupción y puntos de vigilancia.
Cómo usar la interfaz serie
Aquí hay controladores en serie en el desarrollo: https://github.com/jpaximadas/yeenet-router-driver-python
Directorios
- SRC contiene el programa
- Shared contiene archivos compartidos de libopencm3
Tableros compatibles
Yeenet tiene como objetivo apuntar a tableros de desarrollo STM32 fácilmente disponibles y de bajo costo. Consulte a continuación una tabla de objetivos compatibles y su valor yeenet_board correspondiente.
| Junta | Yeenet_board |
|---|
| Píldora azul stm32f103 | Bluepill_f103 |
| Píldora negra stm32f411 | BlackPill_F411 |
El soporte para otros tableros se puede agregar creando una definición de plataforma apropiada en platform/ y actualización de yeenet.mk en consecuencia.
Configuración de paneles
La siguiente tabla muestra cómo los pines en los tableros de desarrollo compatibles deben conectarse al SX127X y USB a UART. Lea las advertencias al final de la sección antes de intentar la placa de pan.
| Función | Píldora azul/alfiler de píldora negra |
|---|
| Serial TX | PA9 |
| Serial RX | PA10 |
| Irq | PA0 |
| Mosi | PA7 |
| Miso | PA6 |
| Sck | PA5 |
| CS/SS | A1 |
| Primero | B9 |
| Dirección bit 0 | B10 |
| Dirección bit 1 | B11 |
- Serial TX/RX debe conectarse a un chip USB/UART.
- IRQ debe conectarse a DIO0 en el SX127X. (Puede llamarse D0 o G0 en un tablero)
- MOSI, MISO, SCK y SS deben conectarse desde la placa de desarrollo a los pines apropiados en el ruptura SX127X.
- RST debe conectarse desde la placa de desarrollo al PIN apropiado en el ruptura SX1276X.
- Los bits de dirección 0 y 1 deben funcionar desde la placa de desarrollo a 3.3V o tierra.
️ No alimente la placa desde más de una fuente de voltaje. Esto dañará el regulador en la PCB.
️ Encienda la placa de desarrollo SX127X o SX127X con solo 3.3 voltios. El diseño de los pines de arriba rutiza las señales del SX127X en pines del bluepill que no son tolerantes a 5 voltios. La ruptura de Adafruit SX127X emitirá señales lógicas de 5 voltios y dañará el bluepill si se alimenta de 5 voltios.
Camino recomendado para alimentar las tablas
- Alimentar el bluepill de 5 voltios del USB a UART. El Bluepill regulará esto a 3.3 voltios para su propio uso. Alternativamente, el bluepill puede alimentarse con 3.3 voltios de un regulador en el USB a UART.
- Encienda el SX127X de un regulador decente de 3.3 voltios. El regulador de 3.3 voltios de Bluepill no es lo suficientemente bueno para la tarea. Use el de su USB a UART si está presente.
- Deje 3.3 voltios en el programador ST-Link desconectado.
HACER
- Trabajar en el controlador de paquetes
- Mejorar el modo de falla cuando llega un ACK tarde
- ¿Cómo afectan los ACK al controlador de paquetes cuando se trabaja con paquetes no acumulados?
- ¿Funciona la función de repetición de TX?
- Evitar que paquete_handler se desreference tx_pkt puntero nulo inmediatamente después de la configuración cuando rx'ing un nack?
- Proporcione la función de capas más altas para mover la ubicación del puntero RX_PKT en Packet_handler
- Escribir enrutador de paquetes
- Implementar USB y retener la funcionalidad UART
- Escribir documentación
- Mejore el backoff_rng en Packet_handler para que no agote la piscina de entropía rápidamente
- Mejorar la organización de la configuración de hardware
- Inicie el repositorio para la interfaz de usuario (use querido imgui)
- Agregue la funcionalidad SX127X FSK a Modem_XL.C
Obtener un tablero de ruptura
El tablero de ruptura de Adafruit puede ocupar demasiado espacio para acceder a todos los alfileres y puede ser costoso. Puede obtener un tablero de ruptura aquí:
El módulo de radio RFM95 se puede obtener de AliExpress o Banggood por menos de cinco dólares por pieza.
Notas
Notas sx127x
- El pin de reinicio en la placa de ruptura de AdaFruit debe mantenerse bajo para que el dispositivo funcione, al contrario de las instrucciones en el sitio web de AdaFruit.
- El pasador de reinicio debe extraerse momentáneamente para restablecer el dispositivo cuando se reinicia el MCU. Esto garantiza que los registros se restablezcan al estado original. No hacer esto puede causar un comportamiento extraño.
- Para borrar el registro de banderas IRQ, los ceros deben escribirse dos veces sobre SPI. Este es un error de hardware.
- Al colocar el SX127X en modo Lora, primero debe colocarse en el modo de suspensión. No en espera ni en ningún otro nombre.
- El SPI Master no puede escribir al FIFO fuera del modo de espera
- El FIFO no siempre se borra durante un cambio de modo. Nunca asuma que el FIFO se borra automáticamente
- El modo de encabezado explícito en SF = 6 no funciona. La función de configuración de modulación automática en este software no rechazará esa configuración de modulación.
- Este código no toca el byte "Palabra de sincronización" que permite que Loras rechace los paquetes automáticamente.
Notas de tablero de desarrollo de bluepill
- El LED PC13 en la placa de desarrollo "Bluepill" tiene su ánodo atado a 3.3 voltios y su cátodo vinculado a PC13 (por alguna razón). Esto significa que PC13 debe retirarse para encender el LED.
- No intente alimentar el SX127X del suministro de 3.3 voltios del Bluepill. El regulador a bordo no puede lograr la tarea durante RX o TX. Su SX127X se dorará y restablecerá.
USB a las notas de UART
- Usar una placa Arduino con el chip CH430 USB a UART como su dispositivo USB a UART, no es una tarea simple. Lo que está etiquetado como TX en la PCB (pero en realidad es RX desde la perspectiva del Arduino) se puede poner en un pin TX tolerante de 5 voltios de su placa de desarrollo. Aquí viene la parte difícil. Lo que se publicó como RX en la PCB (en realidad TX desde la perspectiva del Arduino) no funcionará si solo lo conecta al pin RX de su tablero de desarrollo. Debe soldar directamente al chip CH430. Consulte la hoja de datos para encontrar dónde está el pin TX del CH430. La carta al final del "CH430" es muy importante.
Yee: https://youtu.be/iepv31_e__4
