Разработки ecoins

Библиотеки для разных контроллеров

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#281

Сообщение ecoins » 31.07.2019{, 16:59}

Dryundel писал(а):
31.07.2019{, 16:32}
#280 Сообщение Dryundel » 24 минуты назад
ecoins писал(а): ↑35 минут назад
Библиотеки ecoins, в т.ч. MCP23017. От 31.07.19.
Пожалуйста, помещайте новые библиотеки еще и в первый пост. Желательно с датой обновления.
Возможно так и надо делать. Мы пока это делаем по мере существенных изменений.

Отправлено спустя 28 минут 21 секунду:
olddolin писал(а):
31.07.2019{, 16:38}
Те же грабли и тот же лоб, всё один к одному. Библиотеки менял, блоки из последних выложенных в №274 ДЮАИР. Попробовал на есп, компилируется, но не проверял пока работу
1. Проверял, фото о работе выложил вчера. По приведенному Вами листингу видно, что библиотеке RT_HW_Main.h что-то не так с функцией "Счетчик" - у Вас была старая библиотека.
2. Проверял на Nanо, на ESP8266 вчера не проверял и не не писал об этом. Есть некоторые различия в компиляторах С++ для AVR и ESP8266. В данном случае не большие.
3. 30.07. 12:23 - выложил материал по mcp23017
31.07 9:29 - olddolin разместил замечания
31.07 11:06 - увидел замечания (был в дороге) и ответил.
31.07 16:20 - выложил новый материал, поблагодарил olddolin.
31.07 16:45 - olddolin дал понять, что раздражен доставленным ему дискомфортом....
-----------------
Уважаемый olddolin!
Примите мои извинения за доставленный Вам дискомфорт.
Работы было сделано не мало и по ESP8266 была допущена неточность.
При этом горжусь (это для команды ecoins) созданным продуктом. Ничего подобного сделанным нами где-либо не было обнаружено - ни по содержанию методов и свойств, ни по стилю оформления.
Вы не написали результатов проверки последнего поста - предполагаю, что Вам это не очень и нужно. Если иначе, то полагаю сообщили о Вашей заинтересованности, попросили бы быстрее поправить. Иногда нас еще просто благодарят за работу.
Поскольку Вы уже разобрались с тем, что в команда ecoins это не безошибочно работающие роботы (в ней живые разработчики электроники, программного обеспечения и проектов реального времени), то возможный для Вас путь не торопиться использовать наработки ecoins. На них нет клейма "Завершено окончательно".
Последний раз редактировалось ecoins 31.07.2019{, 18:16}, всего редактировалось 1 раз.

Аватара пользователя
olddolin
Сержант
Сообщения: 245
Зарегистрирован: 08.09.2017{, 19:47}
Репутация: 14
Откуда: Тверь
Имя: Вадим

Разработки ecoins

#282

Сообщение olddolin » 31.07.2019{, 17:58}

ecoins, Вы меня не правильно поняли, я вообще не конфликтный человек, может не так написал. У меня сейчас нет напряжения, в деревне живу, тестить на контроллере нет возможности. Так что не обижайтесь, уважаю всех творческих людей к коим и вас отношу.А то что плаваю иногда в библиотеках и прочем, здесь согласен, не программист я, больше с силовой электроникой дело имел.
Электронщик как врач, ему нужно постоянно учиться чтобы соответствовать времени.

eric25
Рядовой
Сообщения: 33
Зарегистрирован: 14.02.2017{, 14:43}
Репутация: 4
Имя: Андрей

Разработки ecoins

#283

Сообщение eric25 » 31.07.2019{, 18:03}

Пример вывода данных с дальномера SR04 и датчика DHT22 переменных типа float и int, вывод переменных типа string на LCD HD44780 с использование блоков и библиотек ecoins. Дальномер работает по прерываниям на pin2.


________________________________________________________-
Участник "нашей команды" ecoins)

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#284

Сообщение ecoins » 31.07.2019{, 18:17}

olddolin, Спасибо. Успехов в работе. Будут вопросы - пишите.
Последний раз редактировалось ecoins 31.07.2019{, 18:49}, всего редактировалось 1 раз.

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#285

Сообщение ecoins » 31.07.2019{, 18:49}

