Published using Google Docs
Blitzortung.org Documentation
Updated automatically every 5 minutes

Blitzortung.org

A World-Wide Low-Cost Community-Based Time-of-Arrival Lightning Detection and Lightning Location Network

Egon Wanke[1], Richo Andersen[2], and Tobias Volgnandt[3]

This document will continually change due to further developments and improvements. Please send your remarks to info@blitzortung.org.


Blitzortung.org is a world-wide non-commercial low-cost community-based Time-of-Arrival lightning detection and lightning location network. The system is made for private and entertainment purposes. The domain Blitzortung.org is not an official information service for lightning data.
Commercial use of data from Blitzortung.org is prohibited, even by the users that send data to our servers.

This document can change without further notice. Publishing this document or excerpts of this document on websites not under our control is discouraged.


1 The Project

2 The Lightning Detector System Blue

2.1  The Kit

2.2  The Assembly

2.2.1 Main board PCB 19.1/19.3/19.4

2.2.2 H-field pre-amplifier PCB 16.x

2.2.3 E-field pre-amplifier PCB 17.x

2.2.4 GPS antenna

2.2.5 Housing option

2.2.6 Digital filter option

2.3 Voltage regulator extension

2.4 Firmware

2.4.1 Web Interface

2.5.2 Single Wire Debug (SWD)

2.5.3 Device Firmware STMicroelectronics Extension (DfuSe)

3 Putting the device into operation

4 Setting up an Account with Blitzortung.org

4.1 Enter the internal Forum

5 The Antenna System

5.1 The electric antenna (E-Field)

5.2 The magnetic antenna (H-Field)

5.2.1 Ferrite rod antennas

5.2.2 Loop Antennas

6 Data encoding


1 The Project

The aim of this project is to accomplish a low budget highly accurate world-wide lightning location network based on a high number of receiver sites spaced close to each other, typically separated by 50 km - 250 km. The stations transmit their data to a central computing server, where the strike locations are computed by the arrival times of the signals.

The station operators are volunteers who bought and assembled the hardware by themselves. There are also volunteer programmers who develop and/or implement algorithms for the location or visualization of sferic positions, and people who assist to keep the system running. There is no restriction on membership. There is no fee and no contract. If a receiver site stops pooling its data for a longer time period, the server stops providing the access to the archive of sferic positions for the corresponding user.

Blitzortung.org is completely different to other data collection platforms as for example marinetraffic.com or flightradar24.com. Ships and airplanes already know their exact position. They send their positions by radio. The information can be received with simple receivers and transferred over the Internet to a data server. Receiving and sending the received position is not time-critical and on their data server nothing needs to be calculated. The data is only collected and visualized. To receive the position of a ship or aircraft, one receiving station is sufficient.

Lightning location, on the other hand, is much more complicated. The waveforms of the signals must be sampled with high frequency (512 values
at ≥500 KHz) and assigned with an accurate absolute time stamp (+/- 1 usec). The exact location of the detector is extremely important. An absolute microsecond accurate time stamp and an accurate position of the receiving detector can only be obtained by a GPS module. On computing server the signals from different detectors are adjusted and compared with each other. Each pair of signals from different detectors defines a hyperbolic curve. The intersection point of several hyperbolic curves determines the location. This is calculated on our server in a few seconds, that even professional systems do not always achieve.

2 The Lightning Detector System Blue

The Lightning Detector System Blue is a universal receiver for electromagnetic waves in the VLF/LF frequency range between 3 kHz and 300 kHz. It has three input channels for H-field antennas and one input channel for an E-Field antenna. The following two criteria played a crucial rule during the design of the detector.

1. The detector should not be too expensive for the end user.

2. The detector should provide the user with a variety of experimental possibilities.

2.1  The Kit

The main difference between System Blue and previous systems is that System Blue has partly prefabricated circuit boards. All surface-mount devices (SMD) are already soldered. However, there are still some components with leads that have to be inserted into holes drilled in the printed circuit boards and soldered to pads on the back side by manual assembly. For soldering you should use a soldering iron with a 1mm tip and thin solder wire. Do not try to solder these components if you do not have any experience with soldering electronic parts.

The board with the identification PCB 20.x is a panel consisting of a main board PCB 19.x an H-field preamplifier PCB 16.x and an E-field preamplifier PCB 17.x. The latest version of September 2017 is the panel PCB 20.5 with the main board 19.4 the H-field preamplifier PCB 16.1 and the E-field preamplifier PCB 17.1.

The following picture shows a complete set with all parts. Not all of these parts are essential for the operation of the detector. The 8 SMA jacks are not supplied. The maximal 4 filter ICs can be purchased separately and are not included as standard. The 3mm light-emitting diodes, the switch, the rubber feet and the grounding socket are only necessary if the main board is installed in the housing. These parts are only included if the housing is ordered.

2.2  The Assembly        

You can separate the boards manually. After that, you should file off the overhanging edges.

       

The schematics and PCB layouts can be found at

www.blitzortung.org/Compendium/Hardware/

