Погодная станция на arduino своими руками

Погодная станция на arduino своими рукамиДавайте в этой статье постараемся собрать интересное устройство на основе набора Arduino — метеорологическую станцию, которая может показать: температуру окружающей среды, влажность, давление, качество воздуха и другие данные, которые могут быть использованы для прогнозирования погоды не выходя из дома.

Предлагаемая схема метеостанции строится на Arduino, который является мозгом метеорологической станции. Она собирает данные от различных датчиков, обрабатывает их и отображает на ЖК-дисплее 16 х 2.

  • Вы можете выбрать любой ардуино для этого проекта.
  • Цепь состоит из трех датчиков типа MQ-135, BMP180 и в dht11.
  • Давайте посмотрим работу каждого датчика подробнее.

Датчик MQ-135

Погодная станция на arduino своими руками

Датчик MQ-135 показывает качество воздуха. Измерительный датчик может обнаружить углекислый газ, спирт, бензин, дым, бутан, пропан и т. д. Если химическая концентрация этих газов присутствует в воздухе, то можно сказать, что воздух загрязнен.

Датчик может обнаружить изменения концентрации загрязняющих веществ в воздухе и выдает необходимый уровень напряжения. Выходное напряжение датчика прямо пропорционально уровню концентрации химических веществ в воздухе.

Изменения напряжения от датчика поступает к Arduino. Мы устанавливаем пороговые уровни в программе. Когда напряжение превышает порог уровня, микроконтроллер сообщает загрязнён ли воздух или нет.

На рисунке выше показана схема подключения. Этому датчику необходимо внешнее 5V питание, поскольку он имеет нагревательный элемент внутри датчика, который потребляет около 1 ватта.

Питание от Arduino не может обеспечить больший ток.

Нагрев датчика занимает около пары минут для достижения оптимальной температуры.

Датчик dht11

Погодная станция на arduino своими руками

Датчик dht11 является известный как датчик температуры и влажности.

Это 4-контактный устройство, но используется только 3 из них. Он может показаться очень простой, но внутри он имеет микроконтроллер, который передает данные в цифровом виде для Arduino.

Схема подключения датчика к Arduino очень проста. Выход датчика подключается к контакту А1 ардуино. На vcc питания и GND подключены к выводам питания поставка ардуино.

Примечание: пожалуйста, убедитесь, что ваш датчик имеет встроенный резистор. Если его нет, подключите 4,7 ком резистор с выхода датчика dht11.

Датчик BMP180

Погодная станция на arduino своими руками

Датчик BMP180 является барометрический датчик. Он может измерять атмосферное давление, высоту и температуру. Измерение температуры с этого датчика можно пренебречь, так как у нас есть специальный датчик для измерения температуры окружающей среды.

Датчик измеряет высоту установки над уровнем моря. Он использует протокол связи I2C, SDA pin идет на А4 ардуино и SCL идет на А5 ардуино. Vcc и GND подключены к выводам питания питания ардуино.

LCD дисплей

Погодная станция на arduino своими руками

ЖК-дисплей показывает все данные от датчиков. Связь между ЖК-дисплеем и ардуино является стандартным. Отрегулируйте потенциометром 10К для оптимальной яркости ЖК-дисплея.

Внешний вид подключений

Вот схема подключения всех датчиков станции к плате Arduino.

Погодная станция на arduino своими руками

Программа:

#include
#include
#include
#include
#define DHTxxPIN A1
LiquidCrystal lcd(12,11,5,4,3,2);
dht DHT;
Adafruit_BMP085 bmp;
int ack;
int input = A0;
unsigned long A = 1000L;
unsigned long B = A * 60;
unsigned long C = B * 2;
int low = 300;
int med = 500;
int high = 700;
int x = 4000;
void setup()
{
Serial.begin(9600);
lcd.

begin(16,2);
lcd.setCursor(0,0);
lcd.print(«Sensors are»);
lcd.setCursor(0,1);
lcd.print(«getting ready»);
delay(C);
}
void loop()
{
ack=0;
int chk = DHT.read11(DHTxxPIN);
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1;
break;
}
if(ack==0)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«Temp(*C)= «);
lcd.print(DHT.temperature);
lcd.

setCursor(0,1);
lcd.print(«Humidity(%) = «);
lcd.print(DHT.humidity);
delay(x);
}
if(ack==1)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«NO DATA»);
lcd.setCursor(0,1);
lcd.print(«Check Sensor»);
delay(x);
}
if (!bmp.begin())
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«BMP180 sensor»);
lcd.setCursor(0,1);
lcd.

print(«not found»);
while (1) {}
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«—-Pressure—-  «);
lcd.setCursor(0,1);
lcd.print(bmp.readPressure());
lcd.print(»  Pascal»);
delay(x);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«—-Altitude—-«);
lcd.setCursor(0,1);
lcd.print(bmp.readAltitude(101500));
lcd.

print(»  meter»);
delay(x);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(»  Air Quality:»);
if(analogRead(input)==0)
{
lcd.setCursor(0,1);
lcd.print(»  Sensor Error»);
delay(x);
}
if(analogRead(input)0)
{
lcd.setCursor(0,1);
lcd.

print(»      GOOD»);
delay(x);
}
if(analogRead(input)>low && analogRead(input)=med && analogRead(input)=high)
{
lcd.setCursor(0,1);
lcd.print(»     WORST»);
delay(x);
}

  1. }
  2. Здесь можно бесплатно скачать библиотеку с кодами для работы датчиков
  3. By Girish Radhakrishnan