По блоку SR04 viewtopic.php?p=73881#p73881.
Это совершенно уникальный блок. Библиотека написанная с нуля с учетом некоторых идей библиотек NewPing и iArduino, но сильно от них отличающихся. Положительный результат получен на основе аппаратных и программных исследований ecoins модулей HC-SR04 и его контроллера :
1. Блок(библиотека) работает и по прерыванию (если пин контроллера обладает таким свойством) и без него. Библиотека самостоятельно выбирает режим. Перевести в режим без прерывания может пользователь через параметры.
2.При работе без прерываний библиотека гарантировано ограничивает время занятия процессорного времени (в отличие от стандартной, где она случайным образом может подвисать на секунды) задаваемым максимальным расстояние - для 60см - это 6мс, для 100см - это 10мс и т.д.
3.При работе с прерываниями - затрачиваемое процессорное время только на правильный запуск -10 микросекунд.
4.Блоки могут работать с самостоятельным периодическим вызовом - по умолчанию для пинов с прерываниями - 50мс, без прерываний - 200мс. Эти параметры настраиваемые.
5. Блок может работать через один пин Echo(в этом случае он соединяется с Trig через резистор 510 ом), или как обычно через два пина.
6. Блок может выдавать результат в миллисекундах, мм, см и тоже самое с усреднением.
7. Блок отбрасывает случайные измерения, связанные с особенностями SR04.
8. Минимальное расстояние 2 см. Если меньше, возможные ошибки измерения - это связанное со свойствами самого SR04.
9. Может быть неограниченное кол-во сонаров в любом сочетании (с прерываниями и без) - код остается неизменным, увеличивается только область выделяемых данных для сонара - для каждого своя область.
10. Если номер пина <0, действия блоком не производятся.
11. В отличии от библиотеки NewPing - таймер не используется и соответственно не занимается.
12. Проводились длительные испытания на Nano,Mega, STM32, DUE, ESP8266, ESP32. На трех последних соединяли через согласователь уровней. Сейчас получили HC-SR04+ - вероятнее всего он будет работать и непосредственно от 3.3в и соответственно можно будет обойтись без согласования уровней.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Разработки ecoins

#286

Сообщение Dryundel » 01.08.2019{, 15:20}

ecoins, будьте добры, поясните параметр ДЕЛИТЕЛЬ.
В блоке "Управление lcd" в описании нашел следующее:
ДЕЛИТЕЛЬ - (default=25) для управления (разрешение работы) дополнительными блоками, используется событие
равное кол-во вхождению в данный блок/ ДЕЛИТЕЛЬ. Это позволяет сушественно сократить затраты на время
работы дополнительных блоков.
Ну с падежами беда это ладно. Не понятно в принципе что это такое.

eric25
Рядовой
Сообщения: 33
Зарегистрирован: 14.02.2017{, 14:43}
Репутация: 4
Имя: Андрей

Разработки ecoins

#287

Сообщение eric25 » 01.08.2019{, 16:26}

Dryundel писал(а):
01.08.2019{, 15:20}
ecoins, будьте добры, поясните параметр ДЕЛИТЕЛЬ.
В блоке "Управление lcd" в описании нашел следующее:
ДЕЛИТЕЛЬ - (default=25) для управления (разрешение работы) дополнительными блоками, используется событие
равное кол-во вхождению в данный блок/ ДЕЛИТЕЛЬ. Это позволяет сушественно сократить затраты на время
работы дополнительных блоков.
Ну с падежами беда это ладно. Не понятно в принципе что это такое.
Работа RT_LCD с делителем
делитель_крупно.jpg
делитель.bmp
делитель.bmp (2.25 МБ) 1251 просмотр
Шина i2c практически свободна (0 и 1 строка).
Обновление на LCD происходит не каждый цикл (сигнал с переменной Blink 3 (оранжевая строка) на анализаторе), а каждый 25 цикл (2 строка-красная), то есть в остальные 24 цикла могут выполняться другие задачи, контроллер не будет тратить время на отображение параметров в LCD(хотя там и так измеряется все МИКРОсекундами(4,5мкс)).

Работа стандартной библиотеки LCD в Flprog
делитель_lcd.bmp
делитель_lcd.bmp (2.34 МБ) 1251 просмотр
Шина i2c просто "забита" данными (0 и 1 строка), вывод идет на LCD каждый цикл, время длительности цикла(Loop) выросло до МИЛЛИсекунд(4,5 мс)
________________________________________________________-
Участник "нашей команды" ecoins)

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#288