2.2.1 Main board PCB 19.1/19.3/19.4

The main board PCB 19.x has the following through-hole technology (THT) components.

3 x DA103C - Transformer - Murata Power Solutions

1 x Inductor - 3.3 mH - Taiyo Yuden

1 x USB Mini-B Connector, PCB mounting, 90°

1 x 1x4 Header, straight, Pitch 2,54 (only 19.1/19.2/19.3)

1 x 1x5 Header, straight, Pitch 2,54 (only 19.1/19.2/19.3)

1 x 2x5 Header, straight, Pitch 2,54 (only 19.4)

1 x 1x2 Header, straight, Pitch 2,54 (only 19.4)

1 x 2x3 Header, straight, Pitch 2,54 (only 91.1/19.2/19.3)

1 x Jumper (only 91.4)

2 x Jumpers (only 91.1/19.2/19.3)

1x Piezo Audio Indicator

1x Crystal, 8.0000000 MHz

1x Crystal, 25.000000 MHz

3 x Pushbutton 6x6mm, height: 4,3mm, vertical

1 x RJ45 Modular Connector

1 x HanRun (HR911105A) RJ45 network connector with integrated magnetics

1 x F-Connector, PCB mounting, 90°

1 x SMA Connector, PCB mounting, 90°

1 x Ground Socket (only PCB 19.4)

Some of the THT components may have been soldered because they were required to install the initial firmware.

The DA103C Transformers have a white dot at one corner. On the main board, there are white dots printed at the placeholders for the transformers TR1, TR2, and TR3. The white dots at the transformers must match the white dots at the main board.

The 3.3mH inductor is L403.

Crystal Q1 has a frequency of 25 MHz, crystal Q2 has a frequency of 8 MHz.

Some Piezo Audio Indicators have a ’+’-mark, which should match the ’+’-mark on the board. (If there is no ’+’-mark, then the orientation is not important.)

(only 19.1/19.2/19.3x)(only 19.1/19.2/19.3)

(only 19.4)

All other components can not be soldered at wrong places because of their physical layout.

The main board is supplied with a 5V USB power adapter. The plug must be a USB-B Mini 5 pin. The power supply is not part of the kit and must be purchased separately. The power consumption is about 450mA. Please use a 1A or bigger power supply. We have had some bad experiences with 500mA power supplies.

At switch S1 on PCB 19.2 you have to connect pin 5 and pin 6 with a jumper. This turns the board on, if a USB power supply is connected, shown by the red rectangle in the image below. You must connect pin 1 and pin 2 a jumper so that the pre-amplifiers get power, shown by the green rectangle in the image below. Note that these jumper settings are different from the early board PCB 19.1. Please refer to the circuit diagrams. At 19.4 you must connect the two pins of the power jumper.

 

The router is connected at the RJ45 network port with a shielded twisted pair network cable (FTP, STP, S/STP, or S/FTP).

2.2.2 H-field pre-amplifier PCB 16.x

The H-field pre-amplifier board PCB 16.x has the following THT components whose placement is obvious.

1 x Header 3-pin, Pitch 3.5mm

1 x Header 6-pin, Pitch 3.5mm (or alternatively 2 x Header 3-pin, Pitch 3.5mm)

1 x RJ45 Modular Connector

A-1

A-2

GND

B-1

B-2

GND

C-1

C-2

GND

The antennas are connected to the pre-amplifier as shown above.

The screw strip is intended for connecting the wires of loop antennas. The wires of ferrite rod antennas have to be soldered to the back of the board. They cannot be screwed. These wires are insulated with varnish. Before these wires are soldered, the varnish must be scraped off with a knife.

The H-field pre-amplifier is connected with a shielded twisted pair cable (FTP, STP, S/STP, or S/FTP) to the main board. This cable should not be placed next to the network cable. Please keep a distance of at least 10 cm. The cable may have a length of up to 30 meters.

If you use loop antennas, than you should close (solder) the jumper for the corresponding channels at the back side of the board.

If the pre-amplifier is powered, the red LED should light.

2.2.3 E-field pre-amplifier PCB 17.x

The E-field pre-amplifier board PCB 17.x has the following THT components whose placement is obvious.

1 x Inductor - 3.3 mH - Taiyo Yuden

1 x Header 2-pin, Pitch 5.08mm

1 x F-Connector, PCB mounting

In panel PCB 20.1 and subsequent panels the free board space next to PCB 17.x is used as an experimental electrical antenna. This antenna is designed only for testing purposes. Due to a small manufacturer's error on Panel 20.5, the printed circuit board next to the E-field preamplifier is not connected to the input of the E-field preamplifier. Here, either a small solder bridge must be made or a corresponding antenna must be connected to the input. You can also break off this aerial and connect a wire antenna at the two pin header. The external connection point is ground, the central connection point is the antenna. Note that any electrical antenna must be placed outside far away from buildings and electrical interference sources.

The E-field pre-amplifier is connected with 75 Ω double shielded coaxial cable to the main board. The cable may have a length of up to 100 meters. The ends are attached to F-connector.

