米思齐Mixly ESP8266读取天气 串口和OLED显示

5 篇文章 0 订阅
2 篇文章 0 订阅

        用的ESP8266,我手上这两个都行,这个应该不挑的有WIFI功能就行。

这个闪屏是拍摄问题,人眼看是没有的 

        下面的就是效果了,这是串口的后面还有OLED屏幕显示的,好了开始教程。

 

        WIFI和心知天气在网络这里

 

 

         首先这个设置WIFI是自家的网络,比如是手机现在连的WIFI要有网的,打好名称和密码,错了的话读取的就是乱的日期和天气!

         实在怕没连到的话就加这个串口打印的代码,先上传看看行不行

 

 

         这个模块的API私钥是要去心知天气网站申请的,是免费的,也很简单,按照我给的图片做。

        搜索心知天气,没有用过的先点登录,注册登录一下不繁琐的 

         在主页点立即免费试用

         这里复制好私钥,放到那个模块就行

 

         这个就是串口的

        下面就颜色0.96寸OLED的,这个屏幕大小有限,就不全部显示了,提取自己需要的,但是还是得自动切换屏幕才能显示这些东西,太多了 。

配置部分

 显示部分

 

 

        效果演示,这个闪屏是拍摄问题,人眼看是没有的 

  • 18
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本示例使用Arduino IDE编写代码,并使用ESP8266开发板和0.96寸OLED屏幕。 首先,需要安装以下库: - Adafruit_SSD1306 - Adafruit_GFX - ESP8266WiFi 然后,将ESP8266与HLW8032模块连接。连接方式如下: - HLW8032的VCC引脚连接到ESP8266的3.3V引脚。 - HLW8032的GND引脚连接到ESP8266的GND引脚。 - HLW8032的CF引脚连接到ESP8266的D1引脚。 - HLW8032的CF1引脚连接到ESP8266的D2引脚。 - HLW8032的SEL引脚连接到ESP8266的D3引脚。 接下来,编写代码: ``` #include <Wire.h> #include <Adafruit_SSD1306.h> #include <ESP8266WiFi.h> // OLED屏幕的宽度和高度 #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 // OLED屏幕的I2C地址 #define OLED_ADDR 0x3C // 创建一个SSD1306对象 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // WiFi网络名称和密码 const char* ssid = "YourSSID"; const char* password = "YourPassword"; // HLW8032模块的引脚 #define CF_PIN D1 #define CF1_PIN D2 #define SEL_PIN D3 // 记录电量 double power = 0.0; void setup() { // 初始化串口 Serial.begin(9600); // 初始化OLED屏幕 Wire.begin(); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); display.display(); // 连接WiFi网络 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } // 初始化HLW8032模块 pinMode(CF_PIN, INPUT); pinMode(CF1_PIN, INPUT); pinMode(SEL_PIN, INPUT); digitalWrite(CF_PIN, HIGH); digitalWrite(CF1_PIN, HIGH); digitalWrite(SEL_PIN, LOW); } void loop() { // 读取电量 double voltage = 220.0; // 电压为220V double current = 0.0; double powerFactor = 0.0; int count = 0; while (count < 10) { if (digitalRead(CF_PIN) == LOW) { current += 1.0; } if (digitalRead(CF1_PIN) == LOW) { count++; } } current /= 10.0; powerFactor = 1.0; power = voltage * current * powerFactor; // 在OLED屏幕上显示电量 display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.print("Power: "); display.print(power); display.print(" W"); display.display(); // 延迟1秒 delay(1000); } ``` 代码中首先初始化了OLED屏幕和WiFi网络,然后初始化HLW8032模块,并在主循环中读取电量,并在OLED屏幕上显示电量。 在代码中,读取电量的方式是通过在CF引脚和CF1引脚之间计数来实现的。CF引脚每秒会输出一个脉冲,每个脉冲代表电流通过了一次。CF1引脚每10个脉冲输出一个脉冲,每个脉冲代表电量增加了一个单位。因此,我们可以通过在CF1引脚上计数来计算电量。 最后,上传代码到ESP8266开发板,即可在OLED屏幕上看到电量的实时显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值