Батарейная нода для мониторинга влажности и температуры

Показывайте и делитесь своими замечательными проектами здесь! Мы любим картинки!
Ответить
Sergey2055
Сообщения: 50
Зарегистрирован: 04 июл 2017, 13:43

Батарейная нода для мониторинга влажности и температуры

Сообщение Sergey2055 »

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

#define MY_RADIO_NRF24
#define MY_NODE_ID 32
#include <MySensors.h>
#include <SPI.h>
#include <Wire.h>
#include <SHT2x.h>
#include <avr/wdt.h>

#define NODE_IDT 1
#define NODE_IDH 2
#define NODE_IDV 3
#define NODE_Time 4
#define NODE_Prog 5

unsigned long SLEEP_TIME = 30000;
float T, H;
int ADCin=3, prog = 3;
int BatteryPcnt;
byte flag = 0, flagProg;

MyMessage msgT(NODE_IDT, V_TEMP);
MyMessage msgH(NODE_IDH, V_HUM);
MyMessage msgbatt(NODE_IDV, V_VAR1);
MyMessage msgTime(NODE_Time, V_VAR2);
MyMessage msgProg(NODE_Prog, V_VAR5);


void presentation()
{
sendSketchInfo("Temp sensor", "V1.0_19062017"); 
//present(NODE_IDH, S_HUM);
present(NODE_IDT, S_TEMP, "Temp");
present(NODE_IDH, S_HUM, "humidity");
present(NODE_IDV, S_CUSTOM, "Battery");
present(NODE_Time, S_CUSTOM, "Time sleep");
present(NODE_Prog, S_CUSTOM, "Set programm");



}
void setup(){
  wdt_disable(); 
  Wire.begin();
  analogReference(INTERNAL);
  pinMode(ADCin, INPUT);
  pinMode(prog, INPUT);
  digitalWrite(prog, LOW);
  if(digitalRead(prog)==1)
  flag=1;
  else
  flag=0;
  int L = loadState(3);
  if((L) > 0 && (L)< 255)
  SLEEP_TIME=L*60000;
  send(msgProg.set(0));
  flagProg=0;
}

void loop()
{

 T = (SHT2x.readT());
    send(msgT.set(T, 2));  //value переменная 2-указываеьт сколько знаков после запятой выводить.

 H = (SHT2x.readRH());
    send(msgH.set(H, 2));  //value переменная 2-указываеьт сколько знаков после запятой выводить.
 
    if(flag == 1){
      int s = analogRead(ADCin);
    saveState(1, lowByte(s));
    saveState(2, highByte(s));
    send(msgbatt.set(s));  //value переменная 2-указываеьт сколько знаков после запятой выводить.
    delay(10000);
    }
    else{     
int a = analogRead(ADCin);
int sl = loadState (1);
int sh = loadState (2);
int battconst = word(sh, sl);
int batt3V = (30*battconst)/42;
int b = battconst - batt3V;
if((a - batt3V)>0){
 BatteryPcnt = ((a - batt3V)*100)/b;  // 293=1023=100%=4.2V
}
else
BatteryPcnt = 0;

    send(msgbatt.set(BatteryPcnt));  //value переменная 2-указываеьт сколько знаков после запятой выводить.

    send(msgTime.set((SLEEP_TIME)/60000));
    
     if(flagProg){
 delay(10000);
 send(msgProg.set(10));
 }
 else{
   send(msgProg.set(0));
    smartSleep(SLEEP_TIME);
 }

    }
}


//********************************************************

void receive(const MyMessage &message) {
    
    if (message.type==V_VAR2) { 
      if((message.getInt())<255){
    saveState(3, message.getInt());
    SLEEP_TIME = (loadState(3)*60000);
    send(msgTime.set((SLEEP_TIME)/60000));
      }
   }

    if (message.type==V_VAR5) { 
      if((message.getInt())<255){
    SLEEP_TIME = message.getInt();
    if (SLEEP_TIME == 52)
    flagProg = 1;
      }
   }     
   
}
Вложения
IMG_20170619_211940.jpg
IMG_20170619_211940.jpg (106.23 КБ) 24742 просмотра
IMG_20170622_183735.jpg
IMG_20170622_183735.jpg (83.09 КБ) 24742 просмотра
IMG_20170622_192528.jpg
IMG_20170622_192528.jpg (100.69 КБ) 24742 просмотра
MEHANICUS
Сообщения: 7
Зарегистрирован: 10 май 2019, 05:11

Re: Батарейная нода для мониторинга влажности и температуры

Сообщение MEHANICUS »

Подскажите-на сколько хватает заряда аккумулятора?
Sergey2055
Сообщения: 50
Зарегистрирован: 04 июл 2017, 13:43

Re: Батарейная нода для мониторинга влажности и температуры

Сообщение Sergey2055 »

Все зависит от качества аккумулятора и доработки схемы на плате ардуино. Аналогичная конструкция у меня уже второй год трудится без подзарядки.
Аватара пользователя
iwizard7
Сообщения: 7
Зарегистрирован: 31 июл 2019, 12:22

Re: Батарейная нода для мониторинга влажности и температуры

Сообщение iwizard7 »

От какой батареи она питается ? и какой датчик используете? SHT-21?
Sergey2055
Сообщения: 50
Зарегистрирован: 04 июл 2017, 13:43

Re: Батарейная нода для мониторинга влажности и температуры

Сообщение Sergey2055 »

Датчик SHT20, питается от любого акб от сотового телефона. Я взял от нокиа, 800ма.
Sergey2055
Сообщения: 50
Зарегистрирован: 04 июл 2017, 13:43

Re: Батарейная нода для мониторинга влажности и температуры

Сообщение Sergey2055 »

В уличной ноде применен тот же принцип. Работает уже 2 года без перезарядки. viewtopic.php?f=3&t=18
MEHANICUS
Сообщения: 7
Зарегистрирован: 10 май 2019, 05:11

Re: Батарейная нода для мониторинга влажности и температуры

Сообщение MEHANICUS »

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