You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

4.3 KiB

VP-Digi

Polska wersja tego pliku dostępna jest tutaj.

VP-Digi is a functional, affordable, easy-to-assemble, and configure STM32-based APRS digipeater controller with a built-in KISS modem. VP-Digi can also run on AIOC!

  • Multiple modems:
    • 1200 Bd AFSK Bell 202 (VHF standard)
    • 300 Bd AFSK Bell 103 (HF standard)
    • 9600 Bd GFSK G3RUH (UHF standard)
    • 1200 Bd AFSK V.23
  • DAC/PWM signal generation
  • Analog-digital busy channel detection (data carrier detection)
  • AX.25 coder/decoder
  • FX.25 (AX.25 with error correction) coder/decoder, fully compatible with Direwolf and UZ7HO Soundmodem
  • Digipeater: 4 settable n-N aliases, 4 simple aliases, viscous delay (known from aprx) or direct only, black and white list
  • 8 independent beacons
  • KISS mode (can be used as an ordinary Packet Radio, Winlink, APRS, etc. modem)
  • USB and 2 UARTs: independent, running in KISS, monitor, or configuration mode

Download and setup

The latest compiled firmware can be downloaded here.
Full documentation can be found here.

Updating to 2.0.0+ on older hardware

Since version 2.0.0, the component values have changed to provide support for faster modulations (9600 Bd). If you want to use these, some components must be replaced. For more information, refer to the manual.

Description, schematic, instructions

The user manual and technical description are available here.

Source code

You can get the source code using:

git clone https://github.com/sq8vps/vp-digi.git

Since version 2.0.0, you will also need to get the appropriate submodule (LwFEC for Reed-Solomon FEC):

git submodule init
git submodule update

Since version 2.2.0, VP-Digi can also run on AIOC. The source code base is the same for the "Blue Pill" board and AIOC. However, there are two STM32CubeMX configuration files: vp-digi.ioc and vp-digi_aioc.ioc. In order to be able to compile and run the project, you need to:

  1. Open vp-digi.ioc or vp-digi_aioc.ioc in STM32CubeMX, depending on your target platform.
  2. Generate files for the IDE/toolchain of your choice. Make sure Generate Under Root is checked. Under the Code Generator tab make sure Generate peripheral initialization as a pair of '.c/.h' files per peripheral is checked.
  3. Import the generated project to your IDE.
  4. If you want to use FX.25, you need to include the lwfec directory in your build. In STM32CubeIDE, this can be done under Project->Properties->C/C++ General->Paths and Symbols in Includes and Source Locations tabs.
  5. If you are targetting the "Blue Pill" board with STM32F103Cx, then you need to adjust the optimization level to Optimize For Size (-Os) for a release build or Optimize for Debug (-Og) for a debug build. On STM32CubeIDE, this can be done under Project->Properties->C/C++ Build->Settings->MCU GCC Compiler->Optimization. Otherwise, the program won't fit in the flash memory.

Since version 2.0.0, there is also a possibility to build the firmware with or without FX.25 protocol support. The ENABLE_FX25 symbol must be defined to enable FX.25 support. The easiest way is to define this symbol in defines.h. Alternatively, on STM32CubeIDE, this can be done under Project->Properties->C/C++ Build->Settings->MCU GCC Compiler->Preprocessor->Defined symbols.

When rebulding the project for different platform the code must be regenerated, as explained in the instructions above. However, since some files remain and some are not regenerated, you need to manually remove them beforehand. This includes removing the Drivers, Middlewares, USB_DEVICE except USB_DEVICE/App/usbd_cdc_if.c, Core/Startup directories, the stm32f*_hal_msp.c, syscalls.c, sysmem.c, gpio.c, system_stm32f*.c files from the Core/Src directory, stm32f*_it.h, stm32f*_hal_conf.h, and gpio.h files from the Core/Inc directory, and .project, .cproject, and .mxproject from the main directory.

Contributing

All contributions are appreciated.

License

The project is licensed under the GNU GPL v3 license (see LICENSE).