Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Классический арканоид для любителей ретро-игр. Защитите космический корабль с Печенькой (и не только) на борту, проходя уровни в арканоиде.

Арканоид Пикабу

Арканоид, Аркады, Веселая

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Gy68

1 пост сначала свежее
98
asd99
8 лет назад
Arduino & Pi

Метеостанция на arduino с выгрузкой статистики в IoT⁠⁠

Добрых суток!

Сегодня мы соберем метеостанцию с выгрузкой статистики в инет.

Для этого нам понадобятся:

- стабилизатор напряжения АМS1117-3.3 ($0.85/10шт);

- датчик температуры и влажности DHT11 ($0.80);

- датчик температуры и давления GY68 ($4);

- Arduino Pro Mini ($1.24);

- модуль Wi-Fi на ESP-8266 (ESP-01) ($1.9);

- сопротивления 4,7к и 10к;

- электролиты 100 и 1000 мФ на 10+В;

Итого: около $9 (225грн);

Все легко находится на алиэкспрессе, так что ссылок не будет.


Начнем мы с нашего WiFi модуля ESP-01:

Питание: 3.0 - 3.6 В;

Ток: 60-220 мА (в зависимости от режима 802.11 и настроек энергосбережения);

Для работы нужно подтянуть вывод CH_PD к питанию через резистор 10 кОм.

Метеостанция на arduino с выгрузкой статистики в IoT Arduino, DHT11, Gy68, Esp8266, Wi-Fi, Интернет вещей, Длиннопост

Как подключить модуль, подробно написано здесь.

Конкретно про обновлении прошивки - здесь.


Я использовал прошивку с АТ-командами версии 0.25. Между версиями существуют небольшие различия, так что решайте сами, что вам проще: изменить код скетча или прошить модуль.

Распиновка такая:

ESP-01  >  Arduino

Tx > 10

Rx >  11

CH_PD > через 10 кОм на +3.3В

Vcc > +3.3

Gnd >  Gnd

Для проверки заливаем в ардуину скетч из примеров SoftwareSerial.ino, проверив чтобы строка

SoftwareSerial mySerial(10, 11); // RX, TX

соответствовала наши ногам ардуины. Напомню, что выводы данных подключаются крест-накрест, Rx->Tx и Tx->Rx

Теперь нам понадобится программа ESP8266 Config. Подключаемся к порту с модулем на скорости 115200. Если вместо картинки

Метеостанция на arduino с выгрузкой статистики в IoT Arduino, DHT11, Gy68, Esp8266, Wi-Fi, Интернет вещей, Длиннопост
в порт идет мусор, отключаемся, меняем скорость на меньшую, подключаемся снова и ребутим модуль, до получения строк

Firmware builder: esp8266.ru

ready

Вводим в том же окне команду тестовую АТ. Нам должен придти ответ ОК. Если ответ приходит, читаем дальше, нет - отписываемся в комментах, помогу чем смогу.


Далее, нам нужно установить нужные нам скорость порта по-умолчанию и параметры сети.

1. Параметры порта, команда вида AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>. Параметры можно посмотреть в диспетчере устройств->свойства порта

Метеостанция на arduino с выгрузкой статистики в IoT Arduino, DHT11, Gy68, Esp8266, Wi-Fi, Интернет вещей, Длиннопост

т.е. наша команда будет такой AT+UART_DEF=9600,8,1,0,0

вводим, получаем ОК, перегружаем модуль и переподключаемся со скоростью 9600.

2. В окне ESP8266 Config нажимаем List AP, получаем список всех доступных сетей. Выбираем нужную, вводим пароль, жмем Join AP. В консоли должно появиться

AT+CWJAP="SSID","PASSWD"

WIFI CONNECTED

WIFI GOT IP

OK

Для получения адреса у меня в роутере включен DHCP с раздачей IP по МАС.

Формат всех команд можно посмотреть в файле "ESP8266 AT Instruction Set_v0.25"

DHT11: Довольно хреновый датчик, иногда выдающий данные с сильным разбросом (лучше возьмите DHT22, он еще и от 3.3+В питается (об этом ниже) - я брал просто самый дешевый с измерением влажности).

Питание: 3.5 - 5.5 В;

Ток до 0.3 мА;


Диапазон измерений:

- влажность 20-95% (+-5%). Если влажность больше (96-100%), модуль все равно покажет 95%:

Метеостанция на arduino с выгрузкой статистики в IoT Arduino, DHT11, Gy68, Esp8266, Wi-Fi, Интернет вещей, Длиннопост

- температура 0-50 гр. (+-2 гр.). По факту ниже +3-4 гр. не покажет даже при сильном морозе.

- время между считываниями показаний не меньше 10 сек (иначе будет выдавать практически рандом).


При длине провода больше 20 м или напряжении питания меньше 5 В нужен подтягивающий резистор в 4,7 кОм на сигнальную линию. Я решил поставить, на всякий случай.

