• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 использовать. Иначе как потдерживать связь из любой точки мира?
Скетч могу сделать если еще актуально. Про кнопку так ответа и не получил.
 
Сверху Снизу