Этим летом на даче, в конце августа, добившись наконец нормального обмена устройства, которое будет описано ниже, с электросчетчиком, я сидел на крылечке и слушал разговор двух белок, одна сидела на большой туе, а вторая – на яблоне. Тут позвонил мой друг, только что вернувшийся из автопохода на Белое море. На его вопрос «как дела?» я ответил, пребывая все еще погруженным в проект: «поговорил со счетчиком, сижу вот, слушаю разговор двух белок». Друг помолчал и сказал: «Ну про белочек после литра выпитой я конечно знаю, но после разговора со счетчиком???» :)

В статье описано устройство (далее – «Говорилка»), предназначенное для снятия показаний с электросчетчика и проговаривания их синтезированным голосом в телефонную линию. Кроме собственно показаний потребленной энергии Говорилка считывает текущие дату, напряжения по фазам, токи по фазам, потребление общее и по фазам и отображает эти данные на встроенном TFT дисплее. Также к Говорилке подсоединены датчики температуры, влажности, атмосферного давления и освещенности.

На рис. 1 приведена фотография устройства. Белыми цифрами помечены следующие узлы:

1. Модуль RS232
2. Разъем RJ45 для подключения 1Wire датчиков
3. Разъем RJ45 для подключения I2C датчиков
4. Зона формирования аналогового речевого сигнала
5. WT588D-U
6. Дисплей на базе ILI9341
7. Зона размещения 2-х DAC
8. Плата Blue Pill на STM32F103R8C6
9. Узел защиты по питанию
10. Модуль DTMF
11. DC/DC преобразователь 15 – 5 вольт
12. Плоский кабель 6 проводов для присоединения к разъему гарнитуры CCU6225LT


Рис. 1 Внешний вид Говорилки

Использован корпус G2113С с размерами240х120х60мм, с прозрачной крышкой. На фото корпус показан без прозрачной крышки. Фотография устройства с крышкой приведена на рис. 2.


Рис. 2 Устройство в собранном корпусе

Потребность в этом устройстве появилась после заключения индивидуального договора с МОЭСК на электроснабжение в результате длительной работы нашего председателя СНТ. Это действие повлекло за собой множество последствий. Чтобы заключить договор с МОЭСК надо поставить новый счетчик в щите учета на столбе. Новый счетчик – следовательно новый подвод к дому. Раз новый подвод – тогда почему бы не взять три фазы и 15 квт за 500 рублей?

В результате в старом дачном домике появился новый трехфазный ввод на 15 квт и вся внутренняя проводка в доме была заменена. Появился новый щит, в котором помимо стандартного набора автоматов и ВДТ (УЗО) были смонтированы четыре контактора для управления подачей электричества. Три контактора управляют включением обогрева, четвертый – подачей питания на освещение\бытовые розетки. При выключении всех четырех контакторов электричество остается только внутри стального закрытого щита, все внешние цепи обесточиватся. Контакторы управляются симисторными ключами с оптической развязкой S202S02. Симисторы управляются от охранного контроллера CCU6225LT тульской фирмы RADS. Контроллеру лет наверно 10, работает безукоризненно в режиме 24*7, управляя электрическим отоплением и формируя СМС при срабатывании дверных датчиков. Единственной проблемой за эти годы стала необходимость в смене сим-карты. В какой-то момент устройство исчезло из сети. Перестановка сим карт из телефона в устройство и наоборот показала, что в телефоне работают обе сим-карты, а в CCU6225 – только свежая из телефона. Консультация с провайдером и замена сим-карты проблему решило полностью. Пришлось также заменить свинцовую батарею резервного питания, но 7 лет – это хороший срок службы для такой батареи.

CCU6225 дает возможность управлять нагрузкой независимо по смс, по телефону посредством DTMF, либо выключателем в доме. Несколько выключателей обеспечили местное управление контакторами, создав дополнительное удобство и гибкость в управлении оборудованием дома. Выключатель «я дома» позволил управлять через CCU6225 контактором подачи питания на цепи света и бытового оборудования. При выходе достаточно перевести его в положение «я ушел» и вся техника в доме будет обесточена. При приходе – переключить в положения «я дома» и будет подано питание на все внутренние цепи. CCU6225 позволяет запрограммировать выключение цепей при выходе из дома и включение только одной (освещения) при входе. Смысл в том, что, уходя следует выключить обогрев, но не факт, что при входе его надо включить.

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

Договор с МОЭСК привел к необходимости подавать показания потребленного электричества раз в месяц. Т.е. надо раз в месяц снять показания счетчика. Летом это не проблема, но осенью-зимой-весной там никто не живет и ездить на дачу только ради считывания показаний неразумно.

Счетчик Меркурий 231 имеет инфракрасный порт для дистанционного считывания показаний, есть программа «Конфигуратор» для общения с такими счетчиками, т.е. техническая возможность электронно считать показания существует. Автор «конфигуратора» ведет блог и доступен по электропочте.

Выбор способа передачи показаний


Для передачи показаний существуют готовые промышленные решения (системы АСКУЭ) – и софт и железо. Но они достаточно дороги для единичного некоммерческого использования и требуют организации линии связи. Как правило, используется какая-то разновидность канала сотовой связи. Оплата за такой канал на сегодня – примерно 300 р в месяц. Т.е. для передачи 24 показаний (я попросил двухтарифный режим при заключении договора) надо будет заплатить за год 300 р * 12 = 3600 р.

С одной стороны, это немного. С другой стороны – и эти деньги надо заработать. Также очевидна техническая избыточность инет-канала через сотовую связь. Дом застрахован, рассматривать лица крадунов, если что случится, особого смысла не имеет, контроль 24*7 не нужен. Для передачи показаний желателен самый дешевый вид связи, чтобы платить по минимуму.

Такой вариант есть – это аудиоканал в уже имеющейся CCU6225LT. Входящий вызов бесплатен, голосом передать показания займет минуту-другую, т.е. несколько рублей в месяц будет стоить такой режим передачи данных. Экономия на пару порядков – это серьезно, несмотря на абсолютные значения сумм )

Получается такая схема: надо сделать контроллер, который будет считывать показания со счетчика через инфракрасный порт и проговаривать их в телефонную линию.

Размещение счетчика


Счетчик Меркурий 231 и инфракрасный адаптор размещены в щите на столбе. От щита до места размещения Говорилки в доме проложена витая пара FTP для наружного размещения суммарной длиной около 35 м. Витая пара была проложена одновременно с установкой нового счетчика и заменой однофазной подводки к дому на трехфазную. Кабель состоит из 4-х стандартных витых пар в общем экране и защитной оболочки черного цвета. Внешняя оболочка черного цвета – признак кабеля для наружной эксплуатации. Пластик черного цвета содержит добавки, повышающие устойчивость пластика к Солнечной радиации. Инфракрасный адаптор размещен в корпусе размером 60 на 40 на 30 мм и со стороны Говорилки выглядит как стандартный порт RS232.

К корпусу приклеены магнитики со стороны, противоположной отверстию для инфракрасного приемопередатчика. Это позволило прикрепить модуль напротив счетчика на внутренней стороне дверцы щита, просто примагнитив его к нужному месту.

На обратной стороне кабеля в доме смонтировано устройство защиты из пяти диодов типа 1.5KE18CA (Защитный диод двунаправленный, 1500Вт, 18В, [DO-201]), стандартная вилка DB9 и разъем USB для подачи питания на инфракрасный адаптор. Это конечно не полноценная грозозащита, но сколько-то энергии может поглотить. На принципиальной схеме Говорилки устройство защиты от статики обозначено как «модуль защиты».

Стандартный разъем RS232 и стандартный USB разъем позволяют помимо Говорилки подключить обычный ноутбук и воспользоваться программой «Конфигуратор» для, например, подстройки часов или считывания данных счетчика для анализа потребления по месяцам. Таким подключением я пользовался чтобы посмотреть обмен программы со счетчиком, записать команды счетчику и ответы счетчика. Из доступной в сети технической документации не всегда можно правильно понять какую команду надо выдать счетчику и как правильно расшифровать ответ. Сравнивая же запомненные скриншоты, например, чтения энергии или тока из счетчика и запомненного побайтового обмена достаточно просто выделить команду и расшифровать ответы.

