Arduino UNO R3, с WiFi R3, макетная плата WeMos ESP8266 не получается прошить ардуино

sus256
Offline
Зарегистрирован: 13.09.2021

Доброго времени суток.

Прошу помощь, попала плата в руки



Arduino UNO R3, с WiFi R3, макетная плата WeMos ESP8266
[​IMG]



Контроллер esp прошить получилось, а вот ардуино ну не как не получается , win10 , драйвер поставил пишет USB-SERIAL CH340

вроде все как положено, программу скачал с оф сайта.



Выставил переключатели 3 и 4 в положение on, все остальные в off, в настройках ide поставил ком порт 3 как в диспетчере устройств, выбрал плату Arduino uno и нажал кнопку Загрузка.



через 3 минуты получил вот такое сообщение

Arduino: 1.8.16 (Windows 10), Плата:"Arduino Uno"



Скетч использует 924 байт (2%) памяти устройства. Всего доступно 32256 байт.



Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум: 2048 байт.



Произошла ошибка при загрузке скетча



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x93



avrdude: stk500_recv(): programmer is not responding



avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x93







Этот отчёт будет иметь больше информации с

включенной опцией Файл -> Настройки ->

"Показать подробный вывод во время компиляции"





Скажите что я делаю не так? не как не могу записать скетч в ардуино.....

b707
Offline
Зарегистрирован: 26.05.2017

sus256 пишет:





Выставил переключатели 3 и 4 в положение on, все остальные в off, в настройках ide поставил ком порт 3 как в диспетчере устройств, выбрал плату Arduino uno и нажал кнопку Загрузка.

картинку переключателя покажите

sus256
Offline
Зарегистрирован: 13.09.2021

20210913-140348

sus256
Offline
Зарегистрирован: 13.09.2021

b707 пишет:

sus256 пишет:





Выставил переключатели 3 и 4 в положение on, все остальные в off, в настройках ide поставил ком порт 3 как в диспетчере устройств, выбрал плату Arduino uno и нажал кнопку Загрузка.

картинку переключателя покажите

 

Все же как по распиновке?

rkit
Offline
Зарегистрирован: 23.11.2016

Можно ресет попробовать нажать при загрузке, но вообще это дефект, и надо оформлять возврат.

b707
Offline
Зарегистрирован: 26.05.2017

а ключики 7 и 8 не должны быть включены тоже?

Описание к плате есть какое-то? Или схема?

sus256
Offline
Зарегистрирован: 13.09.2021

Hff4cb4da20164590949856703ac753b7R.jpg

sus256
Offline
Зарегистрирован: 13.09.2021

вот как то там, неужели моя ардуинка бракованная? 

sus256
Offline
Зарегистрирован: 13.09.2021

Правильно ли я плату выбираю? ардуино уно? 

b707
Offline
Зарегистрирован: 26.05.2017

sus256 пишет:

Правильно ли я плату выбираю? ардуино уно? 

да, правильно.

ЕСП, говорите,  на этой же плате прошили? Успешно?

Кабель USB тот же используете?

sus256
Offline
Зарегистрирован: 13.09.2021

да есп прошивается, кабель тот же, а вот ардуино хоть тресни не в какую...... 

b707
Offline
Зарегистрирован: 26.05.2017

попробуйте прошить через ISP

sus256
Offline
Зарегистрирован: 13.09.2021

надо выставить программатор avr-isp? 

b707
Offline
Зарегистрирован: 26.05.2017

sus256 пишет:

надо выставить программатор avr-isp? 

нет, надо собрать программатор из другой ардуино. Гугл в помощь, "восстановление загрузчика на ардуино"

sus256
Offline
Зарегистрирован: 13.09.2021

другой ардуины нет, скорее всего уйдет в долгий ящик.....

b707
Offline
Зарегистрирован: 26.05.2017

sus256 пишет:

другой ардуины нет

такое впечатление, что вы в экспедиции на СевПолюсе.

sus256
Offline
Зарегистрирован: 13.09.2021

почти, у меня в городе таких плат не продают , заказывал с китая, ждал чуть ли не 2 мес 

tomas111
Offline
Зарегистрирован: 01.03.2018