When the pre-amplifier is powered, the red LED should light. On the early pre-amplifier board 16.1 the green LED probably lights very weakly with a supply voltage of 3.3 volts. However, this is not a defect and is normal.

2.2.4 GPS antenna

You can use any GPS antenna operating with 3.5 Volts. The Antenna is connected via an SMA connector with the main board. The built in GPS module is very sensitive and works with antennas connected by lines of up to 10 meters.

2.2.5 Housing option

The housing option consists of the following parts.

1 x aluminum enclosure

1 x front panel

1 x back panel

1 x rocker switch                        

8 x screw M3 10mm

4 x rubber feet

3 x LED red

2 x LED green                        

1 x LED yellow

1 x LED blue

   

The housing is made for boards of size 130.0 mm x 140.0 mm. The main board PCB 19 has the dimension 130.0 mm x 138.5 mm and is slightly shorter than the housing. The LEDs on the front panel are soldered with an angle of 90 degrees. The overlapping edge of the LED housing closes the gap between the board and the front panel. In this construction, the LED can not  be crushed by pressure from outside at the front panel, which is the reason for the difference in size between the housing and the main board.

The threads at the corners in the aluminium housing are drilled by machine. Any protruding metal chips must be removed with a screwdriver or a wooden stick otherwise they may be fall onto the board. Do not use your finger to clean the threads.

     

The connecting wires of the LEDs can easily be bent 90 degrees using the front panel that has a width of 2 mm. On the main board there are white stars printed near the LEDs. In these holes the short ends of the wires have to be inserted. This is the cathode (-) of the diodes.

At the back panel, the rocker switch can be inserted to turn the power on and off. It has to be connected to pin 5 and 6 of S1 (19.1/19.2/19.3) or at the power jumper (19.4).

The rubber feet can be stuck under the housing.

From version 19.4 a pole terminal for connecting ground is included. The layout of the back panel has also changed. The ethernet controller was placed a little further away from the amplifiers. The Ethernet socket has been swapped with the GPS socket.

2.2.6 Digital filter option

The complete digital filter option consists of

4 x digital filter ICs (LTC1569-7)

8 x SMA Connector, PCB mounting

In general, it is not necessary to install the digital filter ICs. The system also operates without them. However, if you want to experiment, or if you have extremely strong interference at frequencies above 20kHz, you can try to get better signals with the digital low pass filter ICs. Since the digital filter ICs are relatively expensive, you should test one filter IC at one channel, preferably at the E-Field channel. If the desired effect is achieved, the other channels can be upgraded.

The digital filter ICs have a point at one corner of the housing. This point identifies Pin 1. It must match the white dot on the main board. You need a soldering iron with a small tip to solder the SOIC-8 package.

You have to close (solder) Jumper J0, otherwise the firmware will not recognize the filter ICs, and thus will not allow you to adjust them.

All inputs and outputs of the amplifiers are passed via buffer amplifiers to SMA connectors. If these connectors are installed, then the signals can easily be monitored with an oscilloscope or an FFT analyzer. There are various computer programs for signal analysis, if the output of the preamplifier is passed in to the PC via a sound card.

2.3 Voltage regulator extension

Unfortunately, the voltage regulators of the boards PCB 19.1 and PCB 19.2 are not adequate for the current consumption of the boards. This problem is eliminated by the piggyback board PCB 21.

The schematic of the board can be found here.

http://de.blitzortung.org/Compendium/Hardware/PCB_21_sch.pdf

PCB 21 is manufactured on a panel with severals boards and thus may have overhanging edges. You should file off these edges.

The voltage regulator IC502 should be unsoldered from the board. Please do not operate with both voltage regulators. They can act against each other.

2.4 Firmware

The firmware of the System Blue controller is pre-installed. When the device is turned on and is connected to a router, it gets an IP address via DHCP. You must check your router which IP address this is. Typically, the detector gets the same IP address after a reboot.

The firmware can be updated in three different ways,

  1. via the web interface of the firmware,                        
  2. via the Single Wire Debug (SWD) interface using a programming device, and
  3. via the USB interface using the Device firmware upgrade STMicroelectronics Extension) (DfuSe) interface.

2.4.1 Web Interface

To upgrade the firmware via the web interface, follow the menu prompts in the web interface.

2.5.2 Single Wire Debug (SWD)

The firmware can be upgraded via the SWD interface with the ST-LINK/V2 in-circuit debugger/programmer. This programming device is also contained at the STM32F4DISCOVERY board used for System Red. It is connected to the SWD interface as follows.

The software (STM32 ST-LINK Utility) for programming the controller with ST-LINK/V2 can be found on the website of STMicroelectronics.

        

http://www.st.com

The board additionally must be powered via the USB power supply during programming. The latest version of the firmware can be loaded from                

http://tracker.blitzortung.org/firmware

Never flash a firmware for System Red on a System Blue and never flash a firmware for System Blue on a System Red. This can damage the hardware.        

