Red Pitaya Based WSPR Beacon for Antarctica DP0GVN

Aus DL8RDS Wiki
(Weitergeleitet von Red Pitaya Based WSPR Beacon)
Wechseln zu: Navigation, Suche

1 Project Scope

We want to deploy a WSPR beacon in Antarctica. There are two phases of the project:

  1. Deployment of an initial version
  2. Deployment of a higher integrated version

I have the honor to design the initial version, only with one Red Pitaya. Pictures below.

Here is the link to the Project Main Site:

https://dl0ht.fk4.hs-bremen.de/polarbake/index.html

2 Important Links

3 Credits

Thanks to:

  • Michael Hartje DK5HH for comprehensive support regarding Pitaya and FPGA code
  • Rainer Englert DF2NU for support on construction details
  • Christian Reiber DL8MDW for the transmitter (well, this is not so much related to my part, but nevertheless)
  • Felix Riess DL5XL for setting it up in Antarctica

4 The Transmitter

Here are the documents of Christian Reiber DL8MDW, who built the WSPR transmitter:

5 Software

5.1 System Config

https://russ.garrett.co.uk/2009/01/01/linux-kernel-tuning/

Modification of the file /etc/sysctl.conf

vm.min_free_kbytes = 32678

This tells the kernel to try and keep 32MB of RAM free at all times. It’s useful in two main cases:

Swap-less machines, where you don’t want incoming network traffic to overwhelm the kernel and force an OOM before it has time to flush any buffers. x86 machines, for the same reason: the x86 architecture only allows DMA transfers below approximately 900MB of RAM. So you can end up with the bizarre situation of an OOM error with tons of RAM free.

vm.swappiness = 0

It’s said that altering swappiness can help you when you’re running under high memory pressure with software that tries to do its own memory management (i.e. MySQL). We’ve had limited success with this and I’d much prefer to use software which doesn’t pretend to know more about your hardware than the OS (i.e. PostgreSQL).

5.2 Network Config

IP-Adresse:       192.168.33.90 bis 192.168.33.95
Netzmaske:        255.255.255.0
Gateway:          192.168.33.254
Nameserver (DNS): 192.168.38.46
Timeserver (NTC): 192.168.33.40
Timezone:         UTC

Call: DP0GVN
GRID: IB59UH

File /etc/resolv.conf:

nameserver 192.168.38.46

File /etc/network/interfaces.d/eth0:

iface eth0 inet static
        address 192.168.33.90
        netmask 255.255.255.0
        gateway 192.168.33.254

File /etc/ntp.conf:

# add a server entry:
server 192.168.33.40

# outcomment the pool entries:
# pool 0.debian.pool.ntp.org iburst
# pool 1.debian.pool.ntp.org iburst
# pool 2.debian.pool.ntp.org iburst
# pool 3.debian.pool.ntp.org iburst
(leave the rest as it is)

5.3 Band Config

cat write-c2-files.cfg

// frequency correction, from -100.0 ppm to +100.0 ppm
corr = 0.93;

// comma separated list of bands
// trailing commas are not allowed
bands = (
//  { freq  =  0.137500; chan = 1; },
//  { freq  =  0.475700; chan = 1; },
  { freq  =  1.838100; chan = 1; },
  { freq  =  3.594100; chan = 1; },
  { freq  =  5.288700; chan = 1; },
  { freq  =  7.040100; chan = 1; },
  { freq  = 10.140200; chan = 2; },
  { freq  = 14.097100; chan = 2; },
  { freq  = 18.106100; chan = 2; },
  { freq  = 21.096100; chan = 2; }
//  { freq  = 24.926100; chan = 1; },
//  { freq  = 28.126100; chan = 1; },
//  { freq  = 50.294500; chan = 1; }
);

5.4 Temperature Control

We found that the CPU is becoming really hot and the board smells like burned electronics :-) Not good.

Accordingly a fan solution was created. Here is an interesting recommendation how to do that:

In order to read out the CPU temperature, I found a little script. Note that it requires the installation of the "bc" package.

root@pitaya1:~# cat get_temp.sh 
#!/bin/sh
#
# from http://www.kkn.net/~n6tv/xadc.sh
# updated by Michael Hirsch, Ph.D.
#
# works in Ash (Red Pitaya ecosystem 0.95) and Bash (ecosystem 0.97)

# path to IIO device
XADC_PATH=/sys/bus/iio/devices/iio:device0

# Note: used "cat" to work in Ash instead of the typically recommended Bash "<".

OFF=$(cat $XADC_PATH/in_temp0_offset)
RAW=$(cat $XADC_PATH/in_temp0_raw)
SCL=$(cat $XADC_PATH/in_temp0_scale)

FORMULA="(($OFF+$RAW)*$SCL)/1000.0"
VAL=$(echo "scale=2;${FORMULA}" | bc)
echo "in_temp0 = ${VAL} °C"


5.5 Preamplifier control

The preamplifier we are using is this one:

http://www.box73.de/product_info.php?products_id=3737

Here is the datasheet: Datei:2018-01-20-RedPitaya-Vorverstaerker.pdf

We are using two preaplifiers. Pavel Demin's i2c-write command only allows to address one single preamp. For this reason, we duplicated this code. The original code was renamed into i2c-write-60 since the I2C bus ID of the preamp is 60 and 61. The duplicated code was edited accordingly and the binary was saved into the file i2c-write-61.

root@pitaya1:~# cat i2c-write-61.c 
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>

#define I2C_SLAVE       0x0703 /* Use this slave address */
#define I2C_SLAVE_FORCE 0x0706 /* Use this slave address, even if it
                                  is already in use by a driver! */

#define ADDR_DAC0 0x60 /* MCP4725 address 0 */
#define ADDR_DAC1 0x61 /* MCP4725 address 1 */

int main(int argc, char *argv[])
{
  int fd;
  char *end;
  long number;
  uint8_t buffer[2];

  errno = 0;
  number = (argc == 2) ? strtol(argv[1], &end, 10) : -1;
  if(errno != 0 || end == argv[1] || number < 0 || number > 4095)
  {
    printf("Usage: i2c-write [0-4095]\n");
    return EXIT_FAILURE;
  }

  if((fd = open("/dev/i2c-0", O_RDWR)) >= 0)
  {
    if(ioctl(fd, I2C_SLAVE_FORCE, ADDR_DAC1) >= 0)
    {
      buffer[0] = number >> 8;
      buffer[1] = number;
      if(write(fd, buffer, 2) > 0) return EXIT_SUCCESS;
    }
  }

  return EXIT_FAILURE;
}

Compilation is easy:

gcc i2c-write-61.c -o i2c-write-61

5.6 Receiver Initialization

In order to load the FPGA code and in order to initialize the preamplifiers, a start script was created:

 root@pitaya1:~# cat /etc/rc.local
#!/bin/sh -e
cat /root/sdr_transceiver_wspr.bit > /dev/xdevcfg
/root/i2c-write-60 4095
/root/i2c-write-61 4095
exit 0

To ensure that the script is activated on boot, the following file must be created and the service must be enabled. See this link:

http://www.itechlounge.net/2017/10/linux-how-to-add-rc-local-in-debian-9/
root@pitaya1:/# cat /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

And then, make executable:

chmod +x /etc/rc.local

Enable on boot:

systemctl enable rc-local

Invoke the script, make sureyou don't get any errors:

systemctl start rc-local.service

If you hit errors, check it again:

systemctl status rc-local.service

6 Shopping List

6.1 Planned Items

  • 2HE 19" Good Quality Metal Case
http://www.gie-tec.de/downloads/db_133030.pdf
https://www.conrad.de/de/19-zoll-baugruppentraeger-4365-x-200-stahlblech-schroff-multipacpro-20860-120-1-st-546378.html
Bodenblech sollte 1-2mm dick sein, wg. Senkkopfschrauben
https://schroff.pentair.com/de/schroff/zubehoer-baugruppentraeger-gehaeuse
Schroff 20860-645
  • Front Panel Connectors:
    • Neutrik RJ45 thru
https://www.amazon.de/Neutrik-NE8FDP-Durchgangs-Einbaubuchse-vernickeltes-D-Geh%C3%A4use/dp/B002BER402
    • 4x Neutrik USB
https://www.amazon.de/Neutrik-NAUSB-W-Reversibler-USB-Adapter-D-Geh%C3%A4use/dp/B003L79T06
    • SMA -Durchführung mit Pigtail uFL
https://www.amazon.de/Pigtail-Buchse-20cm-1-13-Kabel/dp/B01N55AGY1/ref=sr_1_4?ie=UTF8&qid=1502045022&sr=8-4&keywords=ufl+sma+pigtail
    • 240V Switch
    • Mains Line Choke (Netzfilter + Kaltgeräteanschluß)
    • Fuse
    • 2x Telegärtner 75V N/N thru
