• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Электронная рамка

elena

New member
Всем доброго дня/вечера! Делаю один интересный проект, электронную рамку. http://mozgochiny.ru/electronics-2/ramka-elektronnyiy-potseluy-svoimi-rukami/
Использовался модуль ESP8266 12-E вместо Intel Edison, плату паяла сама по аналогичной схеме. Все работает. Но не получается трансформировать код, который предназначен для ардуино, в код, который будет исправно работать на ESP. Неделю с этим мучаюсь. Например, в серверной части, там где микрофон, к точке доступа подключаюсь, но сообщение "KISS" приходит через раз на веб-страницу, т.е на единичное превышение уровня шума не срабатывает, надо постоянно стучать,чтобы слово отобразилось. И то не всегда. Принцип работы сервера:
Программа действует как веб-сервер (на основе Wi-Fi веб-сервера). Она использует библиотеку WiFi, которая поставляется в комплекте с Arduino IDE для подключения к локальной сети и создает основную страницу HTML с IP-адресом, который является уникальным для вашего платы. Когда вы дуете на микрофон и пересекаете установленный порог, она выводит «поцелуй» на страницу, в противном случае страница остается пустой.
Клиент уж еще более мудренее. Пожалуйста, помогите разобраться ) Код вставила тот, что я пыталась переделать. Во вложениях исходные файлы для ардуино
Код:
#include <ESP8266WiFi.h>

const char* ssid = "Keenetic-7878";
const char* pass = "ololo123;

WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // listen for incoming clients
  WiFiClient client = server.available();
  if (client) {
    Serial.println("new client");

    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        String c = client.readStringUntil('\r');
        Serial.print(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c[0] == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 1");  // refresh the page automatically every second
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");

          int sensorReading = analogRead(5);
          if (sensorReading > 1000) { //put the threshold you discovered by testing your mic
            client.print("(kiss)");
            client.print("<br>");

            delay(10000);
          }

          client.println("</html>");
          break;

        }
        if (c[0] == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c[0] != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);

    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }

}
 

Вложения

tretyakov_sa

Moderator
Команда форума
Неделю с этим мучаюсь. Например, в серверной части, там где микрофон, к точке доступа подключаюсь, но сообщение "KISS" приходит через раз на веб-страницу, т.е на единичное превышение уровня шума не срабатывает, надо постоянно стучать,чтобы слово отобразилось. И то не всегда.
На видео не понятно!
Когда дуете, что должно произойти на второй рамке? Я так понял это работает в одну сторону?
 

elena

New member
На видео не понятно!
Когда дуете, что должно произойти на второй рамке? Я так понял это работает в одну сторону?
да, работает в одну сторону. на первой рамке датчик звука в виде микрофона электретного, дую, стучу, говорю, на второй рамке загораются светодиоды если шума было достаточно. Т.е на второй рамке светодиод и кнопка только, она уже ничего не передает, только принимает
 

Victor

Administrator
Команда форума
Клиент уж еще более мудренее
В этих примерах с нуля написана почти вся библиотека вебсервера, так что не мудрено, что начинающей трудно разобраться.
Если использовать стандартную библиотеку ESP8266WebServer, то код сократится до нескольких строчек - посмотрите примеры
на единичное превышение уровня шума не срабатывает, надо постоянно стучать,чтобы слово отобразилось
В скетче сервера, в строке 101 есть число 600 - поиграйтесь с ним и получите другой порог срабатывания
 

tretyakov_sa

Moderator
Команда форума
Вот здесь нужно точно MQTT использовать. Иначе как потдерживать связь из любой точки мира?
Скетч могу сделать если еще актуально. Про кнопку так ответа и не получил.
 
Сверху Снизу