Aim of Project: To transmit chunks of GPS correction data in parallel from one static GPS module to another one bolted onto a distant machine roving about the landscape using multiple LoRa modules.

Hypothetical Solution: In the absense of a Starlink satelite system, LoRa radio can be used to transmit the correction data to the machine. Initial tests showed this was possible using just one pair of radio modules relatively close together and it seemed logical that greater range could be achieved by using a small RF amplifier AND extra radio modules. The data would need to be split up into chunks and fed to each of the transmit radios and then re-assembled after being recieved on the machine. To enable greater transmit distances, the LoRa spreading factor needs to be increased, but this has an adverse effect on transmit time and any data with a greater lag of about 5 seconds is rejected by the GPS receiver. The spreading factor can be gradually incresed as more and more radio modules are added and the current design (not yet shown) can have a total of 22 radio modules which equates to 11 transmitters and 11 recievers. How much band width will be required is not yet known. Will the whole thing just explode into a puff of purple smoke? - this is also not yet known.

More Details:

Designed to control machines in post apocalyptic environments, or just where I actually live, these gadgets integrate 4 or more LoRa radios controlled by Mega 2560 MCUs with a Raspberry Pi via ROS (Robot Operating System) so that messages, or data, can be sent over long distances in such as way that outgoing messages do not block incoming messages - it's true duplex. Most LoRa modules are only half duplex, in that simultaneous receive (Rx) and transmit (Tx) is not possible. Apparently, the Thing that I am building is called a 'Concatenater', similar to a gateway that might have 10 parallel channels, but much more flexible in terms of programming and functionality.

There's always a compromise between range and data speed and this system is not designed to be fast or 'Real-time' and there is significant lag between sending and receiving messages. Imagine we are controlling a rover on Mars, but rather than 15 minutes of lag, we have about 10 seconds. In a disaster area such the aftermath of hurricanes, where key infrastructure has been destroyed, this system could be used to relay encrypted messages back and forth to other distant locations without the need for setting up any kind of network, which is what is meant by the term 'Peer to Peer'. However, this does not mean that simple networks could not exist as time after the singularity ticks on.

Each module also has Joysticks and a slider pot so that we can control our Mars Rover from Earth. Obviously, the Rover or 'Dog' does not need the joysticks unless some aliens need to control similar machines on Earth. There is also a vast array of blinkenlights for diagnostics and general notification that stuff is happening, which may also be quite entertaining for the Martians.

This equipment can be used to transmit and receive data and verify the integrity of the data by making call backs. But also can perform actions based on what the data presents. For example, if water levels in a river are determined to be getting to critical levels, various alarms and messages can be created via ROS and sluice gates could be opened to divert water away from settlements..

ROS is installed on the Mega 2560's as the 'Rosserial' library and on the Raspberry Pi as ROS Melodic. Communications between the 3 modules happen via USB and ethernet via a router. Other features on the gadgets include a choice of two medical grade power supplies, an RF amplifier for the LoRa Tx and a choice of two surface mounted RF band pass filters.

This system is designed to be as self contained as possible and so 3G/4G/5G was not considered to be a viable option. We did actually try WIFI a couple of years ago, but the neighbors started complaining about machine data interfering with their Netflix. They obviously did not realise that there would be no more Netflix after the climate change Armageddon, but never mind. The problem was that the range of the WIFI was very poor without using high powered RF amplifiers. Also, I live on an island in the middle of the Irish sea and 4G connections are very poor / non existent and, again, this kind of infrastructure would easily be destroyed by hurricanes, hackers, emergent Ai intelligence or invading aliens.

Being realistic, it's probably not going to be possible to put a Starlink system on each and every Rover (dog) and it does take at least 3 Rovers to effectively herd goats. Maybe this would be possible in 5/10 years in the future but my cryogenic sleep chamber has been malfunctioning so I chose to use the tools that were available to me right now and within a reasonable budget. Luckily, data from positioning satellites is completely free and fairly straight forwards to process. This project takes terrestrial positioning to the next level by incorporating a positioning correction system which sends data to the Rover from a stationary reference point. Goats can now be herded to a precision of plus / minus 10mm !


Main Modules so far:

In theory, anybody wanting to copy this project should send the PCB Gerber files to their favorite PCB manufacturer (I normally use JLC PCB, who are excellent), buy the various components and get a set of SD cards from myself to get up and running nice and fast.  However, to configure the Ublox ZED F9P modules a windows computer is required on which Ublox Ucenter software needs to be installed and this takes a certain amount of fiddling about with. Ucenter is NOT easy to use and has a vast and complicated menu for configuring and flashing the modules. Also, Ucenter is NOT available for Linux. Alternatively, the ROS Melodic environment can be installed on a fresh Raspberry Pi and my various packages copied and pasted into the correct folder in the catkin workspace folder and the ROS environment re-made using catkin_make. This process WILL NOT be documented here as there are really good tutorials on the ROS WIKI for doing this. In order to start customizing this project, people would need to learn ROS and follow all the beginner and intermediate tutorials. This process should take between one and two working days and I found them fairly straight forward myself. The project as a whole is suitable for intermediate developers and good knowledge of python, C++, using the Linux operating system, basic soldering skills, basic electronics skills but no expert skills in any part of the project.

Going back to the modules once more, people might be wondering "Why have so many modules - surely it could just be done with a single Raspberry Pi and a Ublox ZED F9P?" . This observation would be perfectly true, but to expand the system would then be blocked as their would be no ROS. I chose to keep the Master Raspberry Pi free of too many other complications so that it's CPUs could concentrate on ROS and not get distracted by other processes too much. As time goes on, the system as a whole WILL expand and it will be important to monitor the modules to make sure they are not getting overloaded - the obvious symptom is that they periodically crash - maybe the Master Pi can be configured to bring them back to life - who knows?