Перейти к публикации
iT4iT.CLUB

Рекомендованные сообщения

Странно.Когда ESP с загруженным проектом находится в режиме АР то доступ к ней только по адресу 10.10.10.1 или espws.local и перехват всех доменных имен и подмена их реальных ip адресов на адрес самой метеостанции не происходит. По мимо прочего в сериале в этом режиме присутствует строка ncsi.txt как на фото, предположить что это ББ я не мог так как не мог подумать что запросы ББ могут как-то пролезть в сериал.

Скрытый текст

ncsi.thumb.jpg.2a84d6f18c458a69e767efecd148a39b.jpg

 

Еще к вам просьба:

Я самостоятельно начал переделывать Ваш проект под себя, а именно запрос времени у NTP сервера  и выдачу их в сериал в виде ответа GPS для своих часов (если вы помните) запрос и ответ получилось сделать (фото ниже) но сейчас застрял на изучении верстки index.htm. Не могли бы вы подсказать как локально можно проверить правильность отработки скриптов WEB без загрузки их в ESP. Не знаю как это правильно назвать... типа заглушки API. Например пройти авторизацию. Пробовал также подсунуть показания датчиков создав файл sensors в папке /API где находится index.htm чтобы понять логику строку типа

{"light":54612,"temperature":0.00,"humidity":0,"pressure":730.00}

реакции никакой, на локально запущенный index.htm не выходят запросы и упорно ищут ESP,  так надоело без конца перешивать ESP или кидать редактированный и пережатый в 7z index.htm через WEB - Файловая система (кстати удобно вами реализованные в этом проекте). Надеюсь смог объяснить, тк новичок и в Ардуино и в htm верстке, уж простите как мог объяснил.

Если это освою, хочу в дальнейшем интегрировать в ваш проект установку времени и сделать в нём графики изменения температуры, давления (типа барографа), влажности от времени, и вывод на WEB страницу, вот это будет погодная станция в моём понимании.

Спасибо за любую помощь. Этот проект хороший пример для изучения и обретения навыков.

P/S Прошу заранее прощения что не написал Вам в личку, а написал здесь.

Скрытый текст

NTP.thumb.jpg.d0ecc5894fe86eff0e2a6f9101e7a753.jpgntp1.thumb.jpg.ef22ba6e7a45841ad564b15b3042cc65.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@zenone Давайте разберемся в происходящем подробнее.

Работа DNS сервера

За конфигурацию DNS сервера в режиме AP и перехвата всех доменных имен отвечают следующие строки в функции modeAP

dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
dnsServer.start(DNS_PORT, "*", apIP);

Далее опираясь на консольный лог и отсыл к файлу ncsi.txt, я могу сделать вывод, что вы подключаетесь с устройства под управлением операционной системы семейства Windows. Последняя в свою очередь использует Network Connectivity Status Indicator для отображения состояния подключения к сети интернет и в дальнейшем этот статус можно получить через API операционной системы. Для пользователей статус отображается в виде иконки подключения в трее.

espws_dns_1.png

У меня несколько сетевых интерфейсов - основной проводной с доступом в интернет (указан стрелкой на рисунке) и несколько второстепенных, в том числе и подключение к тестовой метеостанции по WiFi (подчеркнуто выше). У последней есть описание "Нет подключение к интернету". Чтобы проверить состояние, операционной системе необходимо выполнить две проверки, одна из которых, это доступность адреса http://www.msftncsi.com/ncsi.txt

Подробнее об этом можно прочитать на Windows IT Center

В следующем обновлении я изменю поведение DNS сервера, чтобы реакция была только на имя, используемое метеостанцией в режиме STA.

Теперь, давайте рассмотрим, как править основной шаблон без закачки его на микроконтроллер

В файле index.htm, в секции с java скриптом имеется переменная описывающая путь до корневого домена

var domain = "";

Необходимо указать полный http адрес метеостанции

var domain = "http://10.10.10.1/";