У меня такая-же ардуинка. Я хочу сделать web сервер (страницу) при подключении показывать переменные? Это возможно на этой плате?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

tomas111 пишет:

У меня такая-же ардуинка. Я хочу сделать web сервер (страницу) при подключении показывать переменные? Это возможно на этой плате?

да

tomas111
Offline
Зарегистрирован: 01.03.2018

Сможете мне немного помочь? Я отблагодарю.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

что именно?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

tomas111 пишет:
Сможете мне немного помочь? Я отблагодарю.

https://arduino.ru/forumy/ishchu-ispolnitelya

tomas111
Offline
Зарегистрирован: 01.03.2018

Подружить Uno и ESP8266.

К уно будет подключен GSM и пережать всё на веб страницу. Подобный проект есть в амперке. Хочу повторить на этой плате.

b707
Offline
Зарегистрирован: 26.05.2017

tomas111 пишет:
Сможете мне немного помочь? Я отблагодарю.

Помогать можно только тому, кто что-то делает.

Что вы пытались сделать сами? показывайте

tomas111
Offline
Зарегистрирован: 01.03.2018

Смотрите, я научился прошивать UNO выставляя определенные перемычки. И вроде программируется ESP (выставляя определенные перемычки) но проверить не пойму как, запрограммировалась она или нет.

Так-же мне не понятно будет ли работать они между собой. И как это проверить?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

tomas111 пишет:

Смотрите, я научился прошивать UNO выставляя определенные перемычки. И вроде программируется ESP (выставляя определенные перемычки) но проверить не пойму как, запрограммировалась она или нет.

Так-же мне не понятно будет ли работать они между собой. И как это проверить?

зашейте в ESP блинк и посмотрите

tomas111
Offline
Зарегистрирован: 01.03.2018

Прошивка проходит, но я не вижу моргания. Светодиод тускло горит. В том то дело, не совсем понятно.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Какой светодиод? У меня такой платы не было, схему смотри на каком пине висит светодиод (если он там вообще на есп есть)

tomas111
Offline
Зарегистрирован: 01.03.2018

Давай-те по-порядку.

Сперва начнём с UNO.

Я хочу подключить ATGM336H.

RX и TX подключил. Подзабыл уже всё. как вывести в монитор порта?

Мой скейтч:

 
int inData = 0; // для входящих данных
 
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
  pinMode(0, INPUT);
  pinMode(1, OUTPUT);
  Serial.begin(9600);
}
 
