找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6954|回复: 20
打印 上一主题 下一主题
收起左侧

Arduino ESP8266气象站制作 附源程序

  [复制链接]
回帖奖励 2 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:287880 发表于 2019-10-16 21:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
注意:
1、压缩包里面的库文件Adafruit_SSD1306和Adafruit_GFX_Library解压后放在C:\Program Files (x86)\Arduino\libraries    具体看你Arduino  安装位置
2、获取天气数据和API网址:见附件
注意的是在注册  获取验证码的时候   需要技巧   有需要的话可以联系我
3、Arduino版本1.8.9(测试通过)     c++
4、ArduinoJson库版本必须5点几  


暂时需要注意的地方就想到这么多   有问题关注私聊我就行   油管机器猫 bilibili UID:16872024         2019.08.21

有兴趣的可以看看


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:287880 发表于 2019-10-16 21:19 | 只看该作者
这是源码   视频可以去我B站看
IOT-Based-Weather-Station-NodeMCU-with-OLED-OpenWeatherMap-master.zip (345.8 KB, 下载次数: 143)

  1. /**********************************************************************
  2. //  项目:简易气象台
  3. //  硬件:适用于NodeMCU ESP8266 + SSD1306
  4. //  功能:连接WiFi后获取相关数据并在OLED屏上显示
  5. //  原版作者:How To Electronics
  6. //  魔改:油管机器猫 bilibili UID:16872024
  7. //  日期:2019/10/04
  8. //  硬件连接说明:
  9. //  OLED  --- ESP8266
  10. //  VCC   --- 3V(3.3V)
  11. //  GND   --- G (GND)
  12. //  SDA   --- D2(GPIO4)
  13. //  SCL   --- D3(GPIO0)
  14. **********************************************************************/
  15. #include <ESP8266WiFi.h>
  16. #include <ESP8266HTTPClient.h>  // http web access library
  17. #include <ArduinoJson.h>        // JSON decoding library    注意:ArduinoJson库5.13.5测试有效
  18. // Libraries for SSD1306 OLED display
  19. #include <Wire.h>              // include wire library (for I2C devices such as the SSD1306 display)
  20. #include <Adafruit_GFX.h>      // include Adafruit graphics library
  21. #include <Adafruit_SSD1306.h>  // include Adafruit SSD1306 OLED display driver

  22. #define OLED_RESET   5     // define SSD1306 OLED reset at ESP8266 GPIO5 (NodeMCU D1)
  23. Adafruit_SSD1306 display(OLED_RESET);

  24. // set Wi-Fi SSID and password
  25. const char *ssid     = "*******";
  26. const char *password = "*******";

  27. // 设置当地城市和API
  28. String Location = "Chengdu, CN";//这里我以成都为例
  29. String API_Key  = "*************";// 获取API密匙网址:openweathermap点org/price
  30.                                                      //注册,登陆 获取密匙 搜索城市  操作简单
  31. void setup(void)
  32. {
  33.   Serial.begin(115200);
  34.   delay(1000);

  35.   Wire.begin(4, 0);           // set I2C pins [SDA = GPIO4 (D2), SCL = GPIO0 (D3)], default clock is 100kHz
  36.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
  37.   Wire.setClock(400000L);   // set I2C clock to 400kHz

  38.   display.clearDisplay();
  39.   display.setTextColor(WHITE, BLACK);
  40.   display.setTextSize(0.1);
  41.   display.setCursor(0, 0);
  42.   display.println("  Weather Station  ");
  43.   display.print("bilibili-Doraemon  ");
  44.   display.display();

  45.   WiFi.begin(ssid, password);

  46.   Serial.print("Connecting.");
  47.   display.setCursor(0, 36);
  48.   display.println("Connecting...");
  49.   display.display();
  50.   while ( WiFi.status() != WL_CONNECTED )
  51.   {
  52.     delay(500);
  53.     Serial.print(".");
  54.   }
  55.   Serial.println("connected");
  56.   display.print("connected");
  57.   display.display();
  58.   delay(1000);
  59.   
  60.   display.clearDisplay();
  61.   display.display();
  62.   display.drawCircle(60,30,30,WHITE);
  63.   display.fillCircle(50,20,5,WHITE);
  64.   display.fillCircle(70,20,5,WHITE);
  65.   display.setTextSize(1);
  66.   display.setCursor(38,40);
  67.   display.print("Doraemon");
  68.   display.display();  
  69.   delay(1000);
  70.   display.clearDisplay();  
  71.   display.setTextSize(2);
  72.   display.setCursor(0, 0);
  73.   display.println("Doraemon");

  74. }

  75. void loop()
  76. {
  77.   if (WiFi.status() == WL_CONNECTED)  //Check WiFi connection status
  78.   {
  79.     HTTPClient http;  //Declare an object of class HTTPClient

  80.     // specify request destination
  81.     http.begin("api.openweathermap点org/data/2.5/weather?q=" + Location + "&APPID=" + API_Key);  // !!

  82.     int httpCode = http.GET();  // send the request

  83.     if (httpCode > 0)  // check the returning code
  84.     {
  85.       String payload = http.getString();   //Get the request response payload

  86.       DynamicJsonBuffer jsonBuffer(512);

  87.       // Parse JSON object
  88.       JsonObject& root = jsonBuffer.parseObject(payload);
  89.       if (!root.success()) {
  90.         Serial.println(F("Parsing failed!"));
  91.         return;
  92.       }

  93.       float temp = (float)(root["main"]["temp"]) - 273.15;        // get temperature in °C
  94.       int   humidity = root["main"]["humidity"];                  // get humidity in %
  95.       float pressure = (float)(root["main"]["pressure"]) / 1000;  // get pressure in bar
  96.       float wind_speed = root["wind"]["speed"];                   // get wind speed in m/s
  97.       int  wind_degree = root["wind"]["deg"];                     // get wind degree in °

  98.       // print data
  99.       Serial.printf("Temperature = %.2f°C\r\n", temp);
  100.       Serial.printf("Humidity    = %d %%\r\n", humidity);
  101.       Serial.printf("Pressure    = %.3f bar\r\n", pressure);
  102.       Serial.printf("Wind speed  = %.1f m/s\r\n", wind_speed);
  103.       Serial.printf("Wind degree = %d°\r\n\r\n", wind_degree);

  104.       display.setTextSize(0.1);
  105.       display.setCursor(0, 24);
  106.       display.printf("Temperature: %5.2f C\r\n", temp);
  107.       display.printf("Humidity   : %d %%\r\n", humidity);
  108.       display.printf("Pressure   : %.3fbar\r\n", pressure);
  109.       display.printf("Wind speed : %.1f m/s\r\n", wind_speed);
  110.       display.printf("Wind degree: %d", wind_degree);
  111.       display.drawRect(109, 24, 3, 3, WHITE);     // put degree symbol ( ° )
  112.       display.drawRect(97, 56, 3, 3, WHITE);
  113.       display.display();

  114.     }

  115.     http.end();   //Close connection

  116.   }

  117.   delay(60000);   // wait 1 minute  每分钟刷新数据 一次

  118. }
  119. //结束