2.5.3 Device Firmware STMicroelectronics Extension (DfuSe)

You can also flash new firmware over the USB connector via the DfuSe of the processor as follows.

➡ If you are using a 19.x board, first connect the following jumper to the back of the board. This jumper is normally not closed to protect the processor from surges from defective power supplies.

Load the DfuSeDemo software for Windows operating systems from the website of STMicroelectronics

http://www.st.com

or from the following site (the ZIP-file "stsw-stm32080.zip"):

https://tracker.blitzortung.org/firmware/dfu

For non-Windows operating systems you can use the following software.

➡ Install the application.

➡ Download a DFU firmware file for System Blue from the following site.

https://tracker.blitzortung.org/firmware/dfu

➡ Connect the System Blue controller board via USB to your computer.

➡ Start the System Blue controller in DFU-mode: Push and hold both, the RESET button and the BOOT0 button, at the same time. Then first release the RESET button before you release the BOOT0 button.

Your Windows PC should now recognize a new device and install a driver for the new device during the DFU setup.

➡ Open the DfuSeDemo application. You should see the message "STM Device in DFU Mode". If not, then something went wrong. Try Step 5 again (driver reinstall, check cable).

➡ Keep all setting as they are and click the "Choose..." button on the bottom. Select the DFU firmware file from above. Now it should look like in the following screenshot.

➡ Next push the "Upgrade" button.

➡ After the upgrade is done, you can push the RESET button or "Leave DFU mode" in the application.

➡ Now you should be able to access the webinterface to upgrade a more recent firmware.

The DFU mode is a feature of the processor itself and not a feature of our firmware. It’s not possible to overwrite/destroy the DFU-bootloader. That is, it should always be possible to recover the firmware after a failed web-interface firmware update. A DFU file can be created from a BIN file with the DFU file manager.

3 Putting the device into operation

If the board is built up, the first test should proceed as follows.

  1. Do not connect any preamplifier, do not connect the GPS antenna, and do not connect the network cable. Connect only the 5 volt USB power supply to the mainboard.
  2. On the mainboard the red power LED should be on, some of the other LEDs should flicker, and the buzzer should make some noise. If no LED is on and no sound is heard, then something is wrong with the voltage supply. Check whether a power switch is connected and whether it must be turned on, and check Jumper S1. Up to Version 19.3.c, Pin 5 and 6 of Jumper S1 have to be connected. From version 19.4, the two pins of Jumper S1 have to be connected, see Section 2.2.
  3. Next connect the board with your DHCP router. The network connector has two LEDs, a green one and a yellow one. The green LED should be on continuously. The yellow LED should flicker. If this is the case, then the network connection can be tested. Try to open the firmware web page with your computer. Go to the web page of DHCP router router and look for the IP address of the board. The hostname of the board is "blitzortung". Enter the IP address of the board in the address line of your browser such that you can see the webpage of the firmware.
  4. Familiarize yourself with the settings on the website of the firmware.
  5. Connect a GPS antenna until the blue GPS LED on the Borad starts flashing every second. Only then is the position fixed. This process can take a few minutes the first time. Please be patient. The GPS antenna should have visual contact to the sky.
  6. Connect an H-field or E-field preamplifier to the board. On the connected preamplifiers the red LEDs should be on. If this is not the case, something is wrong with the connection cable. Use normal CAT cable. It must not be a crossed cable. Touch the input contacts on the preamplifiers with a finger to generate a signal pulse. These signals should be displayed on the webpage of the firmware at the "Signals" page.

4 Setting up an Account with Blitzortung.org

On the top of the web page of the internal firmware web server you find a link to request an account for Blitzortung.org. This link is only visuable, if the station is not assigned to a ser ID. Follow the instructions in the email you will receive. The account is associated with your email address.

When you get an account, you will also get a user number. Users may have none, only one, or several stations. You can assign a station to a user account as follows.

Enter your username or email and your password on the login page of Blitzortung.org. After a successful login you are on the "Project Area -> User data" page. Here you can complete the information about you and your stations.

http://www.blitzortung.org/login.php

In the line "Assign a new station: (Processor ID)" enter the processor ID of your station. You find the processor ID of your station on the web page of the station under processor information.

4.1 Enter the internal Forum

Enter your username or email and your password on the login page of Blitzortung.org.

http://www.blitzortung.org/login.php

After a successful login you are on the "Project Area -> User data" page. Now change to the “Further Infos -> Forum” page.

http://www.blitzortung.org/forum.php

5 The Antenna System

We use Magnetic (H-Field) or Electrical (E-Field) antennas or both.

5.1 The electric antenna (E-Field)

The “E-Field antenna” is a PROBE, a high impedance sensor that detects changes in the electric field between ground and atmosphere.

Use the built-in antenna, or a piece of wire, 10cm is fine, 1-2,5mm²

It should be placed high and far away from electrical installations.

Connect to Controller via 75 Ohm coax cable ( TV ) and an F-Plug
It is omnidirectional, and we use only one

     

5.2 The magnetic antenna (H-Field)

