Easyelectronics.ru

Электроника для всех
Текущее время: 18 ноя 2018, 07:17

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 27 дек 2017, 12:17 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 660
Привет!

Практически доделал устройство сбора данных для своей "полу-умной" квартиры
Что удалось запихнуть в 8 кб кода:

1) Счетчики воды - 2 штуки (счет по прерыванию при изменении уровня на входе) выводы PC6, PC7
2) Считывание температуры в 1 точке - горячей воды (DS18B20) ставиться на трубу. вывод PA1
3) Ситывание температуры и влажности во второй точке ( в ванной для автоматического включения вентилятора) вывод PA2
4) Ситывания показаний с 3х датчиков протечки (реализованы на ADC, без операционников) выводы PD3, PD2, PC4.
5) Считывания счетчика газа (Гранд 1,6 или Бетар 1,6 ) по прерыванию от импульса на входе, вывод PC5.
6) считывания миганий светодиода с электро счетчика, вывод PC3 (не реализовано до конца из за необходимости введения обязательной гальванической развязки, что неминуемо приведет к повышенному потреблению питания).

Передача показаний по UART на скорости 9600, с проверкой коммуникации, если после передачи первого байта нет связи или ответа от приемника данных, связь прекращается на 1 минуту.

Все данные от счетчиков (воды, газа, электро) пихаются в оперативку контроллера и записываются в EEPROM (для газа каждые 0,1 куба, для электро каждый киловат, для воды каждые 100 литров) инициатором передачи данных выступает сборщик и шлет их в порт приемника каждую минуту.

Весь цикл работы если нет прерываний:
просыпаемся, ждем 1 сек.
1) получаем данные с датчиков DS18B20, AM2302, ADC1...ADC3
2) Ждем 1 сек шлем данные в порт.
3) Если пришло время писать в EEPROM пишем в EEPROM данные и контрольную сумму.
4) Уходим в спячку 2 раза по 30 сек.

Если есть прерывание - просыпаемся, инкрементируем счетчик, засыпаем.

Остались свободными 4 вывода из 20.
PD4 при использовании UART задействовать не получится.
PA3 на время отладки задействован в качестве вывода светодиода.
PB4 и PB5 (выводы с открытым коллектором без подтяжки)- которые обычно используются для I2C не задействованы.

Проект практически готов к отправке для изготовления печ. плат, собран на макетке и отлажен, данные по UART пока принимает платка Discovery в 10 метрах от самого устройства, и выводит на дисплей текущие данные, к Распберри пока не прикручивал (пытался но застопорился на складировании и анализе данных которые она у меня получала из порта, их надо было прикрутить к серверу но вот организовать базу данных с наскока не получилось)

Почему STM 8S003 - остались 40 штук от старого проекта, если запускать в серию легко можно переписать на STM8L...
Питание устройства сейчас продублировано (один LiPol аккумулятор, от него плата питается через StepUp на 3.3v) потребление в режиме активности доходит до 4мА со светодиодом в помент вспышки до 6мА) сам аккумулятор запитан через драйвер зарядки от Блока питания.

Когда придут платы буду пытаться понизить частоту внутреннего тактирования, это позволит еще снизить потребление.

Вопрос:
Как вы думаете - оставлять UART или ужимать код и и пытаться впихнуть 1-Wire Slave ? (который де факто является стандартом для умных домов)
P\S
Изначально думал не прикрутить ли туда MAX13487 (но это оправдано только в том случае если надо снимать данные с нескольких электро счетчиков да и кушать они любят всегда не зависимо от того спит устройство или нет)

Когда друган увидел у меня вот такое обьявление выводов он сказал что я маньяк :)
Show "Обьявление выводов"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 27 дек 2017, 18:38 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1785
Откуда: Харьков
8Kb для описанного это много. Библиотеки использовали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 28 дек 2017, 00:21 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 660
alexsam писал(а):
8Kb для описанного это много. Библиотеки использовали?


Все на регистрах, протокол обмена DS18B20 и RH12(22) переписал из под AVR, единственное выбросил функцию определения коллизий для DS18B20 так как в данном случае подключение 2 или 3х сенсоров не требуется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 30 дек 2017, 03:17 
Заглядывает иногда

Зарегистрирован: 02 фев 2010, 02:47
Сообщения: 149
Я еще понимаю мониторинг протечки. Чтоб не затопить соседей. А зачем все остальное?
Лень раз в месяц подойти к счетчику и снять показания?
Зачем температура и влажность?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 30 дек 2017, 12:21 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3746
Откуда: Кемеровская область, Киселевск
Ну хочется людям все усложнить чтобы потом все наебнулось и не работало.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 30 дек 2017, 12:45 
Старожил