Погодная станция на arduino своими руками

  • Частотомер на PIC16F628А своими руками
  • Погодная станция на arduino своими рукамиОдним из приборов-помощников радиолюбителя должен быть частотомер. С его помощью легко обнаружить неисправность генератора, измерить и подстроить частоту. Генераторы очень часто встречаются в схемах. Это приемники и передатчики, часы и частотомеры, металлоискатели и различные автоматы световых эффектов…
    Подробнее…

  • Микроконтроллерное управление для морозильной камеры Атлант
  • Переводим морозильную камеру Атлант 7184 на микроконтроллерное управление

    Погодная станция на arduino своими рукамиСначала в проекте использовал твердотельное реле, но потом двигатель перестал им управляться. Поставил простое электромагнитное, жду из Китая еще твердотельное.
    С рождением первого ребенка встал вопрос о покупке морозильной камеры, потому что объема заморозки холодильника на зиму уже не хватало. В магазине посоветовали Атлант 7184.
    Сначала все радовались, но со временем начал замечать странную ее работу: поработает минут 5-7 и через 10 опять включается.
    Подробнее…

  • Световой меч своими руками
  • Погодная станция на arduino своими рукамиСветово́й меч (англ. Lightsaber) — это фантастическое оружие многим известно по фантастической саге «Звёздные войны». Его можно встретить в научно-фантастических фильмах и рассказах.
    В интернете много статей о том, как собрать световой меч. Они в основном на одном принципе: размещение в длинной трубе разноцветных светодиодов. Тем самым имитируют лазерный луч. Но нигде не встречается имитация звука этого луча.
    Подробнее…

Популярность: 5 059 просм.

Источник: http://www.MasterVintik.ru/meteostantsiya-iz-arduino/

Миниметеостанция на Arduino в телефоне | Каталог самоделок

Сейчас на Arduino продается множество разнообразных датчиков, и хотя точность их измерений желает желать лучшего, но для домашнего использования они вполне годятся.

В исключительном случае, если вы увлекаетесь метеорологией, вам может понадобиться более сложная и дорогостоящее оборудование.

Готовое устройство, такое как Weather Meters, напичканное анемометром, флюгером, измерителем количества осадков, которое остается лишь подключить через RJ11 интерфейс к Arduino для работы, в полной мере оценят только метеорологи, диспетчеры или агрономы.

Возможности самодельной метеостанции:

  1. Измерение текущей температуры в доме, на улице.
  2. Показания влажности воздуха.
  3. Отслеживание атмосферного давления.
  4. Вывод всех данных на экран телефона в реальном времени.

Перечень необходимых компонентов:

  1. Плата Arduino Uno, mini, nano с процессором ATmega 168, ATmega 328.
  2. Bluetooth модуль HC-05. Погодная станция на arduino своими руками
  3. Датчик давления BMP180 — более экономное и точное устройство своей устаревшей версии BMP085. Погодная станция на arduino своими руками
  4. Датчик влажности DHT22 — отличается от DHT11 большей точностью и расширенным диапазоном измерений. Температуру он меряет также неточно, с чувствительностью 0.5 °С, хотя уже от –40 до + 125 °С, а не от 0 до +50 °С. Погодная станция на arduino своими руками
  5. Датчик температуры DS18B20, две штуки — один замеряет температуру в комнате, другой на улице. Использовать отдельные датчики температуры понадобилось, поскольку встроенный в модуль DHT22 имеет низкую точность до 0.5 °С. Погодная станция на arduino своими руками
  6. Резисторы по 0,125 Вт: 4.7 кОм, 10 кОм.
  7. Монтажная плата, паечная или беспаечная.
  8. Сетевой адаптер 220/5 В для питания платы Arduino.

Дополнительно можно приобрести:

  1. Плата коммутационная Sensor Shield для быстрого подключения всех датчиков, сервомоторов, интерфейсов Serial и I2C, незаменима тем, кто ни разу не держал в руках паяльник.  Погодная станция на arduino своими руками
  2. Импульсный преобразователь DC-DC, вход 7…24 В, выход 5 В, 2.5 А.

Погодная станция на arduino своими руками

Подключение датчиков и Bluetooth модуля

Подключать датчики температуры DS18B20 следует с одним резистором 4.7 кОм между их выводами DQ и VDD.

Погодная станция на arduino своими руками

Два датчика температуры подсоединены к плате Arduino по одной трехпроводной шине. Каждый датчик DS18B20 имеет свой уникальный 64-битный адрес, и работает с Arduino по однолинейному протоколу 1 Wire передачи данных.

  • Погодная станция на arduino своими руками
  • Все два датчика будут передавать данные по одной шине на 4 цифровой вход платы Arduino.
  • Подключаем датчик давления BMP180 к плате Arduino четырьмя проводами:
  • VCC — 5V (питание +5В);
  • GND — GND (земля);
  • SDA — A4 аналоговый вход на Arduino;
  • SCL — A5 аналоговый вход на Arduino;

Погодная станция на arduino своими руками

Подключаем датчик влажности с pul-up (подтягивающим) резистором 10 кОм между его выводами VCC и DAT. Если расстояние от датчика до контроллера более 20 метров, то рекомендуется ставить подтягивающий резистор на 5.1 кОм. При необходимости улучшить работу датчика, следует добавить конденсатор емкостью 100 нФ между его питанием VCC и землей GND.

  1. Погодная станция на arduino своими руками
  2. Наш датчик влажности будет передавать данные на 8 цифровой вход платы Arduino.
  3. Остается лишь подключить Bluetooth модуль HC-05 к плате Arduino:
  • VCC — 5V (питание +5 В);
  • GND — GND (земля);
  • RX — TX на Arduino;
  • TX — RX на Arduino;
  • KEY — не используется;
  • STATE — не используется.
  • Программное обеспечение
  • Загружаем в Arduino эскиз программы для домашней миниметеостанции.
  • Скетч WSAB

Проверяем работоспособность собранного устройства. В Монитор порта компьютерной программы Arduino IDE отправляем 1, затем поочередно 2, 3, 4.

  • При отправке 1 — показания температуры на улице.
  • При отправке 2 — показания температуры в доме.
  • При отправке 3 — данные о давлении.
  • При отправке 4 — данные о влажности.
  1. Загружаем на Android телефон приложение Wether station Android Arduino Bluetooth.
  2. Показания температуры на улице в градусах Цельсия
  3. Показания температуры внутри дома в градусах Цельсия

Данные об атмосферном давлении на улице в мм.рт.ст.

  • Данные о влажности на улице в процентах
  • Собрать готовое устройство можно в любом корпусе: футляр от аудиокассеты, распределительная коробка.
  • Напоследок следует упомянуть, что собранная даже на Arduino Uno домашняя метеостанция потребляет совсем мизерный ток, до 30 мА, поэтому её вполне можно сделать переносной, запитав от солнечной панельки и аккумулятора.

