модем d-link 2640u и arduino uno
- Войдите на сайт для отправки комментариев
Втр, 23/04/2013 - 00:57
Здравствуйте.
У меня такая проблема.
Нужно получить некоторые данные от модема d-link 2640u через arduino.
Подключаю модем к ардуино следующим образом:
Модем Ардуино
rx -> tx
tx -> rx
gnd -> gnd
Для наглядности внутринности модема
Отправляю команды для авторизации и не посредственно команду для получения информации. В результате хочу получить в Мониторе порта текст (хотя бы слово).
Передача данных выполняется после нажатия на кнопку. Ниже продемонстрирую код, которые дает какой-то результат. Я получаю кракозябры, не могу понять эта информация с модема или просто мусор. Подскажите, что я делаю не правильно.
const int buttonPin = 2; // номер входа, подключенный к кнопке const int ledPin = 13; // номер выхода светодиода byte incomingByte; // для хранения полученных данных char* AT_command_string = "admin"; //логин и пароль char* AT_command_string2 = "adsl info"; // команда // переменные int buttonState = 0; // переменная для хранения состояния кнопки void setup() { Serial.begin (115200); // скорость // инициализируем пин, подключенный к светодиоду, как выход pinMode(ledPin, OUTPUT); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); } void loop(){ // считываем значения с входа кнопки buttonState = digitalRead(buttonPin); // проверяем нажата ли кнопка // если нажата, то buttonState будет HIGH: if (buttonState == HIGH) { // включаем светодиод digitalWrite(ledPin, HIGH); Serial.write(AT_command_string+"\13"); // передача на модем admin - логин Serial.flush(); // ждем окончания передачи Serial.write(AT_command_string+"+\13"); // передача пароля admin Serial.flush(); // ждем окончания передачи Serial.write(AT_command_string2+"\13"); // передача команды Serial.flush(); //ждем окончания передачи } else { // выключаем светодиод digitalWrite(ledPin, LOW); } if (Serial.available()>0) { // если что-то есть в буфере incomingByte =Serial.read(); // то читаем и приравниваем переменной Serial.print("I received: "); //выводим в Монитор порта сообщение Serial.println(incomingByte); // выводим, что получили } }
Интересно как этот код может дать результат если он даже не скомпилируется... - это раз. А два при таком подключении в мониторе вы можете увидить только то что сами отправляете.
Я понял о чем Вы. Это я уже допустил ошибку, но даже не считая ошибку, все равно не работает.
29
Serial
.write("
admin\13"
);
// передача на модем admin - логин
30
Serial
.flush();
// ждем окончания передачи
31
32
Serial
.write(
"
admin\13"
);// передача пароля admin
33
Serial
.flush();
// ждем окончания передачи
34
35
Serial
.write("
adsl info\13"
);
// передача команды
36
Serial
.flush();
таким образом была реализована передача на модем, в одной из тем данного форума. Правда модем использовался совершенно другой. Как мне можно получить данные. Потому что я вообще не могу понять, проходит ли вообще процесс авторизации или нет.
Подскажите как правильно подключить? Я так подключил, исходя из примера.
Или лучше здесь применить библиотеку SoftwareSerial.h?
Здесь я делал отправку/прием данных через блютуз
Авторизацию на модеме выполнил. Информация подойдет как для D-link 2640 так и для D-link 2500 модемов. Только распиновка будет разной!
Не сочтите за спам. Здесь более подробно показ процесс подключения Ардуино к модему и написания программы авторизации