Зарегистрирован: 07 фев 2011, 21:00
Сообщения: 459
Откуда: Ханты-Мансийск
Цитата:
Зачем температура и влажность?

для вентилятора, вероятно для снижения влажности.

Цитата:
Ну хочется людям все усложнить чтобы потом все наебнулось и не работало.

Архитектуру надо продумать хорошо, а также цель проекта. Чтобы не получилось система ради системы.

sed_alex, начало положено, но для полноценной системы еще очень далеко. Вы сделали самую простую часть.
Цитата:
к Распберри пока не прикручивал (пытался но застопорился на складировании и анализе данных которые она у меня получала из порта, их надо было прикрутить к серверу но вот организовать базу данных с наскока не получилось)

Потом еще понадобиться система отображения, сценарии... Сам делал на Odroide (сейчас перехожу на Orange Pi). Начинал с 4-х таблиц, сейчас уже 16. С полноценной работой com-порта тоже свои подводные камни были. Одному такое не поднять. Нужно быть специалистом в железке, системном программировании, БД, Web...
Цитата:
Как вы думаете - оставлять UART или ужимать код и и пытаться впихнуть 1-Wire Slave ? (который де факто является стандартом для умных домов)

не вижу смысла в 1-Wire. В будущем придется на одноплатнике тоже 1-Wire городить. Если провод тянуть все равно, то в Вашем случае проще на rs485 (а поверх modbus как опция) организовать передачу. Сам хочу сделать версию на CAN (относительно просто и поддержка мультимастера), но для этого надо МК менять

Что не будет получаться пиши, своими наработками поделюсь. Визитка моего проекта


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 01 янв 2018, 14:32 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 660
Sh@dow
Вы не поверите, когда ко мне пришли опломбировать счетчики, долго не могли понять где же они установлены, пока при нажатии на плитку в туалете в сторону часть стены не сьехала :) но лишний раз открывать эту дверь не очень хочется.

Причина начала всего этого огорода - моя работа связана с постоянными разьездами, могу по 2 месяца не бывать дома

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

Oxford
В данном случае система простая как топор, у меня прототип там висит на соплях уже неделю (как раз как прилетел с обучения запустил систему) , раз в день я сравниваю показания, расхождений - нет.

На счет температуры горячей воды - это вообще отдельная песня, это не хилый такой способ бодрить наше ЖЭУ (которые обязаны подавать мне горячую воду с температурой не ниже 55 градусов) как раз сейчас стараюсь прикрутить чтобы показания на сайт выводились дабы все жильцы могли контролировать процесс.

judchin
Датчик влажности и температуры в ванной - все верно, пока используется для управление вентилятором.

Все провода у меня были протянуты еще на этапе ремонта квартиры, везде лежит витуха и КСПВ.

Вопросы тоже есть и их не мало:
Первый и самый главный, то что от UART придется уходить это понятно, но что выбрать ?
Для себя уяснил, что придется разделять систему на 2 части:
1) управление системой "жизнеобеспечения" квартиры (аварийные системы и коммуникации) - тут один Мастер остальные Slave.
2) Все остальное.

P\S посмотрел Ваш сайт :) тоже используете в модулят stm8S003, если интересны контроллеры с Can - можно взять серию STM 32F042 - они есть в мелком корпусе, ценник на них правда кусается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 01 янв 2018, 23:43 
Старожил

Зарегистрирован: 07 фев 2011, 21:00
Сообщения: 459
Откуда: Ханты-Мансийск
Цитата:
управление системой "жизнеобеспечения" квартиры (аварийные системы и коммуникации) - тут один Мастер остальные Slave.

Кто мастер и какие у него функции? При нескольких платах (особенно если датчик и исполнительный элемент находятся на разных платах) и наличии сервера, который также решает, кто и что в какой момент будет делать архитектура master-slave не самый лучший выбор (но самый простой), т.к. снижается надежность системы.
Тем не менее для такой архитектуры, на мой взгляд, лучше всего подходит RS-485 (по критериям: простота реализации как программной и так и аппаратной, возможность сопряжения с другими промышленными модулями).
У меня много маленьких плат и каждая может отправить команду любой другой. Таким образом отказ любой платы или сервера не приведет к отказу всей системы.
Цитата:
тоже используете в модулят stm8S003

у меня stm32f030, проект начинался когда еще были stm32f050.
Цитата:
если интересны контроллеры с Can - можно взять серию STM 32F042 - они есть в мелком корпусе, ценник на них правда кусается.