// the loop function runs over and over again forever
void loop() {
  if (Serial.available() > 0) { // если есть доступные данные
    inData = Serial.read(); // считываем байт
 
    // выводим то, что получили
    Serial.print("I received: ");
    Serial.println(inData, DEC);
  }
 
Всё ли тут правильно? Данные из RX pin 0 и TX pin 1 будут видны в мониторинге порта?
Слабо мигает лампочка TX на плате
tomas111
Offline
Зарегистрирован: 01.03.2018

По поводу светодиода я вижу какой-то светодиод на плате. Маркировки у него нет. Возможно он для другого. Нормальную схему я тоже не нашёл к сожалению... Так же надо нажать reset перед загрузкой скетча, что бы он загрузился.

b707
Offline
Зарегистрирован: 26.05.2017

tomas111 пишет:

я вижу какой-то светодиод на плате. Маркировки у него нет. Возможно он для другого.

... вижу какой-то светодиод... не знаю для чего он....

при таком подходе я бы не ждал, что у вас хоть что-то заработает...

Схема любой ардуино платы есть в инете, надо только хотеть искать.

Но тут можно и без схемы. Загрузите свой скетч, возьмите мультиметр, переключите его в режим вольтметра... встаньте черным проводом на GND, а красным почередно проверьте все другие выходы. Если где-то найдете "мигающий" сигнал попеременно 0 и 3.3в - это  значит код работает

 

Кстати, покажите код блинка, который вы заливаете в плату. Код выше никаким светодиодом и думает мигать...

tomas111
Offline
Зарегистрирован: 01.03.2018

Согласен, но я делал по видео уроку. Сейчас я сперва хочу понять как будет дружить уно с ATGM.

Кое что начало получаться. По крайне мере данные я увидел в мониторе порта. 

Если я пишу:

#include <SoftwareSerial.h> 
SoftwareSerial ss(11, 12);
 
void loop(){  
  {while (ss.available() > 0)
  { 
    byte gpsData = ss.read(); 
   Serial.write(gpsData); 
  }
  }

Данные в порт ссыпаться, но стоит мне поменять с ss(11, 12); на ss(0, 1); ничего не происходит. Получается я не могу поверить ATGM на эти контакты?

b707
Offline
Зарегистрирован: 26.05.2017

tomas111 пишет:

 стоит мне поменять с ss(11, 12); на ss(0, 1); ничего не происходит. Получается я не могу поверить ATGM на эти контакты?

нет, не можете

контакты 0 и 1 заняты USB преобразователем, который соединен с монитором порта на вашем компе. Когда вы используете в скетче Serial - это как и есть доступ к контактам 0 и 1

tomas111
Offline
Зарегистрирован: 01.03.2018

Понял, спасибо! Получается мне нужно использовать другие контакты что бы получить данные с ATGM? И на каких пинах сидит ESP8266 ?

b707
Offline
Зарегистрирован: 26.05.2017

tomas111 пишет:

 на каких пинах сидит ESP8266 ?

ищите схему платы - узнаете :)

Я предполагаю, что на этих же - 0 и 1. Соответственно вы не можете одновременно использовать ЕСП8266 и Монитор порта, только либо то, либо другое. Для выбора, что куда подключать - на плате должны быть переключатели.

 

Вообще, не хочу вас расстраивать - но эта плата крайне неудачный выбор для первого проекта. Две отдельных - отдельно Уно и отдельно ЕСП8266 - были бы в 100 раз удобнее

tomas111
Offline
Зарегистрирован: 01.03.2018

Я понимаю. Я вообще думал будет как на видео амперки. Всё просто и лего. Но оказалось крайне сложно. Схему ищу, но вменяемую не могу найти.

https://user-images.githubusercontent.com/23693439/118506781-0dfa4a80-b7...

Очень похоже схема на правду... Хотя я так понимаю мне нужно после будет соединить ещё проводами контакты?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

tomas111 пишет:

Я понимаю. Я вообще думал будет как на видео амперки. Всё просто и лего. Но оказалось крайне сложно. Схему ищу, но вменяемую не могу найти.

Схемы не ищут - схемы рисуют.

И скетчи тоже - не ищут, а пишут.

Вот когда Вы научитесь самостоятельно писать скетчи и рисовать схемы, тогда все автоматически станет просто и легко.

А пока Вы не умеете ни того, ни другого, - все будет оставаться крайне сложно.

 

И еще, учиться нужно по книжкам, а не по видосикам. Тогда есть надежда, что чему-нибудь научитесь.

tomas111
Offline
Зарегистрирован: 01.03.2018

Выставил перемычки 5-6-7 в положение ON остальные в OFF.

Скачал готовый скетч веб сервера.

Скетч:

https://diytech.ru/projects/sozdanie-veb-servera-esp8266-kod-i-skhemy

Взял от сюда что бы много кода не писать.

Заливаю туда и вижу диалог:

Загрузка завершена.

Executable segment sizes:
ICACHE : 32768           - flash instruction cache 
IROM   : 248212          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 27273   / 32768 - code in IRAM          (IRAM_ATTR, ISRs...) 
DATA   : 1504  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 1944  ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 25824 )         - zeroed variables      (global, static) in RAM/HEAP 
Скетч использует 278933 байт (29%) памяти устройства. Всего доступно 958448 байт.
Глобальные переменные используют 29272 байт (35%) динамической памяти, оставляя 52648 байт для локальных переменных. Максимум: 81920 байт.
esptool.py v3.0
Serial port COM7
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: a4:e5:7c:bc:33:3e
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0340
Compressed 283088 bytes to 207030...
Writing at 0x00000000... (7 %)
Writing at 0x00004000... (15 %)
Writing at 0x00008000... (23 %)
Writing at 0x0000c000... (30 %)
Writing at 0x00010000... (38 %)
Writing at 0x00014000... (46 %)
Writing at 0x00018000... (53 %)
Writing at 0x0001c000... (61 %)
Writing at 0x00020000... (69 %)
Writing at 0x00024000... (76 %)
Writing at 0x00028000... (84 %)
Writing at 0x0002c000... (92 %)
Writing at 0x00030000... (100 %)
Wrote 283088 bytes (207030 compressed) at 0x00000000 in 18.2 seconds (effective 124.2 kbit/s)...
Hash of data verified.
 