Either Ferrite Antennas or Loop Antennas may be used.

A magnetic antenna does not need to be mounted high  since the magnetic field is not easily attenuated.

They must be a minimum of several meters from other electrical installations - In the garden just above the ground, attic, or on a balcony is ok.


5.2.1 Ferrite rod antennas

Ferrite rod antennas are very suitable for a lightning detector. They are small, can be operated indoors and can even be shielded. The length should not be less than 12cm. Lengths over 30cm make no sense. Two antennas are sufficient, three antennas are a luxury. Regardless of whether it is one, two or three antennas, they should always be operated horizontally. Two antennas should be mounted at a 90 degree angle and three antennas at a 60 degree angle. They can be arranged crosswise or side by side. Blind spots can be eliminated with just two antennas. Alignment in a north / south or west / east direction is not necessary. Shielding is usually not necessary as the input on the preamplifier is symmetrical.

A-1

A-2

GND

B-1

B-2

GND

C-1

C-2

GGND

The antennas are connected to the pre-amplifier as shown above.

The wire on the ferrite rod antennas is insulated with varnish. This lacquer must be scraped off so that the wires can be connected to the preamplifier. The stripped wires cannot be fastened in the screw clamps of the pin header because they are too thin for that. Either the wires are soldered to the soldering points  on the back of the preamplifier at the pin header or a bigger wire is soldered to the wires, which can then be fastened in the screw clamp. It does not matter where the wire with the node is connected to. The knot only plays a role with bipolar preamplifiers. Our preamplifier has a symmetrical input.

5.2.2 Loop Antennas

Loop antennas can be made in many ways - in principle, it is just a conductive wire, wound as a coil.

The shape does not matter as it is the area of ​​the total number of turns that determines the strength of the signal. Circular gives the largest area for a given length of wire, but a rectangular or any other shape, may be easier and is equally effective. Magnetic signals in a loop generate a current, so the wire used should be minimum  of 0.75mm² and preferably thicker.

Examples

 

Wire Loop

3 turn, circle (100cm diameter) ~ Area = 0.5² * Pi  * 3 ~ 2,4m²

Use 0,75mm² or thicker – lacque or plastic isolated copper wire


Wire Loop - “Classic”


Loop antennas has been knows since 30s, so it was obvious to start with this model

8 turn, square 100cm ~ Area = 8m²
Originally made for System GREEN - for System BLUE 3-4 turns is enough

        

Multi Turn.:

20 turn,  (38cm diameter)  ~ Area ~  0.19² * Pi * 20 ~ 2,3m² (inductance ~ 500μH)

Use 1mm² lacquer or plastic insulated copper.

                                         

 

Coax Loop

A 3 turn, circle (100cm diameter) ~ Area = 0.5² * Pi  * 3 ~ 2,4m²

Inner conductor to the terminal 1-2 and the screen from both ends to terminal 3 (shielding)

The screen must be broken at the midpoint, as shown below,  so it does not short out the signal.

 

 

 

Möbius antenna

 

 

A 2 turn with a diameter of 1m gives a total area of ​​0.5 * 0.5 * 3.141 * 4 ~ 3,14m²

(0.5 x 0.5 x 3.141x 2)/4 = 0.39m2

(The cable is cut midway and the shield from one end is soldered to the inner conductor at the other end and vice versa - that way there will be 4 active turns)

 

 

Antenna with a current Transformers

Whether we use 4 turns of 1mm² or 1 turn with 4mm² is in principle gives  the same result if we use a current transformer.

It may be convenient to use a thick copper pipe or copper bar for external antenna

This provides a relatively large current to be transformed to adapt the pre-amplifier.

If we use a 50-turn toroidal current transformer as shown below, we get a relative area magnification of approximately 7 times.

A loop of Ø=38cm made of 5mm brake pipe gives a relative area of 0.38 x 0.38/4 x pi x 7 = 0.79 m2

  

 

 

 

Möbius antennas with a Transformer

Ø=38cm

 

                 

 

General information about antennas

Preamplifiers are now so good that large antennas are not necessary.

Eg. the H-Field pre-amplifier has differential inputs and  electrical common mode signals now have much less influence. Moreover, the amplifier has a gain of 10 times.

(However, the impedance matching to the input of the reduces the gain by 50% but provides excellent matching to the transmission cable and Controller input)

Connection to H-Field preamplifier

The preamplifier is supplied with an input impedance of 2k - which suits Ferrite ferrite antennas and antennas with transformer coupling.

Other antennas connected with 75 Ohm –must use the solder bridges on the back side of the PCB.

Coax cable and “coax cable”

For loops without transformer you can use the cheap sat-cable with copper-plated iron wire.

Loop antennas with a transformer, must use coax with pure copper and heavy shielding i.e. (75 Ohm 8mm cable as used for radio and TV-set for decades.)

No antennas must be grounded at the antenna.

It may be a good idea to ground the Controller.

One or more antennas

Your receiver works fine with either an  H-Field or an E-Field antenna.

Both types have their advantages and disadvantages