Попутно замечу, что ноутбуком с программой-сниффером очень удобно смотреть за обменом Говорилки и счетчика при отладке скетча, достаточно подсоединить параллельно вход RX Говорилки и вход RX ноутбука. Я использовал для выполнения этих соединений электротехнические быстрозажимные клеммы Wago на три и пять позиций. Фото такой клеммы приведено на рис. 3. Эти клеммы оказались чрезвычайно удобными для быстрого монтажа соединений из жил витой пары.


Рис. 3 Клемма Wago

Выбор элементной базы Говорилки


На этом этапе проектирования я задумался над основой Говорилки – на какой элементной базе делать систему? Вариантов несколько:

• Использовать старый компьютер из наличия, снимать данные и проговаривать программно.
• Использовать что-то на базе Ардуино.

Первый вариант интересен невысокой трудоемкостью разработки и огромными возможностями расширения функционала. Но поскольку зимой дом не отапливается, то надо обеспечить работу компьютера и при сильно отрицательных температурах. Причем не столько работу саму по себе, сколько перезапуск компа после прекращения подачи электричества. Это бывает нечасто, но раз в месяц электричество исчезает на время, достаточное, чтобы компьютер остыл до температуры окружающей среды. Запуск компьютера при температурах ниже +5 градусов Цельсия проблематичен.

Первая серьезная проблема – старт винчестера. В мануалах указывают допустимый диапазон от +5 градусов. Т.е. при более низкой температуре ничего не гарантируется. Личный опыт эксплуатации сервера на балконе тоже говорит, что винчестеры не стартуют при низких температурах. Причины банальны – загустевание смазки в подшипниках и недостаточный момент шпиндельного мотора для страгивания с места пакета блинов. Это явление для ненового, поработавшего винчестера усугубляется.

Вторая проблема – резкое изменение параметров электрорадиоэлементов (ЭРЭ) с падением температуры. Так, можно ожидать резкого ухудшения емкости разнообразных конденсаторов в цепях питания, что приведет к заметному увеличению уровня помех по цепям питания при низких температурах и возможно к другим странным эффектам, таким как нестабильность работы, зависания и пр., что для автономно и удаленно работающего компьютера недопустимо. Бытовые компьютеры предназначены для использования при плюсовых температурах и ставить в них ЭРЭ с большим температурным диапазоном излишне расточительно.

Очевидно, что обе эти проблемы можно обойти, поместив компьютер в термостабилизированный кожух и, возможно, добавив сторожевой таймер для перезагрузки зависшей машины. Но это уже слишком дорогое решение. Замену обычного винчестера на SSD также не имеет смысла рассматривать – нецелесообразно дорого.

При использовании Ардуино подобных проблем нет – дисков там нет, сам кристалл рассчитан на работу от -40 до +105С°, а фильтрующие конденсаторы по питанию легко дублируются элементами, пригодными для работы в расширенном температурном диапазоне. Сторожевой таймер уже встроен.

Есть и третья проблема. Раз уж делается расширение возможностей дистанционного управления, разумно остановиться не только на считывании показаний счетчика, но и поставить несколько других датчиков – температуры внутри и снаружи дома, влажности, освещенности, атмосферного давления. Все эти датчики имеют как правило интерфейс типа I2C или 1Wire, т.е. так или иначе требуется преобразователь данных, полученных по этим интерфейсам, в понятные для компьютера. Один из разумных вариантов – Ардуино.

Таким образом получается, что разумно использовать Ардуино для считывания показаний счетчика и всех подключенных датчиков и передачи их голосом по речевому каналу CCU6225.

Я мог использовать стандартную Ардуину Нано на процессоре ATMEL 328p, но у меня лежали 4 платы на процессоре STM32F103C8T6 (рис. 4) и я решил, что будет интересно использовать этот более продвинутый 32-х битный процессор. STM32F103C8T6 имеет 64 кб флеш-памяти для программы и 20 кб ОЗУ и может работать с тактовой частотой 72 МГц. В реальности флеш-памяти больше вдвое. На форуме были сообщения об успешной работе модулей и программ при выборе опции «128 кб памяти».


Рис. 4 Внешний вид платы на процессоре STM32F103C8T6 (Blue Pill)

Платы STM32F103C8T6 приходят без загрузчика, но процедура зашивки загрузчика несложна, после чего плата может программироваться посредством стандартного Ардуиновского IDE. На форуме www.stm32duino.com имеется подробное описание действий, которые надо предпринять для установки IDE и прошивки загрузчика.

Плата («Blue pill») c STM32F103C8T6 имеет часовой кварц (32768 Гц) на борту и может хранить текущее время при подключении backup батареи с напряжением около 3В к контакту VBATT. В моем проекте эта возможность не использована, поскольку время можно считать из счетчика.

В момент принятия решения о платформе Говорилки я еще не располагал реальным опытом работы с процессором STM32F103C8T6. Тем не менее я принял решение использовать именно этот процессор и не пожалел – работать с ним оказалось ничуть не сложнее, чем с Atmel328р, а возможностей и ресурсов существенно больше, процессор быстрее. Работа с дисплеем оказалась проще – не нужны преобразователи уровня 5 – 3.3 вольт, все датчики также подключаются напрямую. Изображение на экране формируется существенно быстрее даже в обычном режиме обмена без использования DMA.

На рис. 5 приведена схема электрическая принципиальная.


Рис. 5 Говорилка. Схема электрическая принципиальная

В STM32F103C8T6 имеется два аппаратных контроллера I2C и я хотел разнести разные группы датчиков по разным каналам. Так, на один канал я хотел присоединить датчики внешней температуры и влажности, а на второй – остальные, размещенные внутри корпуса Говорилки. Я хотел таким образом увеличить надежность и живучесть системы, чтобы при коллизиях с внешними датчиками отказал только один канал, а все остальное осталось в рабочем состоянии. Первый канал заработал сразу и без проблем (на выводах PB6, PB7), как в аппаратном режиме с тактовой частотой 400 КГц, так и с использованием программного обмена. Запустить второй канал I2C (на выводах PB10, PB11) с использованием библиотеки HARDWIRE, адаптированной под Blue Pill, оказалось непросто. Сейчас я считаю, что в библиотеке HARDWIRE имеются особенности, проявляющиеся именно при работе со вторым каналом. После долгой борьбы второй канал I2C запустить удалось. Ситуация парадоксальная – при подключении какого-либо датчика к первому каналу и загрузке тестовой программы например, сканера I2C – все работает сразу. Переключение датчика на второй канал и замена цифры 1 на цифру 2 в команде создания объекта (HardWire H2Wire(2, I2C_FAST_MODE);) приводит к полной неработоспособности системы. Плата наглухо виснет и выводится из этого состояния только кнопкой Reset. Детальные исследования проблемы с применением отладочных точек после каждого оператора и логического анализатора для просмотра сигналов, генерируемых на шине I2C2, позволили найти место зависания и устранить его. Для меня решением проблемы послужило задание точного размера всех критичных переменных, используемых в обмене по I2C2 (int16_t вместо int и т.п.). Очень осторожно предположу, что неверный размер переменных, используемых для обмена с подпрограммами библиотеки HARDWIRE, приводит к записи (или чтению) неверных областей памяти, что в свою очередь дает непредсказуемые результаты. Почему это проявляется при использовании второго канала I2C и не проявляется при использовании первого – я не знаю. Также эта гипотеза не объясняет странности с сигналами SDA и SCL, один из которых при уже при загрузке скетча ушел в ноль и так там и оставался до сброса. Как это связано с объявлением переменных и их разным размером – я даже предположить не могу.

Генерация звука


После анализа всех желаний (ака хотелок) стало понятно, что фраз для произношения надо много (до сотни). В текущем варианте использовано 76 фрагментов. Использовать под это невеликую память Ардуино неразумно. Поиск по инету способов генерировать звук дал неожиданно замечательные результаты: в продаже в интернете имеются модули WT588D-U с памятью 32 мегабита, которые могут запомнить до 220 фрагментов звука суммарной продолжительностью несколько минут при наилучшем качестве. Модули оснащены разъемом мини USB и могут работать в разных режимах: воспроизводить звук по команде от МК, от кнопок. Фото модуля представлено на рис. 10 поз 1. В модуле имеется встроенный 13 битный ЦАП и PWM усилитель для динамика мощностью 0.5 Вт на 8 ом. Этот модуль понимает только формат WAV с частотой дискретизации от 6 до 22 КГц. Напряжение питания модуля 2,8 – 5,5 вольт, сопряжение с МК – 3.3 вольта. Если надо использовать МК с логическими уровнями 5 вольт – надо применить конвертор (годятся от простейших резисторных делителей до микросхемных).

