Which LoRa module for sending temperature data 1km "peer to peer"?

I started this project trying to send data with a pair of ESP8266’s thru a WiFi network, but this connection proved unreliable. Then I tried using ESP-NOW protocol, but unfortunately the distance was too great. The sending module is connected to a DS18B20 temperature sensor. The receiving module feeds into to a Pi Zero & Adafruit display bonnet driving a LED matrix display.

As a beginner, I would appreciate some advice on which LoRa module would best suit my project. It seems 915-928MHz is required, the sending LoRa module would be battery powered (sleeping between hourly transmissions). I am considering the following modules:
SparkFun LoRa Thing Plus – expLoRaBLE
SparkFun Pro RF - LoRa, 915MHz (SAMD21)
Adafruit Feather M0 with RFM95 LoRa Radio - 900MHz

Richard

Hi Richard,

The main thing to consider is whether you’re comfortable with either C/++ or MicroPython. The PyCom boards are great if you’re happy using MicroPython, they have guides on what you’re trying to do:

https://docs.pycom.io/tutorials/networks/lora/module-module/

As TTN keeps updating its specs for LoRaWAN, some older devices can fall off the back of the compatibility train, but they usually still work just fine for raw LoRa (what you’re looking to do)

Either way, most use the same RFM95W, or a SX1262, so it really comes down to the extra features you want like LiPo power or charging, or the support materials available from the manufacturer.

Let us know if this sparks more questions.
-James

1 Like

Hi Richard,

Welcome to the forum!!

In my dabble into LoRa I grabbed the LoPy4, the Nitty gritty documentation is hard to track down but once you have it it works an absolute treat: https://core-electronics.com.au/pycom-lopy4.html

I thought I stuffed the radio so picked up another board to see if I could get them talking ( I’m waiting on TTNv3 to level up a bit) and one acting much like a gateway, the LoRa bonnet was selected: Adafruit LoRa Radio Bonnet with OLED - RFM95W @ 915MHz - RadioFruit Australia

I’ve only dabbled in small packets <10 bytes without any reliability built in (if a packet is lost its gone forever).

I’ve got quite a bit on at the moment but when I get a chance I’ll do a mini project upload on the forum.

1 Like

Thanks for the advice James and Liam. I bought a pair of LoPy4 modules because Python is easier. I am trying to follow the pycom guide using a USB-serial converter. The Pymakr the installation fails with the error message below. When I Googled this error, it seems that this has been a common problem for a while (see Graham’s comments). As a beginner, I might be doing something wrong? If not, Pycom should not be selling modules if they can’t support the required software?

Installing “pymakr@2.1.13” failed.Hide output…

@serialport/bindings@8.0.8 install C:\Users\Ric Dell\AppData\Local\Temp\apm-install-dir-2021910-11280-kjow69.iyci7\node_modules\pymakr\node_modules@serialport\bindings
prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild

C:\Users\Ric Dell\AppData\Local\Temp\apm-install-dir-2021910-11280-kjow69.iyci7\node_modules\pymakr\node_modules@serialport\bindings>if not defined npm_config_node_gyp (node “C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\…..\node_modules\node-gyp\bin\node-gyp.js” rebuild ) else (node “C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js” rebuild )