You can easily start with one of them, and then install the other later, or settle for one.

6 Data encoding

The detectors send their data records in plain text to the receiving server. The data records consist of lines that begin with control words followed by further information. Each data record begins with four lines for the keywords station, processor, time, and position. These four lines are contained in every data sentence, otherwise the data sentence cannot be assigned to the detector.

station <station number>

processor <processor ID>

time <year>-<month>-<day> <hour>:<minute>:<second>

position <latitude> <longitude> <altitude>

Example:

station 4690

processor 31003C004147313332342455

time 2021-11-13 11:33:48.687089982

position 51.190365 11.942244 169

<station number> is an integer greater than zero. <processor ID> is a unique identifier for the processor and thus a unique identifier for a registered station. The time stanm corresponds to the point in time at which the signal exceeded a specified threshold value. The seconds in the time line are specified with 9 digits after the decimal point, i.e. in nanoseconds. Latitude and longitude are given as a decimal number in degrees, not in degrees, minutes, seconds, etc. The unit of the altitude is meters.

The following five lines for the keywords amp, conversion_time, conversion_gap, values, and start can follow for each channel. These lines do not have to be present in every data record, since this information does not change as often. However, these lines are usually sent every 10 minutes.

amp <channel> <firmware> <board> 0 0

conversion_time <channel> <microseconds>

conversion_gap <channel> <microseconds>

values <channel> <number>

start <channel> <number>

Example:

amp 0 13.1 10 0 0

conversion_time 0 666

conversion_gap 0 2000

values 0 512

start 0 256

<channel> is a number between 0 and 5. The sampling time for a 12-bit sample is usually 666 nanoseconds, the difference between two start points of valuations, the conversion gap, should be 2000 nanoseconds. Other values are not accepted here. This setting corresponds to a sampling rate of 500kHz. 512 values should be sampled in total, 256 values before reaching the threshold and 256 values after passing the threshold. At a sampling rate of 500kHz, a total time range of 1024 microseconds is sent, 512 microseconds before reaching the threshold and 512 microseconds after passing the threshold.

shift <channel> <number>

coding <channe> <number>

data <channel> <number> $..............

Example:

shift 0 3

coding 0 3

data 0 283 $..............

Each data value is sent as one byte (8 bits) even if more than 8 bits are sampled. For example, if the data is sampled with 12 bits, the shift can be between 0 and 4. If the 4 most significant bits b_11, …, b_8 are zero in all data bytes, then the 8 least significant bits b_7, ...,b_0 are sent with a shift of 0. If this is not the case and the first three most significant bits b_11, b_ 10, b_ 9 are zero in all data bytes, then the 8 bits b_8, ..., b_1 are sent with a shift of 1. If this is not the case and the two most significant bits b_11 and b_10 are zero in all data bytes, then the 8 bits b_9, …, b_2 are sent with a shift of 2. If this is not the case and the first bit b_1 is zero in all data bytes, then the 8 bits b_ 10, …, b_3 are sent with a shift of 3. If this is not the case, then the most significant bit b_11 was not zero in at least one data byte. In this case the 8 most significant bits b_11, …, b_4 are sent with a shift of 4.

Here are some examples for the case that the entire data set in channel 0 consists of only 4 data values.

The keyword coding will be explained later. The key word data is followed by an indication of the number of data bytes that will follow. The third value contains the data starting with a $ symbol.

Example 1.

Data: <001010101010><000111011101><101110101111><000010101010>

shift 0 4

coding 0 0

data 4 $<00101010><00011101><10111010><00001010>

Example 2.

Data: <001011101010><0001110111010><011110101111><000011101010>

shift 0 3

coding 0 0

data 4 $<01011101><00111011><11110101><00011101>

Example 3.

Data: <000011101010><0000110111010><000000101111><000001101010>

shift 0 0

coding 0 0

data 4 $<11101010><110111010><00101111><01101010>

The signal data can be transmitted as raw data as well as compressed data. Currently only two methods are used for conpressing the signal data. Coding 0 means uncompressed binary raw data and coding 3 means compressed data method 3. The two compression methods 1 and 2 are no longer used. Which compression method is used is given after the channel number after the key word coding.

The type 3 compression is a block compression. The first byte of a block is called the block start byte. The 6 least significant bits of the block start byte represents the block length bl between 1 and 64 (<000000> = 1 and <111111> = 63). The two most significant bits of the block start byte represents the block type bt.

Example:

<10001010>

bt = <10> = 2

bl = <001010> = 21

The block type 0 indicates a block that has not been compressed. That means, the next bl bytes follow uncompressed. The block type 1 indicates a block that consists only of noise. The block start byte is followed by one byte for the maximum noise level and one byte for the minimum noise level. Block type 2 indicates a block with differential compression. The block start byte is followed by an initial byte.

Below is an example of a decompression implemented in the Perl programming language.

use POSIX;

 