Сообщение ecoins » 01.08.2019{, 17:09}

Dryundel писал(а):
01.08.2019{, 15:20}
будьте добры, поясните параметр ДЕЛИТЕЛЬ.
Дополнительно: каждый из блоков дисплея (lcd.int, lcd.blink b и т.д.) содержит автономный таймер, основанный на функции millis(). Таймеры оперируют 32-разрядными величинами, для 8-разрядных контроллеров это ощутимая нагрузка по времени.
Чтобы блоки выполнялись не каждый раз, они стробируются сигналами "Событие" через вход EN. Это может быть и автономный генератор, для удобство такой генератор встроен в блок begin().
При делитель=25, сигнал на выходе блока begin()=1 каждое 25-ое вхождение в этот блок, в остальное время =0.
Если быстродействие не критично, на входах EN можно просто установить =1 (или проинвертировать этот вход).

neangel
Сержант
Сообщения: 138
Зарегистрирован: 10.01.2019{, 13:13}
Репутация: 1
Откуда: Москва
Имя: Игорь

Разработки ecoins

#289

Сообщение neangel » 01.08.2019{, 17:21}

Вопрос to ecoins

На этом вашем видео - Академия Развития_Пример вывода значений типа INT на LCD_Full
В самом начале говорится про счётчик и конкретно про ногу mode
Мол счётчик может считать как пила (со сбросом в ноль) или туда-обратно.
Ставите 2 - будет считать, как пила.

Мол читайте описание там всё уже написано.
В описании про эту ногу (mode) ничего нет и какую бы цифру на неё не ставь туда-обратно он не считает.

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

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#290

Сообщение ecoins » 01.08.2019{, 18:00}

neangel писал(а):
01.08.2019{, 17:21}
В самом начале говорится про счётчик и конкретно про ногу mode
Мол счётчик может считать как пила (со сбросом в ноль) или туда-обратно.
----
Действительно - описание счетчика оказалось урезано. В новых версиях добавим.
Пока смотрите описание здесь:
БЛОК СЧЕТЧИКА
Счетчик считает в диапазоне от -32768 до +32767.
При первом включении или при rst=1, начальное значение счетчика сбрасывается
до значения "НАЧАЛЬНОЕ ЗНАЧЕНИЕ" (диапазоне от -32768 до +32767, default=0).
Счетчик считает с шагом, определяемый
значением "ШАГ ИЗМЕНЕНИЯ СЧЕТЧИКА" (диапазоне от -32768 до +32767, default=1).
Входные параметры:
rst - сброс текущего значения до параметра значения " НАЧАЛЬНОЕ ЗНАЧЕНИЕ.
mode :
'S' - пила. Если шаг >0, увеличение до верхней границы и сразу с возвратом к нижней границе.
Если шаг <0, уменьшение до нижней границы и сразу с возвратом к верхней границе.
'T' - треугольник. Если шаг >0, увеличение до верхней границы, затем уменьшение к нижней границе.
Если шаг <0, уменьшение до нижней границы, затем увеличение к верхней границе.
'L' - лимит. Если шаг >0, увеличение до верхней границы и останавливает счет.
Если шаг <0, уменьшение до нижней границы и останавливает счет.
'C' - предел. Если шаг >0, увеличение до 32767 и останавливает счет.
Если шаг <0, уменьшение до -32768 и останавливает счет.
top - верхняя граница;
bottom - нижняя граница.
----------------------------------------------------------
ecoins@mail.ru 01.08.19

neangel
Сержант
Сообщения: 138
Зарегистрирован: 10.01.2019{, 13:13}
Репутация: 1
Откуда: Москва
Имя: Игорь

Разработки ecoins

#291

Сообщение neangel » 01.08.2019{, 18:18}

Спасибо.
Всё заработало.
Оказывается на видео была не двойка, а буква S.

Простите слепого пенсионера.
Но я теперь понял почему вы учите подростков.
У них со зрением нет проблем.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Разработки ecoins

#292

Сообщение Dryundel » 01.08.2019{, 19:41}