npm WARN deprecated parser-delimiter@1.0.2: reanmed to @serialport/parser-delimiter
npm WARN deprecated crypto@1.0.1: This package is no longer supported. It’s now a built-in Node module. If you’ve depended on crypto, you should switch to the one that’s built-in.
npm WARN deprecated parser-cctalk@1.0.2: reanmed to @serialport/parser-cctalk
npm WARN deprecated parser-byte-length@1.0.2: renamed to @serialport/parser-byte-length
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated parser-readline@1.0.2: reanmed to @serialport/parser-readline
npm WARN deprecated parser-regex@1.0.2: reanmed to @serialport/parser-regex
npm WARN deprecated parser-ready@1.0.2: reanmed to @serialport/parser-ready
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See There’s Math.random(), and then there’s Math.random() · V8 for details.
prebuild-install WARN install No prebuilt binaries found (target=9.4.4 runtime=electron arch=x64 libc= platform=win32)
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if “python” can be used
gyp ERR! find Python - executable path is “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\python3.9.exe”
gyp ERR! find Python - “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\python3.9.exe” could not be run
gyp ERR! find Python checking if “python2” can be used
gyp ERR! find Python - “python2” is not in PATH or produced an error
gyp ERR! find Python checking if “python3” can be used
gyp ERR! find Python - executable path is “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\python3.9.exe”
gyp ERR! find Python - “C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\python3.9.exe” could not be run
gyp ERR! find Python checking if the py launcher can be used to find Python 2
gyp ERR! find Python - “py.exe” is not in PATH or produced an error
gyp ERR! find Python checking if Python is C:\Python27\python.exe
gyp ERR! find Python - “C:\Python27\python.exe” could not be run
gyp ERR! find Python checking if Python is C:\Python37\python.exe
gyp ERR! find Python - “C:\Python37\python.exe” could not be run
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python=“C:\Path\To\python.exe”
gyp ERR! find Python (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python npm config set python “C:\Path\To\python.exe”
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python GitHub - nodejs/node-gyp: Node.js native addon build tool
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack at PythonFinder.fail (C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\node_modules\npm\node_modules\node-gyp\lib\find-python.js:307:47)
gyp ERR! stack at PythonFinder.runChecks (C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
gyp ERR! stack at PythonFinder. (C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\node_modules\npm\node_modules\node-gyp\lib\find-python.js:225:16)
gyp ERR! stack at PythonFinder.execFileCallback (C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\node_modules\npm\node_modules\node-gyp\lib\find-python.js:271:16)
gyp ERR! stack at exithandler (child_process.js:302:5)
gyp ERR! stack at ChildProcess.errorhandler (child_process.js:314:5)
gyp ERR! stack at ChildProcess.emit (events.js:223:5)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
gyp ERR! stack at onErrorNT (internal/child_process.js:456:16)
gyp ERR! stack at processTicksAndRejections (internal/process/task_queues.js:81:21)
gyp ERR! System Windows_NT 10.0.19043
gyp ERR! command “C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\bin\node.exe” “C:\Users\Ric Dell\AppData\Local\atom\app-1.58.0\resources\app\apm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js” “rebuild”
gyp ERR! cwd C:\Users\Ric Dell\AppData\Local\Temp\apm-install-dir-2021910-11280-kjow69.iyci7\node_modules\pymakr\node_modules@serialport\bindings
gyp ERR! node -v v12.14.1
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
npm WARN notsup Unsupported engine for pymakr@2.1.13: wanted: {“atom”:“>=1.41.0”,“node”:“>=6.3.0 <=7.0.0”} (current: {“node”:“12.14.1”,“npm”:“6.14.13”})
npm WARN notsup Not compatible with your version of node/npm: pymakr@2.1.13
npm WARN enoent ENOENT: no such file or directory, open ‘C:\Users\Ric Dell\AppData\Local\Temp\apm-install-dir-2021910-11280-kjow69.iyci7\package.json’
npm WARN apm-install-dir-2021910-11280-kjow69.iyci7 No description
npm WARN apm-install-dir-2021910-11280-kjow69.iyci7 No repository field.
npm WARN apm-install-dir-2021910-11280-kjow69.iyci7 No README data
npm WARN apm-install-dir-2021910-11280-kjow69.iyci7 No license field.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @serialport/bindings@8.0.8 install: prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @serialport/bindings@8.0.8 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Ric Dell.atom.apm_logs\2021-10-09T22_24_21_388Z-debug.log

1 Like

Hey Richard,

Interesting, thats a very dauting error message. It looks like its a mismatch with Python versions. Tucked away down the bottom of the PyMakr install is a common issues section with a supposed fix.

Commands and copy-able stuff:

echo "python=/usr/bin/python2.7" >> ~/.atom/.apmrc
apm install
~/.atom/packages/pymakr

Let us know how you go with that!

Hi Liam
I ran your suggested commands and got the following:

Microsoft Windows [Version 10.0.19043.1237]
(c) Microsoft Corporation. All rights reserved.

C:\Users\Ric Dell>apm --version
apm 2.6.2
npm 6.14.13
node 12.14.1 x64
atom 1.58.0
python 3.9.7
git
visual studio

C:\Users\Ric Dell>echo “python=/usr/bin/python2.7” >> ~/.atom/.apmrc
The system cannot find the path specified.

C:\Users\Ric Dell>

I can’t see that python 2.7 is on my Windows 10 laptop. Does this mean I need to install 2.7 before running the above code? Is it okay to leave 3.9 on my laptop?
Richard

2 Likes