https://www.conrad.de/de/ueberspannungsableiter-telegaertner-j01028a0031-1-st-1366705.html?gclid=EAIaIQobChMI1r7565zB1QIVyynTCh3cjAuuEAQYAiABEgJalfD_BwE&insert_kz=VQ&ef_id=WYZR0gAABFZSnimC:20170805231635:s
genaues Modell noch offen
  • Mikrotik RB450G or similar
https://mikrotik.com/product/RB450G
  • MeanWell RD-125A Dual Coltage Power Supply
http://www.mouser.de/ProductDetail/Mean-Well/RD-125A/?qs=l0g2inPJSHNvtMZVDnhvDg%3D%3D
  • Raspberry Pi V3
https://www.amazon.de/Raspberry-Pi-Model-EU-Produktion/dp/B01CCM66YM/ref=sr_1_6?s=computers&ie=UTF8&qid=1501977401&sr=1-6&keywords=raspberry+pi+3
  • 6x MicroSD 64 GB
  • GPS Antenne Active mit SMA Connector
https://www.amazon.de/NAVILOCK-GNSS-Antenne-NL-202AA-Stecker/dp/B00E9UVY4S/ref=sr_1_5?s=computers&ie=UTF8&qid=1501977458&sr=1-5&keywords=gps+antenne
  • Adafruit Ultimate GPS Breakout - 66 channel V3
https://www.amazon.de/Adafruit-Ultimate-GPS-Breakout-channel/dp/B01H1R8BK0/ref=sr_1_1?s=computers&ie=UTF8&qid=1501977505&sr=1-1&keywords=adafruit+ultimate+gps
  • uFL SMA pigtail
https://www.amazon.de/BIGtec-WLAN-Adapterkabel-SMA-Buchse/dp/B006ANRHHU/ref=pd_bxgy_23_img_3?_encoding=UTF8&psc=1&refRID=VN7DWWZKFZ5QMNPG9AX9
  • 2x Stemlab 14Bit RedPitaya
  • 4x 30dB Attenuator SMA
  • 4x PreAmp for RedPitaya
  • 34 StandOff M3
  • 6x 64GB USB Stick
  • 14 Relais Wechsler bistabil 5V
https://www.reichelt.de/?ARTICLE=101942&PROVID=2788&wt_mc=amc141526782519998&gclid=EAIaIQobChMI-fCrua7B1QIVbRHTCh3cCQjfEAQYASABEgJ7D_D_BwE
  • 28 Freilaufdioden

6.2 Open Items

  • Flachsteckhülsen
  • 2,5m² Kabelverbinder
  • 19" 2HE Metal Case
https://www.conrad.de/de/19-zoll-baugruppentraeger-4365-x-200-stahlblech-schroff-multipacpro-20860-120-1-st-546378.html
  • Neutrik RJ45 thru
https://www.amazon.de/Neutrik-NE8FDP-Durchgangs-Einbaubuchse-vernickeltes-D-Geh%C3%A4use/dp/B002BER402
  • 3x Neutrik USB
https://www.amazon.de/Neutrik-NAUSB-W-Reversibler-USB-Adapter-D-Geh%C3%A4use/dp/B003L79T06
  • SMA -Durchführung mit Pigtail uFL
https://www.amazon.de/Pigtail-Buchse-20cm-1-13-Kabel/dp/B01N55AGY1/ref=sr_1_4?ie=UTF8&qid=1502045022&sr=8-4&keywords=ufl+sma+pigtail
  • 2x Telegärtner 75V N/N thru
https://www.conrad.de/de/ueberspannungsableiter-telegaertner-j01028a0031-1-st-1366705.html?gclid=EAIaIQobChMI1r7565zB1QIVyynTCh3cjAuuEAQYAiABEgJalfD_BwE&insert_kz=VQ&ef_id=WYZR0gAABFZSnimC:20170805231635:s
  • MeanWell RD-125A Dual Coltage Power Supply
http://www.mouser.de/ProductDetail/Mean-Well/RD-125A/?qs=l0g2inPJSHNvtMZVDnhvDg%3D%3D
  • Raspberry Pi V3
https://www.amazon.de/Raspberry-Pi-Model-EU-Produktion/dp/B01CCM66YM/ref=sr_1_6?s=computers&ie=UTF8&qid=1501977401&sr=1-6&keywords=raspberry+pi+3
  • Raspberry Pi V3
https://www.amazon.de/Raspberry-Pi-Model-EU-Produktion/dp/B01CCM66YM/ref=sr_1_6?s=computers&ie=UTF8&qid=1501977401&sr=1-6&keywords=raspberry+pi+3
  • 6x MicroSD 64 GB
  • GPS Antenne Active mit SMA Connector
