Честно говоря меня удивляет не ослабевающий интерес к этому очень простому и примитивному проекту. Четыре с половиной года интереса, хотя столько более интересных проектов опубликовано. У меня эта станция до сих пор трудится, правда вышел из строя модуль часов, и я был вынужден его заменить на новый. Перед этим я приобрел 10 штук часовых модулей и половину опробовал. Так вот хочу сказать, что теперешние, не знаю толи партия такая то ли производитель, но в сравнение по точности не идут с теми, пятилетней давности. Конечно для начинающих такой проект весьма подходящий. Правда я не вижу в продаже 328-х Ардуин именно в таком конструктиве, может не там смотрел.
у меня вот так вышло, проэкт просто очень простой и легок для повторения
Внутрений модуль на радио от NFR24l01(SPI), bpm280(I2C), часы ds3231(I2C), был еще si7021(I2C, он переехал на балкон, но в коде он есть), nano от robotdyn, экран 2004 тоже на I2C так же фоторезитор на A5 и подцветка на D3
внешний модуль(он же балконный модуль) promini 3.3v si7021(I2C),nrf24l01(SPI)
(тут еще сейчас добавлен ds18d20(1wire) и свешен на улицу, в платку зарядки вставлена солнечная батарея на 6в и 300mA на фото этого нет)
на фото экран до конца не отлажен, 2004 с I2C (на фоне паялка, в похожем корпусе)
все библиотеки используются стандартные, библиотека для si7021 используется нета(библиотека SHT2x), надо переделать, но пока все время лень
батарея у балконного модуля используеться очень не оптимально, но там все время её подзаряжает солнечная батарея(без под зарядки аккума на 1800мА хвататет на 2 недели).
код от балконного модуля.
#include <SPI.h>
#include "RF24.h"
#include <Wire.h> //для sht21
#include <SHT2x.h> //для sht21
#include <OneWire.h> //для Ds18d20
#include <DallasTemperature.h> //для Ds18d20
OneWire oneWire(7); //ds18d20 висит на D7
DallasTemperature sensors(&oneWire);
const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала передачи
RF24 radio(9,10);
float msg[4];
float term, humi, Vop;
void setup(){
//============================================================Модуль NRF24
radio.begin(); // Включение модуля
radio.setAutoAck(1); // Установка режима подтверждения приема;
radio.setRetries(1,1); // Установка интервала и количества попыток
radio.setDataRate(RF24_250KBPS); // Устанавливаем скорость
radio.setPALevel(RF24_PA_MAX); // Установка максимальной мощности;
radio.setChannel(10); // Устанавливаем канал
radio.openWritingPipe(pipe); // Открываем канал передачи
//====================================================ds18b20
sensors.begin();
}
void loop(){
sensors.requestTemperatures(); //не помню для чего, год назад писал.
msg[0]=SHT2x.GetTemperature(); //температура
msg[1]=SHT2x.GetHumidity(); //влажность
msg[2]=sensors.getTempCByIndex(0); //температура с датчика на улице
msg[3]=(1.1*16368)/Vbg(); //напряжение питания ардуины
delay(5000);
radio.write(&msg, sizeof(msg)); //отправка
delay(5000);
}
//код для вычисления напряжения питания ардуины
int Vbg() {
ADMUX = (1<<REFS0)|(0<<REFS1)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(0<<MUX0);
long buffersamp=0;
for (int n=0x0; n<=0xff; n++ ) {
ADCSRA |= (1<<ADSC)|(1<<ADEN); //Starts a new conversion
while (bit_is_set(ADCSRA,ADSC));
buffersamp += ADC; }
buffersamp >>=4; //16368 full scale 14bit
ADCSRA &= ~(1 << ADEN); // отключаем АЦП
return buffersamp;
}
Код от приёмника с экраном
#include <Wire.h>
#include <TimeLib.h>
#include <DS3232RTC.h>
#include <LiquidCrystal_I2C.h>
#include <TimerOne.h>
#include <BMP085.h>
#include <SHT2x.h>
#include <SPI.h>
#include "RF24.h"
int ledi,led2;
int t=0;
BMP085 dps = BMP085();
long Temperature = 0, Pressure = 0, vl;
LiquidCrystal_I2C lcd(0x27,20,04);
const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала передачи
RF24 radio(9,10);
float msg[3];
void setup() {
Wire.begin();
lcd.begin();
lcd.backlight();
dps.init();
setSyncProvider(RTC.get);
radio.begin(); // Включение модуля
radio.setAutoAck(1); // Установка режима подтверждения приема;
radio.setDataRate(RF24_250KBPS); // Устанавливаем скорость
radio.setChannel(10); // Устанавливаем канал
radio.openReadingPipe(1,pipe); // Открываем 1 канал приема
radio.startListening(); // Начинаем слушать эфир
}
void loop() {
//приём данных с радио
if (radio.available()){
while (radio.available()){
radio.read(&msg, sizeof(msg));
}
}
t++; //таймер обновления экрана, иначе экран мерцает
if ( t > 200 ) {
t=0;
ledi=analogRead(A7); //фоторезистор для автояркости
led2=map(ledi, 1000, 400, 10, 250);
analogWrite(3, led2); //подсветка экрана на D3
//radio on
lcd.setCursor(0, 0);
lcd.print('t'); //температура с si7021
lcd.print(msg[0], 1);
lcd.write(0xDF); //значек градуса
lcd.print(' ');
lcd.print(msg[1],1); //влажность с si7021
lcd.print("%");
lcd.print(' ');
lcd.print(msg[2],2); //температура за окном с DS18D20
lcd.write(0xDF);
lcd.setCursor(10, 1);
lcd.print(msg[3],2); //напряжение питания
lcd.print("v");
//radio off
dps.getPressure(&Pressure);
dps.getTemperature(&Temperature);
lcd.setCursor(0, 1);
lcd.print(Pressure/133.3, 1); //давление с BPM280
lcd.setCursor(6, 1);
lcd.print(Temperature*0.1, 1); //темепература с BPM280
lcd.write(0xDF); //запись значка градуса
// lcd.print(SHT2x.GetHumidity()); //данные с si7021 подключенный по I2C, он отключен не используется
// lcd.print("%");
// lcd.setCursor(6, 2);
// lcd.print(SHT2x.GetTemperature(), 1);
// lcd.write(0xDF);
}
lcd.setCursor(0, 3); //часы
lcd2dig(hour());
lcd.print(":");
lcd2dig(minute());
lcd.print(":");
lcd2dig(second());
lcd.setCursor(10, 3); //дата
lcd2dig(day());
lcd.print(".");
lcd2dig(month());
lcd.print(".");
lcd2dig(year());
}
void lcd2dig (int num) {
if (num >= 0 && num < 10)
lcd.print("0");
lcd.print(num);
}
P.S. я не буду высылать библиотеки на почту, здесь нет никаких экзотических библиотек, все библиотеки обсалютно штатные. причём они обсалютно все описаны в скетче их все можно найти в менеджере библиотек в arduino ide
продолжаю свои злодения в сторону дома умного.
на просторах алиэкспресса был куплен esp-12e от lolin к нему был приделан si7021 и oled экран по i2c(D1 sdl, D2 sda ), так же прицепил nrf24l01(ногус D8 надо подтянуть резистором на 4.7ком к земле)
пока все выглядет так
балконный модуль используется тот же, в планах освоить mqtt и завести все в majodomo
скетч, ничего толком не упорядочено, так понакидано лиш бы проверить работу
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "RF24.h"
#define OLED_RESET D4
Adafruit_SSD1306 display(OLED_RESET);
#define maxString 64
char target[maxString + 1] = "";
#include <SI7021.h>
SI7021 sensor;
int t1;
long t,h;
#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала передачи
RF24 radio(2,15);
float msg[4];
void setup() {
Serial.begin(115200);
//============================================================Модуль NRF24
radio.begin(); // Включение модуля
radio.setAutoAck(1); // Установка режима подтверждения приема;
radio.setDataRate(RF24_250KBPS); // Устанавливаем скорость
radio.setChannel(10); // Устанавливаем канал
radio.openReadingPipe(1,pipe); // Открываем 1 канал приема
radio.startListening(); // Начинаем слушать эфир
display.cp437(true);
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
display.clearDisplay();
}
void loop() {
t1++;
if (radio.available()){
while (radio.available()){
radio.read(&msg, sizeof(msg));
}
}
if ( t1 > 20 ) {
h=sensor.getHumidityPercent();
t=sensor.getCelsiusHundredths()/100;
t1=0;
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println(utf8rus("температура влажность"));
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(17,9);
display.print(t); display.print ( (char) 176);//знак градуса display.print(" "); display.print(h); display.println("%");
display.print(msg[0]); display.print(" "); display.print(msg[1]); display.print(" "); display.print(msg[2]); display.print(" "); display.print(msg[3]);
display.display();
}
char *utf8rus(char *source)
{
int i,j,k;
unsigned char n;
char m[2] = { '0', '\0' };
strcpy(target, ""); k = strlen(source); i = j = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
break;
}
case 0xD1: {
n = source[i]; i++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
break;
}
}
}
m[0] = n; strcat(target, m);
j++; if (j >= maxString) break;
}
return target;
}
Та без разницы, если обеспечена надежность соединения. У провода она априори выше, но исключать узбека со стамеской нельзя. После применения данного девайса и замурованном проводе все проблемы с радиоканалом покажутся цветочками.)))) Все зависит от условий и места эксплуатации.
При замене DHT-11 на новый образец (2021 год) не работает динамическая индикация влажности. Видимо производитель поменял чип в датчике, хотя по всему видно, что и старый (2013 год) не мог работать с временем задержки 1000, или мне такой попался, не знаю, но новый датчик не инициализируется с задержкой 1000, а требует 2000. Вот и все. меняем строку в фрагменте
только минусовая температура по чему-то завышена
где-то на 2,5 градуса.
1. DHT-22 весьма неточный и капризный датчик. Какой экземпляр попадется. Если их у вас несколько попробуйте установить другой.
2. Если п.1 не помог, то дело в библиотеке. Подберите нужную для 22 модели. Та, которая применяется в этой конструкции не годится.
3. Если не помогает п.1 и п.2. делаем программную корректировку.
И самое главное что принято за эталон? Может датчик работает правильно?
Эталон обычный градусник
Простите, а о какой метеостанции идет речь? ОБ этой или какой то другой? Если об этой интересно увидеть
вариант с двумя DHT22 и LCD2004.
Похоже - это про мою со 137 поста.
vvg10 Так точно!
У меня уже 2,5 года работает на даче. Температуру показывает точно. Вероятно дело все-таки в датчике...
Знатоки подскажите как организовать работу модуля Ардуино про мини в ждущем режиме,чтоб секунд 10 модуль работал и минут 5 спал
Знатоки подскажите как организовать работу модуля Ардуино про мини в ждущем режиме,чтоб секунд 10 модуль работал и минут 5 спал
А так не пробовали?
delay()
Останавливает выполнение программы на заданное в параметре количество миллисекунд (1000 миллисекунд в 1 секунде).
Синтаксис
delay(ms)
Параметры
ms: количество миллисекунд, на которое приостанавливается выполнение программы. (unsigned long)
Помогите с библиотеками.Пожалуйста сбросьте на ow-oleg@mail.ru
Помогите с библиотеками.Пожалуйста сбросьте на ow-oleg@mail.ru
545 пост
Отправил с версией IDE без глюков на BMP
Попробуйте еще здесь https://yadi.sk/d/5m6E-afT3DZwvn
Честно говоря меня удивляет не ослабевающий интерес к этому очень простому и примитивному проекту. Четыре с половиной года интереса, хотя столько более интересных проектов опубликовано. У меня эта станция до сих пор трудится, правда вышел из строя модуль часов, и я был вынужден его заменить на новый. Перед этим я приобрел 10 штук часовых модулей и половину опробовал. Так вот хочу сказать, что теперешние, не знаю толи партия такая то ли производитель, но в сравнение по точности не идут с теми, пятилетней давности. Конечно для начинающих такой проект весьма подходящий. Правда я не вижу в продаже 328-х Ардуин именно в таком конструктиве, может не там смотрел.
Большое спасибо.Все получил, буду пробовать.
у меня вот так вышло, проэкт просто очень простой и легок для повторения
Внутрений модуль на радио от NFR24l01(SPI), bpm280(I2C), часы ds3231(I2C), был еще si7021(I2C, он переехал на балкон, но в коде он есть), nano от robotdyn, экран 2004 тоже на I2C так же фоторезитор на A5 и подцветка на D3
внешний модуль(он же балконный модуль) promini 3.3v si7021(I2C),nrf24l01(SPI)
(тут еще сейчас добавлен ds18d20(1wire) и свешен на улицу, в платку зарядки вставлена солнечная батарея на 6в и 300mA на фото этого нет)
на фото экран до конца не отлажен, 2004 с I2C (на фоне паялка, в похожем корпусе)
скинте скеч и библиотеки на fuck.you79@mail.ru
скинте скеч и библиотеки на fuck.you79@mail.ru
Да зачем на мейл,здесь разместите думаю многим интересно ))
скинте скеч и библиотеки на fuck.you79@mail.ru
Да зачем на мейл,здесь разместите думаю многим интересно ))
545 пост
скинте скеч и библиотеки на fuck.you79@mail.ru
Да зачем на мейл,здесь разместите думаю многим интересно ))
отправил, лови
Да я не библиотеки а про скетчи с радиомодулями,Woffko можете выложить ваши скетчи
все библиотеки используются стандартные, библиотека для si7021 используется нета(библиотека SHT2x), надо переделать, но пока все время лень
батарея у балконного модуля используеться очень не оптимально, но там все время её подзаряжает солнечная батарея(без под зарядки аккума на 1800мА хвататет на 2 недели).
код от балконного модуля.
Код от приёмника с экраном
P.S. я не буду высылать библиотеки на почту, здесь нет никаких экзотических библиотек, все библиотеки обсалютно штатные. причём они обсалютно все описаны в скетче их все можно найти в менеджере библиотек в arduino ide
Добрый день!
Замечательный проэкт если есть библиотеки на этот проэкт отправте пожалста на почту audi-s8k777pp@mail.ru зарания благодарин.
А можно вместо bpm085 поставить bpm280?????
у меня у самого стоит BPM280, библиотека от 085 подходит, у них кажется только точность самого датчика отличается
Пока Клапа не запретил, можно.
что-то задваиет форум собщения, это сообщение надо удалить
продолжаю свои злодения в сторону дома умного.
на просторах алиэкспресса был куплен esp-12e от lolin к нему был приделан si7021 и oled экран по i2c(D1 sdl, D2 sda ), так же прицепил nrf24l01(ногус D8 надо подтянуть резистором на 4.7ком к земле)
пока все выглядет так
балконный модуль используется тот же, в планах освоить mqtt и завести все в majodomo
скетч, ничего толком не упорядочено, так понакидано лиш бы проверить работу
Всем привет.
А подскажите какая станция будет самой точной? На каких комплектующих?
И хочется чтобы она меряла и погоду за бортом + по максимуму
Всем привет.
А подскажите какая станция будет самой точной? На каких комплектующих?
И хочется чтобы она меряла и погоду за бортом + по максимуму
Выбирайте. Думаю, что любая из них обладает достаточной точностью.
Выбирайте. Думаю, что любая из них обладает достаточной точностью.
Ну вы и Петросян) Подскажите, вы же поняли суть вопроса.
Как лучше передавать данные? провод/беспровод?
Как вам удобнее так и передавайте, среда передачи(буд-то прово иди радиоканал) на сами измерения не влияет.
Назвать эту поделку метеостанцией нельзя, ибо температура, влажность и давление это не метеостанция.
все характеристики датчиков, в том числи и точность можно найти в интернетах
si7021 https://www.silabs.com/documents/public/data-sheets/Si7021-A20.pdf
BMP280 http://www.hkmjd.com/Attachments/product/201401/52e1fb718c181.pdf
DHT22 https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf
DHT11 https://akizukidenshi.com/download/ds/aosong/DHT11.pdf
Как лучше передавать данные? провод/беспровод?
Та без разницы, если обеспечена надежность соединения. У провода она априори выше, но исключать узбека со стамеской нельзя. После применения данного девайса и замурованном проводе все проблемы с радиоканалом покажутся цветочками.)))) Все зависит от условий и места эксплуатации.
Отличная работа, Хочу собрат все комплектуючи имеются.
Прошу вислати библиотки vasilii48@mail.ruvasilii48@mail.ru
Спасибо!
Здравствуйте vvg10!
Я собрал Ваш проект “Метеостанция с часами, двумя датчиками температуры и влажности(улица-дом), датчиком давления, LCD 20x4.”
Arduino Uno v3, программа v1.0.5.
Метеостанция мне понравилась, запустилась.
Возникли некоторые вопросы, если можно я Вам задам:
По установи времени в DS1307 (часы идут).
//rtc.setTime(09, 32, 00); // Устанавливаем время 18:48:00
//rtc.setDate(02, 02, 2018); // Устанавливаем дату 06.12.2014
// раскомментируем для записи времени в RTC, после комментируем снова и еще раз прошиваем.
Я раскомментирую:
// //rtc.setTime(02, 02, 00);
// //rtc.setDate(02, 02, 2018); (изменение в скетче после “раскомментирую”)
Мне кажется не произошла раскомментирование. На примерах других
cкетчах строчка, которая раскомментировалась активировалась (изменяла цвет) и убирались “// “.
Ввел дату и время, выполнил “после комментируем снова и еще раз прошиваем”
Время и дата на часах не изменились.
Что я не так делаю?
Если я правильно понял, что корректировку часов можно произвести кнопкой NULL.
Я подключил ее к Arduino Uno v3 pin12(не знаю правильно или нет)
А как производить корректировку часов не знаю (форуме не нашел).
Убедительно прошу Вас объяснить (я в программировании почти “0”).
Василий. vasilii48@mail.ruvasilii48@mail.ru
//rtc.setTime(09, 32, 00); // Устанавливаем время 18:48:00
//rtc.setDate(02, 02, 2018); // Устанавливаем дату 06.12.2014
// раскомментируем для записи времени в RTC, после комментируем снова и еще раз прошиваем.
Я раскомментирую:
// //rtc.setTime(02, 02, 00);
// //rtc.setDate(02, 02, 2018); (изменение в скетче после “раскомментирую”)
Раскоментировать - значит убрать слеш
rtc.setTime(02, 02, 00);
rtc.setDate(02, 02, 2018)
yojik
Большое Вам сбасибо.
Все выставились.
Спасибо.
Занимаюсь метеостанцией VVG10. Скетч и библиотеки от VVG10. Компиляция выполнилась
На дисплее показывает время с датой, атмосферное давление температуру и важность
TnanCи Hum.nan, так как спалил DHT11. Получил датчики установил DHT11 ( R 10kк pin2)
Выполнил компиляцию (замечаний не было) загрузил, температура и влажность nan.
Открываю примеры DHTtest компилирую загружаю и открываю монитора порт
Status Humidity (%) Temperature (C) (F)
TIMEOUT nan nan nan
Согласно его скетча DHTподключаю pin 4 и pin5 (Цифровые входы-выходы)
dhta.setup(4); // подключение датчиков температуры и влажности
dhtb.setup(5);
Другие пробовал библиотеки не подошли.
Что надо подправить?
[Похоже - это про мою со 137 поста.
К сожалению, то, что лежало в яндексе, уже исчезло. Есть ли возможность повторить Ваш архив? Спасибо.
Монтаж выполнен на макетной плате. Распайка монтажным проводом.
Я специально показал рисунок со стороны пайки для тех кто захочет повторить.
Я так понял, что провод МГТФ? Если да, то как зачищал/залуживал? Механически или в паяльной ванной??
МГТФ. Скальпелечком зачищал, паяльничком лудил и паял. Все по старинке, дружище.
До сих пор трудится с 2013 года.
Монтаж выполнен на макетной плате. Распайка монтажным проводом.
Я специально показал рисунок со стороны пайки для тех кто захочет повторить.
Не, на такое я уже не способен... Повторю ка студенческую самоделку (МГТФ-а у меня много).
Это ванна лудильно-зачистная только для МГТФ: 1кОм зелёный резистор, заглушенный с одной стороны напрямую в 220В. В нём припой.
Пробовал аналогичное с помощью свечки - температуры не хватает и МГТФ не зачищается, не съёживается изоляция.
Не, на такое я уже не способен... Повторю ка студенческую самоделку (МГТФ-а у меня много).
Это ванна лудильно-зачистная только для МГТФ: 1кОм зелёный резистор, заглушенный с одной стороны напрямую в 220В. В нём припой.
Пробовал аналогичное с помощью свечки - температуры не хватает и МГТФ не зачищается, не съёживается изоляция.
снимаю изоляцию кримпером, окунаю кончик во флюс и облуживаю паяльником, при этом шелковая оплетка сгорает сама
да ладно скромничать. радиолюбитель всегда радиолюбитель. мне уже 7-й десяток и ничего скальпельком зачищаю
да ладно скромничать. радиолюбитель всегда радиолюбитель. мне уже 7-й десяток и ничего скальпельком зачищаю
"А девкой всё же краше )))"
Доброго времени суток, хотелось бы повторить данную метеостанцию, не могли бы скинуть библиотеки на почту qwe6qwe9qwe@mail.ru
Кому еще интересна эта тема.
При замене DHT-11 на новый образец (2021 год) не работает динамическая индикация влажности. Видимо производитель поменял чип в датчике, хотя по всему видно, что и старый (2013 год) не мог работать с временем задержки 1000, или мне такой попался, не знаю, но новый датчик не инициализируется с задержкой 1000, а требует 2000. Вот и все. меняем строку в фрагменте