Leaving...
Hard resetting via RTS pin...
 
Выключаю ардуинку и ставлю перемычку 7 в OFF 
открываю монитор порта и вижу:
⸮HpI<>$h⸮⸮y˨⸮⸮ll⸮8Ih⸮⸮
 
На этом всё...
sadman41
Offline
Зарегистрирован: 19.10.2016

Дак скорость порта не совпадает с той, что в IDE Monitor указана.

tomas111
Offline
Зарегистрирован: 01.03.2018

Это я понимаю. Я после поставил скорость 115200 но телефон сеть не видит. Я пробую другой проект, из примеров. Что-то не хочет создавать точку доступа...

sadman41
Offline
Зарегистрирован: 19.10.2016

В Arduino IDE скомпилируйте скетч с опцией "дебаг", в мониторе поставьте скорость 74-чототам, и ресет кнопочкой. Что-то должно вывалиться из системных сообщений.

tomas111
Offline
Зарегистрирован: 01.03.2018

Спасибо, попробую так.

Но в целом Wifi работает.

Если я настраиваю подключаться к моему роутеру он подключается и я вижу веб страницу через комп! Но как точка доступа пока не могу добиться работы...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

чтобы работал и как точка доступа нужно  в скетч  добавлять код точки доступа, в вашем коде этого нет, ищите примеры (AP + STA)

tomas111
Offline
Зарегистрирован: 01.03.2018

Ночью я это уже понял.

Загрузил такой, вижу телефон его определяет но подключиться не может...

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
 
/* Установите здесь свои SSID и пароль */
const char* ssid = "NodeMCU";       // SSID
const char* password = "12345678";  // пароль
 
/* Настройки IP адреса */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
 
ESP8266WebServer server(80);
 
void setup() 
{
  Serial.begin(115200);
  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip, gateway, subnet);
  delay(100);
  server.begin();
  Serial.println("HTTP server started");
}
 
void loop() 
{
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>LED Control</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
  ptr +=".button {display: block;width: 80px;background-color: #1abc9c;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n";
  ptr +=".button-on {background-color: #1abc9c;}\n";
  ptr +=".button-on:active {background-color: #16a085;}\n";
  ptr +=".button-off {background-color: #34495e;}\n";
  ptr +=".button-off:active {background-color: #2c3e50;}\n";
  ptr +="p {font-size: 14px;color: #888;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<h1>ESP8266 Web Server</h1>\n";
  ptr +="<h3>Using Access Point(AP) Mode</h3>\n";
  ptr +="</body>\n";
  ptr +="</html>\n";
//  return ptr;
}
 
В мониторе порта вижу надпись TTP server started. Но больше ничего не происходит...
 
Получение IP адреса, но подключиться не может...
tomas111
Offline
Зарегистрирован: 01.03.2018

В общем я как посмотрю никто не может ничего путёвого мне посоветовать.

Как буд-то пишу сам себе. 

Есть код который работает в режиме станции:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
 
// Replace with your network credentials
const char* ssid     = "TP-Link";
const char* password = "pass";
/*const char* ssid     = "Arduino";
const char* password = "11223344";*/
 
/* Настройки IP адреса */
/*IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);*/
 
// Set web server port number to 80
WiFiServer server(80);
 
// Variable to store the HTTP request
String header;
 
// Auxiliar variables to store the current output state
String output5State = "off";
String output4State = "off";
 
void setup() {
  Serial.begin(115200);
  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);   //как станция
  /*WiFi.softAP(ssid, password);    // как точка доступа
  WiFi.softAPConfig(local_ip, gateway, subnet);   // как точка доступа*/
  delay(100);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}
 