Виталий Петрович. Украина Лисичанск.

Источник: https://volt-index.ru/high-tech/minimeteostantsiya-na-arduino-v-telefone.html

Метеостанция на Arduino – Радиодед

Для того, чтобы узнать температуру и влажность воздуха на улице, а также атмосферное давление, можно посмотреть прогноз в Интернете. Но, как известно, гидрометеоцентры частенько ошибается.

Получить фактические точные данные  можно с помощью домашней метеостанции. Домашнюю метеостанцию можно купить, а можно сделать самостоятельно. Рассмотрим создание домашней метеостанции на контроллере Arduino.

Погодная станция на arduino своими руками

Наша домашняя метеостанция будет измерять температуру и влажность воздуха, атмосферное давление и выводить параметры на ЖК-дисплей. Список комплектующих, которые понадобятся для данного проекта:

  • контроллер Arduino;
  • плата прототипирования (без пайки)
  • модуль датчика BMP085 или BMP180
  • модуль с датчиком влажности DHT11
  • датчик температуры DS18B20
  • резистор 4,7 кОм;
  • дисплей Nokia 5110
  • провода и корпус

В качестве платы Arduino в принципе можно использовать любую из модельного ряда Arduino, но я рекомендую Arduino Uno или Arduino Duemilanove, так как в будущем собираюсь установить на нее Ethernet shield, чтобы сделать домашнюю метеостанцию устройством IoT (“Интернета вещей”). Я буду использовать плату Arduino Duemilanove (рисунок 1).

Погодная станция на arduino своими рукамиРис. 1. Плата Arduino Duemilanove

Теперь рассмотрим датчики, которые будем использовать в проекте.
Датчик давления BMP085 (рисунок 2) – высокоточный датчик атмосферного давления с низким энергопотреблением. используется для измерения атмосферного давления. Точность достигает минимального значения измерения давления 0.03hPa.

Также выводит и данные о температуре. Напряжение питания 1.62V – 3.6V. Интерфейс подключения I2C. В продаже встречаются готовые платы  как с стабилизатором, так и без него.

Датчик давления BMP085 мы будем использовать только для измерения атмосферного давления, для измерения температуры будем использовать более точный датчик DS18B20.

Погодная станция на arduino своими рукамиРис.2. Модуль датчика BMP085

Датчик температуры DS18B20 (рисунок 3) –  это цифровой измеритель температуры  с  разрешением преобразования 9 – 12 разрядов и функцией тревожного сигнала контроля за температурой.

Обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire. Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.

У каждой микросхемы DS18B20 есть уникальный серийный код длиной 64 разряда, который позволяет нескольким датчикам подключаться на одну общую линию связи.

Погодная станция на arduino своими рукамиРис. 3. Датчик температуры DS18B20

Датчик DHT11 (рисунок 4) не обладают высоким быстродействием и точностью, но зато имеет низкую стоимость. Датчик состоит из емкостного датчика влажности и термистора.

Содержит аналого-цифровой преобразователь для преобразования аналоговых значений влажности и температуры в цифровые. Диапазон измерения влажности – 20-80%, частота опроса 1 раз в секунду.

Мы будем использовать в проекте датчик DHT11 в виде готового модуля.

Погодная станция на arduino своими рукамиРис.4. Модуль DHT11

Для отображения информации с датчиков будем использовать ЖК-дисплей Nokia 5110 (рисунок 5). Это графический монохромный дисплей с разрешением 84×48 точек. Дисплей Nokia 5110 поставляется на плате в паре с контроллером PCD8544 и штыревым разъемом. Электропотребление дисплея позволяет питать его от выхода +3.3 В платы Arduino.

Погодная станция на arduino своими рукамиРис. 5. Дисплей Nokia 5110

Собираем схему согласно рисунка 6.

Погодная станция на arduino своими рукамиРис. 6. Схема подключения к Arduino

Для удобства я спаял датчики на плате прототипирования, сделал контакты для подключения проводов от дисплея и оформил это в виде шилда – припаял штырьки для подключения к контактам платы Arduino (рисунок 7).

Погодная станция на arduino своими рукамиРис. 7. Как получилось у меня. Проект метеостанции на Arduino

Теперь приступим к написанию скетча. При написании скетча нам понадоьятся следующие Arduino-библиотеки:
•    OneWire – для работы с устройствами 1-Wire (датчик DS18B20);
•    BMP085 и Wire – для работы с датчиком BMP085 (или BMP180);
•    DHT – для работы с датчиком DHT11;

•    Adafruit_GFX и Adafruit_PCD8544 – для работы с дисплеем Nokia 5110.

С периодичностью 5 секунд получаем данные с датчиков DS18B20, DHT11, BMP085 и выводим в монитор последовательного порта и на дисплей Nokia 5110.

Процедура получения данных с датчика DS18B20 – get_temp()  выполняет поиск устройств 1-Wire, подключенных к выводу Adruino  D7 (у нас один датчик), и выдает его данные.
Запустим Arduino IDE.

Создадим новый скетч и внесем в него содержимое листинга 1.

// подключение библиотек
#include
#include
#include
#include “DHT.

h”
#include
#include
// тип DHT сенсора
#define DHTTYPE DHT11   // DHT 11
// создание экземпляров объектов
BMP085 dps = BMP085();
DHT dht(8, DHTTYPE);  // dht11 на pin 8
OneWire  ds(9);       // ds18b20 на pin 9
// Nokia 5110
// pin 3 – Serial clock out (SCLK)
// pin 4 – Serial data out (DIN)
// pin 5 – Data/Command select (D/C)
// pin 6 – LCD chip select (CS)
// pin 7 – LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);
// переменные
int Temp1;

long Temperature085 = 0, Pressure085 = 0, Altitude085 = 0;

void setup() {
// запуск последовательного порта
Serial.begin(9600);
Serial.println(“start”);
// запуск I2C
Wire.begin();
// запуск bmp
dps.init();
// инициализация дисплея
display.begin();
// установить контраст фона экрана
display.

setContrast(60);
display.clearDisplay();       // очистить экран
display.setTextSize(1);    // размер шрифта
display.setTextColor(BLACK);   // цвет
// заставка
display.setCursor(15,15);
display.print(“Home Meteo”);
display.

display();
delay(2000);

}