复制代码


回复

使用道具 举报

板凳
ID:625711 发表于 2019-12-19 08:32 | 只看该作者
好资料!
回复

使用道具 举报

地板
ID:477560 发表于 2020-1-20 10:48 | 只看该作者
学习了,很不错。
回复

使用道具 举报

5#
ID:610710 发表于 2020-1-21 21:25 | 只看该作者
最近在学习,很不错,感谢楼主
回复

使用道具 举报

6#
ID:688485 发表于 2020-1-28 21:00 | 只看该作者
好资料 收藏了
回复

使用道具 举报

7#
ID:215949 发表于 2020-2-14 13:22 | 只看该作者
收藏了 谢谢分享
回复

使用道具 举报

8#
ID:75737 发表于 2020-3-2 20:44 | 只看该作者
谢谢分享!
回复

使用道具 举报

9#
ID:314881 发表于 2020-4-12 15:15 | 只看该作者
18280543500 发表于 2019-10-16 21:19
这是源码   视频可以去我B站看

好资料
回复

使用道具 举报

10#
ID:728483 发表于 2020-4-13 19:35 | 只看该作者
没有wifi模块,不然可以试着做一个
回复

使用道具 举报

11#
ID:727628 发表于 2020-4-13 20:49 | 只看该作者
感谢分享,小白学习中
回复

使用道具 举报

12#
ID:732140 发表于 2020-4-18 16:46 | 只看该作者
感谢大神分享
回复

使用道具 举报

13#
ID:744088 发表于 2020-5-4 19:45 | 只看该作者
好东西,辛苦
回复

使用道具 举报

14#
ID:744206 发表于 2020-5-5 09:53 | 只看该作者
楼主,库文件可以分享一下吗?
回复

使用道具 举报

15#
ID:744088 发表于 2020-5-6 14:19 | 只看该作者
楼主辛苦,下载量
回复

使用道具 举报

16#
ID:701198 发表于 2020-5-8 16:28 | 只看该作者
看着不错,如果有效果展示图就更完美了。
回复

使用道具 举报

17#
ID:263989 发表于 2020-5-13 16:34 | 只看该作者
学习中感谢分享
回复

使用道具 举报

18#
ID:615995 发表于 2020-5-14 18:07 | 只看该作者
谢谢分享
回复

使用道具 举报

19#
ID:763979 发表于 2020-5-29 09:05 | 只看该作者
感谢楼主
回复

使用道具 举报

20#
ID:804156 发表于 2020-7-21 17:29 | 只看该作者
这款有做成成品外壳的吗?
回复

使用道具 举报

21#
ID:804156 发表于 2020-7-24 10:00 | 只看该作者
LCD12864的显示屏可以替代这款显示屏吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表