W Polsce bardzo popularnym rozwiązaniem dla przemienników DMR jest używana płytka MMDVM w wersji wg SQ6POG. Wersja ta była dostępna w Polsce a obecnie można kupić ją na popularnym Chińskim serwisie aukcyjnym. Wersja z Chin bazuje na projekcie płytki https://github.com/wojciechk8/MMDVM_pog. Porównując to rozwiązanie którego koszt jest ok 30$ jest dość atrakcyjnym cenowo w stosunku do wersji na Arduino Due lub STM32F4xx. Użyty układ STM32F105 ma mniejszą wydajność niże Arduino i STM32F4xxx i np nie daje radę z NXDN. Wadą jest też to że nie można zrobić zdalnie aktualizacji firmware ale cena może zachęcać do zastosowania i budowy przemiennika na bazie MMDVM_POG (patrz niżej opis modyfikacji która usuwa tę niedogodność). Na rynku są dostępne dwie wersje płytke (patrz niżej)

Dostepne są wersje z TCXO 12 lub 19.2 MHz. W USA były dostępne wersje bazujące na MMDVM_POG które używały STM32F105 i używały TCXO 12 MHz i miały nazwę STM32_DVM. Wersja pierwsza STM32_DVM miała kolor płytki zielony a wersja druga której kolor płytki był czerwony. Wersja trzecia STM32_DVM już bazowała na kontrolerze STM32F466. Opis tych wersji znajdziecie na stronie: http://www.repeater-builder.com/products/stm32-dvm.html