sub decode_data {

            my ($coding, @source) = @_;

            my @target;

            if ($coding == 0) {

                    #

                    # no compression

                    #

                    for ($i= 0; $i < (scalar @source); $i++) {

                            $target[$i]= $source [$i];

                    }

                    return ($target);

            }

            elsif ($coding == 3) {

                    $source_values= scalar @source;

                    $source_pos= 1;

                    $target_pos= 0;

                    while ($source_pos < (scalar @source)) {

                            $block_length= ($source[$source_pos]&0x3F)+1;

                            $block_coding_type= ($source[$source_pos]&0xC0)>>6;

                            $source_pos++;

                            if ($block_coding_type == 0) {

                                    #

                                    # raw block

                                    #

                                    while ($block_length > 0) {

                                            @target[$target_pos]= @source[$source_pos];

                                            $target_pos++;

                                            $source_pos++;

                                            $block_length--;

                                    }

                            }

                            elsif ($block_coding_type == 1) {

                                    #

                                    # noise block

                                    #

                                    my $max_noise= @source[$source_pos];

                                    $source_pos++;

                                    my $min_noise= @source[$source_pos];

                                    $source_pos++;

                                    my $avg_noise= floor(($max_noise+$min_noise)/2);

                                    while ($block_length > 0)

                                    {

                                            @target[$target_pos]= $avg_noise;

                                            $target_pos++;

                                            $block_length--;

                                    }

                            }

                            elsif ($block_coding_type == 2) {

                                    #

                                    # delta block

                                    #

                                    my $first_value= @source[$source_pos];

                                    $source_pos++;

                                    @target[$target_pos]= $first_value;

                                    $target_pos++;

                                    my $last_delta= @source[$source_pos];

                                    if ($last_delta > 127) {

                                            $last_delta-= 256;

                                    }

                                    @target[$target_pos]= $first_value+$last_delta;

                                    $target_pos++;

                                    my $block_num= 0;

                                    while ($block_length > 0) {

                                            my $delta= 0;

                                            if (($block_num%2) == 0) {

                                                    $source_pos++;

                                                    $delta= (@source[$source_pos]&0xF0) >> 4;

                                            }

                                            else {

                                                    $delta= (@source[$source_pos]&0x0F);

                                            }

                                            if (($delta & 0x08) != 0) {

                                                    $delta= ($delta&0x07) - 0x08;

                                            }

                                            else {

                                                    $delta= ($delta&0x07);

                                            }

                                            $delta+= $last_delta;

                                            @target[$target_pos]= @target[$target_pos-1]+$delta;

                                            $target_pos++;

                                            $last_delta= $delta;

                                            $block_length--;

                                            $block_num++;

                                    }

                                    $source_pos++;

                            }

                    }

            }

            return @target;

}

#

# Test Frame

@source= (0x24,0x6D,0x8A,0x81,0x9F,0x81,0x02,0xD3,0xE0,0x0F,0x3D,0x1F,0xF1,0x12,0x0F,0xF1,0xE1,0x0F,0x3C,0x2D,0x4F,0x2F,0x0E,0x75,0x8A,0x83,0x91,0x8C,0xFE,0x2F,0x1F,0x1F,0x04,0xC3,0xEF,0x11,0xFE,0x21,0xB5,0x86,0x00,0x2E,0x02,0x0F,0xE1,0xF1,0xE2,0xF0,0x11,0x2D,0x1D,0x4E,0xF1,0xF0,0x03,0xF0,0x0F,0xF1,0x0F,0x1F,0x00,0x01,0x10,0x1D,0x2D,0x10,0x11,0xFF,0x6B,0x8B,0x84,0x02,0x8E,0x97,0x9D,0x81,0x9A,0xEE,0xF7,0x85,0x6F,0x12,0x3D,0xCB,0xFC,0x81,0xC3,0xF4,0x07,0x02,0xA9,0xAE,0xB0,0xBF,0xA9,0xF7,0xF4,0x24,0xFE,0xFF,0xB1,0x07,0x05,0xF0,0x31,0x3A,0x1E,0xA1,0x1E,0x0F,0x13,0x4E,0x02,0x1D,0x3D,0x2C,0x00,0xF1,0x1F,0x1F,0x1F,0x3F,0x1F,0x0E,0x3F,0x0E,0x2F,0x21,0x8D,0x81,0x00,0x00,0x10,0xF3,0xFE,0x1F,0xF0,0xF1,0xBF,0x85,0xFF,0x21,0xE2,0xE2,0xE0,0xE2,0xE2,0x0E,0x2F,0x13,0xC3,0x0E,0x2F,0xD2,0xF1,0x10,0x02,0xD1,0x0E,0x1F,0x02,0xE0,0x01,0x03,0xEE,0x2F,0xE4,0xC4,0xD2,0xFF,0x11,0xE3,0xC2,0xBB,0x90,0x01,0xE0,0xF2,0x1E,0x4F,0xFF,0x01,0xE0,0x1F,0x1E,0x12,0x0E,0x1F,0x2C,0x4E,0x1F,0x02,0xE3,0xE1,0xFF,0x01,0x1C,0x4E,0x02,0x0F,0x1F,0x0F,0x11,0xE1,0xFF,0x3D,0x95,0x88,0x01,0x2E,0xD2,0xF0,0x1F,0x10,0x00,0x1F,0x01,0xD3,0xF0,0x0E,0x01,0x87,0x86);

