Physical connection of ITEAD 3g to Uno board

Hi,

Sorry, this seems like a dumb set of questions, but I just can’t seem to figure them out.

I have a Arduino Uno and a SIM5216A shield (http://littlebirdelectronics.com.au/products/itead-3g-shield). I am running this on a Mac

When I load a sketch to the Uno alone, no problems - the code loads and runs.

However, if I stack the SIM5216A shield on top and add the same code I get this error

       Using Port                    : /dev/tty.usbmodem1411
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

My USB cable is connected to the UNO, not the 3g shield.
It doesn’t matter if I turn the power on on the 3g shield or not.

I have tried quitting the IDE, unplugging the cable and then reconnecting before restarting the IDE
I have also tried reducing the baud rate

At the same time, the other thing that I have noted is the power sources don’t match up (have a look at the photo attached).

What I see is that the 5v pin on the 3g shield lines up with the 3.3v pin on the uno and vice versa. Is that a typo on the board or is there something going on there?

Thanks

Irish

Hi,

I get the same error, did you find any useful information on this? Seems to still upload the code correctly.

Are the libraries in the SMS example for the UNO compatible? gets locked up in the network config stage

If you look at the Wiki for your board (http://wiki.iteadstudio.com/ITEAD_3G_Shield) you will see that TX and RX can be jumpered to any pins from 0 to 7. IF YOU USE Pin 0 and/or Pin 1 IT WILL LIKELY INTERFERE WITH BOOTLOADING.

Sorry, I am a complete newbie to all this and in answer to Ryan_87 - no I have not found a solution to this yet.

I was expecting to be able to connect the shield to the uno and play with sms’s, instead Im trying to learn how to get the three devices (mac, uno, shield) to talk to each other.

If there is code to change the tx/rx pins, how can I achieve this given that I can’t even upload blink with the shield attached

I have tried this:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 7);

but it hasn’t made any difference

Thanks for your help johnwasser

IrishKiwi

Fixed!!

What I didn’t realise was that I had to change jumpers on the actual board

Here is the code that I am currently running that works

Cheers

#include <SoftwareSerial.h>
#define rxPin 6
#define txPin 7
#define power_pin 8
#define reset_pin 9
SoftwareSerial mySerial(rxPin, txPin); // RX, TX

char AtCommand[] = "ATI\r";
void setup()  
{
  
  pinMode(13, OUTPUT);
  // Open serial communications and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  boolean notConnected = true;
  //Serial.println(AtCommand);

  // set the data rate for the SoftwareSerial port
  //Serial.println("wait 5s for modem to wake up");
  
  // power on 3G module automatically
  pinMode(power_pin, OUTPUT);
  digitalWrite(power_pin, HIGH);
  
  delay(5);
  mySerial.begin(115200);
  mySerial.println("AT+IPR=9600\r\n"); // chnage baudrate to 9600 baud
  
  Serial.println("Changing baudrate");
  mySerial.begin(baudrate);
  mySerial.println(AtCommand);
}

void loop() // run over and over
{
/*  if (mySerial.available())
  {
    Serial.write(mySerial.read());
  }
  if (Serial.available())
  {
    mySerial.write(Serial.read());
  }*/
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);   
}

For anyone else stumbling on this, what Irishkiwi found was actually what johnwasser said to do, though it probably wasn't clear. There is a jumper block - a set of 3 x 8 pins sticking up - right next to the two round audio ports at the end of this board. These same jumpers are right next to your digital pins D0 - D7.

You should see two little silver lines looking down on these pins, where you actually have jumpers installed on the pins. The jumpers are little black plastic connectors that connect two pins, like jumper wires do. By default, those jumpers are installed on the first and second sets of pins, which correspond to D0 and D1. But you need D0 and D1 to program the arduino. So you'll need to move the jumpers to other pairs of pins. If you're connecting the middle pin to the one closest to your digital pin, that's choosing the transmit line (Tx). If you're connecting the middle pin to the one farthest from your digital pin, that's choosing the receive line (Rx). You need to pick a pair of Tx and Rx lines other than D0 and D1, and that you're not using for something else. Then, you need to tell the software serial setup which pins you're using. In Irishwiki's code, he set them to D6 and D7, the last two on the jumper block, and set "mySerial(rxPin, txPin)" so that it will use those two.