Программно модуль может управляться либо по однопроводному интерфейсу, либо по трехпроводному. Подробнее тут. Любопытной особенностью модуля является метод формирования звуковых фрагментов: они могут состоять из произвольного количества загруженных в память звуков и пауз. Паузы места в памяти не занимают, т.е. можно загрузить в память много атомарных звуков и конструировать из них разные фрагменты, разнообразно соединяя одни и те же звуки. Для воспроизведения конкретного фрагмента (или голоса, как это названо в мануале) надо передать в модуль номер этого фрагмента, дождаться появления сигнала BUSY и дождаться пропадания сигнала BUSY. Именно в этой последовательности – сигнал BUSY появляется с довольно большой задержкой после получения команды. Конкретный тип сигнала BUSY (низкий, высокий, с открытым коллектором) определяется при создании проекта. Можно переключать эти опции в готовом проекте, но требуется перекомпилировать проект заново перед записью в модуль. Галка «Pull high resistor» (рис. 5) управляет типом выхода «Busy» — полноценный двухтактный пуш-пулл или открытый коллектор. Режим ОК полезен при подключении сигнального светодиода, а пуш-пулл – при подаче сигнала на управляющий МК. Проект создается программой, которую можно скачать, например, тут (версия 1.6 beta) или найти в инете самостоятельно. Тут есть версия 1.0.

Я использовал версию 1.6 бета, просто потому что она попала ко мне в руки первой. Режим проговаривания я использовал упрощенный. Так, числа проговариваются просто по одной цифре без разбиения на сотни, тысячи, не учитываются рода и склонения\падежи и пр. Например, число 397.45 будет проговорено как «Три девять семь точка четыре пять», а фраза про число обнаруженных датчиков 18b20 будет выглядеть так: «обнаружено один датчиков температуры». Такой способ использует свойство значительной информационной избыточности русского языка, однозначность восприятия информации на слух не уменьшается, хотя неверные падежи и склонения конечно режут слух. Но простота программирования такого режима перевесила желание сделать академически правильное произношение. Замечу, что никакой rocket science в программировании правильных склонений и спряжений нет, есть масса примеров, где числа преобразуются в числа прописью, во всех мыслимых вариантах: от искусных таблиц и макросов в Экселе до отдельно стоящих dll на Си, но трудоемкость вопроса велика. Исходя из этих факторов я решил максимально упростить программу собственно проговаривания на первом этапе работы, уделив максимум внимания функционированию программы в целом и оставив доработки второго порядка для занятий темными зимними вечерами :). Свободной памяти в WT588D-U и STM32F103C8T6 осталось достаточно для любых мыслимых изысков в организации правильного произношения. На рис. 5 в правом нижнем углу видно, что весь мой проект занял менее 23% памяти модуля WT588D-U при суммарной длительности всех фрагментов 78 секунд.

Звуковые файлы можно попытаться записать самому либо сгенерировать одной из программ синтеза речи. Имея некоторый опыт записи приветствий для офисных телефонных станций, я выбрал второй вариант без колебаний. Опыт говорит, что самостоятельно сделать качественный звуковой файл непросто – нужен хороший студийный микрофон, помещение с хорошей звукоизоляцией и определенная тренировка в произношении. Среди интернет-проектов с синтезом русского голоса мне больше всего понравилась Ивонна.

Я подготовил список фраз и за небольшое время получил набор нужных звуков. Есть некоторые недостатки: в некоторых фразах неверны ударения, какие-то слова произносятся непривычно. Например, слово «амп?р» машина говорит, как «а?мпер». Разборчивость фраз очень хорошая и на перечисленные недостатки я закрыл глаза, хотя наверняка есть способы тонкой настройки речевых синтезаторов, которые позволят добиться идеального результата. Основная задача Говорилки – разборчиво произнести цифры потребления и выходных данных датчиков.

Преобразование полученных файлов в формат WAV я сделал конвертором из комплекса AIMP. Методом проб и ошибок выяснилось, что в batch-конверторе надо явно указывать все параметры выходного файла, явно включая все опции, иначе программа записи данных в wt588 не позволяет импортировать файл с сообщением «неверный формат». Детально я не разбирался, возможно проблема в отсутствии какого-либо параметра в заголовке файла, что программой импорта воспринимается как неверный формат. Естественно, можно использовать и разнообразные онлайн конверторы.

Попутно выяснилось, что с кириллицей в названиях файлов проблем нет.

Работа с этой программой имеет некоторые особенности. Сначала надо создать проект (рис. 6).
В проект на левую панель надо набрать звуковые файлы. Это исходные звуки, из которых можно конструировать фрагменты. Звуковые файлы требуются в формате WAV с частотой дискретизации от 6 до 22 кГц с шагом 2 кГц. Программа при импорте файла проверяет эти параметры и не позволит импортировать файл с недопустимой частотой дискретизации.

Для создания фрагмента в правой части надо выбрать номер фрагмента (Equation No) и в строки правой панели набрать файлов с левой панельки. Фрагмент может включать всего один звуковой файл из правой панели или состоять из многих звуков и пауз. В разные позиции справа можно набирать одни и те же файлы из левой панельки. Т.е. внутри модуля хранится одна копия файла и ее можно использовать в нескольких фрагментах. В моем проекте все фрагменты содержат только один звуковой файл. Для запуска воспроизведения, например, фрагмента номер 0xD0 надо передать в модуль команду 0xD0.


Рис. 6 Скриншот проекта

Пока фрагмент играется – выход BUSY прижат к нулю (или напротив – к питанию, опция в настройках). На рис. 7 представлены опции создания проекта.


Рис. 7 Опции создания проекта

Также в опциях проекта задается и тип выходного устройства – ЦАП (DAC) или PWM усилитель. Выход ЦАПа подавать на динамик не следует, надо использовать дополнительный усилитель.
Я усилитель делать не стал, а приготовил два проекта – один с ЦАП, другой с PWM и переставлял модули в Говорилке при отладке. В модулях следующих поколений оба выхода работают одновременно – т.е. можно и присоединить динамик и использовать выход ЦАПа. После создания проекта и набора нужных фрагментов надо скомпилировать проект. На рис. 8 представлен результат компиляции проекта.


Рис. 8 Результат компиляции проекта

Далее надо подсоединить модуль к компьютеру и через меню открыть модуль кнопкой «Connect» (индикатор «Status» станет зеленым), стереть память модуля («Erase») и записать проект («Download»). Можно сделать это одной кнопкой «OnekeyDownLoad».


Рис. 9 Запись проекта в модуль

Готовый проект можно скачать тут.

Управление WT588D-U от микропроцессора


Поиск по инету готовой библиотеки для управления WT588 дал довольно скудные результаты – нашлась одна приемлемая библиотека, работающая с модулем в режиме 3-х проводного интерфейса. Модуль может управляться от процессора либо по однопроводному интерфейсу, либо по трехпроводному. В реальности требуется еще считывать состояние вывода BUSY и управлять выводом CS, т.е. суммарно нужно 5 выводов от МК. То, что в китайском мануале называется «однопроводным интерфейсом» в реальности требует три вывода МК.

В тестовой схеме модуль заработал, но выяснилась неприятная особенность – если систему выключить и включить – модуль переставал реагировать на команды. Экспериментальным путем я выяснил, что отключать питание надо более чем на 30 секунд, после чего модуль опять работает. Манипуляции выводом «reset» не помогали, модуль на это не реагировал вовсе. Ничего не найдя в инете по этой проблеме, я написал в фирму “Звуковые Технологии” письмо с просьбой о техподдержке. К моему удивлению, я получил вполне вменяемый ответ. Оказалось, что модулей WT588D-U было несколько модификаций и более ранние версии как раз и отличались замеченным мной поведением при быстром отключении-подаче питания. Стала понятна низкая цена купленных мной модулей :)

При обсуждении вопросов коллега из “Звуковых Технологий” рассказал, что сейчас есть более интересные модели этой фирмы, мы пообщались и он прислал мне несколько модулей на тестирование. Фотографии модулей приведены на рис. 10.


Рис. 10 Звуковоспроизводящие модули, 1 – WT588D-U, 2 – WT200302, 3 – WT2003M03

Присланный модуль WT588D–U действительно не зависал при быстром выключении\включении питания. Внешне новый и старый совершенно одинаковы, я их тщательно сравнил под микроскопом, видимо отличаются номиналы конденсаторов по цепям формирования импульса сброса при подаче питания.

В посылке также были и новые модули, более интересные. Так, модуль WT200302 со встроенной флеш-памятью (рис. 10 поз 2) в два раза меньше, работает с форматом MP3, и не требует отдельного программатора. Значительно увеличено максимальное количество звуковых фрагментов – 3584. Его очень просто программировать — достаточно просто подключить модуль к компьютеру по USB и записать нужные звуковые файлы как на обычную флешку. Управляется модуль одновременно кнопками и командами по одному проводу. Режима управления по трем проводам нет. Точно так же, как и у предшественника, вывод BUSY активен, пока играется звуковой файл. В отличие от предыдущего модуля BUSY только низкий, т.е. когда звук воспроизводится – сигнал BUSY падает к нулю. У модуля есть любопытная особенность – при подключении по USB он становится звуковой картой, т.е. можно прямо с компьютера послушать свои фрагменты.

Еще один модуль WT2003M03 (рис. 10 поз 3) может работать со стандартной микро флеш картой размером от 32 мб до 32 гб. Управляется точно так же – по одному проводу. Возможности модуля еще шире: он поддерживает как WAV, так и MP3 и может использовать до 65487 фрагментов.

В посылке также оказались модули в минималистичном исполнении и программатор для них, фото представлено на рис. 11. Эти модули содержат необходимый аппаратный минимум – одну микросхему флеш-памяти и управляющий контроллер wt588. Для их программирования требуется внешний контроллер. Их можно использовать при жестких требованиях по стоимости и размерам к устройству. Подробности, детали комплектаций, возможные напряжения питания и пр. техническая информация обильно представлена тут.


Рис. 11 Минималистичные модули

Все звуковые модули имеют разъемы с круглыми ножками (DIP цанговые), которые почти не держатся в DIN планках. У меня в хозяйстве таких разъемов не нашлось, специально покупать их неразумно. Поэтому для тестовых целей были приспособлены уже имевшиеся маленькие разъемы.

Для использования независающего модуля в Говорилке я перепаял разъем. Поскольку оборудования для выпаивания таких разъемов у меня нет, я поступил так: сначала бокорезами раскусил разъем на плате на мелкие части, затем выпаял эти части, очистил отверстия стальной иглой и запаял новый DIN разъем со стандартными квадратными ножками, плотно входящими в разъем на плате.

Технологический хинт: очистка стальной иглой отверстий, залитых припоем, делается так: нагревается отверстие и без флюса! (это важно) в отверстие быстро вставляется стальная игла. Олово застывает трубочкой, игла вынимается – отверстие готово. Припой без флюса плохо липнет к стальной игле, что и позволяет заново формировать отверстия в печатной плате. Если олово начинает прилипать – достаточно остывшую иглу повращать в пальцах, тонких слой жира с рук ухудшит смачиваемость припоем поверхности иглы. Если есть вакуумный оловоотсос – все намного проще :)

Уже после отладки Говорилки я занялся подключением модуля WT588D-U по однопроводному интерфейсу. В процессе отладки c применением логического анализатора обнаружились две неточности в мануале. Первая проблема – после поступления команды модуль выставляет сигнал BUSY через примерно 34 мс (а не 5, как в мануале). Вторая – вывод RESET нельзя оставлять неприсоединенным, он должен быть присоединен либо к питанию 3.3 в, либо к выходу МК. Это с одной стороны общее правило, с другой – об этом всегда явно пишут в мануалах.

Я до этого додумался не сразу и довольно долго не мог понять, отчего система издает странный хрипящий звук вместо нормальных фраз.

Модули WT2003M2 и M3 отличается от WT588 размером управляющего слова и порядком передачи бит в слове. У WT588 слово управления 8 бит и первым надо передавать младший бит, а у WT2003M2 и M3 – слово 16 битное и первым надо передавать старший бит.

Также отличаются времена задержки выдачи звука и реакции вывода BUSY – у WT588 задержка относительно последнего бита команды около 30 мС (в мануале ошибочно указано 5 мС), у WT2003M2 и M3 – около 200 мС. Эти задержки надо учитывать, если программа конструирует составные фразы, например, «температура за бортом» + «два» + «пять» + «градусов». Чтобы фразы не наезжали друг на друга надо запустить воспроизведение первой фразы, дождаться ее окончания анализируя появление и пропадание сигнала BUSY, запустить следующую фразу и т.д. В моем случае анализ BUSY и ожидание окончания воспроизведения заложены в подпрограмме воспроизведения.

Запустить по однопроводному каналу платы WT2003M2 и M3 удалось, поменяв порядок выдачи бит команды. По мануалу надо выводить младшим битом вперед. На самом деле – старшим битом вперед. Архивы с тестовыми программами для модулей – тут. В тестовой программе предусмотрена выдача импульса запуска для логического анализатора, чтобы посмотреть, что реально формируется на выводе управления и когда реально появляется и исчезает сигнал BUSY.

Модули WT2003M2 и M3 оказались довольно капризными к параметрам MP3 файлов. Сконвертированные из wav произносятся замедленно. Полученные от text-to-speech on-line конвертора произносятся со «сглатыванием» последнего слога. Естественно, все файлы нормально проигрываются на компьютере. Явление «сглатывания» имеет место и при команде от МК и при запуске воспроизведения кнопкой. Впрочем, это неточности второго порядка и наверняка можно подобрать такие параметры mp3, с которыми все будет хорошо, добавить тишины до и\или после фрагмента. Проблема очевидно связана с невысоким быстродействием mp3 декодера и может рассматриваться как особенности реализации: «это не баг, это фича».

Последняя особенность этих модулей, о которой следует упомянуть, это то, что сигнал от PWM (т.е. прямо с динамика) подавать на вход сотового модуля не следует. Результат будет ужасным. На вход сотового модуля следует подавать сигнал с ЦАПа после соответствующих цепей фильтрации. В моей схеме сигнал дополнительно ослабляется до уровня, соответствующего уровню стандартного микрофона, т.е. 20-30 мВ. На выходе ЦАПа сигнал имеет размах, близкий к уровню питания, т.е. 3 вольта. Упоминаю я об этом вот почему: поначалу я хотел сделать универсальный вариант, чтобы звук шел и в сотовый модуль и на динамик при надобности. Я сделал схему для подачи сигнала ШИМ на динамик или нагрузочный резистор через выключатель и этот же сигнал профильтровал для подачи на сотовый модуль. Практическая проверка показала, что простыми средствами отфильтровать ШИМ сигнал до приемлемого состояния не получается, сотовый модуль забивается по входу и результат ужасен. Причины понятны – динамик, являясь медленной механической системой, эффективно интегрирует ШИМ сигнал, никак не реагируя на высшие гармоники. А вот система обработки звукового сигнала сотового модуля оказалась напротив очень чувствительна к импульсным помехам. Приемлемое качество звука достигается только при использовании ЦАП выхода и изготовлении последующей фильтрующей цепи в соответствии с мануалом. К уровню сигнала сотовый модуль мало чувствителен, качество и уровень сигнала на динамике сотового телефона практически не зависит от уровня сигнал на входе сотового модуля. При регулировке уровня резистором R9 надо учитывать большую задержку сотового тракта – примерно 200-300 мС по моей оценке. В сотовой связи очень эффективная система АРУ, изменение уровня сигнал на входе сотового модуля на громкости сигнала на выходе сотового телефона приемника не отражается вовсе. Однако регулировка уровня переменным резистором оказалась полезной — несмотря на великолепную работу системы АРУ можно найти такой уровень сигнала на входе сотового модуля, при котором качество звука на выходе (т.е. на динамике телефона-приемника) наилучшее. Хочу отметить, что диапазон, в котором сигнал на выходе всего тракта наилучший, достаточно невелик, буквально несколько оборотов подстроечного многооборотного резистора СП5-3.

Поскольку не удалось сделать универсального варианта озвучивания, я остановился на варианте с ЦАП, а для отладки ставил в панельку модуль в режиме PWM. В принципе можно подать сигнал на динамик через дополнительный усилитель, но на практике это оказалось ненужным. Всё интересное отображается на экране, а проверить работу тракта можно и просто позвонив.

Сопряжение с RS232


Для сопряжения МК и канала RS232 я купил готовую плату в Чипе и Дипе (позиция 1 на рис. 1). Название платы: «RS232 Board, Коммуникационная плата RS232, на базе SP3232, 3-5.5В, ESD защита, аппаратное управление потоком». Плата представляет собой законченное устройство, имеющее с одной стороны разъем DB9 и с другой разъем с выводами: питание (от 3 до 5 вольт), общий, вход, выход, линии аппаратного контроля потока. По спецификации плата в определенной степени устойчива к разрядам статического электричества. Плата дополнительно защищена от импульсных помех по приходящим проводам от счетчика диодами-поглотителями, размещенными в дополнительном внешнем корпусе.

Говорилка и CCU6225 смонтированы в одном корпусе G2113С, корпус для РЭА 240х120х60мм, пластик, с прозрачной крышкой. Основой послужила плата из двухстороннего фольгированного стеклотекстолита толщиной 0.8 мм. На плате методом фрезерования Дремелем вырезаны места для монтажа разъемов узлов. Также на плате размещены прямоугольные контактные площадки для подачи питания +3.3 и +5 вольт на все узлы системы. По периметру площадок подачи питания распаяны фильтрующие SMD конденсаторы номиналом 22 мкф на 16 вольт. Между собой узлы соединены проводами МГТФ 0.12. Разместить все узлы в одной плоскости в выбранном корпусе невозможно, поэтому часть узлов размещены вертикально (узел контроля питания и DAC), часть над другими (дисплей).

Кабель, соединяющий аудио разъем CCU6225LT и узел преобразования сигнала с ЦАП выхода WT588D-U, проведен под платой через два отверстия. Это решение позволило в определенной степени защитить аудио сигнал от импульсных наводок.

Питание системы


Модуль CCU6225LT обеспечивает питанием Говорилку. В CCU6225LT имеется токоограниченный выход +15 вольт 900 мА и еще остались пара незадействованных реле с перекидными контактами. Питание на Говорилку можно подавать через нормально замкнутые контакты реле. Реле управляется дистанционно, что можно использовать для перезапуска Говорилки в случае нештатной ситуации. Возможно также включать Говорилку только для считывания показаний. В этом случае сеанс связи будет выглядеть так: звонок на CCU6225LT, выключение реле (Говорилка питается через нормально замкнутые контакты), переключение на микрофон, прослушивание данных, отключение от микрофона и включение реле питания Говорилки до следующего сеанса связи. Я не вижу практического смысла в использовании такого сценария и упоминаю его только для общности. Включение обоих реле дает гальваническую развязку CCU6225LT, что можно использовать во время очень сильной грозы.

По расчетам Говорилка должна была потреблять около 100-150 мА. На готовом устройстве измеренный ток составил 110 мА. Для понижения напряжения с 15 до 5 вольт разумно использовать импульсный преобразователь. Преобразовывать линейным стабилизатором (15-5) вольт *0.2 А = 2 ватта в тепло сильно не хотелось. Я выбрал недорогой модуль (Super mini 3A DC-DC 3V 5V 16V Converter Step Down buck Power Supply Module) на базе step-down преобразователя с синхронным выпрямителем (похоже на базе MP2307), способный (по утверждению продавца) выдать ток до 3-х ампер. Обзоры этого модуля на MYSKY показывают, что 3 ампера – только в мечтах, реально без перегрева можно рассчитывать на 1А, плюс защита от КЗ на выходе и перегрева у него отсутствует. Видимо в модуле использован китайский клон микросхемы и в нем выкинуто лишнее, т.е. защита. Несмотря на указанные недостатки цена модуля и его размер исключительно привлекательны.

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

Первый механизм выполнен на половине компаратора LM2903 (OP3-1) и мощном полевом ключе VT1. Он включает питание на МК если напряжение питания на выходе преобразователя не более 5.6 вольта и выключает, если напряжение более 5.6В.

Второй механизм состоит из мощного стабилитрона советского производства Д815А, включенного параллельно на выходе преобразователя и многоразового термопредохранителя (MF-F050), включенного последовательно на входе преобразователя. В случае отказа преобразователя и повышения выходного напряжения более 5.6В откроется стабилитрон, через него потечет ток, который приведет к нагреву термопредохранителя и отключению питания на Говорилку. Напряжение стабилизации Д815А составляет 5.6 вольта, допустимый ток – 1400 мА, что гарантирует непревышение уровня 5.6 вольта. Допустимый ток для стабилитрона существенно превышает пороговый ток в 900 мА от источника питания (CCU6225). Термопредохранитель отключится заметно раньше, чем нагреется стабилитрон.

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

В качестве компаратора применен сдвоенный LM2903 c рабочим диапазоном по температуре –40 +125 С. Ключевой транзистор типа FDS6679AZ, P-канал, -30В, -13А, 9мОм в корпусе SO8. Один канал компаратора выполняет сравнение опорного напряжения 5.6 вольт со стабилитрона и управление ключом. Если напряжение на стабилитроне больше напряжения на выходе импульсного преобразователя – то выход компаратора переходит в состояние 0, что открывает силовой полевой ключ.

Второй канал компаратора задействован в схеме индикации аварии по питанию. Если напряжение на выходе платы защиты менее 3-x вольт – включается светодиод HL2 красного цвета, индицируя отказ по питанию. Светодиоды HL1 и HL3 зеленого цвета индицируют присутствие +15 и +5 вольт.

В CCU6225LT осталось два свободных входа, которые ранее, до переделки системы питания в дачном доме на три фазы, использовались для считывания показаний текущего тока и напряжения в сети. Для измерения тока использовался бесконтактный датчик на эффекте Холла CSLA1CD от Honeywell. Этот датчик выдает напряжение, пропорциональное мгновенному значению тока, протекающего по проводу, на котором этот датчик размещен и может измерять как постоянный, так и переменный ток. При отсутствии протекающего тока на выходе датчика имеется половина питающего напряжения. Соответственно при токе в одну сторону напряжение уменьшается, а в другую – увеличивается. При протекании переменного тока на выходе имеется синусоида, амплитуда которой пропорциональна силе тока, сдвинутая на половину напряжения питания. Для преобразования действующего значения этой синусоиды в постоянное напряжение была использована микросхема AD736, после которой сигнал усиливался ОУ для получения размаха 0 +15 В, на который рассчитан вход CCU6225LT.

Второй аналоговый вход был использован для измерения напряжения в сети. Некогда мне удалось купить датчик тока на 57А, который для контроля тока в диапазоне единиц ампер (до 16) грубоват. Но это не проблема – достаточно увеличить число витков токонесущего провода в отверстии датчика и чувствительность датчика увеличится пропорционально числу витков. Иначе говоря, два витка дадут датчик на 57/2 = 28,5А, четыре на 57/4 = 14,25А. Конструкция оказалась вполне удачной, стабильно проработала много лет и имела единственный недостаток – большое смещение нуля на выходе, около 0.5 В. Использованный ОУ не мог выдать 0 на выходе. Наверно тогда я не знал о существовании ОУ RAIL-TO-RAIL :) С напряжением решение было проще – маленький трансформатор с выходом на 10-12 вольт и пиковый выпрямитель на германиевых диодах Д9 дали достаточно точный измеритель напряжения. Практическая польза дистанционного знания о токе и напряжении – контроль реального потребления, все ли выключено?

При переходе на три фазы оба этих датчика оказались неактуальны. Но счетчик является источником довольно полной информации о текущем состоянии энергосистемы, в нем формируется даже такие экзотические данные, как реактивная мощность по каждой фазе. На экран Говорилки (рис. 12) я вывел данные не только о текущем значении потребления по каждому тарифу, но и текущие значения тока, напряжения, мощности по каждой фазе, частоте сети, что позволило сэкономить на щитовых вольтметрах и амперметрах, даже расширив спектр отображаемой информации по сравнению с устройствами на рынке. Для контроля суммарной потребляемой мощности достаточно выдать на CCU6225 сигнал, пропорциональный текущей потребляемой мощности.


Рис. 12 Дисплей Говорилки

Для формирования аналогового сигнала, пропорционального текущей потребляемой активной мощности и температуре в помещении я использовал готовые модули DAC на основе микросхемы MCP4725. Модули обошлись по 75 р за штуку с Ебея и это наверно самый дешевый способ получить достаточно точное преобразование цифры в аналог. Модули управляются по каналу I2C, имеют возможность изменить адрес (т.е. два модуля могут работать на одной шине I2C). Модуль DAC имеет выходное напряжение в диапазоне 0 + 5 в. Подпрограмма для вывода значения выделена в файл. Использована возможность Arduino IDE размещать отдельные подпрограммы в файлы в той же директории. При открытии проекта эти файлы размещаются по табам и компилируются, как если бы они были размещены в тексте основного модуля программы. Это еще не библиотека, но уже удобно.

