What range in Meshtastic Heltec WiFi LoRa 32 can achieve
When you first encounter some radio technology you wonder – and what range it has? Meshtastic has tools for conducting field test. You need two devices with Meshtastic and configured to use the same primary channel. First device will send in regular intervals some diagnostic packet, second device will record each received package with coordinates. Then You export report in CSV and can use some mapping tools to create map.
For details on configuring range test read Meshtastic docs. First, on sending device (I will call it base node) configure periodic sending. Docs suggest that for default Long/Fast channel send packet every 30 seconds. So, run Meshtastic app, connect to device, click three dots in upper-right corner and select Radio configuration. Scroll to modules config section and select Range test. Then enable it and enter 30 seconds as interval. Don’t forget to click Send!
Since now, every 30 second base node will send message on primary channel Seq XX where XX will be numbers in sequence. Message sent in test will have hop number set to 0. As you should remember from previous article that means node who will hear this message won’t be passing it further. And that way when receiving node will hear message from base node it will be direct connection not message passed through some relay node.
Receiving node configuration is similar, but leave 0 seconds (no sending) as interval and enable Save .CSV in storage if you want to persist range test results on device.
I assume everybody were curious and already browsed all config categories of Meshtastic device. You could spot Position menu. For base node You can check Use fixed position since base node won’t be moving. Lat/lng will be filled with data from your phone, but you can enter lat/lng manually. For receiving node remember to have ‘Share phone location with this device‘ enabled (on main device config page).
Now you are ready to move into field and do tests.
Test device
When you go for testing you can have your phone and it is providing location to Heltec WiFi LoRa 32 device via Bluetooth. However, when I had my phone locked I had impression that location was not updated for each received package. When I was walking/driving I can have 3 or 4 packets in sequence saved with exactly the same location. But for first tests Heltec + powerbank + phone paired on BT will be enough. You can try how far communication can be established. I’m really impressed by results.
After day or two of test with phone providing location I have decided I want to connect GPS module to see if those “glued” packets will disappear.
InPostion menu you can find fields Redefine GPS_RX_PIN
and Redefine GPS_TX_PIN
. Heltec plastic enclosure for WiFi LoRa 32 has access to goldpins. Just solder them onto board (of course you have to take board out of case) and can connect GPS module using standard F-F jumper wires.
There is always a room for a mistake with description of pin used to serial communication. What does author/programmer mean by GPS_RX_PIN: here should be connected RX pin from GPS module (so pin works as TX) or here we expect to get data from GPS (so we need to connect TX pin from GPS module)? It turns out that in Meshtastic the latter meaning is used. So with such configuration as on screen below TX from NEO6VM2 to GPIO20 and RX to GPIO19. Consult pinout of Heltec module (attached on product page) if you plan to use different pins. My choice of pins used was almost random. After few tests I have lowered GPS update interval to make sure that position is actual. Probably I should make it even smaller – 11 seconds while driving a car can make a noticeable difference – even ~150 meters at speed 50 kmph.
This time (compared to previous LoRaWAN range tests) I decided to use NEO6MV2 GPS module. Having separate antenna was an advantage as You can see:
Last few days time I drove I placed Heltec/Meshtastic device on dashboard (to have good GPS signal) and base node was in sending sequential messages. When you want to get results – connect to device and click three dots on upper-right corner in app. Directly in menu you will find ‘Export rangetest.csv’. Save CSV file in phone memory. I prefer to work on computer, so I send CSV file to my computer. Usually I use Dropbox – just add local file to it and I have it synchronized on computer. Other way can be open .csv file in Google Sheets and save in Google drive. Or connect phone via USB/BT and copy file.
To see points on map I use Google Earth. Use menu File/Open and open CSV file (You have to change file type to All data import files to see .csv file). Import dialog will open:
On second dialog select which columns have lat/lng – make sure you don’t have ‘Dataset contains street addresses‘ enabled.
In test setup I was doing – base node sending packages and CSV file is from receiving node use rx_lat/rx_long. In case you have reversed setup – node sending messages is in motion then and CSV jest collected on base node – use sender_lat/sender_long. In third dialog you can change date type associated with columns if Google Earth did not get it correctly.
Last step allow you assign color range to points. Unfortunately CSV does not contain RSSI value for received packet, but you can use SNR (Signal/Noise Ratio) as signal strength indicator.
Import done – remember to check mark and enable displaying points in menu on right, otherwise dots won’t show.
Data from Google Earth can be saved as KML and with few steps displayed in other services. Here it screenshot from OpenStreet Maps – points are more readable than on satellite view of Google Earth.
Range for Heltec WiFi LoRa32
As You can see range is quite impressive. Small device, with small antenna can get even 1900 m of range. I’m sure if one of devices will use better antenna and have it placed outside – results will be even better. This setup was not optimized for long range. Base node was hang under attic window – most convenient place for conducting tests.