MultiTech MultiConnect mDot with Arduino and Ubidots

The MultiConnect® mDot™ is a LoRaWAN™ ready module, capable of 2-way communication over distances in excess of 10 miles / 16 km outdoors.

The mDot brings a low power ARM® Cortex®-M4 processor, running ARM’s mbed™ OS, along with developer friendly libraries. This example benefits from its onboard processor to read data from analog inputs and send it to Ubidots.

To be able to see the data streamed by the mDot you will need a LoRa gateway. Check out our LoRa MultiTech MultiConnect Conduit tutorial here.


IMPORTANT UPDATE NOTE: Since version 2.0, the library will not make use of the Software Serial library due to multiple bugs found when trying to use it, because of this, the user will not be able to make any debug. We strongly advise to our users to use this library as reference for faster deployments but to develop their own firmware routine that fits their need once they think to go out to the market.


1. With some wires connect the mDot device with the Arduino board as shown in the table below:

For more information about the PinOut of the mDot device, please refer here.

  1. Download the Ubidots ArduinoMdot library here
  2. Now, click on Sketch -> Include Library -> Add .ZIP Library
  3. Select the .ZIP file of ArduinoMdot and then "Accept" or "Choose"
  4. Close the Arduino IDE and open it again.

Send values to Ubidots

This example is intended for sending two values to the conduit Gateway, don't forget to change the Network name, password and also sub band if you set a value different to one inside the gateway.

Be careful if the firmware of your mDot isn't compatible with firmware of your MultiConnect Conduit Gateway, if it is different the mDot won't connect to your Conduit LoRa Network.

 * Include Libraries
#include <ubidotsMdot.h>

 * Define Constants
char const * SSID_NAME = "...."; // Put here your LoRa SSID
char const * SSID_PASS = "...."; // Put here your LoRa Network password

Ubidots client(SSID_NAME, SSID_PASS);

 * Main Functions

void setup() {
  // put your setup code here, to run once:

void loop() {
  // put your main code here, to run repeatedly:
  float value_1 = 1;
  float value_2 = 25.234;
  client.add(value_2, 4, 2);  // char size is four, accuracy is 2 decimals
Did this answer your question?