Оглавление:

Другая метеостанция Интернета вещей: 8 шагов
Другая метеостанция Интернета вещей: 8 шагов

Видео: Другая метеостанция Интернета вещей: 8 шагов

Видео: Другая метеостанция Интернета вещей: 8 шагов
Видео: «Интернет вещей» — подключи Arduino к сети. Продолжение набора «Матрёшка». Железки Амперки 2024, Июль
Anonim
Еще одна метеостанция Интернета вещей
Еще одна метеостанция Интернета вещей
Еще одна метеостанция Интернета вещей
Еще одна метеостанция Интернета вещей
Еще одна метеостанция Интернета вещей
Еще одна метеостанция Интернета вещей
Еще одна метеостанция Интернета вещей
Еще одна метеостанция Интернета вещей

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

Кроме того, в этом руководстве показано, как использовать Blynk, Google Sheets или и то, и другое для отслеживания и записи показаний датчиков. Более того, записи в Google Таблицах записываются непосредственно в лист (без необходимости перехода через стороннюю службу).

Что касается экрана Стивенсона, то в Интернете доступно множество изображений, которые можно напечатать на 3D-принтере, например https://www.thingiverse.com/thing:1718334. Я буду строить на этом для этого руководства.

Экран Стивенсона - это «укрытие для приборов - это укрытие или ограждение для метеорологических приборов от атмосферных осадков и прямого теплового излучения от внешних источников, в то же время позволяющее воздуху свободно циркулировать вокруг них». (Википедия).

Запчасти

  • Wemos LolIn - NodeMCU v3 (1,43 доллара США)
  • BME280 (датчик температуры, давления и влажности) (2,40 доллара США)
  • Солнечная панель 6 В, 1000 мА (9,96 долларов США)
  • 5V 1A Micro USB 18650 литиевая батарея зарядная плата модуль зарядного устройства + защита двойных функций TP4056 (0,99 долларов США)
  • 4x 1,2 В NiMH аккумуляторные батареи
  • Держатель батареи (4x AA, бок о бок и встык)
  • Штекерный разъем Micro USB
  • Кабельные стяжки
  • 3x крылышко-гайки
  • Столб или палка от метлы
  • Эпоксидная смола и / или суперклей (в ретроспективе силикон мог бы работать лучше)

Программное обеспечение

  • Приложение Blynk
  • Таблицы Google (если вы хотите иметь доступ к историческим данным)
  • EasyEDA (для рисования схем)
  • IDE Arduino

Инструменты

  • Паяльник
  • Припой
  • Термоусадочные трубки
  • 3д принтер
  • Клей-пистолет

Шаг 1: 3D-печать - экран Стивенсона

3D-печать - экран Стивенсона
3D-печать - экран Стивенсона
3D-печать - экран Стивенсона
3D-печать - экран Стивенсона
3D-печать - экран Стивенсона
3D-печать - экран Стивенсона

Как уже упоминалось, загрузите файлы с https://www.thingiverse.com/thing:1718334 и распечатайте необходимые биты. Инструкции по сборке также можно найти по указанной выше ссылке. Я внес некоторые изменения (см. Примечания ниже).

Напечатанные детали:

  • Top_Cover_for_m3_tapping.stl
  • Middle_Ring.stl (x5)
  • Middle_Ring_bottom.stl (x1, STL прилагается выше)
  • Solid_Plate.stl (x1)
  • Solid_Plate_Base.stl (x1)
  • Pole_Mount_1in_Round.stl
  • Sensor_Grid.stl
  • Electronics_Mount.stl
  • My_Solar_Cell_Mount.stl (x2, STL прилагается выше)

Порядок сборки:

  • Проденьте отверстия
  • Вкрутите стержни M3 в резьбовые патрубки.
  • Top_Cover
  • Solid_Plate
  • Middle_Rings
  • Вставьте Sensor_Grid
  • Electronics_Mount
  • Сплошная пластина, низ
  • Pole_Mount
  • My_Solar_Cell_Mounts прикреплены эпоксидной смолой к верхней части Top_Cover.

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

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

  • Температура
  • Влажность
  • Давление

