2021-05-31 电子科协技术部学习报告

2021.5.31

ESP8266

DHT11温湿度传感器

OLED屏幕

最近初次接触esp8266,所以用他和一些传感器,屏幕,做了个可以显示温湿度的温湿度计。

esp8266

esp8266nodemcu简介

ESP8266-NodeMCU是一个开源硬件开发板

由于它支持WIFI功能,所以在物联网(IOT)领域,Arduino开发板最大的对手之一就是ESP8266-NodeMCU开发板。
简单来说,就是个价格很便宜,可以连接WiFi,蓝牙的智能开发板。

主要技术参数

核心模块 ESP8266
工作电压 5伏特
输入电压(推荐) 5伏特
输入电压(极限) 4.5 ~ 10 伏特
数字输入输出引脚 10个(全部可以作为PWM引脚)
PWM引脚 10个
模拟输入引脚 2个
WIFI标准 802.11 b / g / n
工作模式 STA / AP / STA + AP
重量 7g

DHT11

简介

DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,内部由一个 8 位单片机控制一个电阻式感湿元件和一个 NTC 测温元件。DHT11 虽然也是采用单总线协议,但是该协议与 DS18B20 的单总线协议稍微有些不同之处。

相比于 DS18B20 只能测量温度,DHT11 既能检测温度又能检测湿度,不过 DHT11 的精度和测量范围都要低于 DS18B20,其温度测量范围为 0~50℃,误差在±2℃;湿度的测量范围为 20%~90%RH(Relative Humidity 相对湿度—指空气中水汽压与饱和水汽压的百分比),误差在±5%RH。DHT11 电路很简单,只需要将 Dout 引脚连接单片机的一个 I/O 即可,不过该引脚需要上拉一个 5K 的电阻,DHT11 的供电电压为 3~5.5V。

OLED

简介

  OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(OrganicElectroluminesence Display, OELD)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示,OLED 效果要来得好一些。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。

2021-05-31 电子科协技术部学习报告_第1张图片

2021-05-31 电子科协技术部学习报告_第2张图片

arduino代码

 #include 

#include
#include
#include
#include
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); //128*64像素,逐行式
#define DHTPIN 14 //定义引脚D5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup()
{ Serial.begin(115200);
dht.begin();
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) // 扫描OLED的地址,默认0x3c
{
Serial.println(F(“SSD1306 allocation failed”));
for(;;
}
delay(2000);
display.clearDisplay(); // 清屏
display.setTextColor(WHITE); //开像素点发光
}
void loop()
{
delay(5000);
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(h) || isnan(t)) // 如果都没有采集到数据,则打印失败
{
Serial.println(“Failed to read from DHT sensor!”);
}
display.clearDisplay(); // 清屏
display.setTextSize(1); // 字体
display.setCursor(0,0); //显示位置在第一行第一个
display.print("Temperature: “);
display.setTextSize(2);
display.setCursor(0,10);
display.print(t);
display.print(” ");
display.setTextSize(1);
display.cp437(true); //使用cp437符号集
display.write(167); //对应的温度符号
display.setTextSize(2);
display.print(“C”); // display humidity
display.setTextSize(1);
display.setCursor(0, 35);
display.print(“Humidity: “);
display.setTextSize(2);
display.setCursor(0, 45);
display.print(h);
display.print(” %”);
display.display();
}

有任何意见或者是疑问,可以私信或者加qq: 2373112901
欢迎小伙伴们提出宝贵的建议。

你可能感兴趣的:(学习报告,arduino,代码规范,传感器,物联网)