void loop () {
display.clearDisplay();
display.setCursor(15,5);
display.print(“Home Meteo”);
// ds18b20
int Temp=get_temp();
if(Temp==999) {
display.setCursor(15,15);
display.print(“t=”);
display.print(Temp1/16);
display.print(“.”);
display.print(((Temp1%16)*100)/16);
display.print(” C”);
}
else if(Temp==998) {
Serial.println(“Temp=ERROR”);
display.setCursor(15,15);
display.

print(“t=ERROR”);
}
else {
Serial.print(“Temp=”);
Serial.print(Temp/16);
Serial.print(“.”);
Serial.print(((Temp%16)*100)/16);
Serial.println(” *C”);
display.setCursor(15,15);
display.print(“t=”);
display.print(Temp/16);
display.print(“.”);
display.print(((Temp%16)*100)/16);
display.print(” C”);
Temp1=Temp;
}
// dht11
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.

print(“humidity=”);
Serial.print(h);
Serial.println(” %”);
Serial.print(“temperatura=”);
Serial.print(t);
Serial.println(” *C”);
display.setCursor(15,25);
display.print(“h=”);
display.print(h);
display.print(” %”);
// bmp085
dps.getTemperature(&Temperature085);
dps.getPressure(&Pressure085);
dps.getAltitude(&Altitude085);
Serial.print(“pressure5=”);
Serial.print(Pressure085/133.

3);
Serial.println(” mm Hg”);
Serial.print(“temp5=”);
Serial.print(Temperature085*0.1);
Serial.println(” *C”);
Serial.println();
display.setCursor(5,35);
display.print(“p=”);
display.print(Pressure085/133.3);
display.print(“mmHg”);
// обновить
display.

display();
// пауза
delay(5000);
}
// получение температуры датчика ds18b20
int get_temp() {
byte i;
byte present = 0;
byte data[12];
byte addr[8];

int Temp;

if ( !ds.search(addr)) {
Serial.print(“No more addresses.n”);
ds.reset_search();
return 999;
}
Serial.print(“R=”);  // печать уникального 1-wire идентификатора
for( i = 0; i < 8; i++) { Serial.

print(addr[i], HEX);
Serial.print(” “);
}
Serial.println();
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print(“CRC is not valid!n”);
return 999;
}
if ( addr[0] != 0x28) {
Serial.

print(“Device is not a DS18S20 family device.n”);
return 999;

}

ds.reset();
ds.select(addr);
// начинаем преобразование, используя ds.write(0x44,1)
ds.write(0x44,1);
// пауза с запасом (750 мс)
delay(1000);

ds.reset();

