Умный дом по радиоканалу
Re: Умный дом по радиоканалу
А WiFi модуль ESP8266 в качестве беспроводного интерфейса будете добавлять?
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу
Раньше нумерация была привязана к "железным" портам, теперь же нумерация свободная, и в данном случае идет привязка к пину на разьёме.wanvo писал(а):Я вот только не понял этой фразы: Внимание !! Версия для AVR'ов не совместима по ногам с предыдущими прошивками.
То есть ранее: стандартная нода, стартовал с Ip16/Av0/Pp0, как они между собой связаны и с чем пересекаются, можно было понять только глядя в документацию.
Теперь же: Av2 например, это аналоговый вход номер 2, Ip2/Op2/In2 и т.д. это IO привязанные на тот-же второй пин.
Особенно это спасает с ARM'ами, ранее было: нулевая линия - Ip17/Av9, теперь-же Ip0/Av0. У AVR'a на той же линии будет Av0.
Исключение из этого правила: UART'ы, как их привязать к конкретным пинам и при этом сохранить возможность конфигурации, здесь мое воображение спасовало.
У Keil'а есть одна единственная проблема, слишком уж он зараза дорогой.wanvo писал(а):И еще такой нескромный вопрос: Почему эклипс? Кеил вам не нравится? Или дело в открытости эклипса?
Так как в проекте работают не только STM32F0. А в 32к со всеми плюшками я уже не умещаюсь.
Собственно мануалов по по настройке то великое множество, и получить откомпилированный файл можно очень быстро.wanvo писал(а):Я как-то давно ставил эклипс для STM32 помниться там много тонкостей с его настройкой.
Хотелось-бы на будущее ссылку на мануал по установке эклипса или архив с уже настроенной оболочкой.
Проблемы возникают как только потребовалось запустить отладку, либо как программатор используется что то отличное от JLink. И здесь готовых решений уже нет.
Папочка со всем нужным и проектом занимает сейчас чуть больше гигабайта, архив я думаю будет мегабайт 300, при этом никаких гарантий, что это будет работать на другой машине.
Могу дать HAL для STM'a на откупwanvo писал(а):P.S. Кстати для STM32 их родной HAL мне очень понравился
Сейчас я повыкидывал все SPL'ы и работаю напрямую с железом. Но пока как-то работает только STM32F0.
Нет, к сожалению работает крайне не стабильно, может 15 минут как-то работать, потом час просто ни на что не отвечать.MSapogov писал(а):А WiFi модуль ESP8266 в качестве беспроводного интерфейса будете добавлять?
Было куплено почти 2 десятка, разные конфигурации, ведут себя все одинаково паршиво. Потери пакетов просто чудовищные. При этом устройства с CC1101 в тех-же условиях работают нормально, потребляя в 10 раз меньше.
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу
Решил похвастаться:
https://youtu.be/vcAwkcx14YQ
PLC в устройстве, плавно зажигающаяся - тухнущая линейка без помощи сервера.
https://youtu.be/vcAwkcx14YQ
PLC в устройстве, плавно зажигающаяся - тухнущая линейка без помощи сервера.
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу
Выложена свежая develop версия прошивки.
Версии на ATMega'х особо не изменились, несколько косметических изменений и исправленых некритичных багов.
Основная работа произведена с веткой на ARM'ах.
Полный набор функций реализован на STM32F0, а это цифровые входы/выходы, до 16 аналоговых входов, много 16'и битных ШИМ'ов, I2C, UART'ы.
И самое вкусное, встроенная виртуальная машинка. Есть компиляторы для Java Script'а или своего ассемблера.
Теперь логику, которая ранее требовала обязательного вмешательства сервера, можно сделать на самом устройстве.
Пример был в предыдущем сообщении, 8 ШИМ каналов + 1 дискретный, плавное включение/выключение по внешнему событию.
У STM32F1, пока отсутствует поддержка I2C, но это как руки дойдут и ноги дотянуться. В остальном функционал идентичен.
Неожиданным оказалась возможность запустить виртуалку на меге 328'ой урезав часть кучи. На устройствах с одним PHY'аем работает нормально.
На гейтах, в стресс тесте уже слетает в переполнение кучи, поэтому было решено пока оставить как есть.
Версии на ATMega'х особо не изменились, несколько косметических изменений и исправленых некритичных багов.
Основная работа произведена с веткой на ARM'ах.
Полный набор функций реализован на STM32F0, а это цифровые входы/выходы, до 16 аналоговых входов, много 16'и битных ШИМ'ов, I2C, UART'ы.
И самое вкусное, встроенная виртуальная машинка. Есть компиляторы для Java Script'а или своего ассемблера.
Теперь логику, которая ранее требовала обязательного вмешательства сервера, можно сделать на самом устройстве.
Пример был в предыдущем сообщении, 8 ШИМ каналов + 1 дискретный, плавное включение/выключение по внешнему событию.
У STM32F1, пока отсутствует поддержка I2C, но это как руки дойдут и ноги дотянуться. В остальном функционал идентичен.
Неожиданным оказалась возможность запустить виртуалку на меге 328'ой урезав часть кучи. На устройствах с одним PHY'аем работает нормально.
На гейтах, в стресс тесте уже слетает в переполнение кучи, поэтому было решено пока оставить как есть.
Re: Умный дом по радиоканалу
Круто!
Очень радует, что появилась возможность кодировать алгоритм работы не только с помощью лограм но и си-подобным языком.
Однозначно нужно будет сделать версию STM и поиграться с ней.
Респектище!
Очень радует, что появилась возможность кодировать алгоритм работы не только с помощью лограм но и си-подобным языком.
Однозначно нужно будет сделать версию STM и поиграться с ней.
Респектище!
Re: Умный дом по радиоканалу
Для затравки - Драйвер BME280 на EmbeddedPLC:
Used ROM: 999 bytes, RAM: 48 bytes
Код: Выделить всё
class BME280{
constructor(){
this.st=new UInt8(0);
this.T=new Int16();
this.H=new UInt16();
this.P=new Int32();
this.present=false;
this.dig_T1=new UInt16();
this.dig_T2=new Int16();
this.dig_T3=new Int16();
this.dig_P1=new UInt16();
this.dig_P2=new Int16();
this.dig_P3=new Int16();
this.dig_P4=new Int16();
this.dig_P5=new Int16();
this.dig_P6=new Int16();
this.dig_P7=new Int16();
this.dig_P8=new Int16();
this.dig_P9=new Int16();
this.dig_H1=new UInt8();
this.dig_H2=new Int16();
this.dig_H3=new UInt8();
this.dig_H4=new Int16();
this.dig_H5=new Int16();
this.dig_H6=new Int8();
this.to=0;
}
Read(){
let var0=this.st, var1, var2;
if(var0==8){
if((var1=getSeconds())>=this.to){
this.to=var1+15;
this.st=2;
}
} else if(var0<5 && (var1=TwiStatus())==0){
if(var0==0){
TwiControl(0x1A010376);
TwiPutByte(0x88);
this.st=5;
} else if(var0==1){
this.st=6;
TwiControl(0x07010376);
TwiPutByte(0xE1);
} else if(this.st==2){
this.st=3;
TwiControl(0x00040176); // Pressure oversampling x1, Temperature oversampling x1, Humidity oversampling x1
TwiPutByte(0xF2);
TwiPutByte(0x01);
TwiPutByte(0x00);
TwiPutByte(0x24);
} else if(this.st==3){
this.st=4;
TwiControl(0x00020176); // forced mode
TwiPutByte(0xF4);
TwiPutByte(0x25);
} else{
this.st=7;
TwiControl(0x08010376);
TwiPutByte(0xF7);
}
} else if( (var1=TwiStatus() & 0xFFFF)==0x1076 ){
if(var0==5){
this.dig_T1=TwiGetByte()<<8 | TwiGetByte();
this.dig_T2=TwiGetByte()<<8 | TwiGetByte();
this.dig_T3=TwiGetByte()<<8 | TwiGetByte();
this.dig_P1=TwiGetByte()<<8 | TwiGetByte();
this.dig_P2=TwiGetByte()<<8 | TwiGetByte();
this.dig_P3=TwiGetByte()<<8 | TwiGetByte();
this.dig_P4=TwiGetByte()<<8 | TwiGetByte();
this.dig_P5=TwiGetByte()<<8 | TwiGetByte();
this.dig_P6=TwiGetByte()<<8 | TwiGetByte();
this.dig_P7=TwiGetByte()<<8 | TwiGetByte();
this.dig_P8=TwiGetByte()<<8 | TwiGetByte();
this.dig_P9=TwiGetByte()<<8 | TwiGetByte();
var1=TwiGetByte();
this.dig_H1=TwiGetByte();
this.st=1;
} else if(var0==6){
this.st=2;
this.dig_H2=TwiGetByte()<<8 | TwiGetByte();
this.dig_H3=TwiGetByte();
var1=TwiGetByte();
var2=TwiGetByte();
this.dig_H4=(var1 << 4) | var2 & 0x0F;
this.dig_H5=(var2 >> 4) | (TwiGetByte()<<4);
this.dig_H6=TwiGetByte();
} else if(this.st==7){
let ADC1, ADC2, T_Fine;
ADC1=TwiGetByte()<<12;
ADC1|=TwiGetByte()<<4;
ADC1|=TwiGetByte()>>4;
ADC2=TwiGetByte()<<12;
ADC2|=TwiGetByte()<<4;
ADC2|=TwiGetByte()>>4;
var1 = (((ADC2>>3) - (this.dig_T1<<1)) * (this.dig_T2) ) >> 11;
var2 = (((((ADC2>>4) - (this.dig_T1)) * ((ADC2>>4) - (this.dig_T1))) >> 12) * (this.dig_T3)) >> 14;
T_Fine = var1 + var2;
this.T=(T_Fine * 5 + 128) >> 8; // temperature in DegC, resolution is 0.01 DegC
var1 = (T_Fine>>1)-64000;
var2 = (((var1>>2) * (var1>>2)) >> 11 ) * this.dig_P6;
var2 = var2 + ((var1*this.dig_P5)<<1);
var2 = (var2>>2)+(this.dig_P4<<16);
var1 = (((this.dig_P3 * (((var1>>2) * (var1>>2)) >> 13 )) >> 3) + ((this.dig_P2 * var1)>>1))>>18;
var1 =((32768+var1)*this.dig_P1)>>15;
if(var1 != 0){
let var3 = (1048576-ADC1-(var2>>12))*3125;
var3 = (var3/var1)*2;
var1 = (this.dig_P9 * (((var3>>3) * (var3>>3))>>13))>>12;
var2 = ((var3>>2) * this.dig_P8)>>13;
this.P = (var3 + ((var1 + var2 + this.dig_P7) >> 4)); // pressure in Pa
}
ADC2=TwiGetByte()<<8;
ADC2|=TwiGetByte();
var1=T_Fine - 76800;
var1 = (((((ADC2 << 14) - (this.dig_H4 << 20) - (this.dig_H5 * var1)) + 16384) >> 15)
* (((((((var1 * this.dig_H6) >> 10) * (((var1 * this.dig_H3) >> 11) + 32768)) >> 10) + 2097152) * this.dig_H2 + 8192) >> 14));
var1 = (var1 - (((((var1 >> 15) * (var1 >> 15)) >> 7) * this.dig_H1) >> 4))>>13;
this.H = (var1 < 0 ? 0 : ((var1 > 51200) ? 51200 : var1)); // humidity in %RH = this.H/512.0
this.st=8;
this.present=true;
}
} else if((var1 & 0xFF)==0x76 && (var1 & 0xFF00)!=0){
this.st=0;
this.present=false;
}
}
}
var bme=new BME280();
bme.Read();
Последний раз редактировалось x13dev 24 фев 2016, 18:29, всего редактировалось 1 раз.
Re: Умный дом по радиоканалу
x13dev
Ну вообще отпад объектно-ориентированный язык пользователю на откуп, для написания своих алгоритмов!
И даже драйверов, которых нет в комплекте поставки
А где можно узнать правила кодинга на нем или может это какой-то стандартый(урезанный) язык?
Ну вообще отпад объектно-ориентированный язык пользователю на откуп, для написания своих алгоритмов!
И даже драйверов, которых нет в комплекте поставки
А где можно узнать правила кодинга на нем или может это какой-то стандартый(урезанный) язык?
Re: Умный дом по радиоканалу
JavaScript, ES6. Но можно и в ES5 стиле писать.wanvo писал(а):x13dev
Ну вообще отпад объектно-ориентированный язык пользователю на откуп, для написания своих алгоритмов!
И даже драйверов, которых нет в комплекте поставки
А где можно узнать правила кодинга на нем или может это какой-то стандартый(урезанный) язык?
Поддерживается только Int32 тип данных, статическое распределение памяти.
Всё остальное - следствия этих ограничений.
Re: Умный дом по радиоканалу
Синтаксис на С++ очень похож.Я не знаю этого языка, но ради такого дела буду осваивать. Мне реально не хватало таких штук пока были только лограмы.
Re: Умный дом по радиоканалу
У вас интерпретируется напрямую или сначала делается байт код?Для затравки - Драйвер BME280 на EmbeddedPLC
Re: Умный дом по радиоканалу
JavaScript => AST => ByteCode =(MQTT-sn)=> Устройство с виртуальной машинойalexsis_76 писал(а):У вас интерпретируется напрямую или сначала делается байт код?
Сейчас занимаемся оптимизацией ВМ. Одна команда выполняется от 2 до 8 uS.
Для примера - самый длинный цикл для BME280(st==7) выполняется за 2 mS.
Re: Умный дом по радиоканалу
те байт код формируется один раз и где то хранится, илиJavaScript => AST => ByteCode =(MQTT-sn)=> Устройство с виртуальной машиной
это JavaScript => AST => ByteCode =(MQTT-sn) происходит каждый раз заново
.т е вся "программа" для BME280Для примера - самый длинный цикл для BME280(st==7) выполняется за 2 mS
а вот это что такое
это занимает 999 байт? не много,this.st=6; и т д
Re: Умный дом по радиоканалу
Компилируется при нажатии кнопки Run и хранится в базе.alexsis_76 писал(а):те байт код формируется один раз и где то хранится, или это JavaScript => AST => ByteCode =(MQTT-sn) происходит каждый раз заново
Если нода где-то нагуляет другую программу, то при подключении она перепишется из базы.
alexsis_76 писал(а):а вот это что такое
Код: Выделить всё
var bme=new BME280(); //Выделение памяти под структуру и запуск конструктора.
bme.Read(); //Вызов фукции, где this=указатель на bme
this.st=6; //Присваивание полю st переданной структуры значения.
-
- Сообщения: 54
- Зарегистрирован: 27 фев 2015, 01:06
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу
Этот не будет, под него нет драйвера.AvaloncheG писал(а):1. Вот эти два модуля будут работать с UNO без доп костылей?
SI4432
Этот будет. Такие - же у меня работают.AvaloncheG писал(а): и CC1101
Адаптер втыкается в тот-же разьём что и ENC28J60.
С платами у которых в качестве моста используется CH340G/FT232 работают без проблем.AvaloncheG писал(а):2. UNO R3 через строеннй USB-UART будет работать в роли гейта?
Спасибо.
Если же в качестве моста USB - UART стоит ATmega16U2(оригинальная схема), то лучше использовать внешний адаптер USB-UART TTL. Данный мост при малейшей нагрузке начинает глотать байты и подвисать.
Если будет время в выходные, конфигурацию сделаю, будет A1SC10.
P.S. не забываем про уровни, CC1101 работает от 3.3В. Arduino от 5В.
-
- Сообщения: 516
- Зарегистрирован: 20 окт 2012, 12:40
- Откуда: Мюнхен
Re: Умный дом по радиоканалу
Небольшое обновление прошивки, версия "Develop"
Добавлена конфигурация A1SC10 - Arduino Uno/Nano + UART + CC1101
Небольшие изменения в EXT_AIN.
Обновлены проекты для атмел студии.
ВНИМАНИЕ, со старыми версиями не собираются.
Если не хотите обновлять студию, тогда противоядие: в файлах A1xxxx.cproj и A4xxxx.cproj найти строку 1.0.98 и заменить на 1.0.90(или 1.0.91). Само собой, тогда не собирается в новой студии.
Обновление до новой студии нормально не работает. Удалите сперва старую студию, это касается и драйверов. Потом установите новую.
Иначе после обновления студии компиляция упорно падает с ошибкой 1, и перестают определяться родные атмеловские отладчики/программаторы.
Добавлена конфигурация A1SC10 - Arduino Uno/Nano + UART + CC1101
Небольшие изменения в EXT_AIN.
Обновлены проекты для атмел студии.
ВНИМАНИЕ, со старыми версиями не собираются.
Если не хотите обновлять студию, тогда противоядие: в файлах A1xxxx.cproj и A4xxxx.cproj найти строку 1.0.98 и заменить на 1.0.90(или 1.0.91). Само собой, тогда не собирается в новой студии.
Обновление до новой студии нормально не работает. Удалите сперва старую студию, это касается и драйверов. Потом установите новую.
Иначе после обновления студии компиляция упорно падает с ошибкой 1, и перестают определяться родные атмеловские отладчики/программаторы.
-
- Сообщения: 54
- Зарегистрирован: 27 фев 2015, 01:06
Re: Умный дом по радиоканалу
Научите пользоваться github-ом
Как там найти последние версии CC и X13Engine для Win.
И как собирать прошивки, ветку X13.devices-develop я скачал, но немогу понять какие файлы надо чтобы скомпилировать необходимые мне прошивки (сейчас Arduino Uno - гейт, Arduino Uno+ENC28J60 - нода, Arduino Nano+CC1101 - нода).
Один и тот же гейт можно испольовать в связке с LAN-нодами и беспроводными?
Спасибо.
Как там найти последние версии CC и X13Engine для Win.
И как собирать прошивки, ветку X13.devices-develop я скачал, но немогу понять какие файлы надо чтобы скомпилировать необходимые мне прошивки (сейчас Arduino Uno - гейт, Arduino Uno+ENC28J60 - нода, Arduino Nano+CC1101 - нода).
Один и тот же гейт можно испольовать в связке с LAN-нодами и беспроводными?
Спасибо.
Re: Умный дом по радиоканалу
Бинарники лежат здесьAvaloncheG писал(а):Научите пользоваться github-ом
Как там найти последние версии CC и X13Engine для Win.
http://x13home.github.io/download.html
Открыть в Atmel Studio проект (A1xxxx.atsln) выбрать нужную конфигурацию и скомпилироватьAvaloncheG писал(а): И как собирать прошивки, ветку X13.devices-develop я скачал
Смотрите в README.AvaloncheG писал(а): , но немогу понять какие файлы надо чтобы скомпилировать необходимые мне прошивки (сейчас Arduino Uno - гейт, Arduino Uno+ENC28J60 - нода, Arduino Nano+CC1101 - нода).
Если кратко:
первые две буквы в конфигурации - используемый микроконтроллер
третья - первый интерфейс
четвёртая - второй интерфейс
дальше версия
Гейтом для LANнод является компьютер.AvaloncheG писал(а): Один и тот же гейт можно испольовать в связке с LAN-нодами и беспроводными?
Для RF нод нужен гейт, где первый интерфейс LAN или Serial, а второй RF
-
- Сообщения: 54
- Зарегистрирован: 27 фев 2015, 01:06
Re: Умный дом по радиоканалу
Подскажите как подружиться с MajorDoMo
Никакие свойства в МД не обновляются, в логах пишет что к МД законектился. Что я делаю не так?
Спасибо.
Никакие свойства в МД не обновляются, в логах пишет что к МД законектился. Что я делаю не так?
Спасибо.
Re: Умный дом по радиоканалу
В SubscriptionPath стоит /var/now/#AvaloncheG писал(а):Подскажите как подружиться с MajorDoMo
Никакие свойства в МД не обновляются, в логах пишет что к МД законектился. Что я делаю не так?
А пытаетесь использовать потом /dev/#