ecoins писал(а):
01.08.2019{, 17:09}
Дополнительно: каждый из блоков дисплея (lcd.int, lcd.blink b и т.д.) содержит автономный таймер, основанный на функции millis().
... ...
Если быстродействие не критично, на входах EN можно просто установить =1 (или проинвертировать этот вход).
Надо это где то расписать.
Скажите, а чем обусловлен именно 25 циклов? Как оперировать этим значением? В каких пределах?
Или это значение оптимальное? Оптимальность для разных контроллеров вероятно разная. Какое значение предпочтительней для ESP8266?

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#293

Сообщение ecoins » 01.08.2019{, 20:01}

Dryundel писал(а):
01.08.2019{, 19:41}
Скажите, а чем обусловлен именно 25 циклов? Как оперировать этим значением? В каких пределах?
Или это значение оптимальное? Оптимальность для разных контроллеров вероятно разная. Какое значение предпочтительней для ESP8266?
Если Вы измените на 100, то увидите на глаз более медленный вывод.
Когда мы используем диспетчер задач, то устанавливаем вызов по номеру фоновой задачи - когда фоновых задач 5, то фактически вызов будет уже 25х5 - каждые 125мс. В этом случае мы обычно снижаем делитель до 5-6. Все на глазок - т.е. от визуального восприятия дисплея и критичности не к мгновенному появлению нового значения, а с некоторой плавностью. Кому это это и нравится.
Скорость вывода зависит от нескольких факторов - и он интенсивности смены параметров на входе блоков lcd, и в некоторой мере от быстродействия процессора - хотя во многом задержки связаны с частотой шины i2c (400кГц - можно разгонять, но особого смысла нет).

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Разработки ecoins

#294

Сообщение Dryundel » 01.08.2019{, 20:12}

ecoins писал(а):
01.08.2019{, 20:01}
Все на глазок - т.е. от визуального восприятия...
Шаманство однако. :smile453: Но теперь понятно. :yes: Спасибо.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Разработки ecoins

#295

Сообщение Dryundel » 03.08.2019{, 20:02}

ecoins, а возможно сделать набор блоков для шины 1-Wire по типу как для i2c ?
Столкнулся с потребностью замены датчиков ds18b20. Очень бы хотелось организовать аварийное сканирование и замену с возможностью прописывания адреса без перепрошивки контроллера. Стандартными средствами не получается.

Evgesha
Лейтенант
Сообщения: 525
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 20
Откуда: Kazakhstan
Имя: Evgesha

Разработки ecoins

#296

Сообщение Evgesha » 04.08.2019{, 05:31}

Dryundel, это не подойдет

viewtopic.php?f=74&t=4442
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#297

Сообщение ecoins » 04.08.2019{, 07:50}

Dryundel писал(а):
03.08.2019{, 20:02}
ecoins, а возможно сделать набор блоков для шины 1-Wire по типу как для i2c ?
Столкнулся с потребностью замены датчиков ds18b20. Очень бы хотелось организовать аварийное сканирование и замену с возможностью прописывания адреса без перепрошивки контроллера. Стандартными средствами не получается.
В своих проектах по совокупности причин мы избегаем использования нескольких DS1820 на шине, подключенных к пину контроллера. Обычно 1 пин - один DS1820. Прием посылки от DS1820 по прерываниям - это работу планируется сделать.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Разработки ecoins

#298

Сообщение Dryundel » 04.08.2019{, 10:49}

ecoins писал(а):
04.08.2019{, 07:50}
В своих проектах по совокупности причин мы избегаем использования нескольких DS1820 на шине, подключенных к пину контроллера. Обычно 1 пин - один DS1820. Прием посылки от DS1820 по прерываниям - это работу планируется сделать.
Т.е. шину 1-Wire вы избегаете?

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#299

Сообщение ecoins » 04.08.2019{, 11:24}

Dryundel писал(а):
04.08.2019{, 10:49}
Т.е. шину 1-Wire вы избегаете?
Одно время мы много с ней работали.
Наше мнение об иллюзорности этого решения:
1) Делать длинные сети можно. Однако проблемы с идентификацией узлов и устройств остаются. Достигается через отключение отдельных приборов (или бегать с феном и греть DS18B20)... Это неплохо для исследовательских стендов - когда разработчик и квалифицирован, сам создал этот стенд, сам его эксплуатирует.
2) На контроллерах AVR, подключение сети 1-Wire - это всегда антенны индустриальных помех. Можно использовать оптическую развязку, но практики такой найти не удалось. Вернее отдельный контроллер.
3) Это очень и очень вандала не защищенная система - от обрывов, до попадания высокого напряжения.

