Arduino MKR WAN 1300 + ENV Sensor Shield - Review

Table of contents

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.

Overall technical overview


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.


Summary of parameters and features of the board

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


particular differences UNO - MKR I copied from arrow site:




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




Software used in the roadtest

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.


Installation of software

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 



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.


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.

Get acquaintance with Arduino MKR

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


Cloud solutions, Big Data storage and visualization tools


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.


image The things network is an IoT platform to join and build own LoRa network.


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.  Unfortunately without the arduino MKR module (1100) I was unable to use its benefits at all.

Last not least image 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:



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.

First measurements

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



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



Cloud based data acquisition

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:;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:

  • Read environmental data with all MKRENV board sensors,
  • parallely
    • save it on the SD card
    • and send Via LoRa to the local LoRa transmitter (MKR1300)
    • print on serial terminal (when connected to the PC)
  • receive these packages in LoRa receiver  (MKR1300)
  • add to the received data information of signal strength
  • send data via UART to ESP8266 module
    • + show above actions on the serial terminal
  • Send data to the thinspeak service via WiFi (ESP8266 od NODEMCU)
    • + show above actions on the serial terminal


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

Battery usage assessment

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…


General system immunity

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.


Summary of results


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