Теперь Вы можете править index.htm на компьютере и при этом иметь доступ к API микроконтроллера. Но есть одно но, доступ будет только к открытой части API т.к полный доступ подразумевает авторизацию с использованием cookies. Чтобы обойти эту проверку необходимо в программе микроконтроллера внести изменения в функцию authorized и привести её к следующему виду.

bool authorized() {
  return true; // обязательно удалите эту строку после завершения отладки
  /*
  	Тут весь остальной код данной функции
  */
}

Надеюсь это поможет Вам и упросит процесс отладки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет, нужна помощь по сборке метеостанции на  NodeMcu Lua на основе ESP8266MOD с датчиками BH1750 и BME280 с выводом в народный мониторинг. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброе время суток @Zaq24

Почему бы Вам не взять за основу данную метеостанцию на Arduino? Зачем именно Lua?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Zaq24 сказал:

Просто все компоненты уже есть.

Что имеется в виду под словом компоненты? Программная часть? Тут тоже все выложено, достаточно только залить в микроконтроллер и все заработает. Никаких настроек производить не требуется. Внести изменения в код под датчик BME280 тоже поможем. Или под компонентами Вы и имели в виду датчик BME280?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Kitsum сказал:

Что имеется в виду под словом компоненты? Программная часть? Тут тоже все выложено, достаточно только залить в микроконтроллер и все заработает. Никаких настроек производить не требуется. Внести изменения в код под датчик BME280 тоже поможем. Или под компонентами Вы и имели в виду датчик BME280?

Я не так выразился, имею в виду все датчики. NodeMcu Lua на основе ESP8266MOD, BH1750 и BME280. Спасибо за помощь.

Скетчи здесь https://drive.google.com/open?id=0ByRQugmcYDiJNkFKUFV4Y0FHbWc от https://www.youtube.com/watch?v=fcccXVG1Rn0

пишет либо так: PANIC: unprotected error in call to Lua API (mynarod.lua:5: attempt to perform arithmetic on global 'P' (a nil value))

либо так: PRESSURE=756.5865 lua: mynarod.lua:6: attempt to perform arithmetic on global 'T' (a nil value) stack traceback: mynarod.lua:6: in function 'readData' mynarod.lua:9: in main chunk [C]: in function 'dofile' init.lua:1: in main chunk [C]: ?

либо так: > dofile("mynarod.lua"); mynarod.lua:5: malformed number near '0.75'

всегда причем по разному. Это с датчиком GY-BME/P280.

BH1750 еще не подключал, не знаю как.

Изменено пользователем Zaq24
Дополнения

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С какого момента Zak24 вам необходима помощь? и какая помощь вам необходима?

Варианты помощи:

1. Направить на "путь истинный" (задать направление продвижения, взяв за основу проект от Kitsum "Метеостанция на ESP8266 от it4it.club")

2. Сделать за вас прошивку bin под ваше железо что бы вы могли прошить свой модуль и начать пользовать его (без вопросов и обсуждений)

 

По-первому варианту что бы помочь вам - необходимо знать каковы ваши познания в программировании, а именно в среде Adrduino IDE, конкретнее с ESP8266?

По-второму от вас требуется лишь умение прошивать контроллер ESP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
43 минуты назад, zenone сказал:

С какого момента Zak24 вам необходима помощь? и какая помощь вам необходима?

Варианты помощи:

1. Направить на "путь истинный" (задать направление продвижения, взяв за основу проект от Kitsum "Метеостанция на ESP8266 от it4it.club")

2. Сделать за вас прошивку bin под ваше железо что бы вы могли прошить свой модуль и начать пользовать его (без вопросов и обсуждений)

 

По-первому варианту что бы помочь вам - необходимо знать каковы ваши познания в программировании, а именно в среде Adrduino IDE, конкретнее с ESP8266?

По-второму от вас требуется лишь умение прошивать контроллер ESP.

Знаний 0, старенький я, прошивать контроллер умею с помощью ESP8266Flasher.

Теперь смысл в следующем, не знаю как, но вроде с BME/P280 все заработало, теперь главное подсказать как к этому всему делу добавить  BH1750?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Zaq24 боюсь, что полного ответа Вы не получите т.к тут обсуждаем только устройства на программной платформе Arduino.

