Урок №14 Создание точки доступа
В данном уроке мы научимся как сделать из нашей платы веб-сервер с передачей данных по WiFi сети.
Подключение
Мы будем создавать локальную WiFi сеть и пока периферийные устройства нам не понадобятся. Подключите плату к компьютеру. Вам нужно будет поменять данные «название сети» и «пароль», в остальном код будет типовым. Затем вам понадобиться смартфон с которого вы подключитесь к WiFi сети, и сможете увидеть информацию которую передает наша плата. Ну, поехали!
Что нам понадобится?
Достаньте и подготовьте необходимые детали из коробки.
Arduino Uno
Мозг нашей схемы
Популярный микроконтроллер, его мощности достаточно пока нам для начальных экспериментов
Светодиод
Любого цвета
Длинная ножка на положительно заряженный, короткая на отрицательно
Макетная плата
на 400 точек
Соединения идут параллельно, плата разделена на 2 части горизонтальной линией
Резистор
На 10 кОм
О резисторах подробно мы подробно поговорим чуть ниже в разделе "Базовые знания"
Код
#include <WiFi.h>
/* Введите данные своей точки доступа */
const char* ssid = "Nazvanie";  // Название точки доступа 
const char* password = "Parol";  // Пароль для точки доступа
/* Данные сервера */
IPAddress local_ip(192,168,1,1); //IP адрес
IPAddress gateway(192,168,1,1); //Шлюз
IPAddress subnet(255,255,255,0); //Маска сети
WiFiServer server(80);
/*Переменные для подключения веб-сервера*/
char linebuf[80]; 
int charcount=0;

void setup() {
  Serial.begin(115200);
  /*Настраиваем и включаем точку доступа*/
  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip, gateway, subnet);
  delay(100);
  server.begin(); //Запускаем веб сервер
  Serial.println("Точка доступа и сервер запущены");
  /*-----------------------------------*/
}
void loop() {   
 wifiAPserver(); //Запуск сервера и показ данных 
 delay(100);
}

void wifiAPserver(){
    // анализируем канал связи, высматривая входящих клиентов:
  WiFiClient client = server.available();
  if (client) {
    Serial.println("New client");  //  "Новый клиент"
    memset(linebuf,0,sizeof(linebuf));
    charcount=0;
    // HTTP-запрос заканчивается пустой строкой:
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // считываем HTTP-запрос, символ за символом:
        linebuf[charcount]=c;
        if (charcount<sizeof(linebuf)-1) charcount++;
        // если добрались до конца строки (т.е. получили
        // символ новой строки) и строка пуста,
        // это значит, что HTTP-запрос закончился;
        // следовательно, можно отправлять ответ:
        if (c == '\n' && currentLineIsBlank) {
          // отправляем стандартный заголовок HTTP-ответа:
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");  
                     //  "Тип контента: text/html"
          client.println("Connection: close");
                     //  "Соединение: отключено";
                     //  после отправки ответа связь будет отключена
          client.println();
          client.println("<!DOCTYPE HTML><html><head>");
          client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head>");
          client.println("<h1>Hello World</h1>");
          break;
        } 
      }
    }
    // даем веб-браузеру время, чтобы получить данные:
    delay(1);
 
    // закрываем соединение:
    client.stop();
    Serial.println("client disconnected");  //  "клиент отключен"
  }
  }
Изменяя сторку

client.println("<h1>Hello World</h1>")

мы можем поменять содержимое веб-страницы. Если вы уже изучали html, то знаете что, измени в h1 на h2 вы уменьшите шрифт.

Откройте монитор порта -

После загрузки кода с помощью смартфона подключитесь к созданной сети. Она будет иметь называние и пароль такой, какой вы указали в 3 и 4 строке кода. После подключения зайдите в браузер и вбейте адрес 192.168.1.1. Вам должно открыться приветственное сообщение «Hello World».
Тут мы видим, что после загрузки страницы появляется надпись «new client» и после обновления информации на веб странице «client disconnected».

Чтобы увидеть больше примеров работы с WiFi откройте Arduino IDE, зайдете в «Файлы – Примеры – WiFi – выберете допустим WifiScan» Этот код сканирует доступные WiFi сети и выводит их на монитор порта.
Вопросы и задания
1. Измените передаваемую информацию

2. Поменяйте шрифт на меньше изменив <h1> </h1> на <h2> </h2>

3. Изменяя функцию Serial.Println() измените вывод информации на монитор порта на подключен\отключен

4. Загрузите еще примеры с примерами работы с WiFi