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 ![]()
My first modem used 1200/75
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
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.

