Страница 22 из 72

Re: Модуль MySensor

Добавлено: Пт фев 12, 2016 3:40 pm
Anton_kulibin
NightRider. Смотрите питание. Я 2 дня бился оказалось, на модуль идет 4,2В, сгорел преобразователь (оказалось 4 месяца назад кондер перепутал + с -, но все работало). NRF модули очень капризны к напряжению.

Re: Модуль MySensor

Добавлено: Пт фев 12, 2016 3:56 pm
NightRider
Anton_kulibin писал(а):NightRider. Смотрите питание. Я 2 дня бился оказалось, на модуль идет 4,2В, сгорел преобразователь (оказалось 4 месяца назад кондер перепутал + с -, но все работало). NRF модули очень капризны к напряжению.
Спасибо за совет, перепроверю уровень напряги. Кондеры у меня везде припаяны.

Я правильно понимаю, что вот эти "фейлы" это исключение и их быть не должно. И если включить отладку на ноде и снять лог сообщений эдак со ста, то ни одного фейла там быть не должно?
Так то я думал что это в порядке вещей, для этого и реализован ACK с повторной отправкой... Но чет у меня последнее не работает.

Re: Модуль MySensor

Добавлено: Пн фев 15, 2016 10:17 am
NightRider
На гейте подключенный к RPI2 приблизительно 3v, на одной из нод - 3.12v
Судя по описаниям - модуль NRF нормально себя чувствует при таких уровнях.

Re: Модуль MySensor

Добавлено: Ср фев 17, 2016 7:12 pm
Ivan
Обновил модуль
- Исправил для PHP 5.3
- Добавлен сброс информации о батарейке

Re: Модуль MySensor

Добавлено: Ср фев 17, 2016 10:16 pm
Alien
Может совпадение, но после обновления ошибки посыпались:
socket_connect() failed. Reason: Operation now in progress
2016-02-17 20:25:37 Connecting TCP
20:25:37 running cycle_mysensor.php
socket_connect() failed. Reason: Operation now in progress
2016-02-17 20:23:01 Connecting TCP
20:23:01 running cycle_mysensor.php
socket_connect() failed. Reason: Operation now in progress
2016-02-17 20:22:44 Connecting TCP
20:22:44 running cycle_mysensor.php

Re: Модуль MySensor

Добавлено: Ср фев 17, 2016 11:39 pm
slgeo
Alien, а какой у тебя гейт подключен?

Иван, ты говорил о кривых и неудобных значениях передачи % заряда аккумулятора, вот на примере скетча Battery Powered Sensors немного переработал формулу расчета процента.
Думаю, теперь он более корректен и отражает действительное значение заряда.
Опирался на то что, если напряжение на аккумуляторе (батарейке) упало более чем на 20%, то будет отсылаться 0%.
SPOILERSPOILER_SHOW

Код: Выделить всё

#include <SPI.h>
#include <MySensor.h>

int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point

MySensor gw;
unsigned long SLEEP_TIME = 5000;  // sleep time between reads (seconds * 1000 milliseconds)
int oldBatteryPcnt = 0;

void setup()  
{
   // use the 1.1 V internal reference
#if defined(__AVR_ATmega2560__)
   analogReference(INTERNAL1V1);
#else
   analogReference(INTERNAL);
#endif
   gw.begin();

   // Send the sketch version information to the gateway and Controller
   gw.sendSketchInfo("Battery Meter", "1.1");
}

void loop()
{
   // get the battery Voltage
   int sensorValue = analogRead(BATTERY_SENSE_PIN);
   #ifdef DEBUG
   Serial.println(sensorValue);
   #endif

   // 1M, 470K divider across battery and using internal ADC ref of 1.1V
   // Sense point is bypassed with 0.1 uF cap to reduce noise at that point
   // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
   // 3.44/1023 = Volts per bit = 0.003363075
   // коэффициент надо подстроить под свои резисторы
   float batteryV  = sensorValue * 0.00247899159663;
   // некорректный расчет %, поскольку отталкивается от 0 отметки 
   // int batteryPcnt = sensorValue / 10;
   // сохраняем в переменную напряжение заряженного аккумулятора
   float FullbatteryV = 1.2;
   // считаем % отталкиваясь от того, что потеря заряда на 20%, будет считаться как 0%
   int batteryPcnt = (1 - (FullbatteryV - batteryV)/(0.2 * FullbatteryV)) * 100;
   if (batteryPcnt > 100) batteryPcnt = 100;
   if (batteryPcnt < 0) batteryPcnt = 0;
   #ifdef DEBUG 
   Serial.print("Battery Voltage: ");
   Serial.print(batteryV);
   Serial.println(" V");

   Serial.print("Battery percent: ");
   Serial.print(batteryPcnt);
   Serial.println(" %");
   #endif

   if (oldBatteryPcnt != batteryPcnt) {
     // Power up radio after sleep
     gw.sendBatteryLevel(batteryPcnt);
     oldBatteryPcnt = batteryPcnt;
   }
   gw.sleep(SLEEP_TIME);
}

Re: Модуль MySensor

Добавлено: Ср фев 17, 2016 11:47 pm
Alien
Ethernet. Перегрузил гейт - заработало. Просто он у меня месяцами без затыков справлялся. Скорее всего совпадение. Будет повторяться - отпишусь. Кстати, обновление нод по сети не предвидится? ;)

Re: Модуль MySensor

Добавлено: Чт фев 18, 2016 8:02 am
Ivan
Насчёт чтения батареи через резистивный делитель. У вас он будет давать лишнее потребление, ещё учтите что включенный АЦП тоже даёт лишнее потребление.

Обновление нод по радио предвидеться. Но для этого мне нужно собрать 1 такую ноду.
Давайте обговорим это в личке или через Skype

Re: Модуль MySensor

Добавлено: Пт фев 26, 2016 11:10 am
Ivan
Исправлена ошибка определения отключения сокета

Re: Модуль MySensor

Добавлено: Сб фев 27, 2016 2:25 am
lanket
Знатоки Ардуинок подскажите пожалуйста пытаюсь заставить работать блок реле состоящий из 21 шт. Потихоньку потом его еще хочу нагрузить всякими датчиками.
Скетч взял оригинальный с сайта http://www.mysensors.org/build/relay
Так как у Atmega328 для реализации задумки нехватает портов решил реализовать на MEGA 2560.
Не запустилась, сетка не видит ноды.

Смущает одна строчка:

Код: Выделить всё

// Select AtMega328 hardware profile
MyHwATMega328 hw;
 
В инете находиться только копии этого же или других скетч.
Описания не нашол такой команды.

Закоментировать если то вываливается с ошибкой

Код: Выделить всё

exit status 1
'hw' was not declared in this scope
Пробовал и вот такие 2 варианта:

Код: Выделить всё

MyHwATMega2560 hw;
MyHwMega2560 hw;
 
Ругается мол такого не знаю

Аналогично подбирал назввание со строчкой

Код: Выделить всё

#include <MyHwATMega328.h>
 
Доперло поискать в библиотеках
вот и нашол MyHwATMega328.h
А вот с оконцовкой 2560 ничего подобного.

Что делать то?
Нехочется делить блок реле на 3 ардуинки когда логичнее былобы (так как это все в щетке управления 1м этажом) реализовать в одной ноде (ардуинке)