Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/TelnetClient

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


TELNET-клиент[1]

Этот пример подключает Arduino к TELNET-серверу при помощи Ethernet Shield. Сообщения могут идти в обе стороны – от Arduino к удаленному серверу и от удаленного сервера к Arduino – и эта коммуникация осуществляется при помощи последовательной передачи данных. Для этих целей отлично подходит Serial Monitor.

Необходимое оборудование

  • Сетевой модуль Arduino Ethernet Shield;
  • Плата Arduino, совместимая с Shield;

Необходимое ПО

  • TELNET-сервер;
  • Также для этой цели подойдет скетч Processing под названием ChatServer;

Цепь

Shield позволяет подключить плату Arduino к Ethernet-контроллеру WizNet (через SPI), и это подключение осуществляется при помощи 10-ого, 11-ого, 12-ого и 13-ого контактов. У более поздних моделей Shield имеется встроенный слот для SD-карты, SS-контакт которой в данном примере управляется через 4-ый цифровой контакт.

Shield должен быть подключен к сети при помощи Ethernet-кабеля. Также вам надо поменять сетевые настройки в скетче, чтобы они соответствовали настройкам вашей сети.

ArduinoPlusEthernetShield.png

Shield крепится поверх платы Arduino.

Код

  1. /*
  2. TELNET-клиент
  3.  
  4. Этот скетч, используя Arduino Ethernet Shield на базе WizNet, подключается к TELNET-серверу (http://www.google.com).
  5. Вам потребуется TELNET-сервер, с которым его можно протестировать.
  6. Для этой цели хорошо подойдет скетч Processing под названием
  7. ChatServer (часть библиотеки Network), запущенный на порте 10002.
  8. Его можно найти среди примеров в приложении Processing,
  9. которое можно скачать здесь ¬- http://processing.org.
  10.  
  11. Цепь:
  12. * Ethernet Shield, подключенный к 10-ому, 11-ому, 12-ому и 13-ому контактам
  13.  
  14. Создан 14 сентября 2010,
  15. модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
  16. */
  17.  
  18. #include <SPI.h>
  19. #include <Ethernet.h>
  20.  
  21. // Ниже вводим MAC-адрес и IP-адрес вашего контроллера.
  22. // IP-адрес будет зависеть от вашей локальной сети:
  23. byte mac[] = {  
  24.   0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  25. IPAddress ip(192,168,1,177);
  26.  
  27. // Вводим IP-адрес сервера, к которому собираемся подключиться:
  28. IPAddress server(1,1,1,1);
  29.  
  30. // Инициализируем библиотеку EthernetClient
  31. // с необходимыми для нас IP-адресом и портом сервера
  32. // (порт 23 является для TELNET портом по умолчанию,  
  33. // но если вы используете скетч Processing, то вам нужен порт 10002):
  34. EthernetClient client;
  35.  
  36. void setup() {
  37.   // Запускаем Ethernet-соединение:
  38.   Ethernet.begin(mac, ip);
  39.  // Инициализируем последовательную передачу данных и ждем открытия порта:
  40.   Serial.begin(9600);
  41.    while (!Serial) {
  42.     ; // Ждем подключения последовательного порта (нужно только для Leonardo)
  43.   }
  44.  
  45.  
  46.   // Даем Shield секунду на инициализацию:
  47.   delay(1000);
  48.   Serial.println("connecting...");  //  "Подключение..."
  49.  
  50.   // Если успешно подключились, сообщаем об этом на Serial Monitor:
  51.   if (client.connect(server, 10002)) {
  52.     Serial.println("connected");  //  "Подключено"
  53.   }
  54.   else {
  55.     // Впрочем, если подключиться не удалось, тоже сообщаем:
  56.     Serial.println("connection failed");  //  "Подключиться не удалось"
  57.  
  58.   }
  59. }
  60.  
  61. void loop()
  62. {
  63.   // Если от сервера доступны какие-либо входящие байты,
  64.   // считываем их и выводим через Serial Monitor:
  65.   if (client.available()) {
  66.     char c = client.read();
  67.     Serial.print(c);
  68.   }
  69.  
  70.   // Покуда в очереди есть какие-нибудь данные,
  71.   // считываем их и «выгоняем» из порта (если он открыт):
  72.   while (Serial.available() > 0) {
  73.     char inChar = Serial.read();
  74.     if (client.connected()) {
  75.       client.print(inChar);
  76.     }
  77.   }
  78.  
  79.   // Если сервер отключился, останавливаем работу клиента:
  80.   if (!client.connected()) {
  81.     Serial.println();
  82.     Serial.println("disconnecting.");  //  "Отключение."
  83.     client.stop();
  84.     // Ничего не делаем:
  85.     while(true);
  86.   }
  87. }

См.также

  1. Arduino Ethernet Shield
  2. Getting started with the ethernet shield
  3. Ethernet library
  4. ChatServer
  5. WebClient
  6. WebServer
  7. PachubeCient?
  8. TwitterClient
  9. BarometricPressureWebServer

Внешние ссылки

  1. Arduino - Telnet Client