ds.select(addr);
ds.write(0xBE);
for ( i = 0; i < 9; i++) { data[i] = ds.read(); } Temp=(data[1]

Источник: https://radioded.ru/meteostantsiya-na-arduino/

Метеостанция на Arduino от А до Я. Часть 1

Оглавление:

Погодная станция на arduino своими руками

«Так, давайте сразу договоримся: вы не собираетесь снимать кино для Голливуда. Даже в Стране чудес утверждается не более пяти процентов от всех сценариев, и только один процент идет затем в производство… Таким образом, вместо всего этого вы собираетесь создать свой собственный Голливуд.» Эд Гаскель «Снимаем цифровое кино, или Голливуд на дому»

Предисловие

Что, ещё одна погодная станция на Arduino?! Да, ещё одна и, что-то мне подсказывает, не последняя в интернете вещей.

Точно также, как каждый программист обязан написать программу «Hello World!», так и каждый ардуинщик обязан иметь за плечами опыт построения простой или не очень метеостанции.

Уже созданных проектов метеостанций в интернете описано немалое количество, читатель может выбрать любой из них для реализации. Не скрою, я внимательно изучил около десятка подобных проектов и ещё кучу смежных.

Поэтому нельзя сказать, что я создал всё с нуля, конечно же я «стоял на плечах гигантов».

Сразу скажу, что в мои планы не входило использование сторонних сервисов для хранения и отображения данных. Хотелось лично пощупать и понять как всё это работает изнутри от начала до конца, от А до Я.

Так что тем, кто хочет быстро склепать нечто из ничего, эта серия статей скорее всего не подойдёт. Проще пойти и купить готовый конструктор с инструкцией по сборке.

Профессионалам микроэлектроники тут совсем делать нечего, может быть поржать и вспомнить себя в начале пути. А вот тем, кто действительно хочет разобраться, я думаю понравится.

Возможно материал пригодится в качестве учебного пособия.

Автор проведет вас по запутанным лабиринтам современных технологий интернета вещей. Причём глазами новичка, так как сам им является.

Этот проект был реализован в далеком уже 2016 году, но надеюсь еще актуален.

Набор технологий

Мы изучим и будем работать с простыми и сложными вещами :

  • датчиками температуры и влажности типа DHT22, DHT11
  • датчиком барометрического давления типа BMP180
  • WiFi модулем ESP8266
  • радиомодулем типа nRF24 2,4 Ггц
  • семейством Arduino Pro Mini, Arduino Mega
  • солнечной батареей и аккумуляторами
  • языком программирования C/C++
  • языком программирования PHP
  • системой управления базами данных MySQL
  • языком программирования Java и фреймворком Android (создание приложения для Adnroid для отображения погодных данных на смартфоне).

Некоторые темы из перечисленных и яйца выеденного не стоят, а некоторые можно изучать годами. Поэтому сложные вещи мы затронем только в части, непосредственно касающейся данного проекта, так чтобы вы поняли как это всё работает.

Но начнем мы с самого начала правильно. А именно с описания и проектирования будущего устройства «на бумаге», чтобы в конце концов каждый кирпичик лёг на своё место.

Прототипирование

Как нам правильно говорит Википедия, прототипирование — это быстрая черновая реализация работающей системы.

Которая, да, будет работать не совсем неэффективно и с некоторыми ошибками, но даст представление о том, следует ли развивать поделку до промышленного образца.

Процесс создания прототипа не должен быть затяжным. За этапом прототипирования следует анализ системы и её доработка.

Но это в промышленности, где работники заняты полный рабочий день.

Каждый, кто клепает по вечерам свои поделки pet-project для «internet of things», должен отдавать себе отчёт в том, что он создаёт именно прототип, полуфабрикат. До уровня нормального промышленного изделия ему очень далеко. Поэтому не следует поручать нашим любительским поделкам какие-либо ответственные участки жизнеобеспечения и надеяться, что они нас не подведут.

Промышленное изделие строится на промышленной элементной базе и далее проходит еще много стадий, включающих отладку, испытания и сопровождение, прежде чем станет хитом продаж.

Итак, вместо всей этой тягомотины, мы создадим свою собственную игрушку, но не простую. С элементами технического творчества, зачатками программирования и познания (в процессе создания) многих других смежных вещей.

Конечно, электронщикам тяжко придется на этапе программирования, а программистам придется попотеть над схемотехникой, но автор постарается изложить всё максимально доступно и ясно описать, почему были использованы те или иные решения.

Требования

Обычно этот этап пропускают. Решая сделать что-нибудь эдакое прямо сейчас, а потом выясняются мелкие детали, которые ставят весь проект в тупик или вовсе делают его неподъемным. Все наши хотелки необходимо записывать, я использую для этого гугл диск, он доступен с ПК и с мобильного устройства.

Итак, наша метеостанция должна:

  • измерять температуру и влажность на улице
  • измерять температуру и влажность в доме
  • измерять атмосферное давление
  • отображать указанные значения на дисплее
  • передавать данные на сервер в интернет, где данные будут храниться в базе данных и отображаться на веб-странице, либо использоваться в мобильном приложении.

Датчики используются самые простые и дешевые. Например, забегая наперед скажу, что температуру DHT22 измеряет достаточно точно, а вот с влажностью немного неточен. Но, опять таки повторюсь, это не имеет значения, поскольку перед нами — прототип, и разброс в 5% влажности ни на что важное в нашей жизни не повлияет.

Архитектура системы, аппаратное и программное обеспечение должны обеспечивать дальнейшую расширяемость системы для добавления новых датчиков и новых возможностей.

Железо. Выбор компонентов

Вот это и есть самая ответственная часть, а вовсе не пайка или программирование. После определения требований к системе надо решить с помощью чего конкретно они будут воплощены в жизнь.

Вот тут-то и есть один ньюанс. Чтобы выбрать компоненты нужно хорошо знать их возможности, нужно знать сами технологии. То есть другими словами, здесь требуется быть далеко не начинающим электронщиком и программистом. Так что же теперь пару лет потратить на изучение всего спектра возможных устройств?

Замкнутый круг? Но замкнутые круги для того и существуют, чтобы их разрывать.

Выход есть. Можно просто взять и повторить чей-то проект. Я же изучил уже существующие проекты метеостанций и надеюсь сделал шаг вперед.

Итак. Архитектура погодной станции базируется на Arduino. Потому что Arduino имеет небольшой порог вхождения и я уже имел с этим дело. Дальше выбирать уже проще.

Сразу стало ясно, что в составе метеостанции будет удаленый, заоконный датчик и центральный модуль.

Центральный, основной блок будет расположен внутри помещения. Это важно определить на начальном этапе, от этого «пляшут» такие важные характеристики как температурный режим работы и питание.

Удаленный датчик (или датчики) будет без «мозгов», его задача — периодически проводить измерения и передавать данные на центральный домашний блок. Центральный блок принимает данные от всех датчиков, показывает их на экране и отправляет их же в интернет в базу данных. Ну, а там уже много проще, как только данные оказываются в базе с ними можно делать всё что захочешь, даже графики рисовать.

Для сношений с внешним миром интернет был однозначно выбран WiFi модуль ESP8266 практически без альтернативы (прим. возможно сейчас такие альтернативы появились). К Arduino выпускаются Ethernet платы расширения, но совсем не хотелось привязываться к кабелю.

Погодная станция на arduino своими руками

Интересный вопрос состоял в том, чем обеспечивать связь между заоконным датчиком (или датчиками, про требование расширяемости системы помним?) и центром. Радиомаячки на 433 Мгц однозначно не подходят (они не подходят ни для чего вообще).

Воспользоваться опять ESP8266 ?

Минусы такого решения:

  • необходим устойчивый WiFi за пределами дома
  • дальность связи не будет большой
  • пострадает надежность, при пропадании интернета мы не увидим свои удаленные датчики
  • большее энергопотребление.
  • Энергопотребление ESP8266 :
  • при передаче 120—170 mA
  • при приеме 50—56 mA
  • в режиме Deep Sleep 10 µA (мкА)
  • в выключенном состоянии 5 µA (мкА).

В конце концов для связи удаленных датчиков с основным домашним блоком был выбран чип nRF24L01+ с 2,4 Ггц передатчиком и приемником в одном флаконе, с дополнительной внешней антенной, чтоб уж наверняка «пробить» стены.

Погодная станция на arduino своими руками

Энергопотребление nRF24L01+ 2,4 GHz :

  • при приеме 11 mA
  • при передаче на скорости 2Mbps — 13 mA
  • в режиме standby-I — 26 μA (мкА)
  • в выключенном состоянии 900 nA (нА).

Что у ESP8266, что у nRF24L01+ диапазон рабочих температур подходящий: от -40℃ до +80℃.

Купить nRF24L01+ можно примерно за $1, или сразу с внешней антенной за $3. Купить ESP8266-01 можно примерно за $4. Читайте внимательно описание товара! Иначе купите одну антенну.

Ядро системы вырисовалось. Переходим к самим датчикам.

На улице, как известно, температура может достигать отрицательных значений, поэтому датчик DHT11 не подходит, а вот DHT22 в самый раз.

Погодная станция на arduino своими руками

Характеристики DHT22 / AM2302 :

  • питание от 3,3 В до 5 В, рекомендуется 5 В
  • потребление 2.5mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 0-100% с погрешностью 2-5%
  • диапазон измерения температуры от -40 до +125°C с погрешностью ±0.5°C
  • запрос на измерение не чаще 0,5 Гц — одного раза в 2 секунды.

Внутри дома, я надеюсь, отрицательных температур не будет, поэтому можно использовать DHT11, тем более, что он у меня уже был.

Характеристики DHT11:

  • питание от 3,3 В до 5 В
  • потребление 2,5 mA максимум, в момент измерения и передачи данных
  • диапазон измерения влажности 20-80% с погрешностью 5%
  • диапазон измерения температуры от 0 до +50°C с погрешностью ±2°C
  • запрос на измерение не чаще 1 Гц — одного раза в секунду.

Купить DHT22 можно примерно за $3. DHT11 стоит дешевле — $1, но он и менее точен.

Теперь возвращаемся опять к Arduino. Какую плату выбрать?

Я тестировал отдельные части системы на Arduino UNO. Т.е. подключал к уно ESP модуль и изучал его, отключал, затем подключал nRF24 и т.д. Для финальной реализации заоконного датчика выбрал Arduino Pro Mini как наиболее близкую к Uno из миниатюрных.

Погодная станция на arduino своими руками

По энергопотреблению Arduino Pro Mini также выглядит неплохо:

  • нет преобразователя USB-TTL, который сам по себе «кушает» много,
  • светодиод подключен через 10к резистор.

Для продвинутого сбережения энергии планировалось:

  • удалить светодиод — индикатор питания на Arduino Pro Mini (я пожалел, не стал портить плату)
  • либо использовать «голую» сборку на микропроцессоре Atmel ATmega328 (не использовал)
  • использовать библиотеку Low Power Library или JeeLib.

Из библиотек выбрал Low Power Library, она проста и содержит только то, что нужно.

Для центрального блока, поскольку к нему планировалось подключить многочисленную периферию, была выбрана плата Arduino Mega. К тому же она полностью совместима с UNO и имеет больше памяти. Забегая наперед скажу, что этот выбор полностью оправдался.

Купить Arduino Mega можно примерно за $8.

Питание и энергопотребление

Теперь про питание и энергопотребление.

Arduino Pro Mini бывают двух видов:

  • на напряжение питания 5В и частоту 16МГц
  • на напряжение питания 3,3В и частоту 8МГц.

Поскольку радио-модуль nRF24L01+ требует для питания 3,3 В, а быстродействие здесь не важно, то покупайте Arduino Pro Mini на 8MHz и 3,3В.

При этом диапазон питающего напряжения Arduino Pro Mini составляет:

  • 3,35-12 В для модели 3,3 В
  • 5-12 В для модели 5 В.

У меня уже была Arduino Pro Mini на 5В, только поэтому я её и использовал. Купить Arduino Pro Mini можно примерно за $4.

Питание центрального блока будет от сети 220 В через небольшой блок питания, дающий на выходе 12В, 450mA, 5W. Типа такого за $5. Там еще есть отдельный вывод на 5В.

Погодная станция на arduino своими руками

А ежели этого не хватит, то можно и помощнее поставить. Другими словами экономить электропитание для центрального блока нет особого смысла. А вот для удаленного беспроводного датчика энергосбережение является важнейшей частью. Но и функциональность не хотелось бы терять.

  • Поэтому Arduino Pro Mini и радиомодуль nRF24 будут запитываться от связки 4-х Ni-Mh аккумуляторов.
  • И помните, максимальная емкость современного аккумулятора примерно 2500—2700mAh, всё что больше это либо маркетинговые уловки (Ansmann 2850) либо обман (UltraFire 3500).
  • Li-Ion аккумуляторы я не использую по нескольким причинам:
  • очень дорогие
  • при снижении температуры окружающего воздуха ниже 0°C происходит снижение мощности литий-ионного аккумулятора до 40-50%
  • те которые дешёвые производятся без защиты и небезопасны (при КЗ или разряде могут взрываться и гореть, см. кучу роликов на ютюбе)
  • стареют, даже если не используются (впрочем это можно сказать обо всех химических элементах), через 2 года Li-Ion батарея теряет около 20% ёмкости.

Для прототипа вполне можно обойтись качественными Ni-MH AA или AAA аккумуляторами. Тем более, что нам не нужны большие токи. Единственный минус Ni-MH аккумуляторов — это их долгая зарядка.

Общая схема метеостанции

Подведем итоги. Вот общая схема как всё работает.

Погодная станция на arduino своими руками

Продолжение следует.

Источник: https://habr.com/post/425901/

Метеостанция на Arduino с беспроводным датчиком температуры

Как-то прогуливаясь по городу увидел новый открывшийся магазин радиоэлектроники. Зайдя в него обнаружил большое количество шилдов для Ардуины т.к. у меня дома была Arduino Uno и Arduino Nano сразу пришла мысль поиграться с передатчиками сигнала на расстоянии. Решил купить самый дешевый передатчик и приемник на 433 МГц:

  • Погодная станция на arduino своими рукамиПередатчик сигнала.
  • Погодная станция на arduino своими рукамиПриемник сигнала.
  • Записав простейший скетч передачи данных (пример взят от сюда), выяснилось, что передающие устройства могут вполне подойти для передачи простейших данных, таких как температура, влажность.

Передатчик имеет следующие характеристики:1. Модель: MX -FS — 03V2. Радиус действия (зависит от наличия преграждающих предметов): 20-200 метров3. Рабочее напряжение: 3.5 -12В4.

Размеры модуля : 19 * 19 мм 5. Модуляция сигнала : AM6. Мощность передатчика: 10 мВт7. Частота: 433 МГц8. Необходимая длина внешней антенны : 25см9.

Простота подключения (всего три провода): DATA ; VCC ; земля.

Характеристики приемного модуля:1. Рабочее напряжение: DC 5В2. Ток: 4мA3. Рабочая частота: 433,92 МГц4. Чувствительность : — 105дБ5. Размеры модуля : 30 * 14 * 7 мм6. Небходима внешняя антенна: 32 см.

В просторах интернета сказано, что дальность передачи информации на 2Кб/сек может доходить до 150м. Сам не проверял, но в двухкомнатной квартире принимает везде.

  1. Аппаратная часть домашней метеостанции
  2. После нескольких экспериментов решил подключить к Arduino Nano датчик температуры, влажности и передатчик.
  3. Погодная станция на arduino своими рукамиПодключение датчика температуры, влажности и передатчика
  4. Датчик температуры DS18D20 подключается к ардуино следующим образом:

Погодная станция на arduino своими руками

1) GND к минусу микроконтроллера.2) DQ через подтягивающий резистор к земле и к выводу D2 Ардуины3) Vdd к +5В.

  • Более детально почитать о работе датчика можно здесь.
  • Модуль передатчика MX -FS — 03V питается от 5 Вольт, вывод данных (ADATA) подключен к выводу D13.
  • К Ардуино Уно подключил LCD дисплей и барометр BMP085.
  • Погодная станция на arduino своими рукамиСхема подключение к ардуино уно
  • Приемник сигнала подключен к выводу D10.

Модуль BMP085 — цифровой датчик атмосферного давления. Датчик позволяет измерять температуру,давление и высоту над уровнем моря. Интерфейс подключения: I2C. Напряжение питания датчика 1.8-3.6 В

Подключается модуль к Arduino также, как и другие I2C устройства:

  • VCC — VCC (3,3 В); 
  • GND — GND; 
  • SCL — к аналоговому выводу 5;
  • SDA — к аналоговому выводу 4.

DHT11:

  • Очень низкая стоимость
  • Питание и I/O 3-5 В
  • Определение влажности 20-80% с 5% точностью
  • Определение температуры 0-50 град. с 2% точностью
  • Частота опроса не более 1 Гц (не более раза в 1 сек.)
  • Размеры 15.5мм x 12мм x 5.5мм
  • 4 вывода с расстоянием между ножками 0.1″

DHT имеет 4 вывода:

  1. Vcc (3-5V питание)
  2. Data out — Вывод данных
  3. Не используется
  4. Общий

Подключается к D8 Ардуины.

Погодная станция на arduino своими руками

  1. Программная часть домашней метеостанции
  2. Передающий модуль измеряет и передает температуру раз в 10 минут.
  3. Ниже привожу программу:

/*
Версия скетча 1.0
Отсылаем температуру каждые 10мин.

*/
#include
#include
#include

#define ONE_WIRE_BUS 2 //Пин подключения датчика Даллас

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer;

void setup(void)
{

//Serial.begin(9600);
vw_set_ptt_inverted(true); // Необходимо для DR3100
vw_setup(2000); // Устанавливаем скорость передачи (бит/с)

sensors.begin();

if (!sensors.getAddress(insideThermometer, 0));

printAddress(insideThermometer);
sensors.setResolution(insideThermometer, 9);

}

void printTemperature(DeviceAddress deviceAddress)
{

float tempC = sensors.getTempC(deviceAddress);
//Serial.print(«Temp C: «);

//Serial.println(tempC);
//Формирование данных для для отправки
int number = tempC;

char symbol = 'c'; //Служебный символ определения что это датчик

String strMsg = «z «;
strMsg += symbol;
strMsg += » «;
strMsg += number;
strMsg += » «;
char msg[255];
strMsg.toCharArray(msg, 255);
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Ждем пока передача будет окончена
delay(200);

}

void loop(void)
{

for (int j=0; j

Источник: https://cxem.net/arduino/arduino115.php

Как сделать погодную станцию на Arduino

Предлагается методика изготовления погодной станции для дома или дачи. За основу возьмём плату Ардуино и набор сенсоров: температуры, влажности, давления и датчик углекислого газа. Данные будут выводиться на LCD дисплей, а питание осуществляться от блока питания для мобильного телефона или батареек.

Нам понадобятся:

Инструкция по созданию домашней метеостанции на Arduino

1Подбор корпусадля будущей метеостанции

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

Прикиньте, как все компоненты будут размещаться внутри. Прорежьте окно для закрепления LCD дисплея, если его нет. Если будете размещать внутри датчик углекислого газа, который достаточно сильно греется, то разместите его в противоположной от других датчиков стороне или сделайте его выносным. Предусмотрите отверстие для разъёма питания.

Погодная станция на arduino своими рукамиКорпус для самодельной домашней метеостанции

2Используемые компоненты

  • LCD-дисплей 1602 использует 6 пинов Arduino + 4 на питание (подсветка и знакосинтезатор).
  • Датчик температуры и влажности DHT11 подключается к любому цифровому пину. Для чтения значений будем использовать библиотеку DHT11.
  • Датчик давления BMP085 подключается по интерфейсу I2C к двум пинам Arduino: SDA – к аналоговому пину A4 и SCL – к аналоговому пину A5. Обратим внимание, что для питания на датчик подаётся напряжение +3,3 В.
  • Датчик углекислого газа MQ135 подключается к одному из аналоговых пинов.

Погодная станция на arduino своими рукамиКомпоненты домашней метеостанции

  • В принципе, для оценки метеообстановки достаточно иметь данные о температуре, влажности и атмосферном давлении, а датчик углекислого газа необязателен.
  • Используя же все 3 датчика, у нас будут задействованы 7 цифровых и 3 аналоговых пина Ардуино, не считая питания, естественно.
  • 3Схема соединениякомпонентов метеостанции

Схема метеостанции показана на рисунке. Тут всё ясно.

Погодная станция на arduino своими рукамиСхема домашней метеостанции

4Скетч метеостанции

Напишем скетч для Ардуино. Код по возможности снабжён подробными ми.

Скетч для метеостанции на Arduino (разворачивается) /* СОЕДИНЕНИЯ Подключение датчика температуры-влажности DHT11 — — OUT > цифровой пин 9 — «+» > +3V (+5V) — «-» > GND Подключение датчика давления-температуры BMP085 — — VCC > 3.3V; (поддерживается 1.8 — 3.6 В) — GND > GND — SDA > аналоговый пин A4 — SCL > аналоговый пин A5 Детектор газа ————————————— — A0 — VCC — GND ЖКИ ———————————————— — LCD RS > к цифровым выводам 12 — 8 — LCD Enable > к выводам 11 — 9 — LCD D4 > к выводам 5 — 4 — LCD D5 > к выводам 4 — 5 — LCD D6 > к выводам 3 — 6 — LCD D7 > к выводам 2 — 7 — LCD R/W > GND — 10K резистор между +5V и землёй — сброс > к LCD VO (пин 3) */ // Подключение библиотек: #include // датчика температуры-влажности #include // LCD #include // датчика BMP085 #include // газовый детектор MQ135 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /* соединение LCD-шилда x## — для вывода кириллических символов, где ## — номера символов в таблице */ dht11 sensorTempHumid; // датчик температуры и влажности MQ135 gasSensor = MQ135(A0); // датчик газа #define RZERO 76.63 float rzero; // показания с датчика газа float ppm; int del = 5000; // задержка, мс /* Oversampling Setting (OSS) — настройки разрешения для датчика давления BMP085, см. https://www.sparkfun.com/tutorials/253 OSS может быть 0, 1, 2 или 3: 0 — ультранизкое потребление, низкое разрешение; 1 — стандартное потребление; 2 — высокое разрешение; 3 — ультравысокое разрешение и максимальное потребление. */ const unsigned char OSS = 0; // Калибровочные переменные для BMP085: int ac1; int ac2; int ac3; unsigned int ac4; unsigned int ac5; unsigned int ac6; int b1; int b2; int mb; int mc; int md; long b5; float temperature; // температура long pressure; // давление // Для прогноза: const float p0 = 101325; // давление на уровне моря, Па. const float currentAltitude = 179.5; // высота погодной станции над уровнем моря, м; const float ePressure = p0 * pow((1 — currentAltitude/44330), 5.255); // нормальное давление на данной высоте, Па. float weatherDiff; #define DHT11PIN 9 // пин 9 датчика DHT11. #define BMP085_ADDRESS 0x77 /* I2C адрес датчика BMP085; см. https://www.sparkfun.com/tutorials/253 */ void setup() { lcd.begin(16, 2); // инициализация ЖК Wire.begin(); // инициализация I2C bmp085Calibration(); // калибровка датчика BMP085 } void loop() { // Проверка датчика давления-влажности: int chk = sensorTempHumid.read(DHT11PIN); switch (chk) { case DHTLIB_OK: lcd.clear(); break; case DHTLIB_ERROR_CHECKSUM: lcd.clear(); lcd.print(«Checksum error»); delay(del); return; case DHTLIB_ERROR_TIMEOUT: lcd.clear(); lcd.print(«Time out error»); delay(del); return; default: lcd.clear(); lcd.print(«Unknown error»); delay(del); return; } // Считываем с датчика BMP085: temperature = bmp085GetTemperature(bmp085ReadUT()); temperature *= 0.1; pressure = bmp085GetPressure(bmp085ReadUP()); pressure *= 0.01; // Разница давлений для вычисления простого прогноза weatherDiff = pressure — ePressure; rzero = gasSensor.getRZero(); ppm = gasSensor.getPPM(); // ЖК: lcd.setCursor(0, 0); // курсор на строку 1, поз. 1; //lcd.print(«p = «); lcd.print(pressure*3/4); // Па -> мм рт.ст. lcd.print(«mmHg «); // мм рт.ст. // «Прогноз»: if(weatherDiff > 250) lcd.print(«Sun»); else if ((weatherDiff = -250)) lcd.print(«Cloudy»); else if (weatherDiff > -250) lcd.print(«Rain»); lcd.setCursor(0, 1); // переход на строку 2 //lcd.print(«t=»); lcd.print(temperature, 1); lcd.print(«C «); //lcd.print(«f=»); lcd.print(sensorTempHumid.humidity); lcd.print(«% «); lcd.print(ppm); //lcd.print(«t=»); //lcd.print(sensorTempHumid.temperature); //lcd.print(«C «); delay(del); lcd.clear(); } // ВЫЧИСЛЕНИЕ ДАВЛЕНИЯ // Функция получает калибровочные значения для BMP085 // и должна быть запущена в начале. void bmp085Calibration() { ac1 = bmp085ReadInt(0xAA); ac2 = bmp085ReadInt(0xAC); ac3 = bmp085ReadInt(0xAE); ac4 = bmp085ReadInt(0xB0); ac5 = bmp085ReadInt(0xB2); ac6 = bmp085ReadInt(0xB4); b1 = bmp085ReadInt(0xB6); b2 = bmp085ReadInt(0xB8); mb = bmp085ReadInt(0xBA); mc = bmp085ReadInt(0xBC); md = bmp085ReadInt(0xBE); } // Вычисление нескомпенсированной температуры. // Возврашает значение в десятых долях градуса Цельсия. short bmp085GetTemperature(unsigned int ut) { long x1, x2; x1 = (((long)ut — (long)ac6)*(long)ac5) >> 15; x2 = ((long)mc >4); } /* Вычисление нескомпенсированного давления. Калибровочные значения должны быть уже известны. b5 также необходимо, поэтому сначала нужно вызвать bmp085GetTemperature(). Возвращает значение в Паскалях. */ long bmp085GetPressure(unsigned long up) { long x1, x2, x3, b3, b6, p; unsigned long b4, b7; b6 = b5 — 4000; // вычисление b3: x1 = (b2 * (b6 * b6)>>12)>>11; x2 = (ac2 * b6)>>11; x3 = x1 + x2; b3 = (((((long)ac1)*4 + x3)2; // вычисление b4: x1 = (ac3 * b6)>>13; x2 = (b1 * ((b6 * b6)>>12))>>16; x3 = ((x1 + x2) + 2)>>2; b4 = (ac4 * (unsigned long)(x3 + 32768))>>15; b7 = ((unsigned long)(up — b3) * (50000>>OSS)); if (b7 < 0x80000000) p = (b78); x1 = (x1 * 3038)>>16; x2 = (-7357 * p)>>16; p += (x1 + x2 + 3791)>>4; return p; } // Чтение нескомпенсированного значения температуры. unsigned int bmp085ReadUT() { unsigned int ut; // Записывает 0x2E в регистр 0xF4 // для запроса показаний температуры: Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x2E); Wire.endTransmission(); delay(5); // Читает 2 байта из регистров 0xF6 и 0xF7 ut = bmp085ReadInt(0xF6); return ut; } // Чтение давления (нескомпенсированного). unsigned long bmp085ReadUP() { unsigned char msb, lsb, xlsb; unsigned long up = 0; // Записывает 0x34+(OSS

Источник: https://soltau.ru/index.php/themes/diy/item/436-kak-sdelat-pogodnuyu-stantsiyu-na-arduino

Ссылка на основную публикацию
Adblock
detector