Беспроводной роскошный счетчик с STM32

ROLO644U
Солнце 14 августа 2016 г. 13:52
Работа на роскошном счетчике, чтобы соединиться с Domoticz Home Automation. Это гибрид, он эмулирует протокол лакросса WS2500-19 Lux Meter, а для сигнала с низким батареем он может передавать переключатель «Klik Aan Klik Uit» (хорошо известный протокол удаленного переключателя здесь, в Нидерландах).
Первая версия программного обеспечения работает уже на один день. Он передает каждые 7 минут, но только в случае измененной стоимости люкс. Он использует синюю плату таблеток, передатчик с низким напряжением 433 МГц и плату датчика света BH1750. Нет загрузчика, программирование выполняется Stlink.
Когда уровень аккумулятора находится ниже Treshold два раза, он передает сигнал «низкой батареи».
Синяя таблетка имеет мощность и регулятор, чтобы сохранить энергопотребление как можно более низкое.
Теперь давайте посмотрим на это, программное обеспечение и аппаратное обеспечение работает в течение более длительного времени.

Изображение

Изображение

Mrburnette
Солнце 14 августа 2016 г. 14:24
В то время как ваш датчик является скорректированным спектром для человеческих глаз и даст справедливые результаты по «относительной яркости», вы должны знать, что значение LUX, вероятно, на 20% «выключено» из-за спектров поглощения четкого корпуса.

Изображение

Луча

Олли
Солнце 14 августа 2016 г. 14:27
Была ли у вас возможность измерить энергопотребление в течение 7 -минутного простоя? Как насчет времени передачи?

ROLO644U
Солнце 14 августа 2016 г., 16:28
Да, я знаю, что четкое корпус повлияет на стоимость люкс, но абсолютная стоимость люкс здесь не важна, относительная ценность достаточно для моего приложения. Как только я узнаю роскошную в сумерках или в облачный день я могу использовать значения в сценариях Domoticz.

Что касается энергопотребления, это немного теоретическое, и моя цель состояла в том, чтобы продолжить год использования батареи. Я измерил 3.3 UA в режиме ожидания и 23.Пик 12 млн. М. Это занимает 644 мс.
Таким образом, используя эту формулу: iavg = ((i1xt1) + (i2xt2))/(t1 + t2) = 0,0386 млн. CR123 должен иметь 1500 мАч, но я не сбрасываю его до 2 В, это низко для датчика света. Итак, я беру 1000 мАч, с IAVG в 0.0386mah это должно длиться 1079 дней.

Контроллер переключается обратно на часы 8 МГц после пробуждения, не нужно идти на полное 72 МГц, передача данных действительно занимает фиксированное количество времени.

В реальной жизни срок службы батареи должен быть проверен, существует больше факторов, самоопределение, температура, т. Д. Но пока это > 1 год, я счастлив.
Также я не уверен, ставлю датчик на улицу или внутрь за окном. Добавление стекла будет ввести больше деления, но датчик останется чистым и сухим.

Rogerclark
Солнце 14 августа 2016 г. 22:38
Очень интересно. Спасибо, что поделились.

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

Я использую GD32 в данный момент, который имеет кристалл 12 МГц, и принимает 11 мА при работе на 12 МГц.

Я предполагаю, что вы установили мультипликатор PLL на 2 и использовали разделитель (на 2), который находится перед множителем PLL (бит 17 из регистра управления) для достижения 8 МГц ?

Я удалил светодиод питания, но я еще не удалил регулятор, так как я все еще загружаю через USB для тестирования.

Вы пробовали изменить делитель часов GPIO ? Я думаю, что у нас есть этот набор в самый быстрый настройки, но вы можете использовать более медленные часы GPIO и сохранить некоторую питание.

Я предполагаю, что вы также выключили ADC и т. Д?

Моя главная проблема заключается в том, что мне нужно пробудить от внешнего ввода, а также на миллисекундное время сна.
Поэтому мне нужно изменить библиотеку RC, чтобы использовать миллисекунды вместо секунд в качестве временной базы, и я все еще уверен, как проснуться от внешнего прерывания.

ROLO644U
Пн 15 августа 2016 г. 15:17
Первая инструкция после пробуждения: // Step down to External (RCC_CLKSRC_HSE) 8MHz, no multiplier. rcc_switch_sysclk(RCC_CLKSRC_HSE);

Rogerclark
Вторник 16 августа 2016 г., 3:53
Rolo644u написал:Первая инструкция после пробуждения: // Step down to External (RCC_CLKSRC_HSE) 8MHz, no multiplier. rcc_switch_sysclk(RCC_CLKSRC_HSE);

Ахулл
Вторник 16 августа 2016 г. 15:50
Rogerclark написал:Жаль, что он не позволяет всему процессору работать из LSE, но, насколько я могу судить, это невозможно.

