having to get their hands dirty in C
Sunday, October 13 2019
Gretchen thought she might be feeling a little ill and, not wanting to push herself, she had me walk the dogs this morning. As I have been doing of late, I used it as an excuse to visit my stone wall and make further additions to its east end. The surrounding landscape is now so depleted of usable stone that I've been forced to venture more than 100 feet away in all directions, unless I'm willing to try to pull big stones out of the ground. I've gotten a few big ones loose, but it's so much work to topple them end-over-end to where they're needed on the wall that I only move them some of the way with every visit to the wall. Consequently, progress on the wall has slowed considerably. And I don't see it going faster in the future; the east end of the wall (the only part that is being added to) is getting further and further away from where the loose rocks are concentrated.
This evening I returned yet again to my LoRa experiments, even though I didn't expect much in the way of success. An indication of what a mess the libraries and examples are can be found in how the examples are configured. LoRa (or LoRaWAN at least) requires encryption keys and application IDs as well as frequencies to be set, all of which must be done somewhere. In a typical Arduino sketch, such configuration is done in the sketch, since the whole idea of Arduino is to keep hardware neophytes from having to get their hands dirty in C (even if the code they're writing their sketches in is technically C). But in these LoRa examples, I keep finding examples where the configuration requires editing the C libraries that referenced by the sketch. I thought this was odd when this was for the radio frequency. But today, when trying (very unsuccessfully) to get a tiny Heltec LoRa board to do anything at all, I found that the keys and application IDs were also in these library files. Some of the examples are so badly structured that they don't even tell you where to put this information, which must be precisely right for anything to work at all.
So eventually I returned to my Dragino LoRa board, which has allowed me to get as close to working LoRa as I have gotten to date. Where I was with this when last I worked on it was that my LoRa gateway was receiving encrypted ASCII text containing precisely the same number of bytes as my Dragino LoRa board was transmitting, though I'd been unable to decyrypt it. Today I tried decrypting the packets using a web-based tool with various permutations of the keys and IDs, thinking perhaps I was providing the hexadecimal values in the wrong order (sometimes the most significant byte is given first, though sometimes it's the least significant byte, a distinction routinely glossed over in all the examples I found). Nothing I tried worked, of course, but in the course of these experiments, I found that it didn't matter what keys and IDs I provided to the Arduino sketch, the stream of bytes it produced was always the same, suggesting the keys being used were not in the sketch even in the example where they should've been. I've sunk too much time into this project now to give up, but if I'd known it was going to be this hard, I never would've started. Usually experiments with microcontrollers yield quick, satisfying results. But LoRa is uniquely hard across multiple dimensions.
The stone wall from the north as it descends the hill.
Click to enlarge.
Viewed from the east just south of the wall.
Click to enlarge. I used my phone to take the GPS coordinates of the ends of the wall and then used an online distance calculator to determine how far apart 41.928927778N, 74.1069944W is from 41.929281N, 74.106553W. The calculator said 0.0334 miles (176 feet, which is about two times longer than the wall actually is) and Google Maps showed the the east end of the wall ending decidedly on someone else's property, suggesting the GPS points were inaccurate. By the way, anyone who thinks representing coordinates in minutes and seconds instead of as decimal degrees needs to drink Liquid Plumr! This also goes for people making online distance calculators that only provide results in integer miles, kilometers, or other large units.
For linking purposes this article's URL is:feedback
previous | next