Сразу могу Вам предложить почитать об использовании датчика BH1750 под NodeMCU непосредственно на GitHub https://github.com/nodemcu/nodemcu-firmware/tree/master/lua_modules/bh1750

Возможно, будет достаточно внести следующие изменения в файл mynarod.lua

bme280.init(3,4)
BH1750.init(3,4)
BH1750.read(OSS)
function readData()
	P, T = bme280.baro()
	H, T = bme280.humi()
	   L = BH1750.getlux()
    print("PRESSURE=".. P/1000*0.75)
    print("TEMPERATURE=".. T/100)
    print("HUMIDITY=".. H/1000)
    print("LIGHT=".. L/100)
 end

function sendData() 
    sock=net.createConnection(net.TCP, false) 
    sock:connect(8283,'narodmon.ru')
sock:on("connection",function(sock, payload)
	local DEVICE_MAC = "7F-FF-31-10-69-54"
	local SENSOR_MAC_1 = "TEMPERATURE"
	local SENSOR_MAC_2 = "PRESSURE"
	local SENSOR_MAC_3 = "HUMIDITY"
	local SENSOR_MAC_4 = "LIGHT"
	readData()
	sock:send("#"..DEVICE_MAC.."\n#"..SENSOR_MAC_1.."#"..(T/100).."\n#"..SENSOR_MAC_2.."#"..(P/1000*0.75).."\n#"..SENSOR_MAC_3.."#"..(H/1000).."\n#"..SENSOR_MAC_4.."#"..(L/100).."\n##")
    end)

sock:on("receive", function(sock, answer)
   print('Narodmon answered '..answer)
   sock:close()
end)
   
end 
sendData() 
tmr.alarm(0, 360000, 1, function() sendData() end )

Будет ли это работать, под большим вопросом т.к я не разбирался в принципах работы ESP и Lua. Для 100% решения Вашей проблемы, обратитесь к разработчику, у которого Вы взяли данную программу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
46 минут назад, Zaq24 сказал:

Знаний 0, старенький я, прошивать контроллер умею с помощью ESP8266Flasher.

Теперь смысл в следующем, не знаю как, но вроде с BME/P280 все заработало, теперь главное подсказать как к этому всему делу добавить  BH1750?

Ф не работало, потому что китайцы обманули, на датчике написано GY-BME/P280, а на самом деле он BMP-280 !

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Kitsum сказал:

@Zaq24 боюсь, что полного ответа Вы не получите т.к тут обсуждаем только устройства на программной платформе Arduino.

Сразу могу Вам предложить почитать об использовании датчика BH1750 под NodeMCU непосредственно на GitHub https://github.com/nodemcu/nodemcu-firmware/tree/master/lua_modules/bh1750

Возможно, будет достаточно внести следующие изменения в файл mynarod.lua

Скрытый текст


bme280.init(3,4)
BH1750.init(3,4)
BH1750.read(OSS)
function readData()
	P, T = bme280.baro()
	H, T = bme280.humi()
	   L = BH1750.getlux()
    print("PRESSURE=".. P/1000*0.75)
    print("TEMPERATURE=".. T/100)
    print("HUMIDITY=".. H/1000)
    print("LIGHT=".. L/100)
 end

function sendData() 
    sock=net.createConnection(net.TCP, false) 
    sock:connect(8283,'narodmon.ru')
sock:on("connection",function(sock, payload)
	local DEVICE_MAC = "7F-FF-31-10-69-54"
	local SENSOR_MAC_1 = "TEMPERATURE"
	local SENSOR_MAC_2 = "PRESSURE"
	local SENSOR_MAC_3 = "HUMIDITY"
	local SENSOR_MAC_4 = "LIGHT"
	readData()
	sock:send("#"..DEVICE_MAC.."\n#"..SENSOR_MAC_1.."#"..(T/100).."\n#"..SENSOR_MAC_2.."#"..(P/1000*0.75).."\n#"..SENSOR_MAC_3.."#"..(H/1000).."\n#"..SENSOR_MAC_4.."#"..(L/100).."\n##")
    end)