ROLO644U
Вторник 16 августа 2016 г., 17:46
Теперь датчик работает в течение нескольких дней, и он работает, но я заметил, что интервальное время между измерениями, показанными на Domoticz, составляло ровно 5 минут. Это странно, я использую 420 секунд для тревоги sleepAndWakeUp(STANDBY, &rt, alarmDelay);

Ахулл
Вторник 16 августа 2016 г., 21:08
Rolo644u написал:Теперь датчик работает в течение нескольких дней, и он работает, но я заметил, что интервальное время между измерениями, показанными на Domoticz, составляло ровно 5 минут. Это странно, я использую 420 секунд для тревоги sleepAndWakeUp(STANDBY, &rt, alarmDelay);

Rogerclark
Вторник 16 августа 2016 г. 11:10
Энди

Мне нужно будет более внимательно посмотреть на код, но у меня было впечатление, что счетчик RTC выбрал 0x7fff в качестве его часового разделителя из 32.768 кГц LSE Crystal.

я.e Один счет в секунду.

Но, возможно, таймер тревоги отличается от регистра времени RTC

ROLO644U
Ср 17 августа 2016 г., 6:58
Я думаю, что решил проблему времени. Я внес фолосидные изменения:
После питания я установил время, это дает регистрам RTC допустимых значений: rt.setTime(1471392000); // Set time to 08/17/2016 @ 12:00am // Real time not important, just give the RTC registers sensible starting values after powerup

Rogerclark
Ср 17 августа 2016 г., 7:37
Было ли главное, что исправило это, настройка фактического времени в регистр RTC ?

Я только что проверил ссылку на программирование, и реестр счетчиков RTC по умолчанию по умолчанию 0x00000000

Регистр сигнала тревоги по умолчанию на 0xffffffff, поэтому не должен вызывать прерывание годами.

ROLO644U
Ср 17 августа 2016 г., 9:06
Вторая вещь, не используя библиотеку STM32SLEEP, исправил, установив RTC на разумное время, - это хорошая практика, я нашел это в других частях кода STM32. Теория, лежащая в основе этого (я думаю), что RTClock LIB рассчитывает времена UNIX в формате BCD регистров RTC.

Ахулл
Ср 17 августа 2016 г. 13:49
Rolo644u написал:Вторая вещь, не используя библиотеку STM32SLEEP, исправил, установив RTC на разумное время, - это хорошая практика, я нашел это в других частях кода STM32. Теория, лежащая в основе этого (я думаю), что RTClock LIB рассчитывает времена UNIX в формате BCD регистров RTC.

ROLO644U
Сб 20 августа 2016 г., 4:41
Lux Meter работает уже когда -нибудь, и время все еще не в порядке. Сначала 420 секунд сна, но через некоторое время датчик спит с большими непредсказуемыми интервалами, входящими в > 10 часов. Нажатие кнопки сброса (без необходимости батарея) снова набирает его на правильном пути, и одна и та же история повторяется. Я обнаружил, что примечание ST An2821, где описан RTC, я буду хорошо взглянуть на это, но быстрое сканирование показывает, что он использует резервные регистры для календаря. Я использую некоторые регистры резервного копирования, чтобы сохранить переменные, может быть, есть конфликт.

Enijeboer
Чт 25 августа 2016 г. 8:42 утра
Это интересный проект для меня, а также я использую Domoticz с Rflink, чтобы управлять моими солнцами. Вы готовы поделиться этим проектом. Итак, какое оборудование вы использовали, как они подключены, а также программное обеспечение, которое вы используете на нем.

Ахулл
Чт 25 августа 2016 г. 9:54
Вы также можете найти некоторые из этих полезных.

https: // chackaday.IO/Project/2126-Sunset ... контроллер

ViewTopic.PHP?F = 19&t = 380

https: // github.com/pingumacpenguin/stm3 ... непрерывно.Ино

ROLO644U
Пт 26 августа 2016 г. 12:09
Enijeboer написал:Это интересный проект для меня, а также я использую Domoticz с Rflink, чтобы управлять моими солнцами. Вы готовы поделиться этим проектом. Итак, какое оборудование вы использовали, как они подключены, а также программное обеспечение, которое вы используете на нем.

ROLO644U
Солнце 28 августа 2016 г. 13:14
Я решил переключиться на использование MySensors для моего измерителя Lux, поэтому не буду обновлять этот пост. Для кого интересно, я открыт, чтобы опубликовать код, который я разработал в этом проекте. Я прихожу "как есть", дай мне знать, если хочешь, если хочешь.
Я буду использовать STM32, но не для этого конкретного проекта.

STM32duino 6502 эмулятор

Black Pill Datalogger Accesing SDHC из USB