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.
Схема
Код
1 /*
2 Сервер для общего чата на базе Arduino
3
4 Создает простой сервер, который раздает все входящие сообщения всем подключенным клиентам.
5 Чтобы начать пользоваться чатом, подключитесь к IP своего девайса и начинайте печатать.
6 Кроме того, клиентские сообщения будут отображаться и на Serial Monitor.
7 Вместе с этим скетчем используется модуль Arduino Ethernet Shield на базе WizNet.
8
9 Цепь:
10 * Ethernet Shield подключен к 10-ому, 11-ому, 12-ому и 13-ому контактам
11 * Клиенты подключены к аналоговым контактам с 0-ого по 5-ый (опционально)
12
13 Создан 18 декабря 2009 Дэвидом А. Меллисом (David A. Mellis),
14 модифицирован 9 апреля 2012 Томом Иго (Tom Igoe).
15 */
16
17 #include <SPI.h>
18 #include <Ethernet.h>
19
20 // Ниже укажите MAC-адрес и IP-адрес для контроллера.
21 // IP-адрес будет зависеть от вашей локальной сети.
22 // Внутренний адрес модема (gateway) и маска подсети (subnet) – опционально:
23 byte mac[] = {
24 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
25 IPAddress ip(192,168,1, 177);
26 IPAddress gateway(192,168,1, 1);
27 IPAddress subnet(255, 255, 0, 0);
28
29 // Создаем сервер, который будет «прослушивать»
30 // входящие соединения на порте 23:
31 EthernetServer server(23);
32 boolean alreadyConnected = false; // был ли клиент подключен прежде или нет
33
34 void setup() {
35 // Инициализируем Ethernet-девайс:
36 Ethernet.begin(mac, ip, gateway, subnet);
37 // Начинаем «слушать» клиентов:
38 server.begin();
39 // Запускаем последовательную передачу данных и ждем открытия порта:
40 Serial.begin(9600);
41 while (!Serial) {
42 ; // ждем подключения последовательного порта (нужно только для Leonardo)
43 }
44
45 Serial.print("Chat server address:"); // "Адрес чат-сервера:"
46 Serial.println(Ethernet.localIP());
47 }
48
49 void loop() {
50 // Ждем нового клиента:
51 EthernetClient client = server.available();
52
53 // Когда клиент отсылает первый байт, здороваемся с ним:
54 if (client) {
55 if (!alreadyConnected) {
56 // очищаем буфер для входящих данных:
57 client.flush();
58 Serial.println("We have a new client"); // "У нас новый клиент!"
59 client.println("Hello, client!"); // "Привет, клиент!"
60 alreadyConnected = true;
61 }
62
63 if (client.available() > 0) {
64 // Считываем байты, пришедшие от клиента:
65 char thisChar = client.read();
66 // Возвращаем эти байты клиенту:
67 server.write(thisChar);
68 // Кроме того, возвращаем эти байты серверу:
69 Serial.write(thisChar);
70 }
71 }
72 }
См.также
- Arduino Ethernet Shield
- Getting started with the ethernet shield
- Ethernet library
- ChatServer
- ChatClient
- WebClient
- WebServer
- PachubeClient?
- PachubeClientString?
- BarometricPressureWebServer
- UDPSendReceiveString
- UdpNtpClient
Внешние ссылки