Примечания

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

Шаг 2: Схема

Схема
Схема
Схема
Схема

Подключите схему, как показано на схеме, закрепив LoLin и BME280 на сетке, напечатанной на 3D-принтере, как показано на фотографии.

BME280 -> LiLon

  • VCC -> 3,3 В
  • GND -> GND
  • SCL -> D1
  • ПДД -> D2

Лилон -> Лилон

D0 -> RST (это необходимо, чтобы разбудить контроллер из глубокого сна, но должно быть подключено только после того, как код был загружен в контроллер)

ПРИМЕЧАНИЕ

У меня были проблемы с поиском подходящего LiLon аккумулятора. Также по какой-то причине у меня не получилось запитать по VIN. Поэтому я запитал следующим образом:

  • Выход TP4056 был подключен к штекерному USB-разъему, который затем был подключен к USB-разъему платы для питания.
  • B- и B + на TP4056 были подключены к держателю батарейки AA, в котором находились NiMH батареи.

Шаг 3: Интернет вещей - Blynk

Интернет вещей - Blynk
Интернет вещей - Blynk
Интернет вещей - Blynk
Интернет вещей - Blynk
Интернет вещей - Blynk
Интернет вещей - Blynk
Интернет вещей - Blynk
Интернет вещей - Blynk

«Blynk - это аппаратно-независимая платформа IoT с настраиваемыми мобильными приложениями, частным облаком, механизмом правил и аналитической панелью управления устройствами». По сути, это позволяет вам безопасно управлять удаленными датчиками и контролировать их из любой точки мира через Интернет. В то время как коммерческая услуга, каждая учетная запись поставляется с 2000 бесплатными кредитами. Кредиты позволяют вам связывать различные датчики, дисплеи, уведомления и т. Д. С вашим датчиком или датчиками. Хотя цена подписки выходит за рамки бюджета любителя, бесплатных кредитов достаточно для такого простого проекта, как этот.