GY69: датчик давления и температуры на основе чипа BMP-180.

Питание: 1.68 - 3.6 В;

Ток около 5 мкА (мало верится, но сам не мерял);

Диапазон измерений:

- давление: 300-1100 гПа (-500 - 9000 м над ур.моря);

- температура: -40 ... +85 гр. (при температуре меньше ноля падает точность);

- время замера 4,5 ... 25 мкс;

По даташиту нужно сигнальные линии (SDA/SCL) нужно подтянуть к питанию резисторами по 4,7 кОм, но я не заморачивался.


Питание я взял от старой ЮСБ-зарядки, 5В 250мА. Т.к. оказалось, что ESP-01 очень требователен к питанию (предыдущий отладочный вариант питался от аккума на 3.7 В и сгорел через неделю), то отталкиваться будем именно от него - понижать напряжение до 3.3 В. Однако это меньше, чем нужно DHT11, поэтому его придется запитать от 5В.

Для включения ESP-01 необходимо подать через резистор 10 кОм питание на ногу CH_PD. Однако из-за того, что у микрухи самого WiFi распаяны не все ноги (они "висят в воздухе"), она сильно греется даже в отсутствие передачи данных. Ну а т.к. передавать статистику мы будем раз в 10 минут, нам совершенно не нужно держать модуль постоянно включенным (и расходовать заряд аккума, если питание от него).

Поэтому CH_PD мы подключим к 13й ноге контроллера и для включения связи будем подавать на неё высокий уровень.

Схема подключения стабилизатора напряжения AMS1117-3.3 (ток до 1А) особой оригинальностью не отличается и взята из даташита.

Итого, имеем схему (да,я знаю про fritzing, но мне лень в ней разбираться):

Метеостанция на arduino с выгрузкой статистики в IoT Arduino, DHT11, Gy68, Esp8266, Wi-Fi, Интернет вещей, Длиннопост

Для проверки схему нужно залить скетч test_sensors.ino (ссылка на архив в конце поста). В порт должны полететь данные о температуре/давлении/влажности.


Выгрузка статистики.

Регистрируемся на сайте thingspeak.com.

Создаем новый канал

Метеостанция на arduino с выгрузкой статистики в IoT Arduino, DHT11, Gy68, Esp8266, Wi-Fi, Интернет вещей, Длиннопост

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

Кроме этого, можно настроить видимость канала (все/только вы), высоту нашей станции над уровнем моря, координаты и т.д. Создаем.

Далее идем в Channel Settings и переписываем Channel ID, идем в API keys и переписываем Write API Key. По двум этим параметрам мы будем писать данные.

Проверить работоспособность канала можно, перейдя в броузере по адресу 184.106.153.149/update?key=[ВАШ_Write_API_Key]&field1=0

Откроется страница с номером текущей порции данных (для первого раза 0, потом 1, и т.д.).

Открываем скетч WiFiMeteostationIoT.ino и исправляем строки:

14 String remote_key = "KEY";// passkey

на ваш Write API Key.

105 dps.init(MODE_STANDARD, N, true);

N замените на вашу текущую высоту (в МЕТРАХ, несмотря на то, что в даташите написано про сантиметры) - это нужно для точно определения давления. Узнать ее можно либо с помощью GPS, либо на  этой страничке.


Для отправки одной "порции" данных нужно отправить на модуль WiFi команды:

AT+CIPSTART=2,"TCP","184.106.153.149",80 //создать соединение №2, протокол ТСР, адрес, порт

AT+CIPSEND=2,N //через соединение №2 отправить пакет длинной в N байт

GET /update?key=[ВАШ_Write_API_Key]&field1=25 //сам пакет

AT+CIPCLOSE=2 //закрыть соединение

Обратите внимание на переносы строк \r\n в коде. Так надо.


Скетч в архиве.


Сам канал по мере заполнения примет такой вид:

Метеостанция на arduino с выгрузкой статистики в IoT Arduino, DHT11, Gy68, Esp8266, Wi-Fi, Интернет вещей, Длиннопост

Схема потребляет около 80 мА при передаче данных и 15-20 мА при простое.


Что можно улучшить:

- заменить DHT-11 на что-нибудь получше, тот же DHT-22;

- сделать фильтрацию замеренных значений (по тому же Калману (пост) ).

- отсылать на статистику не сразу после включения, а через 10 минут, предварительно отфильтровав;

- подтянуть GPIO ESP-01 на питание через 10 кОм;

- подтягивать DHT-11 по-хорошему надо было не на +5, а на +3.3 В;

- не заставлять ардуину впустую гонять delay(), а сделать полноценный сон с "разбудкой" по таймеру;

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


GoogleDrive c архивом


P.S. первый, и, скорее всего, крайний пост - не подписывайтесь ;)

Показать полностью 7
[моё] Arduino DHT11 Gy68 Esp8266 Wi-Fi Интернет вещей Длиннопост
47
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии