Uploading a sketch with connected NB-IoT shield not possible

Hello,

I’ve started with Arduino yesterday to manage a NB-IoT deluxe board. I tried the serial pass through and oher examples. But everytime I connect the NB IoT shield to my Arduino/Genuino Uno, it is not possble to upload a sketch. Uploading a sketch without NB IoT shield connected is working and I get results also in serial monitor etc. But with connected NB IoT-Board, the access is not possible.

Failure message is:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x86

What could be wrong?

Peter

This might be caused by the NB-IoT module sending responses to the programming commands.

The Arduino/Genuino Uno has only a single UART (Serial). This is used for programming the board and can be used with the built in Serial Monitor or another terminal emulator.

The NB-IoT is connected to Serial via the D0/D1. If the NB-IoT module is enabled (via D7) then it will also receive any data send from the USB connection.

If the NB-IoT module remains powered up during the programming sequence. It is very possible that it may send it’s own responses (as it won’t recognise the programming commands) which will cause the programmer to report an error.

I’m not completely sure if the programming sequence always results in a reset of all the I/O pins (including D7). If that were true, then the NB-IoT module would be powered down for every programming attempt.

You could test all of this by uploading a blank sketch first. This will leave the NB-IoT module powered down. Then, with the shield attached, try uploading a new sketch.

Hallo Gabriel,
no, it doesn’t work. I wrote a sketch with setting all Pins (3…13) to low. Perhaps I’ll try it with a Leonardo-board the next days.

I measure +5V (High) at D0 and D1 with or without NB IoT shield connected - comming from Arduino Uno. Is this OK?

Is
#define SerialOut Serial
#define UBLOX Serial
for Arduino/Genuino Uno OK? This is the only definition, which occurs no errors.
Is it neccessary, to solder JP201, JP102 or SJ101? They are all unsoldered.

This is my code:

#include “Arduino.h”

#define SerialOut Serial
#define UBLOX Serial

// Pin to turn on/off the nb-iot module
#define powerPin 7

void setup()
{
// Turn the nb-iot module on
pinMode(powerPin, OUTPUT);
digitalWrite(powerPin, HIGH);

pinMode(13, OUTPUT);
digitalWrite(13, HIGH);

// Start communication
SerialOut.begin(9600);
UBLOX.begin(9600);
}

// Forward every message to the other serial
void loop()
{
while (SerialOut.available())
{
uint8_t c = SerialOut.read();
SerialOut.write©;
UBLOX.write©;
}

while (UBLOX.available())
{
SerialOut.write(UBLOX.read());
}
}

I’m not sure what exactly is causing the upload issue, I still think it is related to the UART.

The shield has level converters for the TX/RX pins and should work with both 3.3V and 5V IO levels from the main board. The output to the the main board uses IOREF to determine what level to send. (See page 2 of the schematic.)

Jumpers:

  • SJ101: Can be used to switch the i2c address of the LPS22HD from 0x5D (SJ HIGH) to 0x5C (SJ LOW).
  • SJ102: Used when the main Arduino board does not specify the level voltage on then IOREF pin.
  • SJ201: Used to connect the UBLOX module’s reset pin to the Arduino board’s reset pin.

http://support.sodaq.com/wp-content/uploads/2017/02/nb-iot_shield_rev3b_sch-1.pdf

Problem soved. With a Arduino Leonardo it is working! Perhaps my Uno is broken or the Uno is not the best solutionfor NB IoT shield.
Thanks! Peter