WIFI чайник
После игр с esp8266 в плане погодных станций и прочего, захотелось сделать что то полезное и более интересное. Появилась идея wifi чайника, ибо лень с утра кнопку нажимать, а проверить ВК и телегу все равно по пробуждению, святое. Так почему бы не запилить из контроллера и простого чайника за 300р автоматический. Так и появился данный проект. Был куплен в ленте чайник за 300р, заказан контроллер esp8266 07 версии, реле и прочую развязку. Из чайнка сразу выкинул всю автоматику в виде пластин, которые его выключают по закипанию и приступил к автоматизации.
План был такой:
1. Сделать, веб интерфейс - Включение чайника, включение по таймеру и админская часть, для настройки подключений к точке доступа, или создание своей точки, если вдруг не будет wifi
2. Развести и вытравить плату для всего этого действа. Сервис был выбран следующий https://easyeda.com/
3. Контроль на наличия воды и выключение по закипанию.
4. Прикрутить отправку уведомлений на телефон по закипанию.
Схема получилась следующаяя
https://easyeda.com/normal/ESP8266_Quickly_Design-bc779db050...
Далее в нее на пин ADC навесил делитель напряжения, который представлял из себя резистор и терморезистор, с помощью которого планируется измерять температуру:
Так как аналоговый вывод esp8266 не может измерять напряжение больше 1В, что поначалу вызвало недоумение.
Сам датчик терморезистор был вживлен между пластмассовым блоком контактов и теном. Для того чтобы передать данные с датчика на платформу, где планируется разместить сам контроллер и всю электронику, был сооружен подпружиненый контакт и две пластины из фольги на дне чайника.
Пластины от датчика терморезистора
Саму плату развел в сервисе https://easyeda.com
https://easyeda.com/normal/New_PCB-32e062852aab4892bfbe07981...
Вытравил с помощью ЛУТ технологии и перекиси водорода с солью и лимонной кислотой, получилось не очень аккуратно, но работоспособно
Некоторые дорожки съел раствор, похоже их нужно делать более толстыми.
Реле вывел отдельно, на макетную плату.
Софт часть.
По началу использовал LUA прошивку, но почему то при подключении питания 220в на реле и включении его через Web интерфейс, контроллер зависал и глючил. Пробовал развести разные каналы питания контроллера и реле, но ничего не помогало. Перешел на Arduino IDE, пока без глюков. Софт еще не дописан, да и железная часть не закончена. Отпуск закончился, буду по возможности делать после работы.
Мой первый пост, пишу в 2 ночи, так что немного сумбурно.
Omega 2. То, чем могла стать ESP32 но так и не стала.
"Введение в интернет вещей. NodeMCU Часть I"
Всем привет, сегодня у нас первая часть серии выпусков посвященных работе с платой Node MCU. Начнем мы как всегда с небольшого обзора и ознакомления с данной платой. Затем попробуем разобраться, в чем ее предназначение и что ее связывает с Ардуино. Ну и соответственно в этих видеоуроках будут показаны интересные проекты, которые я смогу собрать на основе имеющихся у меня компонентов.
Статья фактические дублирует видео и если хочется узнать больше, и не тратить время на чтение, то можете посмотреть прикрепленное видео
Итак, давайте разберемся что из себя представляет данная плата. Node MCU представляет собой платформу на основе модуля esp8266, который может принимать или посылать сигналы в интернет через Wi-fi Т.е. суть применения данного устройства – это управление различными схемами через интернет, не используя при этом дополнительные провода. А значит идеально подойдет для создания умного дома, интернета вещей и многого другого. Если с умным домом все понятно, а именно, под ним подразумевается система автоматизации, энергосбережения и комфорта в доме, с помощью специальных установленных сенсоров, датчиков, микроконтроллеров и прочего, то с интернетом вещей многие не знакомы.
Ну вот как обычно бывает, слышали что это такое, но точно не знают. Фактически оба этих понятия довольно схожи, только вот к интернету вещей можно отнести любые пусть даже простые схемы связанные с автоматизацией ( например обычное включение лампочки с помощью телефона, то есть удаленно) , а к умному дому уже относится большая цепочка взаимодействия всех приборов и датчиков, которые могут эффективно работать без участия человека.
Давайте теперь перейдем непосредственно к плате. Начнем с обзора ее внешних характеристик.
Плата довольна небольшая размером, где-то в 1,5- 2 раза больше, чем Ардуино Нано. Также есть возможность установить ее на макетной плате. Питать плату можно через контакт Вин или через разъем микро usb. Также рядом с разъемом слева и справа есть небольшие кнопочки. Это кнопки перезагрузки и отладки. Установлен линейный стабилизатор напряжения AMS1117 , здесь он на 3,3 вольта. На моей плате есть также драйвер СР 2102 Также сильно выделяется на плате непосредственно сам wi-fi модуль ESP8266 . Он представляет собой довольно таки популярный чип с установленным микропроцессором ( тоже американской компании, но называется не Atmel как на Ардуино ) Этот 32 битный процессор имеет частоту 80 мегагерц, но разогнать его можно до 160 мегагерц, правда не рекомендуется.
• Саму плату можно питать через usb порт ( желательно от 5 до 12В ), через контакт vin ( от 5 вольт ) или питать с помощь платы расширения, которую вы видите на экране. Также Node MCU имеет некоторые преимущества перед ардуино, поскольку пр небольшой стоимости имеет большую память. Например об]ем оперативной памяти составляет 96 кб, а для кода памяти всего 64 кб Это к примеру в несколько раз больше, чем у Ардуино Уно. Также на плате можно заметить 11 портов ввода вывода. От нуля до 10. Причем 9 и 10 обозначены как TX и RX, то есть поддерживают UART интерфейс. D1 и D2 поддерживают I2C интерфейс, а контакты D5–D8 — SPI
Еще имеется один аналоговый вход А0 Также много контактов питания, в том числе 5 контактов заземления.
Для начала работы с платой рекомендую сначала установить драйвер, поскольку возможно, что компьютер не сможет сразу распознать ваше устройство. Драйвер называется СР2102
Далее нам нужно определиться с портами и выбрать плату. Для начала откроем нашу среду разработки Arduino IDE, нажмем файл-настройки, внизу найдем строчку про дополнительные ссылки для менеджера плат и скопируем туда ссылку, которую можно найти в описании и под видео. Эта ссылка откроет нам доступ к платам на основе esp8266
Далее нужно зайти в раздел инструменты, плата а далее в менеджер плат. Откроется нам список плат, там нужно найти esp8266, выбрать самую последнюю версию и нажать установка.
После этого нужно зайти снова в инструменты и найти там строчку плата, там выбираем нужную нам то есть Node MCU И еще нужно будет также в инструментах зайти в раздел порт и выбрать тот, к которому у нас подключена наша плата. У меня это COM3. Также нужно установить скорость в 115 200 бод.
В качестве первой схемы можем собрать стандартное мигание светодиодом, ее можно использовать как базовую для проверки работоспособности платы и правильности подключения.
Скетч такой же , как и для Ардуино. Единственное, что когда указываете номер пина для светодиода нужно помнить распиновку нашей платы. Фото расположения пинов вы сейчас можете видеть на экране.
В качестве ознакомления с платой, этого достаточно для первой статьи) В следующих уроках будем подробнее углубляться в эту тему и затем собирать более сложные схемы и конструкции.
Спасибо за внимание:) Всем удачных поделок!
Метеостанция на 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 кОм.
Как подключить модуль, подробно написано здесь.
Конкретно про обновлении прошивки - здесь.
Я использовал прошивку с АТ-командами версии 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. Если вместо картинки
Firmware builder: esp8266.ru
ready
Вводим в том же окне команду тестовую АТ. Нам должен придти ответ ОК. Если ответ приходит, читаем дальше, нет - отписываемся в комментах, помогу чем смогу.
Далее, нам нужно установить нужные нам скорость порта по-умолчанию и параметры сети.
1. Параметры порта, команда вида AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>. Параметры можно посмотреть в диспетчере устройств->свойства порта
т.е. наша команда будет такой 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%:
- температура 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, но мне лень в ней разбираться):
Для проверки схему нужно залить скетч test_sensors.ino (ссылка на архив в конце поста). В порт должны полететь данные о температуре/давлении/влажности.
Выгрузка статистики.
Регистрируемся на сайте thingspeak.com.
Создаем новый канал
Тут выставляем по полю на каждый измеряемый параметр.
Кроме этого, можно настроить видимость канала (все/только вы), высоту нашей станции над уровнем моря, координаты и т.д. Создаем.
Далее идем в 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 в коде. Так надо.
Скетч в архиве.
Сам канал по мере заполнения примет такой вид:
Схема потребляет около 80 мА при передаче данных и 15-20 мА при простое.
Что можно улучшить:
- заменить DHT-11 на что-нибудь получше, тот же DHT-22;- сделать фильтрацию замеренных значений (по тому же Калману (пост) ).
- отсылать на статистику не сразу после включения, а через 10 минут, предварительно отфильтровав;
- подтянуть GPIO ESP-01 на питание через 10 кОм;
- подтягивать DHT-11 по-хорошему надо было не на +5, а на +3.3 В;
- не заставлять ардуину впустую гонять delay(), а сделать полноценный сон с "разбудкой" по таймеру;
- оба датчика потребляют намного меньше допустимой нагрузки на ногу ардуины (40 мА), можно запитать их через контроллер и включать только по надобности;
P.S. первый, и, скорее всего, крайний пост - не подписывайтесь ;)
ESP8266 прошивка, программирование в Arduino IDE
Тема ESP8266 — довольно таки непростая. Но, если работать с этими Wi-Fi модулями в среде разработки Arduino IDE — порог вхождения опускается до приемлемого для обычного ардуинщика уровня. Да и не только ардуинщика, а любого человека, у которого есть желание сварганить что-то по теме IoT(интернет вещей), причём не затрачивая много времени читая документацию для микросхемы и изучение API для этих модулей.
By MrПоделкинЦ
P.S. Предыдущий пост по этой теме:
http://pikabu.ru/story/esp8266_i_arduino_podklyuchenie_raspi...ESP8266 и Arduino, подключение, распиновка
Тема ESP8266, как и IoT(интернет вещей), всё больше набирает популярности, и уже Arduino подхватывает инициативу — добавляя эти Wi-Fi модули в список поддерживаемых плат.
Но как же его подключить к ардуино? И возможно как-то обойтись вообще без ардуино? Сегодня именно об этом и пойдёт речь в моём видео.
By MrПоделкинЦ
P.S. Следующий пост по этой теме:
http://pikabu.ru/story/esp8266_proshivka_programmirovanie_v_...