Skip to content

Commit 820020e

Browse files
committed
bugfix
full rus comments
1 parent 4faf804 commit 820020e

File tree

4 files changed

+109
-126
lines changed

4 files changed

+109
-126
lines changed

Firmware/Sensor/Sensor.ino

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/*
2-
Outside sensor for NIXIE Thermometer
2+
Внешний датчик для NIXIE погодной станции
33
Ver 2.2
44
5-
Hardware required:
6-
- Temperature sensor DS18B20
7-
- 433 MHz radio transmitter (FS1000A)
5+
Требуемые железки:
6+
- Температурный датчик DS18B20
7+
- 433 MHz радио передатчик (FS1000A)
88
99
Autor: V.Nezlo
1010
E-mail: vlladimirka@gmail.com
@@ -47,7 +47,7 @@ float temperature = ((ds_data[1] << 8) | ds_data[0]) * 0.0625;
4747
tempout=temperature*10;
4848
}
4949

50-
long readVcc() {
50+
long readVcc() { //Кусок, взятый из интернетов
5151
// Read 1.1V reference against AVcc
5252
// set the reference to Vcc and the measurement to the internal 1.1V reference
5353
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
@@ -77,26 +77,27 @@ void setup(){
7777

7878
radioTX.begin(1000);
7979
radioTX.openWritingPipe(5);
80-
power.setSleepMode(POWERDOWN_SLEEP);
81-
power.hardwareDisable(PWR_ADC);
82-
power.hardwareDisable(PWR_SPI);
83-
power.hardwareDisable(PWR_I2C);
84-
power.hardwareDisable(PWR_UART0);
85-
power.bodInSleep(false);
80+
power.setSleepMode(POWERDOWN_SLEEP); //Максимум энергоэффективности во сне
81+
power.hardwareDisable(PWR_ADC); //Минус АЦП
82+
power.hardwareDisable(PWR_SPI); //Минус SPI
83+
power.hardwareDisable(PWR_I2C); //Минут TWI
84+
power.hardwareDisable(PWR_UART0); //Минус UART
85+
power.bodInSleep(false); //Минус супервизор питания во сне
8686
}
8787

8888
void loop(){
8989

9090
delay(100);
9191
check_sensors();
92-
data[0]=123; //dumbass
93-
data[1]=ADDRESS;//address
94-
data[2]=tempout;//temperature
92+
data[0]=123; //Заглушка
93+
data[1]=ADDRESS;//Адрес
94+
data[2]=tempout;//Температура
9595

9696
power.hardwareEnable(PWR_ADC);
97-
data[3]=(readVcc())/10; //voltage
97+
data[3]=(readVcc())/10; //Напряжение
9898
power.hardwareDisable(PWR_ADC);
9999

100+
//Отправляем 5 раз для надежности
100101
radioTX.write(&data, sizeof(data));
101102
radioTX.write(&data, sizeof(data));
102103
radioTX.write(&data, sizeof(data));

Firmware/Station/DHT.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,9 @@ boolean DHT::read(void) {
119119

120120
// pull the pin high and wait 250 milliseconds
121121
digitalWrite(_pin, HIGH);
122-
delay(50);
123-
122+
//*****************************************************************************************
123+
delay(50); // Вот это можно менять
124+
//*****************************************************************************************
124125
// now pull it low for ~20 milliseconds
125126
pinMode(_pin, OUTPUT);
126127
digitalWrite(_pin, LOW);

Firmware/Station/Station.ino

Lines changed: 81 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,77 @@
11
/*
2-
Weather IOT station based on NIXIE lamps
3-
Ver 0.1
2+
Погодная станция на NIXIE индикаторах
3+
Ver 6.6
44
5-
Hardware required:
6-
- Temperature sensor DS18B20
7-
- Humidity sensor DHT11 (DHT12,DHT21,DHT22)
8-
- 433 MHz radio receiver (MX-RM-5V)
9-
- ESP8266 on TX-RX
5+
Требуемые железки:
6+
- Температурный датчик DS18B20
7+
- Датчик влажности DHT11 (DHT12,DHT21,DHT22)
8+
- 433 MHz радио-приемник (MX-RM-5V)
109
1110
Autor: V. Nezlo
1211
E-mail: vlladimirka@gmail.com
1312
Github: https://github.com/V-Nezlo
1413
1514
*/
1615

17-
//radio
18-
#include <iarduino_RF433_Receiver.h>
19-
iarduino_RF433_Receiver radioRX(3);
20-
int data[4];
21-
int ds_data[2];
22-
uint8_t k;
23-
#define ADDRESS 111
24-
//radio
25-
26-
#include <EasyTS.h>
16+
#include <iarduino_RF433_Receiver.h>
2717
#include <OneWire.h>
2818
#include "DHT.h"
2919
#include <GyverTimer.h>
3020

31-
OneWire ds(5); //ds18b20 pin
32-
DHT dht(2, DHT11); //DHT11 (or another) pin
33-
34-
int tempin; // temp*10
35-
int tempout; // out temp *10
36-
int voltage; // sensor battery voltage
37-
char tempin_z; // + or - on indicators
38-
char tempout_z; // + or - on indicators
39-
int humi; // humidity
40-
int digits[4]; // nums
41-
char display_mode; //mode
42-
char display_mode_temp; //for cathode healing
43-
char P=0; //for carhode healing
44-
int sendmode;
45-
46-
bool connection=0; //connection flag
47-
bool farenheit; //celsium or farenheit
21+
OneWire ds(5); //ds18b20 пин
22+
DHT dht(2, DHT11); //DHT пин
23+
iarduino_RF433_Receiver radioRX(3); //пин для радио (обязательно с хардварным прерыванием!)
24+
#define ADDRESS 112
25+
int data[4];
26+
int ds_data[2];
27+
uint8_t k;
28+
29+
int tempin; //температура*10
30+
int tempout; //температура снаружи *10
31+
int voltage; //Напряжение аккума внешнего датчика
32+
char tempin_z; //+ или - на первом индикаторе для внутренней температуры
33+
char tempout_z; //+ или - на первом индикаторе для внешней температуры
34+
int humi; //влажности
35+
int digits[4]; //массив для цифр
36+
char display_mode; //режим
37+
char display_mode_temp; //тут храним режим при лечении катодов
38+
char P=0; //переменная для лечения
39+
40+
bool connection=0; //флаг наличия соединения
41+
bool farenheit; //цельсии или фаренгейты
4842
bool farenheit_overload_in; //flag for "carry" in
4943
bool farenheit_overload_out; //flag for "carry" out
5044

51-
const int out1 = A3; //Decoder pin 1
52-
const int out2 = A1; //Decoder pin 2
53-
const int out3 = 13; //Decoder pin 3
54-
const int out4 = A2; //Decoder pin 4
55-
56-
const int key1 = 9; //Anode pin 1
57-
const int key2 = 12; //Anode pin 2
58-
const int key3 = 10; //Anode pin 3
59-
const int key4 = 11; //Anode pin 4
60-
61-
const int dot = 4; //Dot inside the lamp
62-
const int dot1= 6; //Dot of internal temp
63-
const int dot2= 7; //Dot of internal humi
64-
const int dot3= 8; //Dot of external temp
65-
66-
bool dotf =1; //flags
45+
const int out1 = A3; //Пины декодера
46+
const int out2 = A1;
47+
const int out3 = 13;
48+
const int out4 = A2;
49+
50+
const int key1 = 9; //Пины для анодов
51+
const int key2 = 12;
52+
const int key3 = 10;
53+
const int key4 = 11;
54+
55+
const int dot = 4; //Точка внутри лампы
56+
const int dot1= 6; //Точка внутренней температуры
57+
const int dot2= 7; //Точка внутренней влажности
58+
const int dot3= 8; //Точка внешней температуры
59+
60+
bool dotf =1; //флаги точек
6761
bool dot1f =0;
6862
bool dot2f =0;
6963
bool dot3f =0;
7064

71-
GTimer Tconv_start(MS,1000);//Start conversion in ds18
72-
GTimer Tconv_read(MS,2000); //Read from ds18 time
73-
GTimer Tmode_switch(MS,6000); //switch mode time
74-
GTimer Tcathode_heal(MS,180000);//cathode healing time
75-
GTimer Tcathode_switch(MS, 500);//cathode healing switch time
76-
GTimer Tled_lowbat(MS, 300);//led switching (low battery)
77-
GTimer Tled_noconn(MS, 800);//led switching (noconnection)
78-
GTimer Tvalidate_radio(MS, 600000); //time to validate data
79-
GTimer Tsend_data(MS,15000); //ThingSpeak send data timer
65+
GTimer Tconv_start(MS,1000);//Таймер начала конверсии в ds18
66+
GTimer Tconv_read(MS,2000); //Таймер чтения температуры с ds18
67+
GTimer Tmode_switch(MS,6000); //Таймер переключения режимов
68+
GTimer Tcathode_heal(MS,180000);//Таймер для лечения катодов
69+
GTimer Tcathode_switch(MS, 500);//Таймер для смены катодов во время лечения
70+
GTimer Tled_lowbat(MS, 300);//Частота мигания индикатора при низком напряжении датчика
71+
GTimer Tled_noconn(MS, 800);//Частота мигания индикатора при отсутствии соединения
72+
GTimer Tvalidate_radio(MS, 600000); //Таймер для проверки валидации
8073

81-
const int bright = 1; // Value of "bright" of indicators
74+
const int bright = 1; //"Яркость" индикаторов
8275

8376
void radio_init(void){
8477
radioRX.begin(1000);
@@ -87,9 +80,9 @@ void radio_init(void){
8780
}
8881

8982
void check_radio(void){
90-
if(radioRX.available(&k)){ //If buffer has something
91-
radioRX.read(&data, sizeof(data)); //Read in data[]
92-
if (data[1]==ADDRESS) //Address checking
83+
if(radioRX.available(&k)){ //Если в буфере что-то есть
84+
radioRX.read(&data, sizeof(data)); //Записать в массив
85+
if (data[1]==ADDRESS) //Проверить адрес
9386
{
9487

9588
if (farenheit) tempout=(data[2]*1.8)+320; //F=C*1,8+32
@@ -104,23 +97,24 @@ void check_radio(void){
10497
if (tempout>0) tempout_z = 7;
10598
else tempout_z = 8;
10699

107-
//dot1f = 1;
108-
100+
if (tempout<0) tempout = tempout * (-1);
109101
connection=true;
110102
Tvalidate_radio.reset();
103+
//Serial.println("Соединение установлено");
111104
}
112105

113-
}
106+
}
114107
}
115108

116109
void check_validate_radio(void){
117110
if (Tvalidate_radio.isReady())
118111
{
119112
connection=false;
113+
//Serial.print("Соединение потеряно");
120114
}
121115
}
122116

123-
void setNumber(int num) { // Transfer number to the decoder
117+
void setNumber(int num) { //Передача цифр в декодер
124118
switch (num)
125119
{
126120
case 0:
@@ -186,7 +180,7 @@ void setNumber(int num) { // Transfer number to the decoder
186180
}
187181
}
188182

189-
void show(int a[]){ //Set numbers on indicators
183+
void show(int a[]){ //Установка разрядов
190184
int keys[] = { key1, key2, key3, key4 };
191185
for (int i=0; i<4; ++i){
192186
setNumber(a[i]);
@@ -230,6 +224,7 @@ if (connection==false) {
230224
if (Tled_noconn.isReady())
231225
{
232226
dot1f = !dot1f;
227+
//Serial.println("мырг!");
233228
}
234229
}
235230
else if (voltage<370){
@@ -253,12 +248,14 @@ void check_sensors_first(void){
253248
void check_humidity(void){
254249
float h = dht.readHumidity();
255250
humi=h*10;
251+
//Serial.print("Влажность: ");
252+
//Serial.println(humi);
256253
}
257254

258255
void conversion_start(void){
259-
ds.reset(); // ALL RESET
260-
ds.write(0xCC); // Skip device search
261-
ds.write(0x44); // Start conversion
256+
ds.reset(); // Ресет
257+
ds.write(0xCC); // Пропуск скана шины
258+
ds.write(0x44); // Начать конверсию
262259
}
263260

264261
void conversion_read(void){
@@ -279,6 +276,8 @@ void conversion_read(void){
279276
if (tempin>0) tempin_z = 7;
280277
else tempin_z = 8;
281278

279+
//Serial.print("Температура внутри ");
280+
//Serial.println(tempin);
282281
}
283282

284283
void displayMode(void){
@@ -375,8 +374,9 @@ void displayMode(void){
375374
if (Tcathode_switch.isReady()) P++;
376375
if (P>9)
377376
{
378-
display_mode = display_mode_temp; //restore mode after healing
377+
display_mode = display_mode_temp; //Вернуть режим после лечения катодов
379378
Tmode_switch.resume();
379+
//Serial.println("Режим отображения восстановлен");
380380
P=0;
381381
}
382382
}
@@ -387,6 +387,7 @@ void displayMode(void){
387387
void switchMode(void){
388388
if (Tmode_switch.isReady())
389389
{
390+
//Serial.println("Режим отображения изменен");
390391
switch (display_mode)
391392
{
392393
case 0:
@@ -413,48 +414,29 @@ void cathodeHeal(void){
413414
if (Tcathode_heal.isReady())
414415
{
415416
Tmode_switch.reset();
416-
display_mode_temp = display_mode;//save display_mode value
417+
display_mode_temp = display_mode;//Сохраняем текущий режим отображения
417418
display_mode=3;
418419
Tmode_switch.stop();
420+
//Serial.println("Cathode healing enable");
419421
}
420422

421423
}
422424

423-
void iot_senddata(){
424-
char String_senddata[30];
425-
if (Tsend_data.isReady()){
426-
switch(sendmode){
427-
case 0:
428-
sprintf (String_senddata, "%u.%u", tempin/10, tempin%10);
429-
easyts.send("VF5VWODQICAG5BG3", 1, String_senddata);
430-
sendmode=1;
431-
break;
432-
case 1:
433-
sprintf (String_senddata, "%d", humi);
434-
easyts.send("VF5VWODQICAG5BG3", 2, String_senddata);
435-
sendmode=2;
436-
break;
437-
case 2:
438-
sprintf (String_senddata, "%u.%u", tempout/10, tempout%10);
439-
easyts.send("VF5VWODQICAG5BG3", 3, String_senddata);
440-
sendmode=0;
441-
break;
442-
}
443-
}
444-
}
445-
446425
void setup(){
447426

448-
Serial.begin(115200);
449-
easyts.std_connect("Nokia 7.1","12345678");
427+
Serial.begin(9600);
450428
radio_init();
451429
pin_set();
452430
dht.begin();
453431
delay(300);
454-
check_sensors_first();//first run with delay
432+
check_sensors_first();//Первый запуск с делеем
455433
check_humidity();
456434
farenheit = digitalRead(A0);
435+
457436

437+
//Serial.print("Флаг фаренгейтов равен ");
438+
//Serial.println(farenheit);
439+
458440
display_mode=0;
459441
}
460442

@@ -465,10 +447,4 @@ void loop(){
465447
check_validate_radio();
466448
led_blinking();
467449
cathodeHeal();
468-
iot_senddata();
469450
}
470-
471-
472-
473-
474-

0 commit comments

Comments
 (0)