В сети

Пользователей: 115
Из них просматривают:
Аналоги: 49. Даташиты: 27. Инструкции: 4. Новости: 11. Остальное: 1. Программы: 1. Производители: 2. Профиль пользователя: 3. Торрент: 1. Форум: 15. Чат: 1.
Участников: 3
Гостей: 112

an , Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

Просмотр этой темы:   1 анонимных пользователей





Чат-сервер на Arduino в домашней сети
Главный Инженер
Зарегистрирован:
08.02.2009 20:08
Из: Днестровск
Сообщений: 1766
Не в сети
Это мой первый опыт новичка в том деле, потому рассказываю, как я его создавал. Чат предполагается вести в программе telnet (она есть и прописана в самой Windows, но по умолчанию не установлена).

Для создания чата на Arduino приобрёл плату-дополнение (иначе говоря шилд) Arduino UNO Ethernet Shield Wiznet W5100
Установил его в контакты поверх платы Arduino UNO. Подключил сетевой кабель к шилду Ethernet и свободному порту роутера. Подключил кабель питания от адаптера 12В/2А к плате Arduino UNO. При этом на шилде начнёт светится и мигать линейка светодиодов. Подключил USB кабель к компьютеру и Arduino UNO.

Установил программу telnet. Для этого нужно перейти в:
Пуск - Параметры - Приложения - Программы и компоненты - Включение или отключение компонентов Windows - ставим галочку напротив Telnet Client - жмём OK и ждём окончания установки.

Узнал IP адрес своего компьютера в домашней сети:
Пуск - Параметры - Сеть и интернет - Просмотр свойств сети - Нахожу строчку "IPv4-адрес: 192.168.0.102/24". Запоминаю только цифры до знака косой черты, то есть "192.168.0.102".

Просканировал свою домашнюю сеть на наличие других подключенных устройств, бесплатной программой Advanced IP Scanner, чтобы наглядно увидеть список какие IP адреса уже заняты. Среди списка IP адресов домашней сети много свободных, выбрал один из них, например 192.168.0.103

Запустил программу для прошивки Arduino, вставил готовый встроенный скетч из примера: Файл - Примеры - Ethernet - AdvancedChatServer.
В скетче в строке "IPAddress ip(192, 168, 1, 177);" изменил цифры, а точнее IP адрес моего шилда, присвоил ему свободный адрес домашней сети 192.168.0.103 и прошил.

Я выложил здесь этот же самый скетч, но с комментариями на русском языке. После прошивки в этой же программе запустил монитор порта: Инструменты - Монитор порта. В открывшемся окне с названием COM4 появилась надпись "Адрес сервера чата:192.168.0.103". Ясно сервер-чат на Arduino уже в работе. В противном случае могла бы появиться надпись "Шилд Ethernet не найден. Извините, не могу работать без оборудования. "

Теперь подключился к созданному чат-серверу на каждом компьютере в домашней сети:
Запустил программу telnet:
Пуск - Служебные-Windows - Выполнить - Напечатал слово telnet и нажал кнопку ОК. Открылось окно с названием "C:WINDOWS\system32\telnet.exe". В этом окне написал всего одну латинскую букву o и нажал клавишу Enter. Появилась надпись ( в ). Напечатал адрес сервера чата, а именно цифры с точками: 192.168.0.103 и нажал клавишу Enter. Появилась надпись: "npuBem, k^ueHm HoMep: 0", а название окна сменилось на "Telnet 192.168.0.103"

Переключил раскладку своей клавиатуры на кириллицу и написал сообщение в программе telnet. Моё сообщение тут же по буквам появилось на другом компьютере в программе telnet также подключенному к чат-серверу.
Заглянул в монитор порта Arduino, там отобразился мой и второй подключенный компьютер.
Так как мне нет необходимости следить за клиентами сети, то закрыл программу Arduino и отсоединил USB кабель, оставив лишь питание самой платы Arduino с её Ethernet шилдом, чат сервер при этом продолжил работать предоставляя возможность писать сообщения друг другу в программе telnet.
/*
 Расширенный чат-сервер

  Более продвинутый сервер, который распространяет любые входящие сообщения
  всем подключенным клиентам, кроме клиента, с которого пришло сообщение.
  Чтобы использовать, откройте на компьютере telnet и введите IP-адрес вашего конроллера.
  Вы также можете видеть входные данные клиента в последовательном мониторе.
  Использование шилда Arduino Wiznet Ethernet.

  Цепь:
  * Экран Ethernet прикреплен к контактам 10, 11, 12, 13

  создано 18 декабря 2009
  Дэвид А. Меллис
  изменено 9 апреля 2012
  Том Айго
  переработан, чтобы использовать оператора == 25 ноября 2013
  Норберт Трухсесс

 */

#include <SPI.h>
#include <Ethernet.h>

// Введите MAC-адрес и IP-адрес для вашего Arduino контроллера ниже.
// IP-адрес будет зависеть от вашей локальной сети.
// шлюз и подсеть необязательны:
byte mac[] = {
  
0xDE0xAD0xBE0xEF0xFE0xED
};
IPAddress ip(1921680103); //сюда вводим не занятый адрес для вашего Arduino контроллера
IPAddress myDns(19216801); 
IPAddress gateway(19216801);
IPAddress subnet(25525500);