@target= decode_data (3, @source);

print "Source: (" . scalar @source . ") ";

for ($i= 0; $i < (scalar @source); $i++) {

            print $source [$i] . " ";

}

print "\n\n";

print "Target: (" . scalar @target . ") ";

for ($i= 0; $i < (scalar @target); $i++) {

            print "(" . $i . ")" . $target [$i] . " ";

}

print ".\n\n";

@target= (0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x81,0x83,0x82,0x84,0x84,0x84,0x84,0x83,0x85,0x84,0x84,0x83,0x81,0x80,0x80,0x82,0x84,0x85,0x85,0x86,0x85,0x85,0x85,0x84,0x86,0x84,0x84,0x81,0x82,0x82,0x84,0x85,0x86,0x85,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x8C,0x8A,0x8A,0x89,0x89,0x88,0x88,0x87,0x86,0x89,0x88,0x8A,0x8A,0x89,0x89,0x8A,0x8A,0x88,0x88,0x89,0x86,0x86,0x88,0x88,0x88,0x8A,0x8C,0x8D,0x8C,0x8C,0x8B,0x8B,0x89,0x89,0x88,0x87,0x87,0x88,0x8B,0x8B,0x8C,0x8A,0x8C,0x8C,0x8B,0x8B,0x8A,0x89,0x88,0x8A,0x8B,0x8C,0x8D,0x8D,0x8C,0x8C,0x8C,0x8B,0x8B,0x8A,0x89,0x88,0x87,0x87,0x88,0x89,0x8B,0x8A,0x8B,0x89,0x88,0x87,0x87,0x88,0x88,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x8E,0x97,0x9D,0x9A,0x88,0x75,0x69,0x6F,0x81,0x96,0xA8,0xB6,0xBF,0xC7,0xCB,0xC3,0xB7,0xAB,0xA6,0xA9,0xAE,0xB0,0xA9,0xA0,0x96,0x90,0x8C,0x8C,0x8B,0x88,0x84,0x7F,0x75,0x6C,0x63,0x61,0x5F,0x62,0x64,0x66,0x6B,0x71,0x7A,0x7D,0x81,0x83,0x7F,0x7C,0x7A,0x76,0x72,0x6D,0x69,0x68,0x6B,0x6C,0x6D,0x70,0x74,0x75,0x79,0x7A,0x7D,0x7C,0x7B,0x7A,0x78,0x77,0x77,0x76,0x76,0x75,0x75,0x74,0x76,0x77,0x79,0x7A,0x7B,0x7A,0x7C,0x7D,0x7E,0x7D,0x7E,0x7E,0x80,0x83,0x81,0x81,0x81,0x81,0x82,0x83,0x83,0x86,0x88,0x88,0x89,0x89,0x88,0x87,0x85,0x84,0x85,0x84,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8B,0x89,0x89,0x87,0x87,0x87,0x85,0x85,0x84,0x84,0x87,0x86,0x88,0x8A,0x8A,0x8C,0x8D,0x8B,0x8B,0x8A,0x8A,0x8B,0x8C,0x8D,0x90,0x90,0x91,0x92,0x91,0x91,0x90,0x8F,0x90,0x8F,0x8E,0x8D,0x8D,0x8D,0x90,0x91,0x90,0x91,0x91,0x8F,0x91,0x8F,0x91,0x90,0x91,0x91,0x90,0x90,0x91,0x90,0x92,0x90,0x90,0x90,0x91,0x90,0x8F,0x8D,0x8D,0x8E,0x8D,0x90,0x92,0x93,0x93,0x93,0x94,0x93,0x92,0x92,0x91,0x91,0x8F,0x8E,0x8F,0x90,0x8F,0x8F,0x8E,0x8F,0x8C,0x8D,0x8C,0x8C,0x8B,0x8A,0x8B,0x8A,0x8C,0x8C,0x8D,0x8D,0x8C,0x8B,0x8B,0x8C,0x89,0x8A,0x89,0x88,0x89,0x8A,0x8A,0x8B,0x8B,0x8B,0x8A,0x8A,0x8B,0x8A,0x8A,0x89,0x87,0x88,0x86,0x88,0x89,0x8C,0x8D,0x8B,0x8B,0x8A,0x89,0x89,0x88,0x88,0x88,0x88,0x88,0x89,0x89,0x89,0x8A,0x88,0x89,0x89,0x89,0x89,0x87,0x87,0x86);

print "Target: (" . scalar @target . ") ";

for ($i= 0; $i < (scalar @target); $i++) {

            print "(" . $i . ")" . $target [$i] . " ";

}

print ".\n";

                                                                                                                                                                       


[1] Düsseldorf, Germany,

[2] Nakskov, Denmark

[3] Roßtal, Germany