CCU6225 имеет диапазон АЦП 0 +15 вольт. Программно можно задавать различные коэффициенты преобразования входного напряжения и включать среднюю точку – если входной сигнал отображает параметр с отрицательными значениями. Для мощности достаточно было подобрать коэффициент преобразования, такой, что напряжение 5 вольт стало соответствовать 15 квт мощности. А вот для температуры это простое решение не подошло. Температура может быть меньше нуля. Я принял решение, что буду выводить температуру в диапазоне -30 +30 градусов. Т.е. температуре -30 градусов будет соответствовать напряжение 0 вольт на выходе ЦАП, а +30 – 5 вольт. К сожалению, режим с включенной средней точкой в CCU6225LT предполагает, что средняя точка находится посередине диапазона – т.е. соответствует значению 7.5 вольт (=15/2) и это невозможно изменить. Следовательно, нужно сместить сигнал от ЦАПа так, чтобы половина шкалы (2.5 вольта) соответствовала половине шкалы АЦП (7.5 вольт). Обдумав и оценив разные способы это сделать, я выбрал использование Rail-to-rail операционника. Требования к такому ОУ: rail-to-rail по входу и выходу, питание не менее 15 вольт, частотные характеристики не важны, минимальная цена. По этим требованиям я нашел LMC7101BIM5X/NOPB от Texas Instruments. В ЧИпеИДипе – 40 рублей, дешевле не нашел.

Для преобразования диапазона 0 +5 в диапазон 0 +15 требуется коэффициент усиления 3 (15/5=3). Для стандартной неинвертирующей схемы включения коэффициент усиления определяется по формуле Ku=1+R1/R2. Я выбрал значения резисторов в цепи обратной связи 100 к и 200 к.

Есть и более простой способ подвинуть диапазон на 7.5-2.5= 5 вольт – использовать стабилитрон на 5 вольт, включенный последовательно с выходом ЦАП. Недостаток этого способа – диапазон изменения сигнала на входе CCU6225LT останется изначальным, всего 5 вольт, что втрое уменьшает точность перевода аналогового сигнала в цифровой.

Есть и еще один вариант решения вопроса. Диапазон АЦП в CCU6225LT нестандартен: 0 +15 вольт получены наиболее вероятно через делитель на входе, поскольку стандартные значения питания МК систем +5 и +3.3 и эти же напряжения являются максимумом для АЦП. Следовательно, можно изменить номиналы резисторов делителя для получения диапазона на входе 0 +5в. В простейшем случае для этого можно замкнуть верхний резистор предполагаемого делителя. Но как говорится «гладко было на бумаге». На запрос фирме-производителю о схеме электрической принципиальной я получил ответ, что эти схемы утеряны, так как устройство давно снято с производства, но известно, что напряжение питания ядра системы +5 вольт. Конечно можно по монтажу найти нужный резистор. Но интуиция была против: «Не стоит лезть в работающее устройство и что-то там перепаивать». Я прислушался к внутреннему голосу и пошел путем подстройки к обстоятельствам.

Подключение внешних датчиков


К Говорилке подключен ряд внешних датчиков. Температура измеряется датчиками Dallas 18B20, подключенными по трехпроводной схеме. Для подключения использована стандартная витая пара. Общая длина шлейфа составляет примерно 15 м. Программно на каждом цикле выполнения определяется количество подключенных датчиков, значения температуры считывается с каждого обнаруженного и в дальнейшем эти данные проговариваются. Программа озвучивает количество найденных датчиков температуры и температуру по каждому из них. На сегодня использовано 3 датчика, размещенных по дальней стене равномерно по вертикали для мониторинга температур по высоте помещения. При отладке Говорилки я подключал 10 датчиков в разных местах шлейфа. Все 10 уверенно определялись.

По каналу I2C подключены три датчика: BME280, BH1750 и SHT11. Датчик BME280 производства BOSH дает три параметра – атмосферное давление, влажность и температуру внутри помещения. Датчик освещенности BH1750 присоединен к этому же шлейфу и служит для контроля включения ламп освещения. Датчик SHT11 размещен вне помещения в пластиковой трубе. Труба вставлена в просверленное отверстие в деревянной стене дома и отстоит на примерно 1 метр снаружи дома. Внешний конец трубы загнут вниз, чтобы избежать попадания дождя. Датчик в наружном изогнутом конце трубы предоставляет данные о температуре и влажности за бортом.

Напряжение питания датчиков +5 вольт, подтягивающие резисторы R1 и R2 также подключены к +5 вольт, так как по мануалу входы PB6, PB7 (I2C) могут работать с напряжением +5 вольт.
Все эти датчики подключены по одному шлейфу. Как я уже писал ранее, запустить второй канал I2C мне удалось после установки Говорилки в отдельно проведенном исследовании и поэтому на момент установки и запуска системы пришлось остановиться на использовании только одного канала I2C. Возможно, следующим летом я проведу доработки системы.

Заключение


На сегодня Говорилка работает у меня на даче. Запись звонка на нее можно послушать тут (формат amr) или тут (формат wav). Качество звука невысокое, но речь вполне разборчива и свою основную задачу – произнести цифры текущего потребления устройство выполняет вполне уверенно. Полный цикл прослушивания занимает 1 минуту 45 секунд. Оплата за эти две минуты составляет несколько рублей в месяц.

На момент опубликования статьи (30 ноября 2016) температура в помещении составляла -8 С, устройство работало штатно, в соответствии с поставленной задачей.

Программа для Ардуино в этом архиве.
Поделиться с друзьями
-->