https://www.amazon.de/NAVILOCK-GNSS-Antenne-NL-202AA-Stecker/dp/B00E9UVY4S/ref=sr_1_5?s=computers&ie=UTF8&qid=1501977458&sr=1-5&keywords=gps+antenne
  • Adafruit Ultimate GPS Breakout - 66 channel V3
https://www.amazon.de/Adafruit-Ultimate-GPS-Breakout-channel/dp/B01H1R8BK0/ref=sr_1_1?s=computers&ie=UTF8&qid=1501977505&sr=1-1&keywords=adafruit+ultimate+gps
  • uFL SMA pigtail
https://www.amazon.de/BIGtec-WLAN-Adapterkabel-SMA-Buchse/dp/B006ANRHHU/ref=pd_bxgy_23_img_3?_encoding=UTF8&psc=1&refRID=VN7DWWZKFZ5QMNPG9AX9
  • 2x Stemlab 14Bit RedPitaya
https://www.reichelt.de/USB-Messlabor-A-D-Messkarten/STEMLAB-14-SK/3/index.html?ACTION=3&GROUPID=4051&ARTICLE=187257
  • 4x 30dB Attenuator SMA
https://www.ltt-versand.de/News/Monacor/SMA-30DB-30-dB-Abschwaecher::100595.html?language=de&utm_source=google&utm_medium=shopping&gclid=EAIaIQobChMI48X6m6PD1QIVtgrTCh3KAQMOEAYYASABEgKCfPD_BwE
  • 4x PreAmp for RedPitaya
  • 34 StandOff M3
http://www.ebay.de/itm/M3-5-50mm-MIA-DISTANZHULSEN-DISTANZBOLZEN-ABSTANDSHALTER-ABSTANDSHULSEN-/391854054669?var=&hash=item5b3c525d0d:m:mx3XW3JvihCljZdUb29mPNA
  • 6x 64GB USB Stick
https://www.amazon.de/SanDisk-Android-microSDXC-Speicherkarte-SD-Adapter/dp/B013UDL58E/ref=sr_1_1?ie=UTF8&qid=1502045959&sr=8-1&keywords=64+gb+micro+sd
  • 14 Relais Wechsler bistabil 5V
https://www.reichelt.de/?ARTICLE=101942&PROVID=2788&wt_mc=amc141526782519998&gclid=EAIaIQobChMI-fCrua7B1QIVbRHTCh3cCQjfEAQYASABEgJ7D_D_BwE
  • 28 Freilaufdioden

6.3 Provided to the project

  • Mains line choke 3 €
  • Mains switch: 2 €
  • Fuse holder: 2 €
  • SHT15 incl. headers: 45 €
  • 1x Neutrik USB thru: 9 €
  • 1x Neutrik RJ45 thru: 9 €
  • Mikrotik RB750GL: 55 €

Total: 125 €

6.4 Purchased

  • 2x Red Pitaya Stemlab 125-14
  • 16x Wechsler bistabil 5V
  • 6x MicroSD 64 GB
  • MeanWell RD-125A Dual Coltage Power Supply
  • Raspberry Pi V3: 42 €
  • 2x Überspannungsableiter Telegärtner J01028A0044: 142 €
  • Schroff multipacPro 20860-127 2HE 340T: 102,60 €

7 Images

7.1 Phase 1

2017-12-20-wspr-bake 1.jpg 2017-12-20-wspr-bake 2.jpg

2017-12-20-wspr-bake 3.jpg 2017-12-20-wspr-bake 4.jpg

2017-12-20-wspr-bake 5.jpg 2017-12-20-wspr-bake 6.jpg

Please note the integrated service equipment (white MicroUSB cable for a serial diagnostic connecton):

2017-12-20-wspr-bake 7.jpg 2017-12-20-wspr-bake 8.jpg

Now with integrated spare parts:

2017-12-22-wspr-bake 1.jpg 2017-12-22-wspr-bake 2.jpg 2017-12-22-wspr-bake 3.jpg

After Rainer DF2NU's modifications concerning power supply and temperature control (fan):

2017-12-27-wspr-bake 1.jpg 2017-12-27-wspr-bake 2.jpg 2017-12-27-wspr-bake 3.jpg

Some more ventilation, made by Rainer DF2NU:


2017-12-29-wspr-bake 1.jpg

7.2 Phase 2

-- no pictures yet --