Ostrzeżenie - niektóre płyty MMDVM POG (szczególnie chińskie klony) są zbudowane jako HAT Raspberry Pi i mają zamontowany regulator LDO 3,3 V. Regulator nie powinien być montowany, jeśli płyta jest używana jako HAT !. Pozostawienie założonego LDO POG może uszkodzić lub zniszczyć układ zarządzania energią na twoim Pi (jest to szczególnie powszechne na Pi 3)! Usuń regulator LDO przed użyciem HAT. [Źródło informacji, https://www.iz8gur.it/2018/11/17/rpi-3b-piu-veloce-ma-niente-pog-forse/] Uwagi te często dotyczą RPI 3B+ i prawdopodonie chodzi o to aby 3.3V z szyny 40-pinowej RPI nie było połączone z wyjściem 3.3v LDO czyli albo bierzemy 3.3V z RPI albo z LDO.

Wiele osób używa płytki MMDVM_POG z firmware z roku 20170501. Wersje firmware z 2019 są znacznie lepsze niż wersja 20170501, jest zauważalna poprawa jakości dźwięku TX i RX wg opinii użytkowników MMDVM_POG tak więc aktualizacja firmware jest zalecana.

Poniżej opis procedur jak zrobić w Pi-Star aktualizacje firmware MMDVM_POG w wersji podłączanej na szynę 40 PIN'ową RPI, używając skompilowanego firmware przez IZ8GUR https://www.iz8gur.it/downloads/mmdvm_pog/

Wjedz w dashboard Pi-Star do Configuration -> Expert ->MMDVMHost i w częsci MODEM zmień nazwę portu dla płytki np z

/dev/ttyAMA0

na

/dev/ttyAMA1

wystarczy że zmienimy w nazwie na końcu cyfrę z 0 na 1.

Zaaplikuj zmiany, dzięki temu po włączeniu RPI MMDVMHost nie zajmie portu szeregowego który użyjemy do wgrania firmware. Założyć zworkę na JP1, zewrzeć na krótko kondensator C3, wyłączyć zasilanie, odczekać około 20 sekund, włączyć zasilanie i powinny się tylko 3 diody LED świecić stałym światłem na płytce modemu PWR, ACT i DMR (info SP2GCH), jeśli nie to tzn ze JP1 nie jest zwarty poprawnie, powtórz całą procedurę aż diody będą się świeciły stałym światłem PWR, ACT, DMR. Inne opisy podają że wystarczy wyłączyć RPI i założyć zworę na JP1 w wersji nr 1 POG lub BOOT w wersji nr 2 POG (polecam wlutować gold piny w BOOT będzie można mieć pewne połączenie tych pinów używając zworki do gold pinów) , włączyć RPI i płytka powinna przejść w tryb BOOT swiecąc 3 ledami PWR, ACT,DMR.

Jeśli 3 diody na płytce świecą się jak wyżej opisane zalogować się Pi-star via ssh i wykonać procedurę wgrania firmware kompilowana przez IZ8GUR w wersji orginalnej płytki POG na TXCO 19.2 MHz (musimy mieć połączenie z internetem w Pi-Star):

rpi-rw
sudo -s
cd /tmp
wget https://www.iz8gur.it/downloads/mmdvm_pog/mmdvm.hex
systemctl stop pistar-watchdog
systemctl stop mmdvmhost

Tu są kompilacja firmware przez:

Wgrywamy firmware poprzez port szeregowy /dev/ttyAMA0 poleceniem:

stm32flash -w mmdvm.hex -v -R /dev/ttyAMA0

Poniżej pokazany jak może przebiegać proces wgrywania firmware:

stm32flash 0.5 
http://stm32flash.sourceforge.net/ Interface 
serial_posix: 57600 8E1 
Version      : 0x22 
Option 1     : 0x00 
Option 2     : 0x00 
Device ID    : 0x0418 (STM32F105xx/F107xx)         
- RAM        : 64KiB  (4096b reserved by bootloader)                                  
- Flash      : 256KiB (size first sector: 2x2048)  
- Option RAM : 16b                                 
- System RAM : 18KiB                               
Write to memory 
Erasing memory 
Wrote and verified address 0x0800fec8 (100.00%) Done

W trakcie wgrywania będzie świeciła się dioda PWR a dioda ACT będzie "mrugała". Po zakończeniu wgrywania będzie świeciła się tylko dioda PWR.

Wyłączyć zasilanie i następnie wyjąć zworę w JP1 lub BOOT i włączyć zasilanie RPI. W Pi-Star dashboard wybrać Configure->Expert->MMDVMHost i w sekcji MODEM ustawić nazwę portu jaka była przed wgrywaniem firmware czyli zamienić w nazwie cyfrę 1 (/dev/ttyAMA1) na 0 (/dev/ttyAMA0). Zaaplikować zmiany i na głównej stronie Pi-Star dashboard powinna pokazać się nam informacja w polu FW o nowej wersji firmware.

Modyfikacje

Wśród wielu materiałów na temat MMDVM_POG znalazłem ciekawy opis budowy przemiennika na bazie MMDVM_POG. Autor Fabio PY2LY opisuje drobne modyfikacje MMDVM_POG w wersji płyki nr 1. Wg niego w wersjach z Chin MMDVM_POG są użyte diody zabezpieczające na wyjściu płytki które powodują ścinanie "szczytów" sygnału m.cz co powoduje zniekształcenia. Jeśli masz taką wersje płytki możesz usunąć 2 diody które są umieszczone od spodu płytki. Autor zaleca staranne usunięcie tych diod przy użyciu taśmy rozlutowniczej.

Inna uwagą PY2LY jest że warto zastosować potencjometr (niebieski precyzyjny) 10 Kom lub 100 Kom który wstawiony jest na wejściu RX do płytki w celu redukcji napięcia wejściowego sygnału audio z odbiornika aby nie przesterować pierwszego układ wzmacniacza MCP6002 który ma regulacje przy pomocy potencjometru na płytce poziomu sygnału do następnego układu MCP6002.

Orginalne płytki MMDVM_POG wymagają zwarcia JP1 lub BOOT aby wgrać nowy firmware ale można wykonać modyfikacje opisaną tu dla wersji nr 1 POG:

https://wiki.philpem.me.uk/hamradio/mmdvm/pog

która pozwala wgrywać / aktualizować firmware bez konieczności zwierania JP1 co jest wygodne jeśli chcemy robić aktualizacje zdalnie a nie fizycznie w miejscu gdzie jest zainstalowany przemiennik aby zewrzeć JP1.

Kompilacja firmware

Na bazie opisów

Można spróbować własnych sił kompilacji firmware MMDVM. Pamiętaj żeby wykonać kompilacje z użyciem Pi-Star w wersji RPi 3.x. Uwaga na obecną chwilę (Maj 2020) nie używać do kompilacji na PI-Star v4.1.x. Nie przechodzi poprawnie kompilacja a niektórym udało się skompilować to i tak firmware nie działało poprawnie. Można zrobić kompilacje na PC z Debian lub Raspberry Pi z orginalnym Rasbian.

Musimy zalogować się via ssh do Pi-Star i wykonać :

rpi-rw
sudo -s
systemctl stop pistar-watchdog
apt-get update
apt install git binutils-arm-none-eabi gcc-arm-none-eabi gdb-arm-none-eabi libstdc++-arm-none-eabi-newlib autoconf libtool pkg-config libusb-1.0-0 libusb-1.0-0-dev
cd /opt/src
git clone https://github.com/g4klx/MMDVM.git
cd MMDVM/
git clone https://github.com/shawnchain/STM32F10X_Lib.git

Robimy edycje pliku konfiguracyjnego:

nano Config.h

Należy ustawić częstotliwość TCXO w zależności jaką wersje masz 19.2 MHz wersja (często wersje nr 1 płytki POG) lub 12.0 MHz (często wersje płytki nr 2 POG) w oraz odkomenderować MODE_LEDS, SEND_RSSI_DATA w Config.h:

// Allow for the use of high quality external clock oscillators
// The number is the frequency of the oscillator in Hertz.
//
// The frequency of the TCXO must be an integer multiple of 48000.
// Frequencies such as 12.0 Mhz (48000 * 250) and 14.4 Mhz (48000 * 300) are suitable.
// Frequencies such as 10.0 Mhz (48000 * 208.333) or 20 Mhz (48000 * 416.666) are not suitable.
//
// For 12 MHz
// #define EXTERNAL_OSC 12000000
// For 12.288 MHz
// #define EXTERNAL_OSC 12288000
// For 14.4 MHz
// #define EXTERNAL_OSC 14400000
// For 19.2 MHz
#define EXTERNAL_OSC 19200000

// Allow the use of the COS line to lockout the modem
// #define USE_COS_AS_LOCKOUT

// Use pins to output the current mode via LEDs
#define MODE_LEDS

// For the original Arduino Due pin layout
// #define ARDUINO_DUE_PAPA

#if defined(STM32F1)
// For the SQ6POG board
#define STM32F1_POG
#else
// For the ZUM V1.0 and V1.0.1 boards pin layout
#define ARDUINO_DUE_ZUM_V10
#endif

// For the SP8NTH board
// #define ARDUINO_DUE_NTH

// For ST Nucleo-64 STM32F446RE board
// #define STM32F4_NUCLEO_MORPHO_HEADER
// #define STM32F4_NUCLEO_ARDUINO_HEADER

// Use separate mode pins to switch external channel/filters/bandwidth for example
// #define MODE_PINS

// For the VK6MST Pi3 Shield communicating over i2c. i2c address & speed defined in i2cTeensy.cpp
// #define VK6MST_TEENSY_PI3_SHIELD_I2C

// Pass RSSI information to the host
#define SEND_RSSI_DATA

// Use the modem as a serial repeater for Nextion displays
// #define SERIAL_REPEATER

// To reduce CPU load, you can remove the DC blocker by commenting out the next line
#define USE_DCBLOCKER

// Constant Service LED once repeater is running 
// Do not use if employing an external hardware watchdog 
// #define CONSTANT_SRV_LED

// Use the YSF and P25 LEDs for NXDN
// #define USE_ALTERNATE_NXDN_LEDS

// Use the D-Star and DMR LEDs for POCSAG
// #define USE_ALTERNATE_POCSAG_LEDS

// Use the D-Star and YSF LEDs for FM
 #define USE_ALTERNATE_FM_LEDS

 #endif

Następnie wykonujemy polecenie kompilacji firmware:

make -f Makefile.CMSIS

Jeśli nie było błędów podczas kompilacji skompilowane fimware powinno być w katalogu /usr/src/MMDVM/bin. Możesz sprawdzić poleceniem:

ls -al /opt/src/MMDVM/bin/

Może teraz wgrać firmware do MMDVM_POG wg opisu na początku tego artykułu używając pliku mmdvm.hex który znajduje się w katalogu /opt/src/MMDVM/bin/ zamiast pobierać go od IZ8GUR czyli polecenie wgrania będzie:

stm32flash -w /opt/src/MMDVM/bin/mmdvm.hex -v /dev/ttyAMA0

Kompilacja sprawdzona na Pi-Star 4.x i wgrany firmware do płytki (info SP2GCH) .

UWAGI do płytek MMDVM_POG

Spotkałem się z informacjami że niektórzy mają problem z płytką MMDVM_POG która podczas nadawania po określonym czasie ok 175 sekund (czas ten może być różny) płytka zawiesza się. Problem ten dotyczny głównie wersji z TCXO 19.2 Mhz. Objawia się to że nadal nadaje tylko nosną świecą się diody PTT, COS. Aby przywrócić do poprawnej pracy ponownie MMDVM_POG tylko wyłącznie zasilania i ponowne włącznie zasilania ( https://www.youtube.com/watch?v=-UD0iMUqc2w&t= ) Niestety na obecną chwilę nie znam źródła problemu i wygląda na to że winien jest temu TCXO w wersji 19.2 MHz bo najnowsze firmware z 20190130 nie rozwiązuje problemu. Można uatwaić w pliku konfiguracyjnym MMDVMHost wartość "TIMEOUT" w części [GENERAL] na liczbę sekund mniejszą niż czas po którym wiesza się modem. Opisane problemy nie dotyczą płytek z TCXO 12 MHz.

Materiały pomocnicze:

Zachęcam także do obejrzenia dość bogatej prezentacji o budowie przemiennika na bazie MMDVM_POG która jest w języku portugalskim ale można teksty przetłumaczyć via google translator a wiele zdjęć i rysunków stanowią ciekawy materiał podczas budowy własnego przemiennika:

https://www.ham-dmr.com.br/wp-content/uploads/2019/06/TUTORIAL_MONTAGEM_RPT_DMR.pdf

Polecane wideo pomocne podczas strojenie MMDVM_POG:

https://www.youtube.com/watch?v=c2MpiEafTG4

https://www.youtube.com/watch?v=x4r44kti9WA&feature=youtu.be

Na koniec wideo które czasami nasze próby aktualizacji firmware kończą się tak jak autor tego filmu napisał:

Po prawie tygodniu prób aktualizacji FW, w końcu znalazłem rozwiązanie aktualizacji FW 20 sekund.

https://www.youtube.com/watch?v=wdRQgCDUk_I&feature=youtu.be

Poprzedni Post Następny Post