Комментарии (53)


  1. sergku1213
    01.12.2016 09:00

    Я очень надеялся увидеть фотографию этих белок… А за статью спасибо.


    1. Winnie_The_Pooh
      01.12.2016 09:02

      Белки осторожные. Близко не подпускают, хотя я их семечками подкармливаю. Мыльницы не берут нормально на таких дистанциях :)))


  1. Krivohizhin
    01.12.2016 09:06

    Позвольте поинтересоваться некоторыми моментами:

    1. В чем причина использования именно такой модели электрического счетчика?
      Предпочтительнее использовать счетчик с RS-485, наличие журнала ПКЭ также будет не лишним.
    2. Не рассматривали вариант постоянного опроса счетчика, без установления канала связи во время звонка?


    1. Winnie_The_Pooh
      01.12.2016 09:50

      Проводное подключение счетчика вызывает сопротивление МОЭСК. Поэтому — только инфракрасный порт.

      Имелся опыт считывания показаний с МЕркурия 200.02 и счетчика Московского завода электроизмерительных приборов. Этот опыт позволил однозначно выбрать Меркурий. Для Меркуриев есть готовая программа, которую автор реально поддерживает. Плюс он отвечает по почте и я по паре тонких моментов получил от него вполне ясные рекомендации.

      Ну и цена естественно. Как говорится, the last, but not the least :)

      Журнал ПКЭ конечно не лишний, но для моих условий эксплуатации он не необходим :) Если я на даче — я и так вижу, если напряжение низкое. А если меня там нет — то все отключено и уровень напряжения меня не волнует.

      Счетчик на самом деле опрашивается постоянно, к звонку привязки нет. Я просто так подогнал запись звонка :)
      Реально при звонке попадаешь в случайное место цикла.


      1. kindacute
        01.12.2016 13:00

        А можете поделиться ссылочкой на сайт автора? У самого такой счетчик, тоже есть планы на будущее.


        1. Winnie_The_Pooh
          01.12.2016 13:05

          Если Вы об авторе программы «Конфигуратор» — то вот http://incotex-counter.blogspot.ru/ и вот https://groups.google.com/forum/#!forum/vladrusanov


  1. Yogami
    01.12.2016 09:26

    Вариант подключить смартфон и написать для него программу, которая будет фотографировать счетчик и отсылать фотографии не рассматривался?


    1. Krivohizhin
      01.12.2016 09:47
      +1

      Смею предположить следующие негативные стороны такого варианта:

      • малая информативность (только то, что на экране счетчика)
      • суровые условия эксплуатации для смартфона (все же шкаф со счетчиком на столбе)
      • автор заточен на другие программно-аппаратные технологии


      1. Winnie_The_Pooh
        01.12.2016 10:07
        +3

        «слепой потрогал хобот слона и сказал — слон похож на веревку» (С) :)))))


        1. mozgoverflow
          01.12.2016 12:42
          +1

          Хвост же =)
          А хобот похож на змею


    1. Winnie_The_Pooh
      01.12.2016 10:06
      +1

      Такой вариант был на хабре. для газового счетчика, но не суть.

      Первый серьезный минус этого варианта — смартфон не рассчитан на работу при отрицательной температуре.

      Ну и плюс могут вылезти всякие забавные глюки типа запотевания объектива и пр.


    1. Abiboss
      01.12.2016 14:42

      Учитывая, что шкаф закрыт на трехгранку, ключ к которой есть у всех садоводов (и необязательно использовать ключ — сгодятся и плоскогубцы) и имеет инспекционное окно — то это отличный вариант, просто-таки замечательный! В идеале — чтобы на задней стенке смартфона светилось яблочко. Надкушенное.

      Я вот, например, удивился, что автор не прикрутил туда еще датчик вскрытия шкафчика. Но тут у каждого свои тараканы в голове, его явно этот вопрос не волнует. Видимо, соседи — честные люди.


      1. Winnie_The_Pooh
        01.12.2016 17:28

        Автор просто смотрит на вещи реально :) прикрутить я конечно могу… Но смысл? Ну сработал датчик — дальше чего? То ли председатель СНТ ходит снимает показания, то ли инспектор МОЭСК. Если же ток пропал — значит счетчик сперли :))) я об этом узнаю — ccu пришлет смс.


  1. artskep
    01.12.2016 09:36
    +4

    Не, это все, конечно, круто, но…
    Почему не СМС?
    Ведь проще же переписывать/копировать с экрана, чем по слуху записывать на бумажке. Тем более, что я полагаю, надо это делать в одно и то же время — -можно тупо рассылать каждый месяц перед оплатой показания. Заодно и «напоминалка» для того, чтобы заплатить.

    Ну, или сделать триггер на СМС/DTMF.


    1. Winnie_The_Pooh
      01.12.2016 09:57

      Потому что имеющийся CCU6225LT не позволяет формировать произвольные СМС наружными воздействиями без вмешательства внутрь.

      Можно только внешним сигналом заставить отослать заранее запрограммированную смс.

      Что есть «триггер на СМС/DTMF»?

      Я ввожу данные по потреблению по 4-м счетчикам, на один из которых повешена система считывания показаний с передачей данных по почте 25 числа каждого месяца. Это и служит триггером — полез в личный кабинет передавать показания квартирного счетчика, там привязаны и все остальные эккаунты.

      Оптимально было бы автоматически передавать показания, но нет легального нормального интерфейса. Был некогда (через смс), но сейчас только остался голосовой интерфейс. Или через www личные кабинеты, но это кривой путь…


  1. Zzzuhell
    01.12.2016 09:41

    А в сторону СМС не думали? Насколько я понял, охранная система передает по этому каналу какую-то телеметрию. Может, и показания счетчика туда прикрутить?
    Немножко не успел с комментарием :)


  1. ploop
    01.12.2016 09:52

    Т.е. надо раз в месяц снять показания счетчика. Летом это не проблема, но осенью-зимой-весной там никто не живет и ездить на дачу только ради считывания показаний неразумно.

    При заключении договора (да и вообще, в любое время по заявоению) сбытовая компания вам поставит признак «сезонник», т.е. в биллинге отметит месяца, когда вы бываете на даче, вот только тогда надо передавать показания. Нередко это бывает один месяц в году, т.е. передача показаний осуществляется раз в год. Естественно, никто не запрещает вам бывать на даче (и потреблять) когда захочется. Вы не единственный дачник с электричеством :)

    А статья классная, спасибо.


    1. Winnie_The_Pooh
      01.12.2016 10:02

      Вы совершенно правы :) более того — даже если нет признака, никто не мешает вводит некие выдуманные показания зимой. В реальности сбытовая компания время от времени проверяет счетчики и в лк появляются показания «снятые сотрудниками электросбыта». Т.е. будет либо переплата, либо недоплата и в след месяце просто ее компенсируешь.
      Даже если ничего не вводить — сбыт использует средние показания за предыдущие месяцы и будет так делать три месяца. Т.е. реальной проблемы со вводом показаний нет.


      1. Zzzuhell
        01.12.2016 13:04

        в лк появляются показания «снятые сотрудниками электросбыта»

        имел аналогичный неприятный опыт с Мосэнергосбытом и городской квартирой.
        Я передаю показания 25-го каждый месяц. С некоторых пор (по 15-м числам) стали появляться такие «сотрудниковые» показания, причем нехило завышенные — на 100-200 квтч. И это притом, что счетчик в тамбуре, чтобы туда попасть, надо позвонить в дверь. А никто не звонит и не ходит.

        Сначала я предположил, что нерадивый сотрудник ленится ходить по адресам, сидит дома и пишет показания в стиле «прошлый месяц +400 квтч». Написал грозную жалобу с упоминанием черта, дьявола и Роспотребнадзора, поскольку меня формально заставляли платить за непотребленное.

        Месяца два отвечали на жалобу :). Потом сказали, что показания передаются автоматически (!!!). Но если там ошибка — могу подать вручную реальную цифру и счет изменят. Насчет автоматической передачи показаний с ошибкой я не очень поверил, но решением вопроса удовлетворился. Подаю реальные значения вручную.


        1. Winnie_The_Pooh
          01.12.2016 13:17

          Возможно что-то локальное. Один из моих счетчиков навестить получается редко и показания я ввожу по среднепотолочным данным с некоторым завышением, особенно летом. Пока сотрудники мосэнергосбыта считывали все правильно, примерно раз в полгода. За прошлое лето я переплатил и два месяца за счет переплаты пошли.

          Впрочем, согласен с Вами — контроль, контроль и еще раз контроль.


        1. Klenov_s
          03.12.2016 06:30

          У нас энергосбыт сам молча заменил несколько лет назад счетчики и теперь без проблем в ЛК пишет правильные показания «снятые сотрудниками электросбыта». И к нам тоже никто не ходит :)


  1. hijera
    01.12.2016 10:39

    А если данные в стиле факса гнать по аудиоканалу?


    1. Winnie_The_Pooh
      01.12.2016 10:52

      CSD Вы имеете в виду? Можно, как один из вариантов.
      Но со стороны приема нужно устройство для приема — это неуниверсально.

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


      1. Alexeyslav
        01.12.2016 16:12

        Это интернет по CSD надо включать принудительно, а соединение точка-точка никто не может запретить, ибо если CSD будет невозможен то и обычный голос тоже не пройдёт.
        CSD на телефонах это обычный аналоговый модем по голосовому каналу, причем НЕ В ОБХОД голосовых кодеков. Для ваших целей вообще пойдёт простая двухчастотная модуляция на скорости скажем 120 бод — как телетайпы 100-летней давности.


        1. Zolg
          01.12.2016 17:02

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

          > CSD на телефонах это обычный аналоговый модем по голосовому каналу, причем НЕ В ОБХОД голосовых кодеков.
          Вы совершенно не правы. В CSD данные гонятся, как данные, в обход звуковых кодеков.


          1. Alexeyslav
            01.12.2016 23:17

            В обход кодеков это уже GPRS, а CSD это коммутируемый доступ. Единственное что на вход кодека подавался не аналоговый сигнал с АЦП, а формировался цифровым способом поэтому и скорость 9600 и тарификация как за обычный разговор.


            1. Zolg
              02.12.2016 08:30
              +1

              Смешались в кучу кони, люди… (а так же коммутация каналов, пакетов и кодеки)

              В общепринятой терминологии:
              «голосовой кодек» — алгоритм КОмпрессии несжатого цифрового звука в сжатый (ну и ДЕКомпрессии в обратную сторону). Как mp3, только заточенный не под музыку, а под голос.

              «обычный модем» — устройство/алгоритм, преобразующее цифровой сигнал в аналоговый, пригодный к передаче по линиям связи и восстанавливающее обратно.

              ни то ни другое в CSD не используются: данные гонятся в (цифровой) канал связи напрямую. Более того, ни одна из модуляций, успешно использовавшихся в «обычных модемах», сквозь жесточайше заточенные под компрессию речи кодеки не пролезет. Чо уж там: даже DTMF пролазит далеко не всегда.

              GPRS — история совершенно другая: данные передаются в пакетном режиме, без (эмуляции) организации канала связи. Что собственно хорошо отражено в акронимах CSD и GPRS


              1. Winnie_The_Pooh
                02.12.2016 09:03

                а почему DTMF не всегда проходит? Где-то по дороге специально фильтруют? Из общих соображений DTMF формально от голоса не отличается.


                1. Zolg
                  04.12.2016 14:47
                  +1

                  Естественно никто ничего специально не режет, просто искажения, вносимые в сигнал при транскодировании (по пути сигнала оно может быть многократным), могут оказаться достаточно сильными, что бы нарушить работу DTMF-декодера.
                  Голосовые кодеки используют разные весьма остроумные приемы, позволяющие добиться впечатляющих результатов при компрессии речи, обеспечивая хорошее качество при битрейте 13kbps и меньше. Но при компрессии сигнала, не являющегося речью, качество падает драматически. Что там куда уплывает конкретно в случае с DTMF не выяснял, но факт имеет место быть: DTMF управление, особенно при межоператорских звонках, работает далеко не всегда.

                  ps: в стандарте GSM предусмотрена специальная сигнализация для передачи DTMF сигналов, однако, с реализацией на местах видимо бывают проблемы.


                1. a5b
                  04.12.2016 21:19

                  Примеры: http://www.gsm-modem.de/dtmf-audio-codec.html
                  На Half Rate кодек может породить слишком сильные шумовые сигналы ("test signal plus other frequencies, with an amplitude up to –10dBc"), которые помешают работе простых алгоритмов распознавания DTMF ("common algorithms require usually the total power level of unwanted frequencies to be at least 20dB below the lowest frequency signal with a signal to noise ratio greater than 23dB.")


                  Прозрачность кодека для DTMF проверялась при разработке AMR: http://www.3gpp.org/ftp/tsg_sa/wg4_codec/Specs_update_after_SA7/26975d110.doc "For 50ms DTMF digits, the 10.2 and 12.2 kbit/s AMR modes appear to be essentially transparent to DTMF signals under error free conditions, whereas the lower rate modes do not appear to be transparent. "


                  Сигнализация DTMF от мобильной станции к наземной линии передается поверх GSM в виде сообщений, сам тон генерируется на MSC, см. GSM 03.14, 1996: http://www.etsi.org/deliver/etsi_gts/03/0314/05.00.00_60/gsmts_0314v050000p.pdf "In the GSM system the MSC must support DTMF in the mobile to land direction. ..is converted by the MS into a message, the message is transmitted across the air interface, and is converted by the MSC into a DTMF tone which is applied towards the network"


                  Для классического Half Rate передача DTMF в голосовом канале не требовалась: http://www.etsi.org/deliver/etsi_etr/200_299/229/01_60/etr_229e01p.pdf ETR 229: October 1995 (GSM 06.08 version 4.0.0)


                  In the GSM system… If it is in the uplink (from the mobile station to the network), the signalling channel is used, rather than the speech channel. In the downlink (from the network to the mobile station), these tones are carried in the speech channel. Even though it was not a requirement for the half rate speech channel to be able to carry these tones in the downlink, their transmission was tested.… Even at ideal conditions with nominal DTMF signal frequencies, no additional signals in the speech band, and error free transmission, the recognition is poor after processing.… A reason for the poor behaviour might be a time dependent twist generated by the GSM Half Rate codec when one of the two components develops differently from the other due to the non-linear behaviour of the codec.


        1. Winnie_The_Pooh
          01.12.2016 18:52

          По голосовому GSM каналу можно передавать данные в том числе и DTMF. Но нужен спецприбор для приема этих данных.

          Человеческая речь напротив — ничего не требует, кроме межушного ганглия, который всегда со мной :)


          1. vmchaz
            02.12.2016 06:07

            Тогда, наверное, имеет смысл сначала пускать речь, а потом уже — двоичный сигнал.


  1. alexhott
    01.12.2016 10:54

    С удовольствием почитал, конечно для поставленной цели проделанная работа избыточна, но зато какой опыт.
    И немаловажный момент — все собрано из дешевых готовых модулей.
    Следующий шаг насматривается — что-то типа открытой платформы посерьёзнее ардуины и реализация «Умной дачи».


    1. Winnie_The_Pooh
      01.12.2016 11:24

      Удовольствие от творчества бесценно :)))


  1. RRomR
    01.12.2016 12:45

    Может быть кто-то имел дело с белорусскими счетчиками Гран-Электро, модель СС-101S? Подключился к нему через rs485 с помощью программы с оф сайта. Считывать данные могу, а вот например поменять какие данные отображать на экране нет. Чекбоксами можно пометить, то что хочу видеть, а кнопка записи не активна.


    1. Winnie_The_Pooh
      01.12.2016 13:13

      Понятно, что КЭП Очевидность, но Вы не пробовали припасть к так сказать первоисточнику? Написать в службу поддержки производителя? Если да — чего отвечают?


      1. RRomR
        01.12.2016 13:29

        пробовал писать на имейл указанный на их сайте — письмо проигнорировали


        1. Winnie_The_Pooh
          01.12.2016 13:35

          Значит Вы, как клиент, им неинтересны. Забить и забыть.


          1. RRomR
            01.12.2016 13:37

            Это да, это было в рамках diy хобби для дачи. Благо хоть читать по rs485 проблем не вызвало. Спасибо


            1. Winnie_The_Pooh
              02.12.2016 08:54
              +1

              вот тут http://alinea.by/gran-systema/gran-sys-ss101s.html имеется табличка, из которой следует, что для записи в счетчик маски параметров отображения на дисплей, требуется указать основной и дополнительный пароли. Предположу, что Вы не располагаете одним из них — поэтому и запись параметров невозможна.


              1. RRomR
                02.12.2016 15:33

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


                1. Winnie_The_Pooh
                  02.12.2016 15:35
                  +1

                  Опять же предположу, что для повышенного уровня привилегий нужна другая программа, которую дают не всем, а представителям энергосбытовых организаций :)


                  1. RRomR
                    02.12.2016 15:37

                    Вот об это и думал или какой-нибудь хитрый хоткей :) но в pdf'ке руководства пользователя к программе об этом не говорится.


  1. Barafu
    01.12.2016 14:40

    Внимание всем! Появились в обилии поддельные многоразовые Wago. С виду они совсем как настоящие, вот только радости от них после некоторого времени она лопается по шву и зажатые концы вылетают в разные стороны.
    Нахватал в мерлене целую пачку таких, теперь вот меняю везде. От настоящих отличаются только материалом язычков, и то не факт (сравнил лишь две).


    1. Zzzuhell
      01.12.2016 14:45
      +2

      Дык фотки давайте!
      Оригинал и подделка рядом


    1. Zolg
      01.12.2016 18:11

      На этих клемниках написано «Wago», или они просто выглядят очень похоже?
      В леруа конечно же полно всякого шлака, но он и продается под шлакскими торговыми марками.
      В торговле откровенными *подделками* они вроде как не замечены.


  1. ClearAirTurbulence
    01.12.2016 16:57

    Возможно, более мелкие клеммы Wago серии 221 будут удобнее для упомянутых целей.
    http://www.fortisflex.ru/netcat_files/201/366/h_52ae159a2aa285c318632817c7b5a2eb

    Рычажки у них существенно удобнее, как минимум, и сами они существенно компактнее.


  1. nevzorofff
    01.12.2016 17:16

    Не, ну если интернет дорог, до данные можно передавать и по смс. Да и данных минимум — незачем покупать пакет, по 10 рублей за мегабайт в месяц хватит более чем.


    1. Winnie_The_Pooh
      01.12.2016 18:47

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


  1. Alexeyslav
    01.12.2016 17:23

    >> успешной работе модулей и программ при выборе опции «128 кб памяти»
    Пока прошивка меньше 64К — проблем не будет, ибо при программировании пустые области не заполняются и до границы памяти дело не доходит, а вот если попытаться перезаписать 65-й килобайт, скорей всего будут проблемы — перезапишеться первый потерев начало…


    1. Winnie_The_Pooh
      01.12.2016 18:39

      Народ разбирался — там памяти реально 128К. Некие особенности маркетинга.


  1. edgi
    08.12.2016 08:50

    про IR Вы практически не писали что из себя представляет, схема, как работает, очень специфичный протокол. Можно ли по подробнее про это. У меня точно такой же счетчик, есть готовые устройства считывания, но у них цена немного кусается.


  1. Winnie_The_Pooh
    08.12.2016 08:56

    Увы, связан словом, что не буду рассказывать, как устроено. Если Вам для личного использования — напишите Владу Русанову: Vlad Rusanov <vladrusanov@gmail.com>, он предоставил мне инфу на условиях публичного нераспространения.