ESP8266(Nodemcu)的I2C通信
ESP8266的I2C通信
电路连接
ESP8266的引脚D1连接模块的SCL、D2连接模块的SDA、模块的VCC、GND连接ESP8266的3.3V供电
板是临时凑的用了三个模块分别是温湿度传感器、光照传感器、空气质量传感器。
代码部分
仅供参考
#include <ESP8266WiFi.h>//安装esp8266arduino开发环境
static WiFiClient espClient;#include <Wire.h>
#include <BH1750FVI.h>
#include <ArduinoJson.h>//json包float humidity;
float cTemp;
float fTemp;
unsigned long lastMsMain = 0;DynamicJsonDocument doc(1024);// Create the Lightsensor instance
BH1750FVI LightSensor(BH1750FVI::k_DevModeContLowRes);// SHT30 IIC 7位地址为0x44
#define Addr 0x44void setup()
{Wire.begin();//初始化I2C通信作为主设备Serial.begin(9600);pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);LightSensor.begin();}void loop()
{uint16_t lux = LightSensor.GetLightIntensity();//获得光照强度sht3x();if (millis() - lastMsMain >= 2000)//每2秒发送一次{lastMsMain = millis();Serial.print("Light: ");Serial.println(lux);doc["LightLuminance"]=lux;doc["Humidity"]=humidity;doc["CurrentTemperature"]=cTemp; String output;serializeJson(doc, output);const char *str = output.c_str(); }
}
//温湿度传感
void sht3x()
{unsigned int data[6]; //存储获取到的六个数据//开始IIC//写地址Wire.beginTransmission(Addr);//发送测量命令 0x2C06,但是因为IIC一次只能发一个8位数据,所以得发两次Wire.write(0x2C);Wire.write(0x06);//停止IICWire.endTransmission();//等待500ms是等待SHT30器件测量数据,实际上这个时间可以很短delay(500);//请求获取6字节的数据,然后会存到8266的内存里Wire.requestFrom(Addr, 6);//读取6字节的数据//这六个字节分别为:温度8位高数据,温度8位低数据,温度8位CRC校验数据// 湿度8位高数据,湿度8位低数据,湿度8位CRC校验数据if (Wire.available() == 6){data[0] = Wire.read();data[1] = Wire.read();data[2] = Wire.read();data[3] = Wire.read();data[4] = Wire.read();data[5] = Wire.read();}//然后计算得到的数据,要转化为摄氏度、华氏度、相对湿度cTemp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;fTemp = (cTemp * 1.8) + 32;humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);//在串口里输出得到的数据Serial.print("相对湿度:");Serial.print(humidity);Serial.println("% RH");Serial.print("摄氏度温度:");Serial.print(cTemp);Serial.println(" C");Serial.print("华氏度温度:");Serial.print(fTemp);Serial.println(" F");delay(500);
}
根据对应需求进行更改即可。
ESP8266(Nodemcu)的I2C通信相关推荐
- ESP8266 NodeMCU Web 服务器:在仪表盘中显示传感器读数
了解如何使用 ESP8266 NodeMCU 构建网络服务器以在仪表盘中显示传感器读数.例如,我们将以两种不同的仪表显示 BME280 传感器的温度和湿度:线性和径向.您可以轻松修改项目以绘制任何其他 ...
- 利用ESP8266+OLED(I2C)打造智能时钟(网络校时+实时天气+天气预报)
从零开始使用ESP8266+OLED打造智能时钟(网络校时+实时天气+天气预报) 目录 零.前言 一.材料准备 1.ESP8266(NodeMCU V3) 2.OLED(SSD1306)(四针脚,利用 ...
- nodemcu与matlab,关于ESP8266 NodeMcu和ESP32 DEV模块两者的区别
什么是ESP32? ESP8266 Wi-Fi模块是过去几年中最受欢迎和最实用的模块之一.市场上有这种模块的各种版本. ESP32模块是ESP8266的升级版本.除了Wi-Fi模块,该模块还包含蓝牙4 ...
- ESP8266 NodeMCU:ESP-NOW Web 服务器传感器仪表板(ESP-NOW + Wi-Fi)
在本项目中,您将学习如何使用 ESP8266 NodeMCU 板托管 Web 服务器并同时使用 ESP-NOW 通信协议.您可以让多个 ESP8266 板通过 ESP-NOW 将传感器读数发送到一个 ...
- ESP8266 NodeMCU引脚说明
问题 开发ESP8266 NodeMCU GPIO功能时,作为小白的我根本不知道引脚编号,虽然知道ESP8266 NodeMCU丝印引脚编号如下图所示,但是和实际对应的GPIO编号完全不一样. 解决 ...
- ESP8266 + 0.96“ I2C OLED双色屏驱动显示
ESP8266 + 0.96" I2C OLED双色屏显示 驱动0.96"OLED屏幕的库很多,这次使用的是: #include <Adafruit_GFX.h> #i ...
- esp8266 nodemcu 自制mp3
ESP8266 播放 mp3 其实早就想做一个mp3播放器,但是一直没有时间,借着这次高考周放假,可以开始自己的开发. 准备工作 购置需要用到的模块 ESP8266 Nodemcu 作为开发板 OLE ...
- linux stm32 主从,STM32F407和STM32F051主从I2C通信方法
STM32F407和STM32F051主从I2C通信方法 作者:华清远见讲师 M4作为主机: int main(void) { HAL_Init(); SystemClock_Config(); MX ...
- AT24C0X I2C通信原理
/*********************************************************************** AT24C0X I2C通信原理* 说明:* 之前接触A ...
最新文章
- PostgreSQL 安装配置 (亲测可用)
- Castle.ActiveRecord的嵌套事务处理
- javascript 变量提前
- 50行代码串行Promise,koa洋葱模型原来这么有趣?
- 联想电脑如何添加无线网络连接服务器,安装英特尔MYWIFI的操作步骤
- 直方图均衡化 原理、流程、公式推导及matlab实现
- 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)
- Android 人脸识别 活体检测 人脸对比
- python实现全自动百词斩单词对战,躺着上分轻轻松松
- 天王星技术社区在成都举行《联盟链趋势和应用》交流会
- VS+QT编译出现QMYSQL driver not loaded
- IAAS基于开源openstack框架搭建云计算平台和各组件基础搭建内容包括mysql、keyston、Glance、Nova、Neutron、Dashboard、Heat、Trove等
- 中山大学计算机在职研究生分数线,2018年中山大学在职研究生分数线高吗?
- 华为traffic访问列表及Qos基本配置
- 服务器加了内存和硬盘不显示不出来,移动硬盘显示不出来怎么办 移动硬盘不显示解决办法【详解】...
- video DownLoad Mothed
- 微信开发使用wechat.class.php调用API,测试发现返回no access,公众号出现暂时无法提供服务
- 用Python理解极限,看了这个就不会挂高数了
- AU实战操作之混音、降噪
- Lucas–Kanade光流算法