NB-IOT shield/Crowduino M0-SD

Any tutorial about how to set up NB-IOT shield and Crowduino(first steps) with a T-mobile card?

Thank you

Hi,

The example sketches from the support pages work on the Crowduino m0
http://support.sodaq.com/sodaq-one/nb-iot_tutorials/

Start with sending packets by AT commands, to see if you have the correct settings and able to send a packet.
Then after that you can install and play around with the libraries and sample codes.

Regards,
Jan

Actually sending the AT commands is required and should be the first thing to do to ensure the settings are correct. Otherwise the shield will remain disconnected.

In my opinion this is a must-do step one of the “getting started” steps.

This AT command sketch should work for you: http://support.sodaq.com/sodaq-one/at/

It may be necessary to change the UBLOX definition to use Serial.

Ok, then.
At the moment I got the following error notification:

Should I add any updated file to solve it?

Many Thanks

It appears that you haven’t installed the board files for the Crowduino M0-SD, or perhaps you still need to install some dependencies.

Now is actually working, but I am using Arduino M0 board files. I thought Crowduino had the own files itself…

May I know which files should I install to make working NB-IOT and Crowduino boards together, please? (Crowduino M 0-SD V1.0 is the board that Sodaq is selling on its starting Kit)

Finally I got it working, but it takes several attempts to run. Sometimes it says it doesn’t find a file, as the image I posted you above…

I am selecting Arduino M0 board to make Crowduino works. After several attempts though, is that board the right one?

Many thanks

This is the correct board to select.

I am getting the following errors:

  • NB-IoT Passthrough sketch:

It is solved after several attempts, plugin out and in the usb cable as well as changing the port several times.

  • Temp&Hum NB-IoT sketch:

This issue is not solved yet.

I am also considering my laptop port fault, since sometimes it doesn’t recognise the board.

Yeah, indeed. I have tried to plug Crowduino board in other laptop and same sound as on my Laptop. The sound keeps over and over as if it was trying to connect unsuccesfully. So, it is not my laptop’s port, it is something related about Crowduino board.
I don’t know if it was the main problem… Thank you

Did you select the Arduino m0?
Everytime you open / create a new sketch check if the selected board and port are correct.

The library is not found.
Extract the complete zip folder and open the extracted files.

Do you mean your library?
https://github.com/janvl1234/Sodaq_NBIoT_examples

Now I don’t manage to see gps data within Postman interface by your example sketch ‘nbIOT_gps’. Is it about the format code?
However, I am able to see it into my serial console.

Now, using the Sodaq_Nb-iot_All_sensor sketch from your library, I got the following data into Postman (serial console working well).

If I decode this data from Base64, the result doesn’t make any sense.

Thank you

Hi,

You need to convert base64 to hexadecimal.

Example:
CdISYwQDAE+rGQAH6cw=
Converted to hex: 09D212630403004FAB190007E9CC(14 bytes)

First two bytes are temperature
09D2
Convert to decimal: 2514
Divide by 100 = 25.14 degrees Celcius.

Humidity:
Take the next two bytes: 1263
Hex to decimal: 4707
Divide by 100 = 47.07% humidity

Pressure: 0403
Convert to decimal = 1027 hPa

GPS:
Lat: 004FAB19 -> 5221145 -> 52.21145
Lon: 0007E9CC -> 518604 -> 5.18604

Regards,
Jan

All right. Now it is cleared.

I would also like to know how could I get the accelerometer magnetometer working? Is there any code posted to make them run?

May I also apply an external battery into the NB-IoT board?

Many Thanks

https://github.com/janvl1234/Sodaq_NBIoT_examples/blob/master/Sensors/LSM303C_MinimalistExample/LSM303C_MinimalistExample.ino[quote=“Tonibco, post:19, topic:1112”]
May I also apply an external battery into the NB-IoT board?
[/quote]

The NB-IoT shield gets power from an Arduino(compatible) board.
If your Arduino Board supports an external battery then yes.

I am using Crowduino M0-SD.

I am actually on my way to add the Accelerometer/magnetometer sketch into the “Sodaq NB-IoT all sensors” one. However, I got the following error about the library…

These are the libraries I am using for the sketch:

    #include <Arduino.h>
    #include <Wire.h>
    #include <Sodaq_nbIOT.h>
     // #include <SoftwareSerial.h> // Uno
    #include "Sodaq_HTS221.h"
    #include "Sodaq_LPS22HB.h"
    #include "Sodaq_UBlox_GPS.h"
    **#include "SparkFunIMU.h"**
**    #include "SparkFunLSM303C.h"**
**    #include "LSM303CTypes.h"**

I did add the accelerometer call before the Void setup:

void setup();
 bool connectToNetwork();
 void initHumidityTemperature();
 void initPressureSensor();
 **void initAccelerometer();**
 void initGPS();
 void loop();
 void do_flash_led(int pin);

Void setup looks like that:

 void setup()
 {
	 pinMode(13, OUTPUT);
	 digitalWrite(13, HIGH);

	 DEBUG_STREAM.begin(9600);
	 MODEM_STREAM.begin(nbiot.getDefaultBaudrate());

	 while ((!DEBUG_STREAM) || millis() < 10000) {
		 // Wait for serial monitor for 10 seconds
	 }

	 DEBUG_STREAM.println("\r\nSODAQ All Things Talk Arduino Example\r\n");

	 nbiot.init(MODEM_STREAM, 7);
	 nbiot.setDiag(DEBUG_STREAM);

	 delay(2000);

	 while(!connectToNetwork());

	 initHumidityTemperature();
	 initPressureSensor();
         **initAccelerometer();**
	 initGPS();

	 digitalWrite(13, LOW);
 }

Accelerometer call is:

 void initAccelerometer(){

    if (myIMU.begin() != IMU_SUCCESS)
    {
      DEBUG_STREAM.println("Failed setup.");
      
    }
  }

I added 3 integer variables for the accelerometer functionality into the void loop:

   int16_t accelerometerX;
   int16_t accelerometerY;
   int16_t accelerometerZ;

   accelerometerX = myIMU.readAccelX() ;
   DEBUG_STREAM.println("Accelerometer X:" + (String)accelerometerX);
   message[cursor++] = accelerometerX >> 8;
   message[cursor++] = accelerometerX;

   accelerometerY = myIMU.readAccelY() ;
   DEBUG_STREAM.println("Accelerometer Y:" + (String)accelerometerY);
   message[cursor++] = accelerometerY >> 8;
   message[cursor++] = accelerometerY;

   accelerometerZ = myIMU.readAccelZ() ;
   DEBUG_STREAM.println("Accelerometer Z:" + (String)accelerometerZ);
   message[cursor++] = accelerometerZ >> 8;
   message[cursor++] = accelerometerZ;

The rest of the code is same as the “NB-IoT all sensors” one.

I would need some help, please