I don't understand why I can't flash devices through the Arduino Tx/Rx

This COM6 port is from the arduino.

In the Simcom software image, the higher the baud rate the better for faster flashing.

At this moment my RX led of the arduino turns on and off very fast.

After that, there is no way to get the firmware to upload, I have tried everything I can,

  • Turn off the module, removing the voltage, or resetting it with the RST pin to GND.
  • Disconnect the usb cable from the Arduino and nothing.

Thing is, I see COM6 is grayed out...

Mmm I thought so, more or less.

More exactly what do you mean by grayed out ?

Should I install some other driver ?

This post, Port option greyed out - #4 by pert

Here they comment about the driver, but the chip of my Arduino is not ch340g but the other one.

I installed the Arduino IDE, and nothing.

There are 1K resistors in series with the Tx and Rx lines between the 16u2 USB-to-serial chip and the atmega328 on the UNO, that might be interfering with the serial communications.

The Tx line of the 16u2 connects to Rx/D0 of the atmega328, the Rx line of the 16u2 connects to Tx/D1 of the atmega328.

If i remove the 1k resistor maybe the problem is solved?

The resistors are surface mount, would be a lot of trouble to remove/replace.

Updating the bootloader of the Arduino with these .hex would not achieve anything?

I mean I have no solution? and how is it possible that other people use the arduino as ftdi converter?

I doubt there is anything wrong with the UNO, so updating the firmware on the 16u2 is unlikely to help.

Are you certain your jumper wires are making good contact? Sometimes the wires break inside the connector shell.

Can you send/receive commands to the SIM900 using the serial monitor? Does it accept AT commands?

Yes, I used with the other ftdi converter I bought and they worked for me, all give good continuity with my multimeter.

I can do it perfectly well.


I have an Arduino Mega I will try with it to see how it goes? I think I have also tried without any result.

You maked error in connection. When you using arduino as converter, you need to connect Rx to Rx and Tx to Tx, rather than usual rx - tx, tx - rx

Hi,

I'll try again, but I remember that it didn't work xD

It can be, but because you had another errors.

The rule - when you connecting the module to the arduino itself - you should swap the lines and connect RX -TX and TX - RX/ But if you use arduino just as USB-UART converter - you need use RX -RX and TX-TX scheme

Rare,

How strange about those errors,

And also that the arduino mega doesn't connect me either.

How can I find out more about these other errors, debuging?

What software do you have on the Arduino?

To reflash the SIM900, it must simply be passing the required binary through the two serial ports.

You need to use a board preferably with two hardware UARTS, or you’ll run into problems with software serial.

Once that ‘special’ Arduino pass-through code is running - you don’t touch reset ever until you’ve performed the modem update..

I think you’re making this much harder than it needs to be, the SIM900 (2G) is end of life, unlikely to need any more updates, but the requirement is legitimate for newer chipsets - I just think you need to understand the problem first, and the communications / handshaking required.

What software do you have on the Arduino?

The code

#include <SoftwareSerial.h>

SoftwareSerial SIM900A(7, 8); //Seleccionamos los pines 7 como Rx y 8 como Tx

int relay_pin = 2;

char incoming_char = 0;

void setup()
{
 SIM900A.begin(19200);
 Serial.begin(19200);
 digitalWrite(relay_pin, HIGH); 
 pinMode(relay_pin,OUTPUT);
 SIM900A.print("AT+CLIP=1\r"); //Activamos la identificación de llamada.
 delay(1000);
}

void loop() {
  // Display any text that the GSM shield sends out on the serial monitor
  if(SIM900A.available() > 0) {
    // Get the character from the cellular serial por
    // With an incomming call, a "RING" message is sent out
    incoming_char=SIM900A.read();
    //  Check if the shield is sending a "RING" message
    if (incoming_char=='R') {
      delay(10);
      Serial.print(incoming_char);
      incoming_char=SIM900A.read();
      if (incoming_char =='I') {
        delay(10);
        Serial.print(incoming_char);
        incoming_char=SIM900A.read();
        if (incoming_char=='N') {
          delay(10);
          Serial.print(incoming_char);
          incoming_char=SIM900A.read();
          if (incoming_char=='G') {
            delay(10);
            Serial.print(incoming_char);
            // If the message received from the shield is RING
            // Send ATA commands to answer the phone
            handleRelay();
            //SIM900.print("ATA\r");
          }
        }
      }
    }
  }
}

void handleRelay() {
  digitalWrite(relay_pin, LOW);
  delay(1000);
  digitalWrite(relay_pin, HIGH);  
}

To reflash the SIM900, it must simply be passing the required binary through the two serial ports.

Obviously I flashed it with an external ftdi converter, without using arduino. i don't know if i explained above?

But my intention is to know, if it is or was possible to do it with Arduino Uno R3.


Once that ‘special’ Arduino pass-through code is running - you don’t touch reset ever until you’ve performed the modem update..

Can you show me how you do it, I understand that you say flash the SIM900 modem with Arduino, I do not achieve it in any way, and as they comment above, the DTR pin and 1k resistor prevents it I understand.


I think you’re making this much harder than it needs to be, the SIM900 (2G) is end of life, unlikely to need any more updates, but the requirement is legitimate for newer chipsets - I just think you need to understand the problem first, and the communications / handshaking required.

I need it for a fair prototype, where possibly SMS messages will be sent in Latin America, when sent by SMS using the 4G LTE network.

In addition to the flashing, which allows 4 bands, I know that many as 2G for calls does not go well, due to the stacking of the GSM network on that frequency.

But in many countries 3G is used, especially in less developed countries.

Not must be, can be. Because the TX/RX ports can be driven directly from the USB converter if the Arduino processor is held in reset condition. That is an alternative method.

The resistors in line were mentioned, and it's a reasonable theory, but I wonder exactly how they could interfere...

I don't see any photos or wiring diagram. We would like some visibility to what you are doing, often words are not enough...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.