Arduino:Примеры/ChatServer
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Чат-сервер на базе Arduino[1]
Этот пример показывает, как с помощью Arduino создать простой сервер для общего чата. Чтобы начать пользоваться этим импровизированным чатом, откройте Serial Monitor, подключитесь к IP-адресу вашего девайса и можете приступать к печати. Все входящие сообщения будут отсылаться сразу всем клиентам, подключенным к серверу (включая тех, кто пишет эти сообщения). Вдобавок клиентские сообщения будут отображаться и на Serial Monitor.
Необходимое оборудование
- Сетевой модуль Arduino Ethernet Shield;
- Плата Arduino, совместимая с Shield;
Цепь
Shield позволяет подключить к плате Ethernet-контроллер WizNet (через шину SPI). Для SPI-подключения к WizNet используется 4 контакта – 10-ый, 11-ый, 12-ый и 13-ый. У поздних моделей Shield имеется слот для SD-карты.
Управление SS-контактом SD-карты осуществляется через 4-ый цифровой контакт.
Shield должен быть подключен к сети при помощи Ethernet-кабеля. Кроме того, вам надо будет поменять сетевые настройки в скетче, чтобы они соответствовали вашей сети.
Модуль Arduino Ethernet Shield помещается поверх платы Arduino.
Схема
Код
/*
Сервер для общего чата на базе Arduino
Создает простой сервер, который раздает все входящие сообщения всем подключенным клиентам.
Чтобы начать пользоваться чатом, подключитесь к IP своего девайса и начинайте печатать.
Кроме того, клиентские сообщения будут отображаться и на Serial Monitor.
Вместе с этим скетчем используется модуль Arduino Ethernet Shield на базе WizNet.
Цепь:
* Ethernet Shield подключен к 10-ому, 11-ому, 12-ому и 13-ому контактам
* Клиенты подключены к аналоговым контактам с 0-ого по 5-ый (опционально)
Создан 18 декабря 2009 Дэвидом А. Меллисом (David A. Mellis),
модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
*/
#include <SPI.h>
#include <Ethernet.h>
// Ниже укажите MAC-адрес и IP-адрес для контроллера.
// IP-адрес будет зависеть от вашей локальной сети.
// Внутренний адрес модема (gateway) и маска подсети (subnet) – опционально:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);
IPAddress gateway(192,168,1, 1);
IPAddress subnet(255, 255, 0, 0);
// Создаем сервер, который будет «прослушивать»
// входящие соединения на порте 23:
EthernetServer server(23);
boolean alreadyConnected = false; // был ли клиент подключен прежде или нет
void setup() {
// Инициализируем Ethernet-девайс:
Ethernet.begin(mac, ip, gateway, subnet);
// Начинаем «слушать» клиентов:
server.begin();
// Запускаем последовательную передачу данных и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта (нужно только для Leonardo)
}
Serial.print("Chat server address:"); // "Адрес чат-сервера:"
Serial.println(Ethernet.localIP());
}
void loop() {
// Ждем нового клиента:
EthernetClient client = server.available();
// Когда клиент отсылает первый байт, здороваемся с ним:
if (client) {
if (!alreadyConnected) {
// очищаем буфер для входящих данных:
client.flush();
Serial.println("We have a new client"); // "У нас новый клиент!"
client.println("Hello, client!"); // "Привет, клиент!"
alreadyConnected = true;
}
if (client.available() > 0) {
// Считываем байты, пришедшие от клиента:
char thisChar = client.read();
// Возвращаем эти байты клиенту:
server.write(thisChar);
// Кроме того, возвращаем эти байты серверу:
Serial.write(thisChar);
}
}
}
См.также
- Arduino Ethernet Shield
- Getting started with the ethernet shield
- Ethernet library
- ChatServer
- ChatClient
- WebClient
- WebServer
- PachubeClient?
- PachubeClientString?
- BarometricPressureWebServer
- UDPSendReceiveString
- UdpNtpClient
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino