BME280
- Войдите на сайт для отправки комментариев
Может кому пригодиться. LCD 1602 + Mega 2560+BME280
скетч:
#include <LiquidCrystal.h>
#include <stdint.h>
#include "SparkFunBME280.h"
BME280 mySensor;
LiquidCrystal lcd(12,11,5,4,3,2);
uint8_t time[8];
unsigned int recv_size = 0;
unsigned long prev,
interval = 1000;
int led = 13;
byte smile[8] =
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
void setup()
{
lcd.begin(16, 2);
lcd.createChar(1, smile);
lcd.clear();
pinMode(led,OUTPUT);
digitalWrite (led, LOW);
mySensor.settings.commInterface = I2C_MODE;
mySensor.settings.I2CAddress = 0x76;
mySensor.settings.runMode = 3;
mySensor.settings.tStandby = 0;
mySensor.settings.filter = 0;
mySensor.settings.tempOverSample = 1;
mySensor.settings.pressOverSample = 1;
mySensor.settings.humidOverSample = 1;
{
lcd.print("Program Started\n");
lcd.print(mySensor.begin(),HEX);
delay(10);
}
}
void loop()
{
mySensor.readTempC();
lcd.setCursor(0,0);
lcd.print("Press:");
lcd.print((uint32_t)mySensor.readFloatPressure()/133.3);
lcd.print("mmHg");
lcd.setCursor(0,1);
lcd.print("Humid:");
lcd.print((uint8_t)mySensor.readFloatHumidity());
lcd.print("% ");
lcd.print(mySensor.readTempC(),1);
lcd.print("\1");
lcd.print("C");
delay(1000);
}
Мой вариант Arduino Uno + BME280 + OLED LCD 0.96"
А где же "Pressure". :-)
Здесь!
Только не забыть добавить новый "VIEW3" в функцию переключения.
Здравствуйте! А может кто нибудь оказать помощь со скетчем для такой конфигурации:
TFT SPI ILI9341 240x320 + Pro Mini 328 + BME280 + DS3231?
Что же, так никто и не поможет :(
Что же, так никто и не поможет :(
Для того, что бы помочь нужно как минимум время и такое же "железо".
готового вам врядли кто даст, поэтому начните разбираться со всеми деталями по отдельности, а потом собирете все в кучку , если будут какие проблемы думаю на форуме вам подскажут кто что знает
Понял, спасибо буду пробовать свм, просто я совсем не программист и с ардуино только начинаю знакомиться.
Еще один скейтч для LCD 1602 + Mega 2560+BME280 с выводом более точных данных, но меньшим по объему:
[code]
#include <Wire.h>
#include <LiquidCrystal.h>
#define BME280_ADDRESS 0x76
unsigned long int hum_raw,temp_raw,pres_raw;
signed long int t_fine;
LiquidCrystal lcd(6,7,8,9,10,11);
int led = 13;
byte gradus[8] =
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
uint16_t dig_T1;
int16_t dig_T2;
int16_t dig_T3;
uint16_t dig_P1;
int16_t dig_P2;
int16_t dig_P3;
int16_t dig_P4;
int16_t dig_P5;
int16_t dig_P6;
int16_t dig_P7;
int16_t dig_P8;
int16_t dig_P9;
int8_t dig_H1;
int16_t dig_H2;
int8_t dig_H3;
int16_t dig_H4;
int16_t dig_H5;
int8_t dig_H6;
void setup()
{
lcd.begin(16, 2);
lcd.createChar(1, gradus);
lcd.clear();
pinMode(led,OUTPUT);
digitalWrite (led, LOW);
uint8_t osrs_t = 1; //Temperature oversampling x 1
uint8_t osrs_p = 1; //Pressure oversampling x 1
uint8_t osrs_h = 1; //Humidity oversampling x 1
uint8_t mode = 3; //Normal mode
uint8_t t_sb = 5; //Tstandby 1000ms
uint8_t filter = 0; //Filter off
uint8_t spi3w_en = 0; //3-wire SPI Disable
uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mode;
uint8_t config_reg = (t_sb << 5) | (filter << 2) | spi3w_en;
uint8_t ctrl_hum_reg = osrs_h;
Wire.begin();
writeReg(0xF2,ctrl_hum_reg);
writeReg(0xF4,ctrl_meas_reg);
writeReg(0xF5,config_reg);
readTrim();
}
void loop()
{
double temp_act = 0, press_act = 0,hum_act=0;
signed long int temp_cal;
unsigned long int press_cal,hum_cal;
readData();
temp_cal = calibration_T(temp_raw);
press_cal = calibration_P(pres_raw);
hum_cal = calibration_H(hum_raw);
temp_act = (double)temp_cal / 100.0;
press_act = (double)press_cal / 133.3;
hum_act = (double)hum_cal / 1024.0;
lcd.setCursor(0,0);
lcd.print("Humidi: ");
lcd.print(hum_act);
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print(press_act);
lcd.print("mm ");
lcd.print(temp_act);
lcd.print("\1");
lcd.print("C");
delay(1000);
}
void readTrim()
{
uint8_t data[32],i=0; // Fix 2014/04/06
Wire.beginTransmission(BME280_ADDRESS);
Wire.write(0x88);
Wire.endTransmission();
Wire.requestFrom(BME280_ADDRESS,24); // Fix 2014/04/06
while(Wire.available()){
data[i] = Wire.read();
i++;
}
Wire.beginTransmission(BME280_ADDRESS); // Add 2014/04/06
Wire.write(0xA1); // Add 2014/04/06
Wire.endTransmission(); // Add 2014/04/06
Wire.requestFrom(BME280_ADDRESS,1); // Add 2014/04/06
data[i] = Wire.read(); // Add 2014/04/06
i++; // Add 2014/04/06
Wire.beginTransmission(BME280_ADDRESS);
Wire.write(0xE1);
Wire.endTransmission();
Wire.requestFrom(BME280_ADDRESS,7); // Fix 2014/04/06
while(Wire.available()){
data[i] = Wire.read();
i++;
}
dig_T1 = (data[1] << 8) | data[0];
dig_T2 = (data[3] << 8) | data[2];
dig_T3 = (data[5] << 8) | data[4];
dig_P1 = (data[7] << 8) | data[6];
dig_P2 = (data[9] << 8) | data[8];
dig_P3 = (data[11]<< 8) | data[10];
dig_P4 = (data[13]<< 8) | data[12];
dig_P5 = (data[15]<< 8) | data[14];
dig_P6 = (data[17]<< 8) | data[16];
dig_P7 = (data[19]<< 8) | data[18];
dig_P8 = (data[21]<< 8) | data[20];
dig_P9 = (data[23]<< 8) | data[22];
dig_H1 = data[24];
dig_H2 = (data[26]<< 8) | data[25];
dig_H3 = data[27];
dig_H4 = (data[28]<< 4) | (0x0F & data[29]);
dig_H5 = (data[30] << 4) | ((data[29] >> 4) & 0x0F); // Fix 2014/04/06
dig_H6 = data[31]; // Fix 2014/04/06
}
void writeReg(uint8_t reg_address, uint8_t data)
{
Wire.beginTransmission(BME280_ADDRESS);
Wire.write(reg_address);
Wire.write(data);
Wire.endTransmission();
}
void readData()
{
int i = 0;
uint32_t data[8];
Wire.beginTransmission(BME280_ADDRESS);
Wire.write(0xF7);
Wire.endTransmission();
Wire.requestFrom(BME280_ADDRESS,8);
while(Wire.available()){
data[i] = Wire.read();
i++;
}
pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4);
temp_raw = (data[3] << 12) | (data[4] << 4) | (data[5] >> 4);
hum_raw = (data[6] << 8) | data[7];
}
signed long int calibration_T(signed long int adc_T)
{
signed long int var1, var2, T;
var1 = ((((adc_T >> 3) - ((signed long int)dig_T1<<1))) * ((signed long int)dig_T2)) >> 11;
var2 = (((((adc_T >> 4) - ((signed long int)dig_T1)) * ((adc_T>>4) - ((signed long int)dig_T1))) >> 12) * ((signed long int)dig_T3)) >> 14;
t_fine = var1 + var2;
T = (t_fine * 5 + 128) >> 8;
return T;
}
unsigned long int calibration_P(signed long int adc_P)
{
signed long int var1, var2;
unsigned long int P;
var1 = (((signed long int)t_fine)>>1) - (signed long int)64000;
var2 = (((var1>>2) * (var1>>2)) >> 11) * ((signed long int)dig_P6);
var2 = var2 + ((var1*((signed long int)dig_P5))<<1);
var2 = (var2>>2)+(((signed long int)dig_P4)<<16);
var1 = (((dig_P3 * (((var1>>2)*(var1>>2)) >> 13)) >>3) + ((((signed long int)dig_P2) * var1)>>1))>>18;
var1 = ((((32768+var1))*((signed long int)dig_P1))>>15);
if (var1 == 0)
{
return 0;
}
P = (((unsigned long int)(((signed long int)1048576)-adc_P)-(var2>>12)))*3125;
if(P<0x80000000)
{
P = (P << 1) / ((unsigned long int) var1);
}
else
{
P = (P / (unsigned long int)var1) * 2;
}
var1 = (((signed long int)dig_P9) * ((signed long int)(((P>>3) * (P>>3))>>13)))>>12;
var2 = (((signed long int)(P>>2)) * ((signed long int)dig_P8))>>13;
P = (unsigned long int)((signed long int)P + ((var1 + var2 + dig_P7) >> 4));
return P;
}
unsigned long int calibration_H(signed long int adc_H)
{
signed long int v_x1;
v_x1 = (t_fine - ((signed long int)76800));
v_x1 = (((((adc_H << 14) -(((signed long int)dig_H4) << 20) - (((signed long int)dig_H5) * v_x1)) +
((signed long int)16384)) >> 15) * (((((((v_x1 * ((signed long int)dig_H6)) >> 10) *
(((v_x1 * ((signed long int)dig_H3)) >> 11) + ((signed long int) 32768))) >> 10) + (( signed long int)2097152)) *
((signed long int) dig_H2) + 8192) >> 14));
v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((signed long int)dig_H1)) >> 4));
v_x1 = (v_x1 < 0 ? 0 : v_x1);
v_x1 = (v_x1 > 419430400 ? 419430400 : v_x1);
return (unsigned long int)(v_x1 >> 12);
}
[/code]
Нарыл у себя в загажниках дисплейчик от Нокии 3310 и решил собрать портативный вариант барометра с часиками- LCD3310+Nano_V3+BME280+DS3231. Получилось довольно таки неплохо:
Потом можно добавить и кирилицу.
Здравствуйте!
Пожалуйста помогите. Интересуюсь аппаратной платформой ардуино. (пока в этом деле полный нуль).
Имеется arduino uno (arduino mega 2560) , датчик bme 280, жк LCD 1602 (HD 44780) с конвертером (модулем) IIC/I2C.
Датчик, такой https://ru.aliexpress.com/item/BME280-Pressure-Temperature-Sensor-Module-with-IIC-I2C-for-Arduino-FZ1639/32398240334.html
Подключил датчик bme 280 по I2C к ардуино мега, использовал скетч, из документации к датчику https://www.adrive.com/public/9jZ4Wq/FZ1639-GY-BME280.rar
#include <Wire.h>
Спасибо. Не нужно. Разобрался сам. Скетч, в моем случае:
#include <Wire.h>
LCD3310 решил заменить на LCD3410, в связи с тем, что у второго выше разрешение и на два столбика больше:
Подскажите пожалуйста новичку.
При компиляции скетча для BMP280 всё время выскакивает ошибка такого примерно вида:
Adafruit_Sensor.hи Adafruit_BMP280.h разные вещи
Adafruit_Sensor.hи Adafruit_BMP280.h разные вещи
Для Adafruit_BMP280. та же история "Ошибка компиляции для платы Arduino Nano", затык опять на
Adafruit_Sensor.h
Странно, что другие скетчи спокойно загружаются в Ардуино. Какой-то подвох.
Компилятор ругается на отсутвие библиотеки. Попробуйте вручную положить файлы в папку
Добрый день!
Собрал несколько мини-погодных станций в распредкоробках. Начинка: arduino uno + bme280 + lcd1602 i2c + батарейка крона 9в + выключатель клавишный(для включения и выключения) + тумблер к контактам подсветки дисплея( для отключения подсветки). Питание подается соответствено на разъемы Vin и GND.
Скетч приведен выше. Ардуино, как по ссылке https://ru.aliexpress.com/item/UNO-R3-CH340G-ATmega328P-compatible-for-Arduino-UNO-R3/32523366108.html?spm=2114.30010708.3.364.lZwyxx&ws_ab_test=searchweb0_0,searchweb201602_1_116_10065_117_10068_114_115_10069_113_10017_10080_10082_10081_10060_10061_10062_10039_10056_10055_10054_10059_10078_10079_10073_10070_421_420_10052_10053_10050_10051,searchweb201603_1&btsid=904364f4-0a78-4e1f-b492-b7f6094388e8
Все было Ок. Недавно собрал еще один экземпляр столкнулся со странным глюком. При включении загорается экран, загрузчик не стартует, пока не нажмешь reset на плате или выключатель не до конца нажмешь на выключение и отпустишь... При этом от юсб и блока питания все стартует ОК.
Не пойму, что не так?.. Пробовал, ставить конденсатор 100 мкфХ16В на питание от кроны, лучше,но стартует через раз...
На предыдущих собранных мини погодных станций все стартует от кроны 9В без проблем.
Подскажите чем вылечить данный глюк?..
для начала выкинуть крону и никогда её не использовать
пользуйтесь аккумуляторами
Добрый день! Столкнулся с такой ситуацией, попалось пару датчиков bme280, которые завышают атмосферное давление примерно на 1 мм. рт. ст. (тестировал в помещении, при плюсовой температуре, за эталон - брал значения у местной метеостанции, живу с ней рядом, на одном уровне по высоте). Причем у двух датчиков bme280 показания температуры и влажности почти идентичны, а вот с давлением - разница в 1 мм. рт. ст., что превышает абсолютную погрешность в диапазоне измерений 300-1100 гПа при температуре 0-65 С ,по даташиту: -+ 1 гПа (0,75 мм. рт. ст.) https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf
Помогите, как отредактировать скетч, чтоб контроллер отнимал 1 гПа (который завышает, в моем случае) от показаний давления.
скетч:
Спасибо, не надо, разобрался сам. (Строка 097)
Скетч, с корректировкой давления ( минус 1 гПа от показаний):
Здравствуйте,
подскажите где скачать SparkFunBME280.h
А то что то гугл наверное на меня обиделся и не делится где взять...
Здравствуйте,
подскажите где скачать SparkFunBME280.h
А то что то гугл наверное на меня обиделся и не делится где взять...
Да хотя бы здесь: https://github.com/sparkfun/SparkFun_BME280_Arduino_Library .
подскажите где скачать SparkFunBME280.h
А то что то гугл наверное на меня обиделся и не делится где взять...
У вас какой-то особенный гугл? Сходу первые две ссылки на гитхаб:
Джентельмены, сами мы не местные, подскажите, кто может :)
Собрал погодную станцию на основе датчика BME280. Запихнул в коробочку, высунул за окно. Рядом висит обычный градусник. Обратил внимание, что температура на BME280 сильно отличается от обычного термометра. Например сейчас на градуснике +2, на BME + 10. 8 градусов разницы!!! Кто-то явно врёт.
Для проверки воткнул рядом с BME280 другой датчик AM2320. Просто он у меня был под рукой, и удобно, что тоже I2C. Так он ещё большую температуру показывает. Сейчас +15.
И вот что мне делать с такими результатами эксперимента? Как понять кто врёт? И почему...
Возьмите точный термометр и посмотрите настоящую температуру.
А что это за точный термометр? Где такие берут?
БМЕшку себе под мышку и наступит момент истины)))
А что это за точный термометр? Где такие берут?
Наиболее дешевый и доступный - ртутный медицинский термометр.
Джентельмены, сами мы не местные, подскажите, кто может :)
Собрал погодную станцию на основе датчика BME280. Запихнул в коробочку, высунул за окно. Рядом висит обычный градусник. Обратил внимание, что температура на BME280 сильно отличается от обычного термометра. Например сейчас на градуснике +2, на BME + 10. 8 градусов разницы!!! Кто-то явно врёт.
Для проверки воткнул рядом с BME280 другой датчик AM2320. Просто он у меня был под рукой, и удобно, что тоже I2C. Так он ещё большую температуру показывает. Сейчас +15.
И вот что мне делать с такими результатами эксперимента? Как понять кто врёт? И почему...
1. Датчик BME280 необходимо выносить подальше от всяких корпусов, подоконников и др. нагретых предметов
2. Может у Вас термометр в тени, а на датчик BME280 попадают прямые солнечные лучи
3. Датчик BME280 должен остыть до показаний среды, если его перенесли с одного места в другое.
4. Проверяйте соединения
БМЕшку себе под мышку и наступит момент истины)))
Провёл такой эксперимент. Замер производил по 10 минут на датчик. Am2320 показал 36,4, BME280 показал 37,8. То есть теперь он врёт в большую сторону.
1. Датчик BME280 необходимо выносить подальше от всяких корпусов, подоконников и др. нагретых предметов
2. Может у Вас термометр в тени, а на датчик BME280 попадают прямые солнечные лучи
3. Датчик BME280 должен остыть до показаний среды, если его перенесли с одного места в другое.
4. Проверяйте соединения
Датчик висит рядом с термометром. Условия освещённости одинаковые. Кроме того, датчик висел за коном несколько дней и ночей. А ночью освещённость (в связи с её отсутствием) не должна влиять на показания. Тем не менее, когда термометр показывал минус, BME280 стабильно показывал порядка +2 градусов. А уж остыть он за несколько часов точно должен был.
А что не так может быть с соединениями? Ведь если бы где-то не было контакта, то показания бы просто не передавались?
1.В идеале плата датчика должна быть защищена от осадков, (конденсации влаги), насекомых (т.к. они проводят эл. ток) - можно получить К.З. и выход устройства из строя...
2. Укажите скетч, схему подключения, ссылку на датчик где покупали, напряжение подаете какое: 3,3V ? (есть платы без преобразователя напряжения, которые нужно питать строго 3,3V , а если стоит преоброзователь напряжения на плате, то можно и 5v подать).
3. Какие провода для соединений используете?(фото в студию). А то вдруг, у вас
Кабель ВВГнг 4х25... :)
В диапазоне измерений -40...85 С максимальная погрешность 3,65 С (согласно даташиту).
В диапазоне измерений 0...65 С погрешность 1 С (согласно даташиту)
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf
БМЕшку себе под мышку и наступит момент истины)))
Провёл такой эксперимент. Замер производил по 10 минут на датчик. Am2320 показал 36,4, BME280 показал 37,8. То есть теперь он врёт в большую сторону.
Либо у Вас ОРЗ, либо датчик здорово брешет. По другим постам - ночью освещенность имеется тоже (инфракрасное от стены), здесь уже зависит от многих факторов (основные: расстояние от стены и сколько переизлучающих пар, поверхность-поверхность, между датчиком и излучением). Снивелировать возможно расстоянием (самое надежное) или установкой препятствий для излучения (например два слоя пенопласта с воздушным зазором между ними), но там начнет влиять конвекционное от стены, если вы не на первом этаже живете.
Либо у Вас ОРЗ, либо датчик здорово брешет. По другим постам - ночью освещенность имеется тоже (инфракрасное от стены), здесь уже зависит от многих факторов (основные: расстояние от стены и сколько переизлучающих пар, поверхность-поверхность, между датчиком и излучением). Снивелировать возможно расстоянием (самое надежное) или установкой препятствий для излучения (например два слоя пенопласта с воздушным зазором между ними), но там начнет влиять конвекционное от стены, если вы не на первом этаже живете.
Ртутный термометр показал 36,7. Просто я не написал об этом. От стены конечно есть ИК-излучение. Но ведь градусник тоже расположен в таких же условиях. Неужели на датчик это ИК так сильно влияет в большую сторону? Оба закреплены на раме окна.
"переизлучающих пар, поверхность-поверхность, между датчиком и излучением"
Датчик весьма маленький по габаритам и сильнее реагирует на внешние воздействия. Чтобы более - менее понять где роется собака, берем типа обувной коробки, на низ пенопласт или что то малопроводящее температуру, укладываем в эту коробку наши датчики и ставим на стол в середине комнаты (сквозняки постараться все убрать). Через пару часиков смотрим что получилось.
10 градусов это конечно фигня, что то еще влияет.
Здравствуйте
Извените может я не зню чеог то элементерного но...
Мне теперь это скопитьвать в текстовый файл и назвать его SparkFunBME280.h
выходишь в корень
sparkfun/SparkFun_BME280_Breakout_Board
clone or download
и будет тебе счастье в виде архива. потом заходишьв иде и подключаешь архив с библиотекой
профит!
потом заходишь в иде и подключаешь архив с библиотекой профит!
Через IDE подключить не получится, т.к. гитхаб в названии добавляет "-master" (а дефисы в названии библиотек недопустимы). Нужно вручную распаковать папку из архива, удалить из названия "-master" и закинуть папку в Мои документы\Arduino\libraries\
Походу в новых версиях IDE это пофиксили. Проверил на 1.0.5 - не импортирует, ругается на спецсимволы в названии. Также проверил на 1.6.6 - всё получилось.
Но это не спасёт вопрошающего. Т.к. конкретно в этом архиве с гитхаба находится не только библиотека, но и другие папки и файлы (документация, лицензия и т.д.). IDE ругается на некорректную структуру папки с библиотекой. И такое часто бывает.
Почему бы тогда не взять библиотеку от Adafruit? Или библиотека Sparkfun чем-то предпотительней?
Sparkfun попроще и ничего лишнего.
Ну а в чем проблема удалить все лишнее?
Походу в новых версиях IDE это пофиксили. Проверил на 1.0.5 - не импортирует, ругается на спецсимволы в названии. Также проверил на 1.6.6 - всё получилось.
https://drive.google.com/open?id=0B_QyIDOQj1uIUFBjWHgtOHNzRzg
А в чём смысл использования таких древних версий IDE?
у меня две стоит одновременно. есть вещи которые по разному себя ведут в зависимости от версии
А в чём смысл использования таких древних версий IDE?
Ну, Вы знаете, людям свойственно приписывать всему старому самые замечательные свойства :)
Если бы Вы часто бывали на хоккейных стадионах и были бы примерно моего возрата, то наверняка согласились бы с моим мнением: "Вот лет сорок назад ... и лёд блестел ярче, и шайбы лучше скользили, и девки на трибунах пофигуристее были" :)
То же самое, например, на любом форуме. Как только переходят на новый движок, эпоха старого становится легендарной ... "вот тогда типа посты были, а сейчас измельчало всё".
Очень здорово эту тему раскрыл А. Зиновьев в "Зияющих высотах". Позволю себе привести пространную цитату, чтобы Вы могли насладиться тонкой философичностью автора (букв много, кому неинтересно - не читайте, .... может мне таки присвоят звание "заслуженного флудераста", а то просил-просил ... динамят :)))
Итак, цитата из А. Зиновьева:
Ну, вот, надеюсь, Вы поняли о чём это я :)
смысл вот как раз в непонимании старой версии имен библиотек с символами:) мне лень проекты перитаскивать, вот теперь две иде на компе. П.С. я за все "новое", но с офф сайта
1.В идеале плата датчика должна быть защищена от осадков, (конденсации влаги), насекомых (т.к. они проводят эл. ток) - можно получить К.З. и выход устройства из строя...
2. Укажите скетч, схему подключения, ссылку на датчик где покупали, напряжение подаете какое: 3,3V ? (есть платы без преобразователя напряжения, которые нужно питать строго 3,3V , а если стоит преоброзователь напряжения на плате, то можно и 5v подать).
3. Какие провода для соединений используете?(фото в студию). А то вдруг, у вас
Кабель ВВГнг 4х25... :)
В диапазоне измерений -40...85 С максимальная погрешность 3,65 С (согласно даташиту).
В диапазоне измерений 0...65 С погрешность 1 С (согласно даташиту)
https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf
1. Про защиту от осадков пока вопос открытый пока использую просто пластиковый контейнер с мелкими дырочками для вентиляции. Насекомых думаю не стоит особо опасаться. Особенно на 6-м этаже. У нас их тут в принципе мало.
2. Схему подключения нарисовал. Правда в библиотеке не было моего модуля. Поставил какой был. У меня такой. На нём явно есть стабилизатор. Значит питать можно от 5 вольт. Скетч прилагаю.
3. Провода обычные... Для макетки. Вот фото в сборе.
4. Вообще конечно погрешность грустная. Вряд ли такой модуль подходит для уличного термометра...