Comunication with u.s. robotics 56k message modem

I have a 56k modem from U.S. Robotics and I would like to interface it with Arduino, I send the at command and the modem responds with strange characters
does anyone know the wiring from max 3232 to the modem with a 25-pin socket
thanks

I would imagine this wiring is standard, so should be easy to find with a web search engine.

not used a 25 pin D-type for some years but I seem to remember DTE 25pin male D-type pin 2 is Tx, pin 3 is RX and pin 7 is GND
if you have an oscilloscope you can check
have a look at RS232 (EIA-232) Serial 25 pin
what TTL-RS232 module do you have? give a link?

Hm, you used the Max for the initial test, right?

Wrong speed then. Can't remember if those modems autodetect, so try 9600 up to 115200.

Edit: Send a couple of CR after every new speed.

i have hw-044 rs232

if it is a very old modem also try 1200, 2400 and 4800 baud or even 300!

It's not. See topic :upside_down_face:

My first modem used 1200/75 :wink: But not between DCE - DTE...

Does your TTL-RS232 board look like this?

If yes then RX connects to RX and TX connects to TX.

Make a cable like this

yes, this

Then follow my instructions on wiring

The mnemonic I used back then was pin Two is Transmit on a dTe device (a PC is a DTE, modem is DCE).

I created the cable but when I press enter it gives me unclear characters
let me explain:
when I press AT it gives �

Which Arduino are you using?
Post your code. In the IDE click on Edit, then Copy for Forum. Come back here and do a paste.

#include <SoftwareSerial.h>
SoftwareSerial modem(0,1);
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
modem.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

if (Serial.available()){
    modem.write(Serial.read());
                       }
if (modem.available()){
    Serial.write(modem.read());
                      }


}


i have arduino uno

Pin 0 and 1 are already Serial to USB. Don't use them.

Use any pins other than 0 and 1
Just do a modem.print("AT")
delay(100)
Then do a Serial.read();

Use this code:
Connect pin 6 to RX and 5 to TX

#include <SoftwareSerial.h>

SoftwareSerial modem(6, 5); // RX, TX

void setup()
{
  Serial.begin(9600); // Set serial monitor to 9600
  modem.begin(9600);
}

void loop()
{
  char incomingByte;
  modem.print ("AT");
  Serial.println( "AT sent, waiting for OK");

  while (modem.available() == 0) {delay(1);}

  incomingByte = modem.read();
  Serial.print(incomingByte);
  delay(5);
  incomingByte = modem.read();
  Serial.println(incomingByte);

  delay (1000);
}

modem not respond OK
16:41:55.071 -> AT sent, waiting for OK

If nothing comes back and you are sure you have everything connected correctly then I'm not to sure what is wrong.
Try a loopback test. Connect pin2 to pin3 on the 25 pin connector at the end of the cable

1 Like

The modem is wired as a DCE. Therefore it transmits on pin 3 of the DB-25, and receives on pin 2. Ground is pin 7.

If there are DIP switches on the back of your modem, look on the bottom to see if there's a diagram telling you what they are. Turn off any that mention hardware handshaking.

From memory: your modem may be set to either a fixed or auto baud. If the latter, the modem will pick up the baud rate when you send it an AT command (modem.println("AT");). It will respond with "OK". If the former, you'll have to experiment to discover what baud rate the modem is set to. There may be a DIP switch that controls the fixed/auto baud selection.

2 Likes