sock:on("receive", function(sock, answer)
   print('Narodmon answered '..answer)
   sock:close()
end)
   
end 
sendData() 
tmr.alarm(0, 360000, 1, function() sendData() end )

 

Будет ли это работать, под большим вопросом т.к я не разбирался в принципах работы ESP и Lua. Для 100% решения Вашей проблемы, обратитесь к разработчику, у которого Вы взяли данную программу.

Спасибо, буду пробовать. Разработчик молчит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Zaq24 сказал:

Знаний 0, старенький я

Учится никогда не поздно. Программирование в LUA низкоуровневое этим занимаются самотверженные люди и по мне так это мазохизм. В тренде сейчас Arduino IDE. Он известен широкому кругу людей, в сети очень много примеров и проектов - короче проще  и доступнее. На этом сайте есть статья как начать

Модули BMP280 и BME280 с виду похожи но внешне их можно отличить по маркировке на модуле на фото ниже под катом BMP280 (возле буквы P стоит точка маркером) Он мерит только давление и температуру. Опять же на Arduino IDE есть программа сканер которая определяет какой модуль подключен к I2C шине и в консоль выводит его название и адрес по которому ардуино обращается к модулю, всё просто если вникнуть.

Скрытый текст

bm.thumb.jpg.b0a0fa6006a3f838a81102bd1095d4d6.jpg

Так же если нет возможности или желания вникать в мир программирования, то не нужно исходить от имеющихся деталей, а закупить те что используются в исходном примере или проекте так будет вам проще - "повторил - заработало - пользуйся". Этот проект использует набор недорогих модулей, покупка которых обойдётся не дорого, и предполагает хорошее и удобное использование, а так же прост (проект) в повторении без лишних напрягов и опытов в нём и используются датчики которые у вас имеются - тот же   BH1750

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, zenone сказал:

Учится никогда не поздно. Программирование в LUA низкоуровневое этим занимаются самотверженные люди и по мне так это мазохизм. В тренде сейчас Arduino IDE. Он известен широкому кругу людей, в сети очень много примеров и проектов - короче проще  и доступнее. На этом сайте есть статья как начать

Модули BMP280 и BME280 с виду похожи но внешне их можно отличить по маркировке на модуле на фото ниже под катом BMP280 (возле буквы P стоит точка маркером) Он мерит только давление и температуру. Опять же на Arduino IDE есть программа сканер которая определяет какой модуль подключен к I2C шине и в консоль выводит его название и адрес по которому ардуино обращается к модулю, всё просто если вникнуть.

  Показать содержимое

bm.thumb.jpg.b0a0fa6006a3f838a81102bd1095d4d6.jpg

Так же если нет возможности или желания вникать в мир программирования, то не нужно исходить от имеющихся деталей, а закупить те что используются в исходном примере или проекте так будет вам проще - "повторил - заработало - пользуйся". Этот проект использует набор недорогих модулей, покупка которых обойдётся не дорого, и предполагает хорошее и удобное использование, а так же прост (проект) в повторении без лишних напрягов и опытов в нём и используются датчики которые у вас имеются - тот же   BH1750

Вся проблема то и встала, что не могу подключить BH1750, а так все работает. Про BMP так и есть, как только поменял на другой датчик, все заработало. Заказывал именно BME.

Изменено пользователем Zaq24
Дополнения

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Zaq24 сказал:

Вся проблема то и встала, что не могу подключить BH1750, а так все работает. Про BMP так и есть, как только поменял на другой датчик, все заработало. Заказывал именно BME.

Ладно, шот с ним, будем искать помощь. Спасибо за советы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Вопрос, что может быть не так, при подключении датчика SI7021 устройство не запускается? Датчик проверял на другой схеме всё работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@alexd6969 Приветствую.

Попробуйте воспользоваться I2C сканером и убедитесь в наличие датчика на шине, адрес 0x40. Я перепроверил прошивку опубликованную здесь, все работает в штатном режиме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Kitsum сказал:

@alexd6969 Приветствую.

Попробуйте воспользоваться I2C сканером и убедитесь в наличие датчика на шине, адрес 0x40. Я перепроверил прошивку опубликованную здесь, все работает в штатном режиме.

Доброго дня!

I2C сканером проверял, адрес на шине 0x40, более того если включить устройство с не подключенным датчиком, а потом его подключить, то в веб интерфейсе в разделе датчиков на шине I2C он появляется, но показаний температуры и влажности нет. (( В скетче я сделал одно изменение ( //  answer += "\"sketchMD5\":\"" + ESP.getSketchMD5() + "\","; ) иначе не компилировалось, но думаю это не должно повлиять....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@alexd6969 очень настораживаем момент с компиляцией скетча, а точнее то, что Вам пришлось вносить изменения и комментировать часть кода. Такого быть не должно. Задумка всего проекта в том, чтобы просто залить программу со всеми сопутствующими файлами web сервера не внося никаких поправок в неё и все заработает.

Я предлагаю следующее - убедиться в актуальности всего парка используемого программного обеспечения, а именно:

  • последняя версия Arduino IDE (на момент публикации этого поста я проверил на 1.8.1 и 1.8.3)
  • последняя версия ПО для поддержки ESP8266 (на момент публикации этого поста версия была 2.3.0)
  • последние версии всех используемых библиотек, указанных в программе микроконтроллера (ссылки в описании самой программы)

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

ESP8266_WS_iT4iT.CLUB.bin.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у меня подключены 2 датчика:

SI7021 и bmp180 к esp-07 (где оказалось что памяти всего 1 мегабайт) и не влазит css.

компилировал скетч в arduino ide 1.6.5 все откомпилировалось и работает нормально.

Единственное хочу перейти на другую библиотеку bmp180 которая также выдает температуру с датчика bmp180. Ну и css хочу уменьшить до 220кб. Но это мне вроде б под силу.

Kitsum, спасибо за исходники.

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

Изменено пользователем Alex_DIY
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Alex_DIY Попробуйте удалить  все оригинальные .js и .css, оставьте только их архивные копии (.gz). Все распространенные браузеры поддерживают работу с жатыми данными. Возможно, этого хватит, чтобы вместить все на flash объемом 1мб.

По поводу библиотеки для барометра. Используемая в проекте библиотека от Adafruit может снимать показания со встроенного датчика температуры. Достаточно внести следующие изменения.

Инициализация датчиков

Скрытый текст

  /*
     Инициализация сенсоров на шине i2c
     BH1750, SI7021, BMP085
  */
  Wire.beginTransmission(35);
  if(Wire.endTransmission() == 0) {
    BH1750.begin();
    light.status = true;
  }

  Wire.beginTransmission(64);
  if(Wire.endTransmission() == 0) {
    temperature.status = humidity.status = SI7021.begin(pin_sda, pin_scl);
  }
  
  Wire.beginTransmission(119);
  if(Wire.endTransmission() == 0) {
    pressure.status = BMP085.begin();
  }

 

Заменить на

Скрытый текст

  /*
     Инициализация сенсоров на шине i2c
     BH1750, SI7021, BMP085
  */
  Wire.beginTransmission(35);
  if(Wire.endTransmission() == 0) {
    BH1750.begin();
    light.status = true;
  }

  Wire.beginTransmission(64);
  if(Wire.endTransmission() == 0) {
    humidity.status = SI7021.begin(pin_sda, pin_scl);
  }
  
  Wire.beginTransmission(119);
  if(Wire.endTransmission() == 0) {
    temperature.status = pressure.status = BMP085.begin();
  }

 

Найти функцию отвечающую за получение показаний с датчиков

Скрытый текст

/*
   Функция считывающая показания сенсоров через установленный интервал времени
*/
void readSensors() {
  timerReadSensors = millis();

  if (light.status) light.data = BH1750.readLightLevel();
  if (temperature.status) temperature.data = SI7021.getCelsiusHundredths();
  if (humidity.status) humidity.data = SI7021.getHumidityPercent();
  if (pressure.status) pressure.data = BMP085.readPressure();
}

 

Заменить на

Скрытый текст

/*
   Функция считывающая показания сенсоров через установленный интервал времени
*/
void readSensors() {
  timerReadSensors = millis();

  if (light.status) light.data = BH1750.readLightLevel();
  if (humidity.status) humidity.data = SI7021.getHumidityPercent();
  if (temperature.status) temperature.data = BMP085.readTemperature();
  if (pressure.status) pressure.data = BMP085.readPressure();
}

 

И спасибо, что указали на недоработку с шаблоном имени точки доступа. В ближайшее время внесу изменения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так у меня 1мб флеш всего, соответственно поделен на 500кб под файлы вэбсервера, остальное под прошивку(как я понимаю), а cloud.css.gz весит 795 кб. Так что вырезаю картинки. Когда метеостанцию цепляешь к домашней сети, то выгрузить css с внешнего ресурса не проблема, а когда цепляешься к точке доступа, созданной esp-шкой, то css становится недоступен. Ибо ты подключен к wifi сети у которой нет доступа в интернет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Alex_DIY Прошу прощения, в спешке вылетело из головы, что ESP использует flash под все свои внутренние нужды. В таком случае да, резать css или менять ESP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подредактировал файлы вэб сервера, решил через веб интерфейс залить. Пытаюсь удалить файл нажав на "удалить", строка с именем файла подсвечивается, подсветка снимается и файл как отображался так и отображается. Аналогично и залить не могу новый файл в файловую систему. Также как и не могу сохранить другие логин-пароль для входа в систему. Что , по моему мнению, говорит о том, что у меня проблемы с записью на флеш. Пробовал перезагружать - не помогает. Прошиться нечем пока (usb-tty адаптера пока нет под рукой). Странно, потому как на этой прошивке я index.htm перезаписывал через вэб интерфейс и имя домашней точки доступа сохранил.

В качестве предложения: выбор файла в стороннем приложении и перетягивание его в область экрана, чтобы произошла его загрузка - не очень удобно, потому как на каком-нибудь андроидофоне это сделать проблематично, а если б была кнопочка, которая вызывала диалоговое окно выбора нужного файла для загрузки - это было б универсальнее.

Изменено пользователем Alex_DIY

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 15.06.2017 в 21:56, Kitsum сказал:

@alexd6969 очень настораживаем момент с компиляцией скетча, а точнее то, что Вам пришлось вносить изменения и комментировать часть кода. Такого быть не должно. Задумка всего проекта в том, чтобы просто залить программу со всеми сопутствующими файлами web сервера не внося никаких поправок в неё и все заработает.

Я предлагаю следующее - убедиться в актуальности всего парка используемого программного обеспечения, а именно:

  • последняя версия Arduino IDE (на момент публикации этого поста я проверил на 1.8.1 и 1.8.3)
  • последняя версия ПО для поддержки ESP8266 (на момент публикации этого поста версия была 2.3.0)
  • последние версии всех используемых библиотек, указанных в программе микроконтроллера (ссылки в описании самой программы)

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

ESP8266_WS_iT4iT.CLUB.bin.7z

Полностью снёс IDE установил 1.8.3 (была 1.8.2) заново скачал все библиотеки перезалил скетч теперь он нормально компилируется и не требует изменений ( полный оригинал) эффект тот же...(((skrin.thumb.jpg.68122820de324ee101e3e8b7ffabaa3d.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пожалуйста, войдите для комментирования

Вы сможете оставить комментарий после входа



Войти сейчас

  • Похожие публикации

    • Автор: Kitsum
      Хотите помочь проекту или спонсировать новый?
      Yandex.Money PayPal.me Тема проекта
      Arduino IDE + Project + Libraries + tools: https://yadi.sk/d/jseefFB50NMhAg
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека CMD, реализует настройку микроконтроллера и управление вашей программой через терминал.
      Основная задача библиотеки, это прием пользовательских команд через UART интерфейс, их обработка и выполнение пользовательского кода, связанного с той или иной командой.
      Данная библиотека позволяет реализовать:
      Управление микроконтроллером Любую настройку, будь то WiFi, другие библиотеки или часть Вашей программы Вызывать Ваши задачи (функции) из терминала по команде и передавать им требуемые параметры Использовать контроллер в качестве шлюза между датчиками и программами на PC Внимание: любая команда, передаваемая в терминал обязана заканчиваться символом перевода строки "\n".
      Подключение библиотеки
      #include <cmd.h> Инициализация объекта, к которому мы будем обращаться для добавления команд. В качестве параметра объекту необходимо передать указатель на объект Serial или любой другой схожий по типу интерфейс.
      cmd command(&Serial); В функции Setup описываем какие команды требуется обрабатывать. Например, по команде "test" вызывать пользовательскую функцию с именем "myFunctionName". Имя пользовательской функции может быть абсолютно любым.
      void Setup() { Serial.begin(115200); command.add("test", myFunctionName); } Пользовательская функция будет вызываться каждый раз, когда по интерфейсу Serial поступит команда "test". Если команда будет передана с параметрами, то эти параметры будут переданы в качестве аргументов пользовательской функции.
      В функции loop должна находится команда вызова обработчика.
      void loop() { command.handleEvents(); } Пользовательская функция обязана соответствовать ряду требований:
      Не возвращать никакого результата (быть объявленной с типом void) Принимать в качестве первого аргумента переменную с типом byte в которой будет храниться число равное количеству переданных параметров Принимать в качестве второго параметра переменную с типом char** в которой будет храниться указатель на массив со всеми указателями (char*) на переданные параметры void myFunctionName(byte argc, char** argv) { /* ... */ } Функция всегда должна иметь такой вид, даже если не подразумевается, что ей будут передаваться какие-либо параметры.
      Чтобы перебрать все переданные параметры и вывести их в консоль, можно воспользоваться следующим примером
      void myFunctionName(byte argc, char** argv) { if (0 < argc) { for (uint8_t i = 0; i < argc; i++) { Serial.printf("%i. %s\n", i, argv[i]); } } } Пример вызова пользовательской функции без параметров и с ними
      # test No parameter was passed # test p1 p2 p3 p4 p5 0. p1 1. p2 2. p3 3. p4 4. p5 Помните, что параметры представлены в виде указателей и работать с ними нужно как с обычными переменными не получится т.к указатель содержит не значение переменной (переданный параметр), а указатель на ту область памяти микроконтроллера в которой это значение находится.
      Чтобы сравнить два значения, например, параметр под индексом 0 (идет первым в списке) с каким-либо значением в программе, воспользуйтесь функцией strcmp, которая возвращает целочисленное значение, указывающее на лексическое расхождение строк. Если строки равны, то возвращаемое значение равно 0.
      if (!strcmp(argv[0], "wifi")) { Serial.println(F("Первый аргумент WiFi")); } else { Serial.println(F("Первый аргумент НЕ WiFi!!!")); } Для копирования значения указателя в другую переменную с типом char можно воспользоваться функцией strcpy
      char myVar[20]; strcpy(myVar, argv[0]); if (myVar == "123456") { Serial.prinln(F("ok")); } Также можно обернуть указатель объектом String и получить весь функционал этого объекта, который будет содержать значение параметра
      String param1(argv[0]); // String param1 = argv[0]; Serial.printf("argv[0] length: %i\n", param1.length()); Serial.printf("argv[0] is integer?: %s\n", param1.toInt() ? "YES" : "NO"); if (param1 == "qwerty") { Serial.println(F("Hello QWERTY!")); } С библиотекой идут несколько примеров, в том числе и пример конфигурации WiFi в режиме STA.
      Автор Kitsum Добавлен 05.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека smartBlink, реализует умное управление штатным светодиодом, что позволяет добавить индикацию состояния вашей программы или микроконтроллера.
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
      Автор Kitsum Добавлен 10.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...