это работа запланированная на весну. Просто CAN- прекрасно вписывается в мою архитектуру.
По поводу "ценник кусается" - если делаете только для себя, то расходы в дополнительные 60-70 р. по моему не в счет.
Если посчитать, то контроллер в затраты вносит небольшой вклад. В моем проекте стоимость контроллеров составляет около 10% от всей платы в сборе. А если еще сюда включить исполнительные элементы и датчики, то контроллер можно в остальную рассыпуху отнести


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 03 янв 2018, 01:13 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 660
Ушли сегодня платы в производство :)
Сборщик данных:
Вложение:
!LookAtMe.jpg
!LookAtMe.jpg [ 161.57 Кб | Просмотров: 969 ]


Датчик протечки (эти делаю не только себе на них есть некоторый спрос у Ардуинщиков)
Вложение:
LookAtMe_1.jpg
LookAtMe_1.jpg [ 109.52 Кб | Просмотров: 969 ]


Сам проект выглядит так:
Вложение:
DipTrace Schematic - SmartHomeSens.pdf [37.41 Кб]
Скачиваний: 44


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 22 янв 2018, 18:28 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 660
Ну вот он собранный и работающий прототип, без сюрпризов не обошлось не уследил одну дорожку от PA3 к светодиоду пришлось перемычку кидать, ну да ладно всеравно в серийном устройстве еще конфигурационные перемычки (4 штуки) стоять будут которые подтяжку переключают с земли на плюс питания для разных типов счетчиков.

Корпуса пока на 3D принтере распечатал, сейчас 3 эти устройства установлены в разных местах. На одном софт был переписан под сборку данных с 4х электрических счетчиков на лестничной площадке и передачи показаний на сервак.

Потребление в спячке 0,2mA в режиме передачи данных (0,5 сек - 1 раз в 30 сек) - 8mA, после отладки промежуток между передачами данных думаю увеличиться до 1й минуты.
При батарейном питании от 2х CR2032 время жизни устройства получается около 5 месяцев, если же запихнуть туда 3 батареи AAA то время жизни увеличиться почти до 2х лет.

P\S когда запустились вместе духовой электрический шкаф и электрочайник я думал будут пропуски по одному из каналов, но вроде все путем STM8S003 вывозит :)
На будующее присматриваюсь к STM 32L011 ценник только не радует :(


Вложения:
image3.jpeg
image3.jpeg [ 74.58 Кб | Просмотров: 724 ]
image1.jpeg
image1.jpeg [ 121.16 Кб | Просмотров: 724 ]
image2[2709].jpeg
image2[2709].jpeg [ 73.65 Кб | Просмотров: 724 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Cборщик данных с датчиков умного дома пока на STM8S003F3
СообщениеДобавлено: 25 янв 2018, 22:47 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 660
Народ как вы думаете в чем разница вот этих функций вывода:

Первая которую написал сегодня за 30 минут специально для вывода данных с контроллера на MySQL
Код:
void UART_Printf(unsigned long value)
{
   char i=1,d=0;
   unsigned char text[12];
   do
  {
    if (value >=10)
         {   
            d = value % 10; // остаток от деления
            text[i] = d + '0'; // взять ASCII символ и вставить в текст
            value /= 10; // "десятичный сдвиг вправо" -- деление на 10
         }
      else
         {
            text[i] = value + '0';
            value=0;
         }
      i++;
  }
   while(value);
   i--;         
   do
   {
      print_char(text[i]);
      i--;
   }
   while(i);
}


Вот это вторая которая умеет выводить еще и десятичную запятую (точку)

Код:
void UART_Printf(unsigned long value,char field,char dot_poz)
{
char i, d, dp;
unsigned char text[8];
dp = field - dot_poz; // позиция десятичной точки
i= field;
do
  {
    if (i == dp)
     {
         if (field-dp!=0) text[i] = '.'; // место десятичной точки
         else text[i] = '';//else text[i] = ' ';
     }      
     else
         {
            if (value == 0)
               {   
                  if (i>=dp-1) text[i] = '0';
                  else text[i] = ''; //else text[i] = ' ';
               }
            else
               {            
                  d = value % 10; // остаток от деления
                  text[i] = d + '0'; // взять ASCII символ и вставить в текст
                  value /= 10; // "десятичный сдвиг вправо" -- деление на 10
               }
         }
      i--;
  }
while(i);
         
for (i=1; i<=field;i++)
print_char(text[i]);
if (value > 0) text[0] = '#'; // indicate overflow
}


Обе они обсалютно рабочие и выводят одинаковые цифры но, вторая функция если десятичная точка не выводится автоматически выплевывает пустой символ или пропуск, который никак не влияет на работу но однако если вы принимаете эти данные UNIX системой и запихиваете в базу данных использую строки типа:
Код:
cursor=db.cursor()
cursore.execute("""INSERT INTO database_string VALUES(%s,%s)""",(aaa,bbb))

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

Буду рад, если это поможет кому то не наступать на подобные грабли.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB