Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Крошечная метеостанция в Интернете

Компоненты и расходные материалы

Arduino Nano 33 IoT
× 1
датчик погоды BME
× 1
0,96 на OLED-дисплее - 128x 64
× 1
Пластиковый футляр 3,9 "x 2,7"
× 1
Кабель Micro USB
× 1
Перемычки между разъемами макетной платы
× 1
Зарядное устройство USB
× 1

Необходимые инструменты и машины

Пистолет для горячего клея (общий)

Приложения и онлайн-сервисы

IDE Arduino
Блинк

Об этом проекте

Существует множество приложений, позволяющих подключить смартфон к Интернету вещей. Я пробовал их кучу и обычно разочаровывался. Не так с Блинком! Он действительно гибкий, имеет красивый пользовательский интерфейс, работает со всеми типами платформ Интернета вещей и работает как на Android, так и на iPhone. Это также бесплатно для любителей! Итак, это относительно простой проект IoT, который позволил мне изучить использование Blynk.

Аппаратное обеспечение

Аппаратное обеспечение этого проекта довольно простое. Мы используем Arduino Nano 33 IoT, который обрабатывает Wi-Fi, сенсорную плату BME280 с температурой, влажностью и барометрическим давлением в одном устройстве и 1-дюймовый OLED-дисплей. Все три работают нормально при 3,3 вольте. Дисплей, очевидно, не обязателен - цель состоит в том, чтобы на вашем телефоне отображалась метеостанция. Но это значительно упрощает настройку и работу на OLED-дисплее, прежде чем иметь дело с Blynk и вашим смартфоном.

На схеме ниже показано, как оборудование связано между собой. И датчик, и дисплей имеют интерфейс I2C. Теоретически один I2C может поддерживать несколько устройств, но библиотеки датчика и дисплея имели некоторые конфликты, поэтому я получил два разных порта I2C. Датчик использует стандартный порт I2C по умолчанию на аналоговом контакты 4 и 5. Дисплей использует дополнительный порт I2C, настроенный на цифровой . контакты 4 и 5. (И да, они поменяны местами - SDA - это цифровой контакт 5))

Аппаратная часть заключена в небольшой пластиковый корпус с прозрачной передней частью, так что дисплей хорошо виден. Он пластиковый, так как должен быть прозрачным для RF для WiFi. Он должен быть относительно защищенным от атмосферных воздействий, но датчик подвергается воздействию внешних погодных условий через отверстие 1/2 дюйма внизу. Датчик прикреплен так, чтобы он находился прямо внутри этого отверстия. Я прикрепил все внутри корпуса горячим клей, но вы можете использовать эпоксидную смолу, если планируете выкладывать его на улице в летнюю жару.

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

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

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

У Blynk есть множество примеров того, как настроить оборудование для взаимодействия с ним:https://examples.blynk.cc/ К сожалению, он не перечисляет Nano 33 IoT как один из поддерживаемых Arduino. Но Blynk поддерживает WiFiNINA, который используется Nano 33 IoT и несколькими другими процессорами Arduino. Таким образом, добавление этих двух включает решение этой проблемы:#include и #include

Еще одно дополнение, которое вы увидите в моем коде:#include Это было необходимо для преобразования чисел, выходящих из датчика, в строки, подходящие для отображения на OLED-дисплее. Одна небольшая хитрость, которая меня немного огорчила, заключалась в том, что Блинк рад отображать данные, отправленные в виде строки или числа. Сначала я отправил Блинку ту же строку, что и на OLED. Это сработало для отображения чисел, но не удалось полностью, когда я добавил графики. Чтобы графики работали, Блинку, очевидно, нужны были реальные числа.

Примечание. Обычно атмосферное давление приводится с поправкой на уровень моря. На больших высотах барометрическое давление, очевидно, падает, поэтому, чтобы скорректировать значения датчика до их эквивалентных показаний на уровне моря, вы должны прибавить к измеренному значению примерно 1 дюйм рт. Ст. На каждые 1000 футов высоты. В моем собственном коде вы увидите, что я добавил 1,3, чтобы компенсировать мою высоту 1300 футов над уровнем моря. Вы захотите изменить это значение, чтобы оно соответствовало вашей высоте. 1 дюйм рт.

Метеостанция без Блинка

На этом этапе вы можете настроить оборудование и использовать мое прилагаемое программное обеспечение для отображения данных о погоде на OLED-дисплее. Просто закомментируйте строку Blynk.begin () в Setup, чтобы метеостанция запустилась сама по себе. (Если вы не закомментируете Blink.begin (), без действительного подключения к Blynk, скетч остановится или зависнет в этой точке.) В следующем разделе мы поговорим о Blynk, как настроить его и на скетче Arduino и на смартфоне для отображения метеостанции на телефоне.

Блинк

Blynk легко установить на ваш iPhone или Android и поставляется с подробной документацией:http://docs.blynk.cc/ Но там так много информации и так много опций, что я сначала нашел вещи немного запутанными, поэтому я Приведу здесь мою собственную версию того, как начать работу с Blynk.

Я использовал Blynk с iPhone, но думаю, что опыт работы с Android достаточно похож, так что вы можете следовать моим инструкциям с любым из них. Когда у вас есть приложение, вам необходимо создать учетную запись. Оттуда в приложении вы создаете новый проект. Вашему проекту предоставляется код аутентификации, который используется для связи вашего оборудования с вашим проектом. Ваша первая задача - подключить ваше оборудование через Wi-Fi к вашему проекту Blynk. Вы можете выполнить это и протестировать с помощью скетча / программы Blynk по умолчанию под названием Blynk Blink на сайте examples.blynk.cc, который позволяет вам включать и выключать встроенный светодиод на вашем Nano 33 IoT. Я предлагаю вам попробовать это и заставить его работать, прежде чем пытаться заставить метеостанцию ​​работать с Blynk.

Мы уже немного поговорили о настройке нашего программного обеспечения, чтобы наш Nano 33 IoT работал с Blynk. Если открыть файл examples.blynk.cc, по умолчанию используется плата ESP8266. Найдите #include и #include и замените их на #include и #include

Помимо добавления поддержки WiFiNINA для Nano 33 IoT, как мы уже говорили, вам необходимо добавить свои учетные данные WiFi и код аутентификации вашего проекта Blynk. Мы объясним включение и выключение светодиода через минуту, но сначала давайте просто проверим соединение. Когда скетч Blynk Blink правильно настроен и запущен, откройте Serial Monitor Arduino, и вы сможете наблюдать за установкой соединения с облачным сервером Blynk. На этом этапе мы можем отложить оборудование и работать с приложением Blynk на телефоне.

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

Чтобы получить контроль над нашим встроенным светодиодом, нам нужно войти в режим редактирования в приложении. После этого вы увидите пустой экран. Если вы проведете пальцем влево, он переместится в сторону, чтобы открыть набор инструментов с виджетами. Выберите кнопку, щелкнув по ней, и теперь она будет на главном экране. Щелкните по нему, и он откроется для настройки. Переместите его из режима нажатия в режим переключения. Используйте выбор контактов, чтобы выбрать встроенный светодиод - цифровой контакт 13 на нашем Nano 33 IoT. Теперь нажмите «ОК» и нажмите верхний правый значок, чтобы выйти из режима редактирования. Теперь ваша кнопка должна управлять светодиодом.

Метеостанция с Blynk

Теперь мы готовы связать нашу метеостанцию ​​с нашим проектом Blynk. Откройте мое прикрепленное программное обеспечение, раскомментируйте строку Blynk.begin () в программе установки, добавьте код аутентификации проекта и учетные данные WiFi и загрузите в Arduino.

Откройте Blynk на своем телефоне. Если вы следовали этому руководству, ваша кнопка все еще на месте и должна иметь возможность включать и выключать встроенный светодиод. Перейдите в режим редактирования, нажмите кнопку, чтобы настроить его, и удалите, нажав Удалить в самом низу. Теперь перейдите на панель инструментов и выберите помеченное значение. Он находится внизу списка под дисплеями. Вернувшись на страницу отображения, щелкните отображение помеченного значения, чтобы настроить его. Нажмите на контакт, затем выберите Виртуальный контакт V3. Мы объясним виртуальные контакты в следующем абзаце. Теперь что касается метки, где написано «например, Temp», введите «Temp /pin.#/ deg.F». . # Указывает приложению отображать один разряд после десятичной точки. Выберите большой размер текста и оставьте «Интервал обновления» на «Push», а «Цвет текста» - на зеленый. Теперь нажмите ОК. Ваше помеченное значение теперь почти готово к отображению температуры, но оно слишком узкое. Выберите его медленно - достаточно медленно, чтобы он не перешел в режим конфигурации. Контур этикетки загорится. Теперь его можно растянуть, чтобы отобразить всю строку. Его также можно перемещать, но здесь мы этого делать не будем. Растяните его примерно на 3/4 ширины экрана. Затем выйдите из режима редактирования, и вы должны увидеть температуру, отображаемую на вашем телефоне.

Прежде чем мы закончим настройку Blynk, стоит объяснить пару вещей, которые мы только что видели при настройке отображения температуры. Блинк использует несколько уникальную идею, называемую виртуальными контактами. Виджет отображаемого значения может быть настроен на чтение аналогового вывода на нашем процессоре или на чтение, высокий или низкий уровень цифрового вывода. Но чаще всего мы хотим отображать содержимое переменной. Мы делаем это, присваивая этой переменной виртуальный пин-номер, и с этого момента приложение Blynk будет ссылаться на эту переменную по ее виртуальному пин-номеру. Итак, в моем программном обеспечении вы увидите точку, в которой я назначил температуру в градусах Фаренгейта виртуальному контакту V3.

Еще одна идея Blynk, которую стоит быстро упомянуть, - это интервал обновления, который мы оставили в режиме Push. Это означает, что эскиз Arduino выталкивает данные, в нашем случае обновляя температуру, влажность и барометрическое давление один раз в минуту. Но Blynk также поддерживает метод Pull, при котором приложение Blynk устанавливает интервал и запрашивает у оборудования новые данные.

Итак, теперь давайте закончим отображать нашу метеостанцию ​​на Blynk. Вам понадобятся еще два дисплея с помеченными значениями, один для влажности в% (виртуальный контакт V4) и один для давления в дюймах ртутного столба (виртуальный контакт V5). Чтобы он выглядел как мой, вам понадобится влажность в золоте и давление в красном. Для влажности я указал одно место после десятичной точки; для давления я показал два знака после запятой.

Если теперь у вас есть три дисплея с помеченными значениями, показывающие температуру, влажность и барометрическое давление, вы можете добавить график всех трех. Это достигается за счет добавления виджета SuperChart. Сначала растяните его вниз, чтобы он заполнил остальную часть экрана. Затем щелкните по нему, чтобы настроить. Я включил «Показать значения оси x» и выбрал разрешения «в прямом эфире», 1 час, 6 часов, 1 день, 1 неделю, 1 месяц. и 3 мес. Нам нужно три потока данных - по одному для каждой из трех переменных. Чтобы настроить каждый поток данных, щелкните значок справа от него. Нам нужно снова выбрать виртуальный пин для каждого. Для масштабирования оси Y выберите высоту. Затем для температуры установите высоту 67 - 100. Для влажности установите высоту 34 - 66. Для давления установите высоту от 0 до 33. Установите цвета в соответствии с обозначенными значениями. Включите Показать ось Y. Вот и все. Выйдите из режима редактирования, и дисплей вашего телефона должен выглядеть как у меня. Чтобы график заработал, требуется немного времени. Для быстрых результатов просмотрите в реальном времени или с разрешением 1 час.

Еще одна функция Blynk, о которой вы, возможно, захотите узнать, - это поделиться своим готовым проектом Blynk с другими смартфонами, чтобы несколько телефонов могли просматривать метеостанцию. Чтобы начать совместное использование, переведите свой проект в режим редактирования и щелкните верхний средний значок для параметров проекта. Включите общий доступ, а затем создайте ссылку. Он предоставит вам QR-код, который вы можете отправить по электронной почте или другим способом. Новому пользователю нужно приложение Blynk, но не учетная запись на Blynk. В приложении незарегистрированного пользователя есть ссылка для загрузки QR-кода чужого проекта Blynk. Вот и все.

Это было довольно ограниченное введение в Blynk, но оно должно дать вам хорошее начало. Я упоминал ранее, что Blynk бесплатен - ну, это почти так. И виджеты, и совместное использование используют очки, которые Блинк называет энергией. Думаю, для начала вы получите 2500 баллов бесплатно. Этого более чем достаточно, чтобы сделать этот проект бесплатно. Но совместное использование или добавление к нему может привести к тому, что у вас закончится энергия Blynk. Я потратил 6 долларов, чтобы получить дополнительные 5000 баллов. Возможно, вам придется потратить несколько долларов на топливо для Blynk, если вы будете заниматься другими проектами с Blynk.

