Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Обсуждение багов Беспроводного датчика на базе ESP8266

Обсуждение багов Беспроводного датчика на базе ESP8266 08 Фев 2020 08:03 #25288

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
отключение датчика просто не передает новые данные , то что передает датчик - то и отображает прошивка.
Датчик добавлен в слепую и в наличии не имеется
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Обсуждение багов Беспроводного датчика на базе ESP8266 09 Фев 2020 02:21 #25290

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
Adminhs пишет:
отключение датчика просто не передает новые данные , то что передает датчик - то и отображает прошивка.
Датчик добавлен в слепую и в наличии не имеется
Отключение датчика с последующим подключением однозначно вызывает перезегрузку датчика и не трогает wifi модуль, поскольку он подключен только по tx, после чего показания по прежнему кривые. Перезагрузка модуля путем нажатия на резет с веб страницы, наоборот однозначно вызывает перезагрузку wifi модуля и не затрагивает датчик пыли. Соответственно либо прошивка начинает путать начало посылки, значит не прописана проверка crc и проверка стартовых байтов на совпадение с нужными, либо происходит совместное использование памяти. Так что датчик невиновен, виновата прошивка.
Варианты решения разные
1. Удаленно подключится к моему датчику вы можите, что для этого нужно?
2. Можно добавить у модуля вывод отладочных данных в новую переменную, например полученная по uart посылка и можно будет понять неправильно она расшифрована или проблема в другом.
3 Вы можите дать кусок своего кода для этого модуля чтобы я его воткнул в конструктор кода и поковырялся с ним
Администратор запретил публиковать записи гостям.

Обсуждение багов Беспроводного датчика на базе ESP8266 09 Фев 2020 08:19 #25291

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
Код опции датчика в спойлере. Вроде все стандартно, не помню откуда взято...
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Обсуждение багов Беспроводного датчика на базе ESP8266 10 Фев 2020 19:10 #25296

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
Загадка раскрыта.
Для начала анализ данных переведем полученные значение в шестнадцатеричный код
1.0мкм=19712 ; это 4D00
2.5мкм=7168 ; = 1C00
10мкм=5376 ; = 1500
Из даташита узнаем что 4D это второй стартовый байт. Значит произошло смещение байт при расшифровке посылки
Данный код неплохо будет работать в чистой среде без помех у меня блок расположен над вытяжкой соответственно мотор наводит помехи.
Код совсем плох не проверяет crc и даже попытка проверить стартовый байт бестолковая.
То есть стоит только 1 байту потеряться (он забит помехами и проигнорирован)
условие
if((iCurrent == 0) && (read == 0x42))
{
// start char
dataPMS[0] = read;
iCurrent++;
continue;
}
не сработает, но данные все равно будут перегружены в массив следующим кодом
if(iCurrent <= 31 )
{
dataPMS[iCurrent] = read;
iCurrent++;
}
и поскольку iCurrent обнуляется только при условии if(iCurrent == 32 )
начало пакета никогда не будет распознано верно.
Вот код который я дописал, добавил проверку контрольной суммы и алгоритм позволяющий дождаться нового начала посылки. Также добавил таймаут, но в вашем конструкторе он вероятно не подойдет.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

ну и чтобы новую тему не создавать - пока отлаживал код вылетали ошибки например код
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Давал ошибку типа EID# 403465 стоило убрать несколько строк например
pms2_4 = ((uint16_t)dataPMS[10] << 8) + dataPMS[11];
pms2_5 = ((uint16_t)dataPMS[12] << 8) + dataPMS[13];
pms2_6 = ((uint16_t)dataPMS[14] << 8) + dataPMS[15];
и компиляция нормально проходила. Использовал SDK версии 2.0.0 в чем причина я использовал слишком много памяти?
Администратор запретил публиковать записи гостям.

Обсуждение багов Беспроводного датчика на базе ESP8266 10 Фев 2020 19:50 #25297

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
Изучу код и постараюсь внедрить. Не особо понял где там пакете crc...

ошибка эта означает, что не слезло, выбранная сдк 200 не очень экономна в плане места
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Обсуждение багов Беспроводного датчика на базе ESP8266 11 Фев 2020 10:20 #25298

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
Adminhs пишет:
Изучу код и постараюсь внедрить. Не особо понял где там пакете crc...
CRC в широком смысле - контроль целостности. Последние 2 байта сумма байт всего пакета.
Код прокомментировал для лучшего понимания
код [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.232 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.