![](https://www.stroimdom.com.ua/uploads/set_resources_1/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
toksoft
Пользователи-
Публікації
739 -
Зареєстрований
-
Відвідування
Тип публікації
Профілі
Форум
Календар
Усі публікації користувача toksoft
-
Думаю да, но китайцы отказываются поставлять такой крупногабаритный товар в Украину. Не хотят, хотя кэш с карточки готовы принять хоть сейчас. Попробую поговорить со своим форвардером в Китае. Пусть он, с учетом тамошней специфики их потрусит. Грустно будет если и инструкция с документацией будет только на китайском ...
-
Итого, на текущий момент поддерживаются: DS18B20(датчик температуры) DS1822(датчик температуры) DS18S20(датчик температуры) DS1820(датчик температуры) DHT11(датчик температуры и влажности) DHT21(датчик температуры и влажности) AM2301(датчик температуры и влажности) DHT22(датчик температуры и влажности) AM2302(датчик температуры и влажности) BMP180(датчик температуры и давления, i2c) BMP280(датчик температуры и давления, i2c) BME280(датчик температуры, влажности и давления, i2c) Si7020(датчик температуры и влажности, i2c) Si7021(датчик температуры и влажности, i2c) HTU21D (датчик температуры и влажности, i2c) HDC1080(датчик температуры и влажности, i2c) TMP102(датчик температуры, i2c) MCP9808(датчик температуры, i2c) SHT3X (датчик температуры и влажности, i2c) MPL3115A2 (датчик температуры и давления, i2c) CCS811(датчик COи VOC, i2c) Поскольку задача устройства это мониторинг и управление, то возник резонный вопрос, который я похоже "провтыкал" раньше: А зачем городить огород с отдельными контроллерами освещенности, UV, датчиками движения/жестов ... ? Конечный итог все равно - графическая история и "щелкнуть реле" при совпадении условий. Заказал MAX44009, VEML6070, APDS-9900, AP3216, APDS-9930, PAJ7620U2, BH1745NUC, APDS-9960, VL53L0X Приедут - буду пытаться "доклеить" в термостат.
-
Приближается зима, и снова придется убирать снег возле дома, и на подъездах к дому. Если сильный снегопад, то ясное дело нужно заказывать трактор, но не каждый же день ... Уже думал сделать съемный ковш к своему джипу, и чистить дорогу. Сегодня товарищи китайцы прислали очередной мой заказ, в который была вложена бумажка с картинкой и ссылкой: bealoving.com/products/snow-plow-robot?fbclid=IwAR3qbYm-mRL1wEX6735PGRGHX4xV7-1rzhqCQGX0r6cpoKbs8-a0po_xXuk Робот то есть. Идея интересная, начал выяснять емкость батарей, и возможность внешнего управления (API), помимо пульта. Кто-то такое пробовал использовать ? P.S. Идеи Boston Dynamics не дают мне спать спокойно
-
За 5 лет экспериментов над своими домашними, было обнаружено и доказано что логика, которую реализовали Elko и, частично Schneider (у них есть свои фичи), "интуитивно понятна" и запоминается даже пожилыми людьми. У многих в домах стоят "обычные" выключатели, иногда с фиксацией, иногда нет. Вот под оные и нужно подстраиваться. Ситуаций, в которых кто-либо еще на этапе строительства протянул кучу проводов к каждому из выключателей или розеток, можно перечислить на пальцах. У большинства выключателей, dejitter 50 - 80ms. +/-. Проверено экспериментально. 250ms (короткое нажатие) это такой себе "компромис", требующий все-таки понимания (и запоминания) что и как. 1+s - разумный минимум. Все включения/выключения (в т.ч. вентиляции), должны происходить: 1. Инициатива человека (Выключатель, интерфейс системы, мобильный или еще что-либо - например Alexa) 2. Заданная для данного конкретного момента времени программа Нужно достаточно точно прописать все сценарии, т.е. например программа включила вентиляцию на одном из этажей, а человек решил "ну его нафиг". Что должно произойти ? Оставляем выключенной, т.е. прерываем программу навсегда ? До следующего eventа ?
-
Обнаружил причину повышенного CO2 на графике. В это время выгребал пепел из камина. Внешне как-бы пыли не было заметно, но датчик видать что-то "учуял". Непонятно правда почему CO2, а не TVOC, и непонятно почему само по себе вернулось в нормальное состояние. Показания TVOC в общем достаточно близко повторяют показания датчика CO2. www.stroimdom.com.ua/forum/attachment.php?attachmentid=638794&stc=1&d=1541705471 Судя по отзывам на западных сайтах, CCS811 почему-то считается "капризным" датчиком. Видать не разобрались как правильно clock stretch (i2c) реализовать. В документации достаточно много "серых зон" и, судя по всему, поскольку новые (HW) прошивки в датчик можно без особых проблем заливать, мне пришли датчики с какой-то новой прошивкой. Работает стабильно, зависаний не замечено. Если не использовать весь features set, такой как "wake up/put to sleep", прерывания, то WAKE нужно посадить на землю. Пулдаун уже запаян на плате. Если сравнивать по сложности реализации со стороны программной части, то скажем SHT31 и MPL3115A2 отняли у меня гораздо больше времени, чем CCS811.
-
Добавил поддержку датчика CCS811. Если содержание СО2 в воздухе (ppm) протестировать еще можно, то TVOC (ppb) как-то очень "виртуально". CO2 в помещении колеблется от 400 до 600. На кухне, возле плиты - до 1200. Под выхлопной трубой машины - около 8000. Там правда в общем CO проблема, а не СО2, но типа, меряет. Корректировка с учетом температуры и относительной влажности дает изменения в пределах +/- 100ppm. TVOC можно рассматривать как "интегральный" показатель. Подержал минут 10 над открытой банкой с лаком (пол, яхтенный). Показатель уехал за 3000ppb. После того как закрыл банку, в течении ~1 минуты постепенно вернулся к старым значениям (в моих условиях 10 - 40). В туалете, "после того как", 800-900. Женский/мужской дезодорант - около 500ppb. Под "выхлопной трубой", зашкалил за 20000. Канифоль (паяльник) - 650 - 700ppb. Дым от подожженной изоляции на проводе показатели "прыгали" в пределах 2000 - 2500ppb. Больших цифр получить не удалось, хотя верхние границы как для CO2, так и для TVOC - 32768 (ppm/ppb). Через неделю приедет BME680, буду пытаться скоррелировать показания.
-
То есть вы предлагаете тактировать постоянно максимальной частотой для того, чтобы "выйти из sleep" побыстрее ? Мне производительность как бы не критична, в особенности для задач брелка. RA02 в общем "видит" не только базу, но и соседние брелки (в пределах видимости), но даже с учетом того, что у меня по идее может быть до 100 брелков, даже текущая производительность stm для меня сильно избыточна. Может вы майнингом криптовалют занимаетесь на кристаллах ?
-
Так это же "почти родная" библиотека, которую предоставляет BOSCH. Немного подпилить, и пожалуйста - никаких вам float point. "<<" и ">>" это простой bit shifting. Зачем делить, скажем на 4, если можно просто сдвинуть на 2 бита вправо (для целочисленных вычислений) ? Если беспокоит потеря точности, дык умножьте хоть на 1000, а потом уже сдвигайте. int32 это 4 байта, по 8 bit каждый. Учитывая знак, 2147483647 (в десятичном исчислении). Как для температурного датчика - более чем. Ну или 0К. -273 к с копейками. Если вам удастся зафиксировать температуру ниже,- я буду крайне удивлен. А если "прямо посередине" вашего мега-float рассчета свершится interrupt, которого "заинтересует" рассчитываемое значение ? P.S. unreal1975 - манная каша - она вкусная, а главное полезная
-
Давайте упростим задачу тем, кто только решается начать свой проект, и для тех, кто уже активно кодит. В соседней ветке я пытался "продать" идею fifo, но наверное или я как-то путанно мысли излагал, или может еще что либо. Код (C++, template): Тут используется несколько системных вызовов (типа cli/sti), которые нужно изменить на соотв. для кристалла, который вы планируете использовать. interrupts/thread safe. Наверное вам пригодилось бы "легкое напоминание", как можно получить параметры сенсора, без использования float. Например так (для BMx280):
-
Ого,- DMA я на stm еще ни разу не использовал. Очень хотел на atmega, там все гораздо проще, но нужен ram. У меня только одна динамическая таблица брелков может 6к занять, поэтому пришлось выбирать кристалл с большим объемом RAM. Из линейки CORTEX, я использовал только 2 кристалла, и это не f030. Что-то мне не очень хочется снова погружаться в раскопки очередной архитектуры, и прогуливаться по швабрам. P.S. Вот выложил уже практически все детали. Код что-ли начать публиковать, чтобы наконец уважаемый diver перестал рекламировать gsm, и перешел на более современные технологии ?
-
Наверное в ваших задачах времянка и порядок обработки внешних событий не очень критичны, но так получается не всегда. Пример: HAL кстати использовать не обязательно Сам приемо-передатчик достаточно дешевый - до 2$ за штуку. stm32 тоже вроде-как недорогой, так что принципиальных проблем тут как бы нет. В моем случае, "внешними" (по отношению к stm) выступали: 1. RA-02 2. 4 кнопки 3. Светодиод 4. Пищалка Что тут у нас может генерировать внешние события ? RA ясное дело. Ну и кнопки. Что вешаем на прерывания, а что на цикл ? Все кроме светодиода. Работу с пищалкой проще организовать путем interrupts. О, а теперь самое интересное: Какие приоритеты, что будет NMI, а что нет ? Тут в общем чудес никаких не ожидалось, и не было. Чудеса начались когда пришлось кристалл "убаюкивать", чтобы уменьшить энергопотребление. А потом "будить". Поскольку у кристалла (stm) присутствует возможность добавить батарейку,- было бы непростительным расточительством не воспользоваться возможностью держать актуальным RTC (и сохранять некоторые данные в SRAM). Если следовать "стандартам", то придется строить небоскреб, но такой задачи у меня не было, и все что мне было нужно от кристалла - это беспроводные возможности оного (брелок - база и брелок - брелок), соотв. реализация значительно упростилась. Но не настолько, чтобы можно было "воспользоваться готовыми примерами". В качестве другого примера, можно рассмотреть железку, требования к которой 4 дискретных входа, счетчик импульсов 20ms (цифра), 1 ADC, 4 реле, и, скажем i2c экранчик. Примеры приведены с целью того, чтобы пришло понимание, что сначала появляются "хотелки", потом "проявляется" архитектура, которая все-таки требует прочтения мануалов по кристаллу, а только потом уже прототипирование и кодинг, для которого можно использовать "готовые примеры", которые, по большому счету, не так уж и нужны, после изучения мануалов.
-
Угу. Расскажите мне бестолковому, что такое interrupts masking, NMI, и приоритеты. И на какие ноги можно завесить NMI, а на какие нет. Может еще объясните почему ? А заодно, может объясните мне разницу (именно для stm) между volatile и mutex ? Или может расскажете в каких режимах могут работать АЦП ? И чем они отличаются ? ** небольшая корректировка с "разница между volatile и mutex" на что целесообразнее использовать, в т.ч. в handler Добавлено через 29 минут Могу конечно еще поспрашивать моменты, без которых говорить о типа "коммерческом" решении немного неуместно: 1. Какой из sleep mode вы используете ? 2. Что происходит с SPI устройствами после выхода из sleep (вы кстати в курсе как именно "будить" кристалл ?) 3. От какого из таймеров вы драйвите SYSCLK ? Это важно, ососбенно если у вас есть батарейка (на stm есть такой входец - vbat называется)
-
Я в курсе. unreal1975 я тоже так хотел типа "программить". Склеить из snippets. К сожалению, не получается. Пришлось разбираться в этом хозяйстве. То есть до какого-то предела "оно" работает,- потом ой ... Конкретно по прерываниям, которые можно "безболезненно" использовать - их 4. Остальные тоже в общем можно, но уже не так просто. Отладка (STLink) даже с 4 handlers в реальных условиях - это ад. Мрачный, и со сковородками. Именно под мои задачи, проект на stm занимает около 11000 строк плюсатого кода (не считая headers). Еще и map приходилось редактировать - стека не хватало. Пользуюсь Keilом. Мне хватило издевательств со стороны stm. cut&paste в приведенных примерах нет. От слова совсем. Только то, в чем разобрался, и понимаю зачем и как работает.
-
Таки наступил сегодня на "веселую" швабру. Подключил к термостату HTU21D и BMP280. А нужно было от этого всего хозяйства, 2 температуры и влажность. Давление меня как бы не интересовало, а именно оно и "вылезло" вместе с 2 температурами. Пришлось выносить в интерфейсе. Блин ... Ну никак на автомате не получается. www.stroimdom.com.ua/forum/attachment.php?attachmentid=637041&stc=1&d=1540404117
-
Я TFT не использовал, привожу пример инициализации дисплея на кристалле 1306: Идеи подключать к atmega 1306 у меня не было, только обычный 20 символьный дисплей, пример класса приведен ниже: По сравнению с STM, гораздо понятнее, т.е.тут в большей степени важны алгоритмы, wrappers присутствуют, чем системно-зависимые вызовы, которые приходится использовать для STM.
-
Насколько я понимаю, вы выбрали наверное такой дисплей: Не понимаю в чем именно проблема. Готовых библиотек валом, например: Есть правда некоторые тонкости программинга без буферизации (drawpixel), в частности refresh, но до этой проблемы еще нужно "дорости" P.S. На ваших экранах с показателями BMP280, отсутствует дробная часть. Можно так: Возвращаете показатели температуры и давления умноженные скажем на 100 (int32_t), потом temp / 100, temp %100