Код

  • Крошечная интернет-метеостанция
Крошечная интернет-метеостанция Arduino
С Wi-Fi и Blynk для смартфона
 / * Этот эскиз предназначен для Arduino Nano 33 IoTIt использует сенсорную плату BME280. Он использует 0,96-дюймовый OLED-дисплей 128 x 64. Он подключается через Wi-Fi к облачному серверу Blynk для отображения данных о погоде на смартфоне. * / # include  #include  #include  // Библиотека BME280 # include  // используется для преобразования чисел погоды в строки для отображения на OLED # include  // Библиотека OLED // Следующие два включения необходимы для того, чтобы Nano 33 IoT работал с Blynk # include  #include  char auth [] ="YourBlynkProjectCode"; char ssid [ ] ="YourWifiID"; char pass [] ="YourWiFiPassword"; Adafruit_BME280 bme; // использовать интерфейс I2C. -1 # определить FLIP180 0 # определить INVERT 0 # определить USE_HW_I2C 0 # определить MY_OLED OLED_128x64 # определить OLED_WIDTH 128 # определить OLED_HEIGHT 64SSOLED ssoled; // экземпляр таймера OLEDBlynkTimer; // экземпляр Blynk timervoid setup () {if (! bme.begin (0x76)) {// ждем, пока датчик не будет обнаружен while (1) delay (10); } bme_temp-> printSensorDetails (); bme_pressure-> printSensorDetails (); bme_humidity-> printSensorDetails (); oledInit (&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L); oledFill (&ssoled, 0x0, 1); Blynk.begin (auth, ssid, pass); // закомментируем эту строку, чтобы метеостанция работала без Blynk timer.setInterval (60000L, myupdate); // запускает myupdate раз в минуту myupdate (); // запускаем начальное обновление отображения и данных в Blynk, потому что основной цикл ждет одну минуту} void loop () {Blynk.run (); // Blynk предпочитает запускать себя в основном цикле. timer.run (); // Все остальное обрабатывается через таймер Blynk} // эта процедура вызывается таймером Blynk для обновления OLED-дисплея и передачи данных в Blynkvoid myupdate () {sensor_event_t temp_event, pressure_event, влажность_event; bme_temp-> getEvent (&temp_event); bme_pressure-> getEvent (&pressure_event); bme_humidity-> getEvent (&влажность_event); float ctemp =temp_event.temperature; // получить температуру в градусах Цельсия float ftemp =32 + (9 * ctemp) / 5; // преобразовываем температуру в градусы Фаренгейта float hum =влажность_event.relative_humidity; // получить значение относительной влажности ppress =pressure_event.pressure; // получить давление в мм float mpress =1.3 + ppress / 33.8939; // конвертируем в дюймы ртутного столба и добавляем 1,3, чтобы соответствовать фактическому локальному барометрическому // давлению. Вы можете удалить 1.3 и / или добавить свои собственные настройки. char mytemp [8]; dtostrf (ftemp, 6, 2, mytemp); // преобразовываем temp в строку char myhum [8]; дтострф (хум, 6, 2, михум); // преобразовываем влажность в строку char mypress [8]; дтострф (мпресс, 6, 2, майпресс); // преобразование давления в строку // обновление OLED-дисплея oledWriteString (&ssoled, 0,2,1, (char *) «Weather Station», FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,3, (char *) «Temp =», FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,3, (char *) mytemp, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,3, (char *) «F», FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,5, (char *) «Humid =», FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,5, (char *) myhum, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,5, (char *) «%», FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,7, (char *) "Press =", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,7, (char *) mypress, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,7, (char *) "in", FONT_NORMAL, 0, 1); // отправляем новые данные о погоде в Blynk Blynk.virtualWrite (V3, ftemp); Blynk.virtualWrite (V4, гул); Blynk.virtualWrite (V5, mpress); } 

Схема


Производственный процесс

  1. Интегральная схема
  2. Метеостанция на основе Raspberry Pi
  3. Метеостанция Raspberry Pi 2
  4. Метеостанция Raspberry Pi
  5. Присоединяйтесь к IOT со своей метеостанцией - CWOP
  6. Метеостанция V 2.0
  7. Цифровая командная станция DCC Model Rail Arduino и бесплатное приложение
  8. 6-Shooter:станция для смешивания напитков Arduino
  9. MotionSense
  10. Регистратор данных с погодными шарами на базе Arduino