Оглавление:
- Шаг 1. Получите API-ключ и URL-адрес от Openweather.org
- Шаг 2: Схема подключения
- Шаг 3: код Arduino
- Шаг 4: Обработка кода
Видео: (Проект IOT) Получение данных о погоде с помощью ESP8266 и Openweather API: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
В этом руководстве мы собираемся создать простой проект IOT, в котором будут извлекать данные о погоде в нашем городе с сайта openweather.com/api и отображать их с помощью программного обеспечения для обработки.
Запасы:
- Ардуино
- ESP8266 или любой другой модуль esp
- IDE Arduino
- Программное обеспечение для обработки
- Макетная плата
- Перемычки между мужчинами и мужчинами и женщинами
Шаг 1. Получите API-ключ и URL-адрес от Openweather.org
- Создайте аккаунт на https://openweathermap.org (Изображение 1)
- После входа в систему перейдите к ключам API, и вы получите ключ API, как показано на рисунке (Изображение 2).
- Скопируйте ключ API и сохраните его в файле блокнота. (Изображение 3)
- Перейдите к опции API (Изображение 4)
- Перейдите к параметру документации API, как показано на изображении (Изображение 5).
- Скопируйте URL-адрес из показанного и и сохраните его в файле блокнота (Изображение 6).
Шаг 2: Схема подключения
Шаг 3: код Arduino
Перед копированием этого кода в Arduino убедитесь, что вы загрузили плату ESP8266 в Arduino ide с помощью диспетчера плат.
#включают
#include #include #include const char * ssid = "Ваш SSID"; const char * password = "Ваш SSID PASSWORD"; // Ваше доменное имя с URL-путем или IP-адрес с путем String openWeatherMapApiKey = "Вставьте сюда свой ключ API"; // Замените кодом страны и городом String city = "Mumbai"; Строка countryCode = "IN"; Строковые данные [16]; // ТАЙМЕР ПО УМОЛЧАНИЮ УСТАНОВЛЕН НА 10 СЕКУНД ДЛЯ ТЕСТИРОВАНИЯ // Таймер установлен на 10 минут (600000) // unsigned long timerDelay = 600000; // Устанавливаем таймер на 10 секунд (10000) unsigned long timerDelay = 10000; String jsonBuffer; void setup () {Serial.begin (115200); WiFi.begin (ssid, пароль); //Serial.println("Connecting "); в то время как (WiFi.status ()! = WL_CONNECTED) {задержка (500); // Serial.print ("."); } // Serial.println (""); // Serial.print ("Подключено к сети Wi-Fi с IP-адресом:"); // Serial.println (WiFi.localIP ()); // // Serial.println ("Таймер установлен на 10 секунд (переменная timerDelay), до публикации первого чтения потребуется 10 секунд."); } void loop () {// Отправляем HTTP-запрос GET if ((millis () - lastTime)> timerDelay) {// Проверяем статус подключения WiFi if (WiFi.status () == WL_CONNECTED) {String serverPath = "https://api.openweathermap.org/data/2.5/weather?q= "+ city +", "+ countryCode +" & APPID = "+" d5b56fd07988143ae141503ed9d81742 "+" & units = metric "; jsonBuffer = httpGETRequest (serverPath.c_str ()); //Serial.println(jsonBuffer); JSONVar myObject = JSON.parse (jsonBuffer); // JSON.typeof (jsonVar) может использоваться для получения типа переменной if (JSON.typeof (myObject) == "undefined") {//Serial.println("Парсинг ввода завершился неудачно! "); возвращение; } // Serial.print ("JSON object ="); // Serial.println (myObject); // Serial.print ("Температура:"); // Serial.println (myObject ["main"] ["temp"]); // Serial.print ("Давление:"); // Serial.println (myObject ["main"] ["pressure"]); // Serial.print ("Влажность:"); // Serial.println (myObject ["main"] ["влажность"]); // Serial.print ("Скорость ветра:"); // Serial.println (myObject ["ветер"] ["скорость"]); int temp = myObject ["основной"] ["темп"]; long pres = myObject ["основной"] ["давление"]; int humid = myObject ["основной"] ["влажность"]; int wind = myObject ["ветер"] ["скорость"]; Строка country = JSON.stringify (myObject ["sys"] ["country"]); Строка city1 = JSON.stringify (myObject ["имя"]); Строка weather = JSON.stringify (myObject ["погода"] [0] ["описание"]); String icon = JSON.stringify (myObject ["погода"] [0] ["значок"]); данные [0] = Строка (темп); данные [1] = "/"; данные [2] = Строка (прес); данные [3] = "/"; data [4] = String (влажный); данные [5] = "/"; data [6] = Строка (ветер); данные [7] = "/"; данные [8] = страна; данные [9] = "/"; данные [10] = city1; данные [11] = "/"; данные [12] = погода; данные [13] = "/"; data [14] = значок; данные [15] = "\ п"; for (int i = 0; i0) {// Serial.print ("Код ответа HTTP:"); // Serial.println (httpResponseCode); полезная нагрузка = http.getString (); } else {Serial.print ("Код ошибки:"); Serial.println (httpResponseCode); } // Бесплатные ресурсы http.end (); вернуть полезную нагрузку; }
Шаг 4: Обработка кода
Перед запуском этого кода загрузите указанные изображения значков, которые будут использоваться для отображения погоды. И храните изображения и код в одной папке.
import processing.serial. *;
Последовательный myPort; PImage img; PImage img2; PImage img3; PImage img4; PImage img5; PImage img6; PImage img7; PImage img8; PImage img9; PImage img10; PImage img11; PImage img12; PImage img13; PImage img14; PImage img15; PImage img16; PImage img17; PImage img18; int temp; int pres; инт влажный; int wind; Строка city = ""; Строка country = ""; Строка weather = ""; Значок строки = ""; void setup () {размер (500, 500); myPort = новый последовательный порт (это, «COM3», 115200); img = loadImage ("01d.png"); img2 = loadImage ("01n.png"); img3 = loadImage ("02d.png"); img4 = loadImage ("02n.png"); img5 = loadImage ("03d.png"); img6 = loadImage ("03n.png"); img7 = loadImage ("04d.png"); img8 = loadImage ("04n.png"); img9 = loadImage ("09d.png"); img10 = loadImage ("09n.png"); img11 = loadImage ("10d.png"); img12 = loadImage ("10n.png"); img13 = loadImage ("11d.png"); img14 = loadImage ("11n.png"); img15 = loadImage ("13d.png"); img16 = loadImage ("13n.png"); img17 = loadImage ("50d.png"); img18 = loadImage ("50n.png"); } void draw () {background (72, 209, 204); textSize (22); заполнить (54, 69, 79); текст ("Температура:", 25, 100); текст (температура + «° C», 200, 100); текст ("Давление:", 25, 150); текст (пресс + «гпа», 200, 150); текст («Влажность:», 25, 200); текст (влажный + "%", 200, 200); текст ("Wind:", 25, 250); текст (ветер + «м / с», 200, 250); текст ("Страна / город:", 25, 300); текст (страна + "-" + город, 200, 300); текст ("Погода:", 25, 350); текст (погода, 200, 350); если (icon.contains ("01d")) {изображение (img, 380, 15); } иначе, если (icon.contains ("01n")) {изображение (img2, 380, 15); } иначе, если (icon.contains ("02d")) {изображение (img3, 380, 15); } иначе, если (icon.contains ("02n")) {изображение (img4, 380, 15); } иначе, если (icon.contains ("03d")) {изображение (img5, 380, 15); } иначе, если (icon.contains ("03n")) {изображение (img6, 380, 15); } иначе, если (icon.contains ("04d")) {изображение (img7, 380, 15); } иначе, если (icon.contains ("04n")) {изображение (img8, 380, 15); } иначе, если (icon.contains ("09d")) {изображение (img9, 380, 15); } иначе, если (icon.contains ("09n")) {изображение (img10, 380, 15); } иначе, если (icon.contains ("10d")) {изображение (img11, 380, 15); } иначе, если (icon.contains ("10n")) {изображение (img12, 380, 15); } иначе, если (icon.contains ("11d")) {изображение (img13, 380, 15); } иначе, если (icon.contains ("11n")) {изображение (img14, 380, 15); } иначе, если (icon == "13d") {изображение (img15, 380, 15); } иначе, если (icon.contains ("13n")) {изображение (img16, 380, 15); } иначе, если (icon.contains ("50d")) {изображение (img17, 380, 15); } иначе, если (icon.contains ("50n")) {изображение (img18, 380, 15); }} void serialEvent (Serial myPort) {если (myPort.available ()> 0) {String data = myPort.readStringUntil ('\ n'); если (данные! = ноль) {данные = обрезать (данные); Строковые элементы = split (data, '/'); если (items.length> 1) {temp = int (items [0]); pres = int (элементы [1]); humid = int (предметы [2]); wind = int (элементы [3]); city = items [4].replace ("\" "," "); country = items [5].replace (" / "", ""); weather = items [6].replace ("\" "," "); icon = items [7].replace (" / "", ""); }}}}
Рекомендуемые:
Получение времени из Интернета с помощью ESP8266 - Проект часов NTP с ESP8266 Nodemcu: 5 шагов
Получение времени из Интернета с помощью ESP8266 | Проект часов NTP с ESP8266 Nodemcu: в этом руководстве мы увидим, как узнать время с помощью ESP8266 / nodemcu с Arduino IDE. Определение времени особенно полезно при регистрации данных для отметки времени ваших показаний. Если ваш проект ESP8266 имеет доступ к Интернету, вы можете получить время с помощью Network T
Visuino - получение точного времени с сервера NIST в Интернете с помощью NodeMCU: 8 шагов
Visuino - получение точного времени с сервера NIST в Интернете с помощью NodeMCU: в этом руководстве мы будем использовать NodeMCU Mini, OLED Lcd и Visuino для отображения реального времени в Интернете с сервера NIST на ЖК-дисплее. Посмотрите демонстрационное видео. Заслуга за вдохновение принадлежит пользователю YouTube «Чиприан Балалау»
Проект Arduino: управление электроникой через Интернет с помощью базы данных и веб-сайта Nodejs + SQL: 6 шагов
Проект Arduino: Управление электроникой через Интернет с помощью базы данных и веб-сайта Nodejs + SQL .: Проект Автор: Mahmed.tech Дата создания: 14 июля 2017 г. Уровень сложности: Новичок с некоторыми знаниями программирования. Требования к оборудованию: - Arduino Uno, Nano, Mega (я думаю, что большинство микроконтроллеров с последовательным подключением будут работать) - Один светодиод & Ограничение тока res
IoT Made Easy: удаленный сбор данных о погоде: УФ-излучение, температура и влажность воздуха: 7 шагов
IoT стало проще: сбор удаленных данных о погоде: УФ, температура и влажность воздуха: в этом руководстве мы будем собирать удаленные данные, такие как УФ (ультрафиолетовое излучение), температура и влажность воздуха. Эти данные будут очень важны и будут использоваться в будущей полной метеостанции. Блок-схема показывает, что мы получим в конце
Получение данных с мертвого компьютера: 4 шага
Извлечение данных с мертвого компьютера: это включает в себя извлечение жесткого диска из мертвого компьютера и создание его внешнего вида на другом компьютере. целевой жесткий диск