Вопрос должен быть легким. Не работает wifi со скетчем, описанным тут в самом конце https://chukin.ru/diploma/yashuk-bsc.pdf К wifi роутеру не подключается Nodemcu. А стандартный способ из доков ардуино работает. #include <ESP8266WiFi.h> const char* ssid = STASSID; const char* password = STAPSK; WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Помогите скрестить. Как правильно перенести wifi. в первый скрипт?
Та это и перенесите, то есть добавьте из первого то, чего не хватает во втором, сравнить то можете? : Код (C++): #include <ESP8266WiFi.h> const char* ssid = "Keenetic-1319"; const char* password = "MsN7JwLK"; void setup() { Serial.begin(115200); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, would try to act as both a client and an access-point and could cause network-issues with your other WiFi-devices on your WiFi-network. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); }
Как тогда будет работать код внизу в esp. , если теперь инициализируется объект wifi. ? Код (C++): // Подключаемся к серверу esp.println("AT+CIPSTART=\"TCP\",\"184.106.153.149\",80"); // Передајм данные espdo(3000); esp.print("AT+CIPSEND="); esp.println( cmd.length() ); espdo(3000); esp.println(cmd); espdo(20000); Что нужно вычистить, что оставить?
аналогично как тут https://create.arduino.cc/projecthu...sensor-b4f8fc?ref=user&ref_id=168805&offset=4 Но это не влияет на wifi часть
Ну если схема как указано выше - не будет у вас Wi-Fi. Ни как не будет влиять на "wifi часть"! На Nano нет Wi-Fi!
Ну вот, уже хоть как то начала просматриваться схема устройства. Почему я спрашивал об этом? Потому, что у вас в первом посте два скетча. Со вторым скетчем более менее все понятно, это скетч для ESP8266. ( подключение - как в последней схеме) А вот с первым - не совсем понятно, откуда вы его взяли в таком виде? В нем подключение к удаленному серверу осуществляется через ESP8266, которая подключена к основной плате (вопрос: какая это плата?), через SoftSerial. Команды на подключение выдаются AT командами через SoftSerial. Значит подключенная ESP - с оригинальной "АТ прошивкой". И в тоже время в коде, есть строка: Код (C++): #include <ESP8266WiFi.h> относящаяся ко второму варианту, когда код для ESP8266 компилируется в Ардуино ИДЕ , и это никак не связано с "АТ прошивкой" Понятно? Может стоит сразу оставить это все на потом???
Оракул, проверил исходник, нашел косяк, приложил его заново. В ранее вложенном файле DSM501A.ino остались мои эксперименты, это я добавлял ESP8266WiFi.h из WiFiClient.ino Я нашел исходник в дипломной работе, см первый пост. Привлекло, что код автономный, отправляет в интернет. У меня был закуплен DSM501a, хотел его пустить в дело, собирать статистику. Если найду другой вариант взять статистику в csv, то воспользуюсь. В дипломе упоминается Arduino Nano и ESP-01, поэтому начал с ESP. Хотелось бы с помощью заменить void setup() или оставить код после void setup(), работающий с этим датчиком, и начать собирать данные. Нашел еще в eng сети похожий код, прикладываю ссылку https://forum.mysensors.org/post/37585 , может пригодится.
чем вам код с инструктаблес (сообщение #8) не устраивает? там и датчик есть и есп8266, от него и стартуйте и добавляйте что вам надо. И не надо будет ни с каким другим скетчем его обьединять
Не подходит печатать в порт. Нужен готовый код передачи на сервак, типа в первом посте, можно и mqtt, если соединится с MjD.
А что значит "Не подходит печатать в порт". Сначала отлаживаете работу с датчиком, печатаете в порт значения, смотрите, устраивают результаты или нет. Потом ищите пример с отправкой чего либо по подходящему вам варианту, смотрите как отправляет, что отправляет. Если все устраивает - постепенно добавляете во второй код работу с датчиком. Первый код (из первого сообщения) - он совсем мягко говоря "не очень". Там задержки на delay() по 20 секунд, хотя в вашем случае может и сойдет. Но сам скетч вам не подходит, там ESP с АТ прошивкой используется, две платы нужно, неудобно это и примеров мало. Начинайте с отладки двух частей по второму варианту: работа с датчиком и отправка информации "куда-то". Готовый код вы вряд ли найдете, и датчик - редкость этот дадчег, как мне кажется.
что-то мне начинает казаться. что сами вы писать этот код и пытаться не собираетесь. В таком случае, если "нужен готовый код", то для этого есть раздел "закажу проект".
А где он такое говорил?Он же сказал А потом Вот и помоги ему скрестить шпаги скетч со скриптом. А я то после вчерашнего-никакой. Как выжатый лимон.
Вот скрестил.Не благодари! Код (C++): #include <SoftwareSerial.h> #include <ESP8266WiFi.h> #ifndef STASSID #define STASSID "Keenetic-1319" #define STAPSK "MsN7JwLK" #endif const char* ssid = STASSID; const char* password = STAPSK; const char* host = "djxmmx.net"; const uint16_t port = 17; int pin = 8; unsigned long duration; unsigned long starttime; unsigned long sampletime_ms = 1000;//sampe 1s ; unsigned long lowpulseoccupancy = 0; float ratio = 0; double concentration = 0; int gLed = 7; int yLed = 6; int rLed = 5; // Пишем передачу и получения сигналов с esp8266 на цифровые каналы SoftwareSerial esp(10,11); String writeAPIKey = "JX91LPLU2IJW01GV"; void espdo(long time) { delay(time); while(esp.available() > 0) { Serial.write(esp.read()); } } void setup() { // Задаем скорость последовательного порта Serial.begin(115200); // Переключаем аналоговый контакт 2 на вход напряжения pinMode(2,INPUT); // Иниициализация модуля esp esp.begin(115200); delay(2000); //сбрасываем все навтройки esp esp.println("AT+RST\r\n"); espdo(2000); // Задајм есп режим станции esp.println("AT+CWMODE_DEF=1"); espdo(2000); // Устанавливаем параметры для подключения esp.println("AT+CWJAP=\"Keenetic-1319\",\"M\""); espdo(5000); // Разрешаем ему лишь одно подключение esp.println("AT+CIPMUX=0"); espdo(2000); } /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, would try to act as both a client and an access-point and could cause network-issues with your other WiFi-devices on your WiFi-network. */ WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); void loop() { static bool wait = false; Serial.print("connecting to "); Serial.print(host); Serial.print(':'); Serial.println(port); // Use WiFiClient class to create TCP connections WiFiClient client; if (!client.connect(host, port)) { Serial.println("connection failed"); delay(5000); return; } // This will send a string to the server Serial.println("sending data to server"); if (client.connected()) { client.println("hello from ESP8266"); } // wait for data to be available unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); delay(60000); return; } } // Read all the lines of the reply from server and print them to Serial Serial.println("receiving from remote server"); // not testing 'client.connected()' since we do not need to send data here while (client.available()) { char ch = static_cast<char>(client.read()); Serial.print(ch); } // Close the connection Serial.println(); Serial.println("closing connection"); client.stop(); if (wait) { delay(300000); // execute once every 5 minutes, don't flood remote service } wait = true; esp.println("AT+CWLAP"); duration = pulseIn(pin, LOW); lowpulseoccupancy = lowpulseoccupancy+duration; if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s { ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage concentration = (1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62)/0.000283168; //concentration = 1e6*concentration; Serial.print("concentration = "); Serial.print(concentration); Serial.print(" M^-3 - "); if (concentration < (1000/0.000283168)) { Serial.println("Бездымная беспыльная окружаящая среда"); } if (concentration > (1000/0.000283168) && concentration < (20000/0.000283168)) { Serial.println("Поток воздуха попадает на датчик"); } if (concentration > (20000/0.000283168) && concentration < (315000/0.000283168)) { Serial.println("Дым"); } if (concentration > (315000/0.000283168)) { Serial.println("Густой дым(сигаретный или даже пожар)"); } lowpulseoccupancy = 0; starttime = millis(); delay(20000); } //Serial.print("concentration"); //Serial.print(" "); Serial.println(concentration); //String cmd = "GET /input/" + publicKey + "?private_key=" + privateKey String tsData = "field1="; tsData += +concentration; String cmd = "POST /update HTTP/1.1\n"; cmd += "Host: api.thingspeak.com\n"; cmd += "Connection: close\n"; cmd += "X-THINGSPEAKAPIKEY: "+writeAPIKey+"\n"; cmd += "Content-Type: application/x-www-form-urlencoded\n"; cmd += "Content-Length: "; cmd += tsData.length(); cmd += "\n\n"; cmd += tsData; // Подключаемся к серверу esp.println("AT+CIPSTART=\"TCP\",\"184.106.153.149\",80"); // Передајм данные espdo(3000); esp.print("AT+CIPSEND="); esp.println( cmd.length() ); espdo(3000); esp.println(cmd); espdo(20000); }
да он просто накидал оператры "в одну корзину"... типичная ситуация - тот кто хочет скрестить скетчи - не может, а кто мог бы это сделать - не хотят...