Авторизация на модеме D-link 2500 с помощью Arduino

Здравствуйте, уважаемые читатели! Совсем недавно я заинтересовался устройством для тестирования ADSL соединения. Основное назначение данного устройства заключается в тестировании телефонной линии и Интернет-соединения. Для удобной работы с цифровыми сигналами телефонной линии, их восприятия и обработке будет использован модем D-link-2500 и микроконтроллер Atmega 328 (платформа arduino uno).

Конечно, все параметры о линии можно получить через веб-интерфейс в разделе Device Info — Statistics – ADSL, но данный способ удобный, когда имеется под рукой есть ноутбук. ADSL-тестер предназначен для специалистов по ремонту и тестированию телефонных линий. Носить ноутбук на каждый вызов не совсем удобно, поэтому для отображения информации будет использован дисплей.

Алгоритм работы подобного устройства реализован следующим образом:

  1. Включение модема и ожидание его загрузки.
  2. Отправка запроса на авторизацию и команду для получения необходимой информации.
  3. Получение информации и отображение ее на дисплее тестера.

Первый шаг разработки подобного устройства было составление схемы. Так как для разработки был использован модем D-Link 2500, то он имеет следующую распиновку.

pin-d-link-2500

Пины подключения модема к arduino UNO (С лева Arduino, с права модем):

GND – GND

RX (0) – TX

TX (1) – RX

Внимание! После подключения возможно перестанут мигать светодиоды на модеме, возможно, необходимо соединять пины через резистор.

Example_button

Алгоритм работы прост: При нажатии на кнопку Arduino отправляет модему ряд команд для авторизации, после чего модем возвращает ответ об успешной/не успешной авторизации. Для посылки запроса авторизации на модем, была разработана программа, в среде Arduino IDE 1.0.2.

const int buttonPin = 2;     // номер входа, подключенный к кнопке
const int ledPin =  13;      // номер выхода светодиода
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(0x0A);            // переход на новую строку (в некоторых модемах можно не выполнять)
     delay(2000);                   // ждем 2 сек.
    Serial.write(AT_command_string);// отправляем логин
    Serial.write(0x0A);             // переход на новую строку
    delay(1000);                    // ждем секунду
    Serial.write(AT_command_string);// отправляем пароль
    Serial.write(0x0A);             // переход на новую строку
    delay(1000);                    // ждем секунду
    Serial.flush();                 // очищаем буфер
    Serial.write(AT_command_string2); // отправляем команду
    Serial.write(0x0A);               // переход на новую строку
}
  else {
    digitalWrite(ledPin, LOW);        // выключаем светодиод
  }
  char s;              // переменная временного хранения данных
  if (Serial.available()) // если в буфере есть что-то
  {
    delay(100);          //ждем 1 млс
    while (Serial.available() > 0)  // выводим информацию, пока буфер не будет пустой
    {
      s=Serial.read();              // получение данных (посимвольно)
        Serial.println(s);          // вывод полученных данных (посимвольно)
    }
  }

Прошиваем микроконтроллер. Только перед прошивкой, как и в случае с подключения Bluetooth к Arduino, необходимо отключить модем от пинов Arduino 0 и 1. После прошивки можете их подключать. Если не отключать модем от Arduino перед прошивкой, то Arduino IDE перед загрузкой программы на микроконтроллер, выдаст ошибку.

При правильной работе устройств, в Мониторе порта должна появиться информация, о том что авторизация прошла успешно и информация о соединении DSL.