void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients
 
  if (client) {                             // If a new client connects,
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == '\n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            
            // turns the GPIOs on and off
            if (header.indexOf("GET /5/on") >= 0) {
              Serial.println("GPIO 5 on");
              output5State = "on";
            //  digitalWrite(output5, HIGH);
            } else if (header.indexOf("GET /5/off") >= 0) {
              Serial.println("GPIO 5 off");
              output5State = "off";
            //  digitalWrite(output5, LOW);
            } else if (header.indexOf("GET /4/on") >= 0) {
              Serial.println("GPIO 4 on");
              output4State = "on";
            //  digitalWrite(output4, HIGH);
            } else if (header.indexOf("GET /4/off") >= 0) {
              Serial.println("GPIO 4 off");
              output4State = "off";
            //  digitalWrite(output4, LOW);
            }
            
            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            // CSS to style the on/off buttons 
            // Feel free to change the background-color and font-size attributes to fit your preferences
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");
            
            // Web Page Heading
            client.println("<body><h1>ESP8266 Web Server</h1>");
            
            // Display current state, and ON/OFF buttons for GPIO 5  
            client.println("<p>GPIO 5 - State " + output5State + "</p>");
            // If the output5State is off, it displays the ON button       
            if (output5State=="off") {
              client.println("<p><a href=\"/5/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/5/off\"><button class=\"button button2\">OFF</button></a></p>");
            } 
               
            // Display current state, and ON/OFF buttons for GPIO 4  
            client.println("<p>GPIO 4 - State " + output4State + "</p>");
            // If the output4State is off, it displays the ON button       
            if (output4State=="off") {
              client.println("<p><a href=\"/4/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/4/off\"><button class=\"button button2\">OFF</button></a></p>");
            }
            client.println("</body></html>");
            
            // The HTTP response ends with another blank line
            client.println();
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}
 
Я меняю только:
*/const char* ssid     = "TP-Link";
const char* password = "pass";*/
const char* ssid     = "Arduino";
const char* password = "11223344";
 
/* Настройки IP адреса */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
 
//WiFi.begin(ssid, password);   //как станция
WiFi.softAP(ssid, password);    // как точка доступа
WiFi.softAPConfig(local_ip, gateway, subnet);   // как точка доступа
 
После переходит в режим работы как точка доступа, с телефона подключиться у меня не выходит. Но с ПК он подключается правда нет ip адреса и вообще не понятно что происходит. Подозреваю что есть какой-то "секрет" для настройки.
Может кто с подобным сталкивался?

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

C 2018 года так и не осилил правила вставки кода на форум ???

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

tomas111 пишет:

В общем я как посмотрю никто не может ничего путёвого мне посоветовать.

первая же ссылка в гугле

tomas111
Offline
Зарегистрирован: 01.03.2018

Ага, я по этой ссылке уже проекты собрал, что то не работает либо какой-то "секрет" есть как работает esp....

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

tomas111 пишет:

Ага, я по этой ссылке уже проекты собрал, что то не работает либо какой-то "секрет" есть как работает esp....

показывай код

tomas111
Offline
Зарегистрирован: 01.03.2018

Я писал выше пару сообщений назад

Дублирую:

 

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// Replace with your network credentials
const char* ssid     = "Arduino";
const char* password = "11223344";

/* Настройки IP адреса */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

// Set web server port number to 80
WiFiServer server(80);

// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state
String output5State = "off";
String output4State = "off";

