RoadTest: Arduino MKR WAN 1300 + ENV Sensor Shield
Author: MARK2011
Creation date:
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: I planned to compare MKR1300 with transducers with LoRa used in BMS/ FM system but as they have closed protocols it was impossible MKRENV Shield has many competitors - popular Raspberry or Arduino Form factor boards with Environmental data sensors.
What were the biggest problems encountered?: Unsolved troubles with communication with TheThings Network MKRENV library need to be adopted when using other base modules
Detailed Review:
At the beginning I would like to thank for giving me the chance to deal with such outstanding devices.
Arduino MKR1300 LoRa module is the perfect tool to start unusual adventures in the LoRa world.
Another part of the set: MKRENV Shield fits perfectly the requirement of easy but versatile environment related measurements.
Thanks to experiments with MKR’s and after deep exploration related documentation and examples I have understood how interesting and powerful environment is the subject of our roadtest.
As all Arduino boards have perfect documentation published on many sites including comprehensive multimedia materials, I hope I don't need to duplicate these materials in the following report.
MKR is a relatively new (2018) family of Arduino boards. The main motto for that group is supporting the wide growing IoT industry segment.
Although an ambitious task, the idea of simplification of use/ managing of Arduinos is sustained of course.
Thanks to that Roadtest I get the opportunity to have the honour to deal with two representatives of that modern Arduino range: MKR1300 (LoRa board) and MKRENV shield.
Unboxing - first (among others) pleasant experience in that roadtest.
antennas haven’t been included
short description and useful leaflet ,
all above accompanied with cute arduino stickers.
MKR Boards have own Form factor 67.64mm × 25mm / 2.42” x 0.98”
Another (most) important difference is voltage range.
Although Operating/Input Voltage of MKR is declared as 3.3 V/ 5V that concerns selected supply pins
we must take care to keep the voltage level 3.3 on IOs of the board!
Warning: Unlike most Arduino & Genuino boards, the MKR WAN 1300 runs at 3.3V.
The maximum voltage that the I/O pins can tolerate is 3.3V.
Applying voltages higher than 3.3V to any I/O pin could damage the board.
While output to 5V digital devices is possible,
bidirectional communication with 5V devices needs proper level shifting.
Level converters are recommended when mixing circuits with UNO etc!
Also, the I/O current is very low, no more than 7mA
for details, you can look at comparison table
https://www.arduino.cc/en/products/compare
particular differences UNO - MKR I copied from arrow site:
https://www.arrow.com/en/research-and-events/articles/arduino-uno-vs-mkr-series
I/O as well as pin description and supply variants are widely described
There are TONS of Arduino related materials on the WEB. MKR series is well documented. Papers and documentation are available on the main Arduino site
as well as vendors and finally on manyamateur/ professional foras, github etc. It’s hard to assess or review it but in my opinion and according to my experience
all questions or hesitations concerning these boards can be found/ answered quickly. Theoretical explanation supported with examples
just wait ready to answer your question/ doubt.
Above is the reason I decided to avoid copying MKR WAN 1300 and MKR ENV shield specifications. Many reviews of features etc are available.
I only need to emphasize that the heart of our MKR board is Atmel SAMD21 Cortex-M0+ is much faster than UNO.
MKR have also bigger memories (FLAS & SRAM) none EEPROM
Another interesting onboard chip is the Murata CMWX1ZZABZ Lo-Ra module. Its benefits will be described below.
I tried to make some comparisons with competitors but that aim was a little difficult for me.
MKR ENV shield is fully form-factor compatible with the MKR family.
It includes following transducers:
ST LPS22HB : atmospheric pressure
ST HTS221 : temperature and humidity
VISHAY TEMT6000 : Lux of the ambient.
VISHAY VEML6075 : UltraViolet wavelengths A / B
I used Aduino Ide and it was pretty convenient. Especially simple examples from MKR- related libraries were very helpful at the beginning.
To be honest I wondered if Platformio would be also worth to be used and tested but finally I neglected that idea.
Arduino IDE is easy to install.As I have used it for years I can’t comment now on that process. Concerning preparation to use new boards,
selected libraries should be added. According to gathered information I decided to install MKRWAN by Arduino
In the board manager appropriate model must be selected:
additionally, also LoRa by Sandeep Mistry https://www.arduinolibraries.info/libraries/lo-ra
very useful, used and recommended in examples on many foras. As we have MKRENV Shield the Arduino_MKRENV
which allows to read the temperature, humidity, pressure, light and UV sensors of the ENV shield.
https://www.arduino.cc/en/Reference/Arduino_MKRENV
These libraries are relatively light. I didn’t encounter any issue using it.
MKR boards do not require any additional applications to be added or installed. Arduino environment is ready to play with it.
Concerning my impressions/ remarks there is nothing to add. Process of building an MKR environment is easy and smooth.
MKR 1300 boards have micro usb socket. Thanks to the installed bootloader they are truly plug and play. I didn’t need to care about drivers installation etc.
After upload of first test program I get following information about the board
I tested some examples that came with MKRWAN library
They compile and work fine. There was nothing to fine tuning
The only requirement from one of examples was to initialize code for firmware upgrade
MKRWANFWUpdate_standalone.ino (also available abong examples.
“FirstConfiguration.ino example screen:
That example showed that I need to create the account in LoRa network service
Before I describe that point, let’s review IoT platforms
One of my ideas was to use available IoT analytics platform services that allow us to aggregate, visualize, and analyze live data streams in the cloud.
These platforms let us send data from devices, create instant visualization of live data, and send alerts. raw data as well as computations can be archived and downloaded.
Preparing for that roadtest I was sure to use The-Things-Network widely during my experiments. I hoped to get familiar with the Arduino IoT Cloud and I planned also to use Thingspeak.
These solutions were planned to be compared with each other. Unfortunately only ThingSpeak was implemented with full success.
The things network is an IoT platform to join and build own LoRa network.
https://www.thethingsnetwork.org/
Arduino IoT Cloud helps to connect IoT wold strictly in the Arduino environment. It seems to be simple to start but also a comprehensive solution.
https://www.arduino.cc/en/IoT/HomePage Unfortunately without the arduino MKR module (1100) I was unable to use its benefits at all.
Last not least is a very convenient MathWors product for data cloud computations and visualization.
I started from account in the things network
The process is simple and described well step by step.
I was working on the things network console page.
After login I created new application obtaining its Id and EUI
then I registered my two MKR1300 LoRa devices also obtaining individual Id numbers
At that stage the AppKey is generated
Both appEUI as well as appKey have to be used in the arduino code.
directli in definitions or according to examples from the library in “secrets.” file
Ok let's use it and connect with the (LoRa)the world
sounds simple but… for me totally unsuccessful despite attempts to find bettel localization close to available gateway
in my console that status
remains unchanged!
Not disaffected (very much) from the first defeat I decided to check LoRa communication locally.
Thanks to brilliant idea of sending to roadtesters pair of loRa modules the idea of create of own LoRa environment was simple to setup.
That step also did not take any effort from the point of view of coding.
Examples for peer to peer LoRa communication were issued with LoRa libraries, are available on Git etc…
I found examples of LoRaSender and LoRa Receiver
Soon my modules started to talk to each other
I manage to send and receive packages
sometimes some noise and data errors appears
Here we have example when the strange package have been receiving despite my sender was inactive
packet received from nowhere:
'⸮wMͦw⸮g⸮\@|⸮T⸮‰cc⸮⸮F⸮b]W⸮⸮⸮⸮3r⸮!⸮?Gd8⸮8{tqo⸮⸮Uf'⸮⸮z⸮x3snE⸮?⸮⸮#:⸮4*⸮Ҷ#⸮]⸮⸮⸮⸮⸮⸮⸮G@az⸮⸮onpR⸮⸮n⸮⸮⸮
Most funny experiment took place at the very beginning, when I was waiting for LoRa antennas delivery.
Assuming the output capacity is relatively low, hoping there is no risk of overloading the transmitter power end and hoping some circuit paths
as well as antenna socket work as “residual” antenna” I tried the communication without antennas. I haven't been surprised very much seeing that with the range of around 10cm
communication worked, packages were transferred.
Previous notice about antennas can be treated as a kind of joke. But modules equipped with appropriate antennas were ready for range measurement.
i bought 868MHz-870Mhz 3dbi antennas
I used a simple algorithm for RSSI measure taken from the mentioned above simple examples.
The best values were available with the range below 1m. It was -21. I checked if these results depend on polarity. When antennas were both vertical above result was available
but with one antenna laying horizontally, RSSI value dropped to -55.
bellow you can track results of move the transmitter around 10m beyond wall
Received packet 'hello 19' with RSSI -47
Received packet 'hello 20' with RSSI -49
Received packet 'hello 21' with RSSI -66
Received packet 'hello 21' with RSSI -66
Received packet 'hello 22' with RSSI -78
Received packet 'hello 23' with RSSI -84
Received packet 'hello 24' with RSSI -89
Received packet 'hello 25' with RSSI -85
Received packet 'hello 26' with RSSI -87
Received packet 'hello 27' with RSSI -88
Received packet 'hello 28' with RSSI -94
Received packet 'hello 29' with RSSI -85
Received packet 'hello 30' with RSSI -85
Received packet 'hello 31' with RSSI -87
Received packet 'hello 31' with RSSI -87
Received packet 'hello 32' with RSSI -88
Received packet 'hello 33' with RSSI -89
and finally with stabilized vertically antenna
-82
The next task was to read environmental parameters via sensors of MKRENV board.
First I get information directly, Connecting the ENV Shield with MKR1300 module and sending data to serial filanny read it on the terminal. In that case only i2c and UART communication was used - no LoRa
Then I extend the experiment adding a second LoRa module as the receiver of MKRENV readouts, and set the first boards set as the LoRa transmitter (local).
Serial terminals were used for visualization.
COM12 LoRa transmitter COM 13 LoRa receiver
At that moment my plans targeted use of IoT cloud solutions for sensors data computations, presentation on dashboards etc.
As I encountered problems with communication with the TTN service, my plan to send and play with ENV data in that service collapsed.
The simple solution would be use another arduino dedicated tool: “Arduino IoT Cloud”
Having many WiFi modules I was sure I would manage to run it easily
But soon it appears that without a dedicated module as the MKR1100 WiFi it would be hard.
To avoid losing time I decided to go with my favourite IoT platform ThingSpeak.
Taking a simple ESP8266 module, using I2C (wire library) communication with MKRENV Shield, technically I was ready to start that stage.
Regarding software and code It was obvious for me, ESPRESSIF module isn’t compatible with MKR libraries. I couldn’t treat it as an MKR WiFi board.
I decided to adopt files from Arduino MKRENV library
After some modifications in MKRENV.cpp and MKRENV.h, as I had some trouble with the analogue sensor of Illuminance (ESP8266 has only one,
very fragile analogue input with the range of 1.4V only ) I had to remove LIGHT_SENSOR_PIN / illuminance section of measurements.
Anyway I hope to also add illuminance to my code.
some my hesitations were soon cleared on arduino forum:
https://forum.arduino.cc/index.php?topic=699655.0;topicseen
WiFi SSID, login, password are stored in secrets.h
I was almost successful suddenly supposed error appeared:
error: 'class TwoWire' has no member named 'end'
I found out that ESP8266’s have some restrictions in that matter. Happily, I managed that issue removing some unnecessary lines.
The code compilation went successfully
And soon I could see readouts on the terminal of ESP8266 serial interface
Now only short step was required to give my environmental date int the truly IoT Realm
I had to reserve a new channel in my Thingspeak account.
The only task regarding arduino project, was to add in the code thingspeak calls as well as some individual API keys in my secrets.h
Data were sent successfully (I had to fine tune delays in package sending frequency)
Besides Matlab shares many convenient tools for advanced dashboards and data visualization I imported my data back to me, for some individual computations
In the meantime I was truly curious about the utilization and assessment of MKRENV shield’s onboard microSD slot handling.
That was trivial but very cheerful to run that service.
above data stored on the SD card in MKRENV Shield
Using RTC library I added timestamp to my readouts:
The final task was to gather all previously sub projects to one with the aim of:
All pieces of the puzzle were ready, I had only some hesitations with connection of receiver LoRa module with NodeMcu WiFi board.
I decided to use the serial (UART) interface.
As I wanted to have two serials active on each bord soon I found SoftwareSerial library very convenient for that purpose.
That gave me a second serial interface on my WiFi board easily available.
Worth to emphasize, MKR boards have serial2 “at sight“
Connections are truly simple
below: Lora Receiver & UART Transmitter MKR1300
below: UART Receiver & WiFi Transmitter NODEMCU (ESP8266)
first test of communication
MKR1300 terminal
terminal of the NODEMCU
then test of transferring from Lora Transmitter to the WiFi Board
Final results - visualization of data transferred first by LoRa then via WiFi to the Thingspeak service
Some individual charts with above data
That is interesting range:
Above measurements were taken during the huge storm in my area. Among some readout data noise we see the pressure fluctuations.
Some “noise in illumination data? - below
or lightings???
I’m truly curious of strange behaviour od signal strength measurements
On the above chart some bad data appeared but these are very systematically (truly limes of mysterious process) did I neglect/ miss something???
That looks better after filtering below
The main target of the roadtes have been achieved
I wanted to check some additionals aspects of MKR1300 usage and implementation,
short description below
It was truly difficult to get the true value of power consumption of my LoRa Modules.
When connected to the USB port, primitive voltimeters showed only around 10mA during both transmission as well as receiving.
After connection to the 3.6V LiPo the measurements were on the level of 30mA
Adding MKRENV rise that to around 50mA
I do confess I didn’t experiment with setting modules into a deep sleep stage etc.
Anyway I want to emphasize some practical remarks
Using powerbanks which was the most convenient solution, I realized that 20000 ADATA “brick” supplied LoRa module connected with MKRENV,
after several days had remained unchanged/ uncharged. That may give some troubles as I have a powerbank -”smart one”
for which that low power load activated automatic switching off…
Modules seem to be reliable, fits well and are quite handy. I have to think of convenient enclosures.
As mentioned at the beginning, modules have individual MKR form factor,
compatibility with other boards can be achieved using available adapters.
The most difficult as well as quite responsible is final summarize.
Especially if come conditions or independent circumstances could influence the run of experiments and results.
In my case wery big expectations related to The Things Network failed.
Did I miss something in modules/ software setup. Did I really couldn’t get places covered with LoRa signals? Any other aspects cause these issues???
Nevertheless My modules at last joined the IoT team. Communication works as expected, the power load is truly low.
Regarding MKRENV, that set of sensors really do their job!
At the beginning there is assessment table
my subjective ranks are as follow:
Product Performed to Expectations
As written above I may be wrong with evaluation of TTN problems but I can't give best rank at that point after total fail of attempt to get link with that service
Specifications were sufficient to design with
Yes, no claims
Demo Software was of good quality
even beter than good!
Product was easy to use
For sure!
Support materials were available
Course! the only issue there are tons of it, hard to make decision where to look,
The price to performance ratio was good
I honestly confess I didn’t consider that question. But as I could assess, MKR LoRa modules are relatively cheap.
You can get ENV Shield substitutions but here we have perfect compatibility atc.
In short words I liked the MKR family and hope to extend that project with new functions and probably modules.
All the more I’m thankful for the invitation and selecting me for that roadtest.
Thank You
Marek
Top Comments
Nice road test report.
DAB