Использование отдельных DS18B20 по одному на пин удобно, поскольку не требует идентификации датчика.
-------------------------------
Наше направление - сеть беспроводных сенсоров и устройств. Широко использовали ZigBee. Сейчас пока в поисках и исследованиях.

Аватара пользователя
bsn
Лейтенант
Сообщения: 347
Зарегистрирован: 22.07.2018{, 07:24}
Репутация: 90
Откуда: Ростовская обл.
Имя: Сергей

Разработки ecoins

#300

Сообщение bsn » 04.08.2019{, 12:41}

ecoins писал(а):
04.08.2019{, 11:25}
DS18B20... Это неплохо для исследовательских стендов
Не только для стендов.
Это неплохо для систем Умного Дома. Когда, к примеру в помещении размещён простейший контроллер, и большинство его ног уже задействовано под иное оборудование. А ему ещё нужно собирать и температурные данные из нескольких точек, возможно и из соседних помещений. Далее он может передавать собранную инфу на более производительный контроллер верхнего уровня. При расстояниях в несколько десятков метров, 1-Wire, на трёх сплетённых проводах, прокинутых последовательно по всем точкам - работает великолепно. При опросе данных раз в минуту или ещё реже, сбоев не наблюдается. Проблема с первоначальной идентификацией - разовая. Настроил и забыл.
ecoins писал(а):
04.08.2019{, 11:25}
подключение сети 1-Wire - это всегда антенны индустриальных помех
Как и все провода на входе. Некоторые не подключают внешний подтягивающий резистор, обходятся внутренним подтягивающим. Соответственно шунтирующее сопротивление сети, десятки килоом - помехам вольготно, но как сообщают, в домашних условиях и того достаточно, и всё работает. При подключении стандартного внешнего подтягивающего R=4,7k - проблем обычно не возникает. Я экспериментировал с внешним R=1k, всё прекрасно работает. А шунт в 1k хорошо гасит окружающие помехи.
ecoins писал(а):
04.08.2019{, 11:25}
Это очень и очень вандала не защищенная система
Если вандал - который с ломом, то да. "Против лома - нет приёма" Точно также вандал разрушит и всё остальное. Но если решён вопрос с защитой от проникновения к вам вандала - то нет проблем, проложил три проводка - и получил вечную бесперебойную работу.
Соглашусь, что по ошибке, вандалом можно стать и самому. Однажды, по запарке, подал на ножку данных DS18B20 питающиее +5V. Пока разбирался почему не стреляет - он бедолага видимо пытался сказать о себе и видимо регулярно пытался коротить ножку данных на общие -5V. Когда понял в чём дело - решил что датчику уже хана. А он работает, хоть бы что. Если есть риск помех, то на всякий пожарный, прямо на ножках питания DS18B20, шунтирую цепь питания ёмкостью 0,01 мкф. Ну и после случая с ошибкой, стал ножку данных каждого DS18B20 подключать к общей шине данных только через токоограничивающий резистор 50-70 ом. Не знаю по фэншую это или нет, но мне так спокойней. На надёжности передачи данных это никак не сказалось.
ecoins писал(а):
04.08.2019{, 11:25}
Наше направление - сеть беспроводных сенсоров и устройств. Широко использовали ZigBee
Поиграться ребятишкам с быстрым беспроводным подключением - видимо ZigBee самое то. Или для тех кому неохота проводки тянуть и дизайново прикрывать их кабель каналами - тоже удобно.
Но в датчиках с радиоудлиннителями придётся постоянно помнить о заряде батареек. По закону подлости, сядут в самый ответственный момент, особенно если на морозе. Лично видел как тянули для радиоудлинителей провода подпитки - но ведь тогда теряется весь смысл беспроводности.
Кроме того, уже писал, повторюсь: пройдёт мимо, пусть не вандал с ломом, а некий "шутник" с такой игрушкой: https://14bytes.ru/glushilka-wifi/ и ляжет вся ваша ZigBee хоть на стенде, хоть в Умном Доме, хоть на промышленном объекте. А проводную сеть дистанционно и бесконтактно положить - это ещё нужно сильно постараться.
Последний раз редактировалось bsn 04.08.2019{, 13:42}, всего редактировалось 3 раза.

Закрыто

Вернуться в «Команда ecoins»