Чтобы начать использовать службу, вам необходимо сначала загрузить приложение Blynk на свой телефон / устройство, создать учетную запись (или войти в систему с существующей учетной записью), а затем создать новый проект следующим образом:

  • Выберите свое оборудование
  • Дайте вашему проекту имя (в данном случае я использовал «Метеостанция».
  • Нажмите "Создать".
  • Затем вы получите код авторизации по электронной почте.

Вам не нужно будет добавлять необходимые виджеты. К своим 2000 бесплатным кредитам я добавил следующее:

  • 3 манометра
  • 1 супер диаграмма

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

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

Для получения дополнительной информации см.

docs.blynk.cc/#getting-started.

Шаг 4: Код - Подготовка IDE Arduino

Следующие библиотеки должны быть добавлены в IDE Arduino для завершения этого проекта:

  • https://github.com/adafruit/Adafruit_BME280_Library (нужен датчик температуры, давления и влажности)
  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/esp8266/Arduino (это дает вам доступ к плате ESP8266)
  • https://github.com/blynkkk/blynk-library/releases/tag/v0.6.1 (библиотека Blynk)
  • https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect (HTTPSRedicect необходим для подключения к Google Таблицам)

Для получения инструкций по установке библиотек для Arduino IDE посетите

Мои аппаратные настройки были следующими:

  • Плата: NodeMCU 1.0 (модуль ESP-12E)
  • Скорость загрузки: 115200

При использовании прилагаемого кода на следующих этапах всегда обращайтесь к комментариям в коде относительно добавления следующего:

  • Wifi SID
  • Пароль Wi-Fi
  • Ключ авторизации Blynk
  • Идентификатор скрипта Google
  • Ключ общего доступа к Google Таблицам

Шаг 5: Код - Blynk

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

статус = bme.begin (0x76); // I2C-адрес датчика, который я использую, 0x76

Оказывается, мне нужно было установить адрес датчика. Как только я это сделал, все заработало нормально.

У Blynk действительно приятный мобильный пользовательский интерфейс, однако он имеет следующие ограничения:

  • Только 2000 бесплатных кредитов, проекты, требующие большего, требуют дорогой ежемесячной подписки (если вы не размещаете и не поддерживаете свой собственный сервер Blynk).
  • Если у вас нет собственного сервера Blynk, вы не сможете экспортировать исторические данные.

По указанным выше причинам я решил, как интегрировать процесс сбора данных в Google Sheet. Это рассматривается в следующем разделе.

Шаг 6. Код - Google Таблицы

Код - Google Таблицы
Код - Google Таблицы
Код - Google Таблицы
Код - Google Таблицы
Код - Google Таблицы
Код - Google Таблицы

Чтобы записать свои показания, чтобы вы могли анализировать исторические данные позже, вам необходимо записать их в какую-то базу данных. Библиотека HTTPSRedirect позволяет нам делать это, записывая наши данные в Google Sheet.

Основные ограничения этого подхода заключаются в следующем:

  • Нет приятного мобильного пользовательского интерфейса
  • Таблица Google может содержать не более 400 000 ячеек. Для этого проекта это не большая проблема, так как пройдет чуть более 11 лет, прежде чем этот предел будет достигнут.

Лист Google настроен следующим образом.

Создайте таблицу Google с двумя листами.

Лист 1: Данные

В листе данных необходимо 4 столбца, т.е. дата / время, температура, влажность, давление (столбцы от A до D). Отформатируйте столбцы соответствующим образом, например Столбец A должен быть «Дата и время», чтобы в ячейках отображались дата и время.

Лист 2: Панель управления

Создайте лист Dashboard согласно прилагаемым фотографиям, введя формулы, указанные ниже:

  • B2: = counta (Данные! B: B) -1
  • B3: = B1 + ВРЕМЕННОЕ ЗНАЧЕНИЕ (СЦЕПИТЬ ("00:"; Текст (G7, "0")))
  • B6: = query (Data! A2: D, «Выбрать порядок B по предельному значению A по убыванию 1»)
  • C6: = query (Data! A2: D, «Выбрать порядок C по предельному значению A по убыванию 1»)
  • D6: = query (Data! A2: D, "Выбрать порядок D по предельному значению A по убыванию 1")
  • B8: = query (Data! A2: D, «Выбрать заказ по предельному значению B по убыванию 1»)
  • C8: = query (Data! A2: D, "Выбрать заказ по предельному значению C по убыванию 1")
  • D8: = query (Data! A2: D, «Выбрать заказ по D desc limit 1»)
  • B9: = query (Data! A2: D, «Выбрать порядок B по предельному значению B по убыванию 1»)
  • C9: = query (Data! A2: D, "Выбрать порядок C по предельному значению C по убыванию 1")
  • D9: = query (Data! A2: D, "Выбрать порядок D по предельному значению D по убыванию 1")
  • B11: = query (Data! A2: D, "Выберите A, где B не является нулевым порядком по предельному возрастанию B 1")
  • C11: = query (Data! A2: D, "Выберите A, где C не является нулевым порядком по C asc limit 1")
  • D11: = query (Data! A2: D, "Выберите A, где D не является нулевым порядком по D asc limit 1")
  • B12: = query (Data! A2: D, «Выберите B, где B не является нулевым порядком по предельному возрастанию B 1»)
  • C12: = query (Data! A2: D, "Выберите C, где C не является нулевым порядком по C asc limit 1")
  • D12: = query (Data! A2: D, "Выберите D, где D не является нулевым порядком по D asc limit 1")
  • G3: = 4 + B2 * 4 + 29 + 17
  • G4: = (G2-G3) / G2
  • G6: = G2 / 4 G8: = G7 * G6
  • G9: = (G8 / 60) / 24
  • G10: = G9 / 365
  • G11: = (((((G2-G3) / 4) * G7) / 60) / 24/365)

Таблицы Google могут содержать до 400 000 ячеек. Это используется вместе с тем фактом, что каждое чтение использует 4 ячейки, чтобы вычислить, сколько места осталось и когда оно закончится.

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

Снимок экрана «Редактора диаграмм» показывает базовую настройку графика температуры. Остальные графики созданы с использованием той же настройки. Единственная разница между графиками - это минимальные значения по вертикальной оси (находятся на вкладке настройки). На вкладке настройки также есть другие настройки, такие как имена доступа, заголовки графиков и т. Д.

Теперь нам нужен скрипт Google, который позволит нам записывать данные, вызывая URL-адрес.

Создание скрипта

В URL-адресе таблицы Google запишите ключ между «d /» и «/ edit». Это ваш -Your-Google-Sheet-Sharing-Key– и он понадобится в приведенном ниже коде.

Затем перейдите в Инструменты> Редактор скриптов и создайте скрипт приложения Google, вставив код в прикрепленный файл GS. Обновите var ss = SpreadsheetApp.openByUrl ("https://docs.google.com/spreadsheets/d/-Your-Google-Sheet-Sharing-Key–/edit"); чтобы отразить ваш общий ключ.

Теперь опубликуйте сценарий, выбрав «Опубликовать»> «Развернуть как веб-приложение».

Скопируйте URL-адрес текущего веб-приложения и сохраните его где-нибудь, так как он понадобится для извлечения GScriptID (-Your-Google-Script-ID–). GScriptID - это строка между «s /» и «/ exec?». Убедитесь, что «любой, даже анонимный» имеет доступ к приложению. Во время этого процесса вам будет предложено предоставить некоторые разрешения. Важно, чтобы вы их предоставили.

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

Теперь вы можете протестировать скрипт, перейдя на страницу https://script.google.com/macros/s/-Your-Google-Script-ID–/exec?Temperature=10&Humidity=11&Pressure=12. Каждый раз, когда вы обновляете эту ссылку, в таблицу Google должна добавляться новая запись.

Это выше было взято из следующего руководства: https://embedded-lab.com/blog/post-data-google-sheets-using-esp8266/. Однако это руководство устарело, поэтому связанный код Arduino в следующем разделе был изменен для размещения последних библиотек

Код Arduino

См. Прикрепленный код.

Шаг 7. Код - Blynk и Google Таблицы

Чтобы извлечь максимум из обоих миров, можно комбинировать код как для Blynk, так и для Google Sheets.

См. Прикрепленный код.

Шаг 8: Заключительные комментарии

Заключительные комментарии
Заключительные комментарии
Заключительные комментарии
Заключительные комментарии

Ни одна из вышеперечисленных идей не является моей, это скорее проект, основанный на идеях и работе других. Мне понравилось собирать все это в одно место. использование различных технологий и инструментов для создания увлекательного и практичного проекта. Мне особенно понравилось учиться сохранять свои показания в таблице Google. За это я хочу поблагодарить ElectronicsGuy (Суджай Пхадке).

Обновлять

После завершения этого проекта мне нужно было изменить настройки беспроводной сети. Теперь я работал на другом компьютере. После загрузки изменений проект перестал работать. После устранения неполадок я пришел к выводу, что функция глубокого сна не работает. Я забрал проект домой и загрузил его туда (используя тот же код), и он сработал. Поэтому я пришел к выводу, что в добавленных мною библиотеках должно быть что-то изменилось. Поэтому я прикрепил библиотеки, которые в настоящее время находятся на моем домашнем компьютере, к этому разделу; на всякий случай, если кто-то еще столкнется с этой проблемой.

Рекомендуемые: