From 0f283e972ab9c6bb204222696b61293ec7e1978d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilko=C5=84?= Date: Sat, 11 Sep 2021 14:22:12 +0200 Subject: [PATCH 1/7] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 12dfdcb..ff1abe4 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ AX.25 encoder is also quite simple. It can handle multiple frames in a row (limi ### Modulator (and NRZI encoder) The NRZI encoder runs at exactly 1200Hz (=1200 Baud) and requests bits from the AX.25 encoder. Bits are encoded to symbols and the DAC sampling timer interval is set depending on symbol value. Because of that there is only one sine table used. For 1200Hz tone the timer interval is larger than for 2200 Hz tone - the sampling frequency is changed to change the output signal frequency. An array index is always kept so that the output signal phase is continuous. ## Using VP-Digi code in your project -I would love to hear about projects which implement VP-Digi source code. If you are making one, let me know at sq8vpsgmail.com. +I would love to hear about projects which implement VP-Digi source code. If you are making one, let me know at sq8vps(at)gmail.com. ## References The project took a lot of time, but now it's probably the most effective, publicly available, STM32-based modem and the most customizable microcontroller-based APRS digipeater. I would like to mention some resources I found really useful or inspiring: * [multimon-ng](https://github.com/EliasOenal/multimon-ng) - general demodulator idea (correlation) @@ -36,4 +36,4 @@ The project took a lot of time, but now it's probably the most effective, public All contributions are appreciated, but please keep the code reasonably clean. Also, please make sure that the firmware is working well before creating a pull request. ## License -The project is licensed under the GNU GPL v3 license (see [LICENSE](LICENSE)). \ No newline at end of file +The project is licensed under the GNU GPL v3 license (see [LICENSE](LICENSE)). From 859196205e71fdc3b7d9406506177efe70a912dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilko=C5=84?= Date: Fri, 24 Sep 2021 22:25:27 +0200 Subject: [PATCH 2/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff1abe4..590c973 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ The NRZI encoder runs at exactly 1200Hz (=1200 Baud) and requests bits from the ## Using VP-Digi code in your project I would love to hear about projects which implement VP-Digi source code. If you are making one, let me know at sq8vps(at)gmail.com. ## References -The project took a lot of time, but now it's probably the most effective, publicly available, STM32-based modem and the most customizable microcontroller-based APRS digipeater. I would like to mention some resources I found really useful or inspiring: +The project took a lot of time to finish, but now it's probably the most effective, publicly available, STM32-based modem and the most customizable microcontroller-based APRS digipeater. I would like to mention some resources I found really useful or inspiring: * [multimon-ng](https://github.com/EliasOenal/multimon-ng) - general demodulator idea (correlation) * [BeRTOS](https://github.com/develersrl/bertos) - AX.25 decoder * [Forum thread by SP8EBC](http://forum.aprs.pl/index.php?topic=2086.0) - inspiration From 86e4036f08ff6f9185d08837fcd6948781b75364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilko=C5=84?= Date: Tue, 12 Oct 2021 20:12:21 +0200 Subject: [PATCH 3/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 590c973..c1a6611 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The firmware was written using System Workbench for STM32 (SW4STM32) and you sho The project was designed to be running on a Blue Pill board (STM32F103C8T6) with 8MHz crystal. The firmware was written using only register operations (with ST headers) and CMSIS libraries. The HAL is there only for USB. The code is (quite) extensively commented where needed, so it shouldn't be very hard to understand. ### Demodulator -There are two demodulators (and decoders) running in parallel to provide better efficiency. The signal is sampled at 38400Hz (32 samples per symbol) by DMA. The interrupt is generated after receiving 4 samples and the samples are decimated. Then they are pushed through a preemphasis/deemphasis filter (if enabled) which equalizes tone amplitudes. Filtered samples are multiplied by locally generated mark and space tones (their I and Q parts - cosine and sine). This gives a correlation factor between the input signal and each tone. In the meanwhile an unfiltered symbol is produced to drive the data carrier detection PLL. The difference of correlation factors is the new sample and is pushed through a low pass filter to eliminate noise. Filtered samples are compared to zero and the demodulated symbol is sent to bit recovery mechanism. +There are two demodulators (and decoders) running in parallel to provide better efficiency. The signal is sampled at 38400Hz (32 samples per symbol) by DMA. The interrupt is generated after receiving 4 samples and the samples are decimated. Then they are passed through a preemphasis/deemphasis filter (if enabled) which equalizes tone amplitudes. Filtered samples are multiplied by locally generated mark and space tones (their I and Q parts - cosine and sine). This gives a correlation factor between the input signal and each tone. In the meanwhile an unfiltered symbol is produced to drive the data carrier detection PLL. The difference of correlation factors is the new sample and is passed through a low pass filter to eliminate noise. Filtered samples are compared to zero and the demodulated symbol is sent to bit recovery mechanism. ### Bit recovery (and NRZI decoder) Bit recovery mechanism is based on a digital PLL. The PLL is nominally running at 1200Hz (=1200 Baud). The symbol change should occur near PLL counter zero, so that the counter overflows in the middle of the symbol and the symbol value is sampled. With every symbol change the counter is multiplied by a <1 factor to bring it closer to zero, keeping the PLL and incoming signal in phase. The DCD signal is multiplexed from both modems. Explained more in [modem.c](Src/drivers/modem.c). Sampled symbol is decoded by NRZI decoder and sent to AX.25 layer. ### AX.25 decoding From 21d37e443094aa5df0007eaf7004db6e5b4855da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilko=C5=84?= Date: Wed, 13 Oct 2021 18:40:32 +0200 Subject: [PATCH 4/7] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49164fa..50cb9c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## New features * none ## Bug fixes -* Digi max and rep values could not be entered when only line ending was used. +* Digi max and rep values could not be entered when only LF line ending was used. ## Other * none ## Known bugs @@ -19,4 +19,4 @@ This is the very first open-source VP-Digi release. ## Other * Code was partially rewritten (especially digipeater, modem and AX.25 layer) ## Known bugs -* none as far \ No newline at end of file +* none as far From 12145c64861a7da82cc13ea5cdc62676baa9a550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilko=C5=84?= Date: Tue, 28 Dec 2021 22:13:25 +0100 Subject: [PATCH 5/7] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index c1a6611..2f467cc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,15 @@ # VP-Digi VP-Digi is a functional, cheap, easy to assemble and configure STM32-based APRS digipeater controller with built-in KISS modem. +* 1200 Bd Bell 202 modem (VHF APRS standard) +* R2R or PWM signal generation +* Analog-digital busy channel detection (data carrier detection) +* AX.25 coder/decoder designed for APRS frames +* 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 modem with UI-View, APRSIS32, XASTIR etc.) +* USB and 2 UARTs: independent, running in KISS, monitor or configuration mode + ## Description, schematic, instructions If you are not interested in source code, this repository is not for you. You can find full project description, schematics, compiled firmware and instructions [on my website](https://sq8l.pzk.pl/index.php/vp-digi-cheap-and-functional-aprs-digipeater-controller-with-kiss-modem/). From 3bd763246d0e830969496f203e6f62997fadb981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilko=C5=84?= Date: Tue, 28 Jun 2022 11:43:05 +0200 Subject: [PATCH 6/7] Update CHANGELOG.md --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 612d25e..22ef722 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ ## Other * none ## Known bugs -* none as far +* none so far # 1.2.1 (2021-10-13) ## New features * none @@ -15,7 +15,7 @@ ## Other * none ## Known bugs -* none as far +* none so far # 1.2.0 (2021-09-10) This is the very first open-source VP-Digi release. ## New features @@ -28,4 +28,4 @@ This is the very first open-source VP-Digi release. ## Other * Code was partially rewritten (especially digipeater, modem and AX.25 layer) ## Known bugs -* none as far +* none so far From 9bcc008d1dcfa0e0ddf0ea17e86d161519f95c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wilko=C5=84?= Date: Tue, 19 Jul 2022 18:00:12 +0200 Subject: [PATCH 7/7] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22ef722..4b8439c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ ## Other * none ## Known bugs -* none so far +* USB in KISS mode has problem with TX frames # 1.2.1 (2021-10-13) ## New features * none