void setup() {
  Serial.begin(115200);
  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  //WiFi.begin(ssid, password);   //как станция
  WiFi.softAP(ssid, password);    // как точка доступа
  WiFi.softAPConfig(local_ip, gateway, subnet);   // как точка доступа
  delay(100);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                             // If a new client connects,
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == '\n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            
            // turns the GPIOs on and off
            if (header.indexOf("GET /5/on") >= 0) {
              Serial.println("GPIO 5 on");
              output5State = "on";
            //  digitalWrite(output5, HIGH);
            } else if (header.indexOf("GET /5/off") >= 0) {
              Serial.println("GPIO 5 off");
              output5State = "off";
            //  digitalWrite(output5, LOW);
            } else if (header.indexOf("GET /4/on") >= 0) {
              Serial.println("GPIO 4 on");
              output4State = "on";
            //  digitalWrite(output4, HIGH);
            } else if (header.indexOf("GET /4/off") >= 0) {
              Serial.println("GPIO 4 off");
              output4State = "off";
            //  digitalWrite(output4, LOW);
            }
            
            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            // CSS to style the on/off buttons 
            // Feel free to change the background-color and font-size attributes to fit your preferences
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");
            
            // Web Page Heading
            client.println("<body><h1>ESP8266 Web Server</h1>");
            
            // Display current state, and ON/OFF buttons for GPIO 5  
            client.println("<p>GPIO 5 - State " + output5State + "</p>");
            // If the output5State is off, it displays the ON button       
            if (output5State=="off") {
              client.println("<p><a href=\"/5/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/5/off\"><button class=\"button button2\">OFF</button></a></p>");
            } 
               
            // Display current state, and ON/OFF buttons for GPIO 4  
            client.println("<p>GPIO 4 - State " + output4State + "</p>");
            // If the output4State is off, it displays the ON button       
            if (output4State=="off") {
              client.println("<p><a href=\"/4/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/4/off\"><button class=\"button button2\">OFF</button></a></p>");
            }
            client.println("</body></html>");
            
            // The HTTP response ends with another blank line
            client.println();
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}

Так точка доступа есть, ноутбук коннектится но нет ip адреса в свойствах соединения и не открывает станицу 192.168.1.1

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Лови! Работает ужеЖ
 

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// Replace with your network credentials
const char* ssid     = "Arduino";
const char* password = "11223344";

/* Настройки IP адреса */
IPAddress local_ip(192, 168, 1, 1);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

// Set web server port number to 80
WiFiServer server(80);

// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state
String output5State = "off";
String output4State = "off";

void setup() {
  Serial.begin(115200);
  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  //WiFi.begin(ssid, password);   //как станция
  WiFi.softAPConfig(local_ip, gateway, subnet);   // как точка доступа
  WiFi.softAP(ssid, password);    // как точка доступа
  delay(100);
/*
while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  */
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop() {
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                             // If a new client connects,
    Serial.println("New Client.");          // print a message out in the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        header += c;
        if (c == '\n') {                    // if the byte is a newline character
          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();

            // turns the GPIOs on and off
            if (header.indexOf("GET /5/on") >= 0) {
              Serial.println("GPIO 5 on");
              output5State = "on";
              //  digitalWrite(output5, HIGH);
            } else if (header.indexOf("GET /5/off") >= 0) {
              Serial.println("GPIO 5 off");
              output5State = "off";
              //  digitalWrite(output5, LOW);
            } else if (header.indexOf("GET /4/on") >= 0) {
              Serial.println("GPIO 4 on");
              output4State = "on";
              //  digitalWrite(output4, HIGH);
            } else if (header.indexOf("GET /4/off") >= 0) {
              Serial.println("GPIO 4 off");
              output4State = "off";
              //  digitalWrite(output4, LOW);
            }

            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            // CSS to style the on/off buttons
            // Feel free to change the background-color and font-size attributes to fit your preferences
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");

            // Web Page Heading
            client.println("<body><h1>ESP8266 Web Server</h1>");

            // Display current state, and ON/OFF buttons for GPIO 5
            client.println("<p>GPIO 5 - State " + output5State + "</p>");
            // If the output5State is off, it displays the ON button
            if (output5State == "off") {
              client.println("<p><a href=\"/5/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/5/off\"><button class=\"button button2\">OFF</button></a></p>");
            }

            // Display current state, and ON/OFF buttons for GPIO 4
            client.println("<p>GPIO 4 - State " + output4State + "</p>");
            // If the output4State is off, it displays the ON button
            if (output4State == "off") {
              client.println("<p><a href=\"/4/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/4/off\"><button class=\"button button2\">OFF</button></a></p>");
            }
            client.println("</body></html>");

            // The HTTP response ends with another blank line
            client.println();
            // Break out of the while loop
            break;
          } else { // if you got a newline, then clear currentLine
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}