// по умолчанию Telnet использует порт 23
EthernetServer server(23);

EthernetClient clients[8];

void setup() {
  
// Вы можете использовать Ethernet.init (pin) для настройки контакта CS
  //Ethernet.init(10);  // Большинство шилдов Arduino
  //Ethernet.init(5);   // MKR ETH шилд
  //Ethernet.init(0);   // Teensy 2.0
  //Ethernet.init(20);  // Teensy++ 2.0
  //Ethernet.init(15);  // ESP8266 with Adafruit Featherwing Ethernet
  //Ethernet.init(33);  // ESP32 with Adafruit Featherwing Ethernet

  // Инициализация устройства Ethernet
  
Ethernet.begin(macipmyDnsgatewaysubnet);

  
// Откройте последовательные соединения и дождитесь открытия порта:
  
Serial.begin(9600);
  while (!
Serial) {
    ; 
// Дождитесь подключения последовательного порта. Требуется только для собственного порта USB
  
}

  
// Проверка наличия аппаратных средств Ethernet
  
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    
Serial.println("Шилд Ethernet не найден. Извините, не могу работать без оборудования. :(");
    while (
true) {
      
delay(1); // Ничего не происходит, ни одна точка не работает без оборудования Ethernet
    
}
  }
  if (
Ethernet.linkStatus() == LinkOFF) {
    
Serial.println("Кабель Ethernet не подключен.");
  }

  
// Начать прослушивание клиентов
  
server.begin();

  
Serial.print("Адрес сервера чата:");
  
Serial.println(Ethernet.localIP());
}

void loop() {
  
// Проверка подключения нового клиента и передача привета (до поступления данных)
  
EthernetClient newClient server.accept();
  if (
newClient) {
    for (
byte i=08i++) {
      if (!
clients[i]) {
        
Serial.print("У нас новый клиент #");
        
Serial.println(i);
        
newClient.print("npuBem, k^ueHm HoMep: ");
        
newClient.println(i);
        
// После того, как мы "принимаем", клиент больше не отслеживается сервером
        // Поэтому мы должны сохранить его в нашем списке клиентов
        
clients[i] = newClient;
        break;
      }
    }
  }

  
// Проверка входящих данных от всех клиентов
  
for (byte i=08i++) {
    if (
clients[i] && clients[i].available() > 0) {
      
// Чтение байтов из клиента
      
byte buffer[80];
      
int count clients[i].read(buffer80);
      
// Запись байтов на все другие подключенные клиенты
      
for (byte j=08j++) {
        if (
!= && clients[j].connected()) {
          
clients[j].write(buffercount);
        }
      }
    }
  }

  
// Остановка всех клиентов, которые отключаются
  
for (byte i=08i++) {
    if (
clients[i] && !clients[i].connected()) {
      
Serial.print("клиент отключился #");
      
Serial.println(i);
      
clients[i].stop();
    }
  }
}

Прикреплённый файл:



jpg  Шилд Ethernet.jpg (109.90 KB)
290_5eda69b5d3c9c.jpg 800X402 px

jpg  Монитор порта.jpg (32.56 KB)
290_5eda69cb5eda0.jpg 893X372 px

jpg  Окно telnet.jpg (48.50 KB)
290_5eda6ac1d85b5.jpg 647X340 px

Отправлено: 05.06 18:54


Re: Чат-сервер на Arduino в домашней сети
Главный Инженер
Зарегистрирован:
08.02.2009 20:08
Из: Днестровск
Сообщений: 1766
Не в сети
Для того, чтобы вести чат со смартфона на ОС Android через веб-чат на Arduino c Enthernet шилдом, нужно войти со смартфона в домашнюю сеть по WiFi, установить с "Google Play" приложение Mobile Telnet
Запустить на телефоне приложение "Mobile Telnet", нажать на экране в правом верхнем углу три точки, затем надпись "Telnet Setting" и ввести адрес нашего чат-сервера, а именно 192.168.0.103 и нажать на "ОК". Снова нажать на экране в правом верхнем углу три точки, затем на "Connect". Появится надпись "Connecting to 192.168.0.103 port 23, please wait..." и ниже "npuBem, k^ueHm HoMep: 1". Внизу дисплея в белом поле пишем сообщение латинскими буквами (главный недостаток Mobile Telnet - кириллицу не поддерживает в обе стороны), например, "Privet!" (можно без кавычек) и жмём рядом справа на надпись "Send". На компьютере другого клиента в программе "telnet" появится ваше сообщение со словом "Privet!". Если другой подключенный клиент начнёт печатать латинскими буквами у себя на компьютере, то на вашем телефоне начнёт отображаться набираемый текст.

Прикреплённый файл:



jpg  Чат в Mobile Telnet.jpg (33.52 KB)
290_5edacbce54c8d.jpg 480X800 px

Отправлено: 06.06 1:48






[Расширенный поиск]


Разное

При пайке деталей над горловиной кинескопа накройте ее куском материи.