测量温度 - Wio Terminal 在本课程的这一部分,你将为你的Wio Terminal添加一个温度传感器,并从中读取温度值。 硬件 Wio Terminal需要一个温度传感器。 你将使用的传感器是一个数字温湿度传感器DHT11,它在一个封装内结合了两个传感器。这种传感器相当流行,有许多商用传感器结合了温度、湿度甚至有时是大气压力。温度传感器部分是一个负温度系数(NTC)热敏电阻,在温度升高时其电阻减小。 这是一个数字传感器,因此内置ADC以生成包含温度和湿度数据的数字信号,微控制器可以读取该信号。 连接温度传感器 Grove温湿度传感器可以连接到Wio Terminal的数字端口。 任务 - 连接温度传感器 连接温度传感器。
在本课程的这一部分,你将为你的Wio Terminal添加一个温度传感器,并从中读取温度值。
Wio Terminal需要一个温度传感器。
你将使用的传感器是一个数字温湿度传感器DHT11,它在一个封装内结合了两个传感器。这种传感器相当流行,有许多商用传感器结合了温度、湿度甚至有时是大气压力。温度传感器部分是一个负温度系数(NTC)热敏电阻,在温度升高时其电阻减小。
这是一个数字传感器,因此内置ADC以生成包含温度和湿度数据的数字信号,微控制器可以读取该信号。
Grove温湿度传感器可以连接到Wio Terminal的数字端口。
连接温度传感器。

将Grove线的一端插入温湿度传感器上的插座。它只能以一种方式插入。
在断开Wio Terminal与电脑或其他电源连接的情况下,将Grove线的另一端连接到显示屏右侧的Grove插座上。这是远离电源按钮的那个插座。

现在可以编程Wio Terminal来使用连接的温度传感器。
编程设备。
使用PlatformIO创建一个新的Wio Terminal项目,命名为temperature-sensor。在setup函数中添加代码以配置串行端口。
⚠️ 如果需要,你可以参考项目1,第1课创建PlatformIO项目的说明。
在项目的platformio.ini文件中添加Seeed Grove温湿度传感器库的依赖:
lib_deps = seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1
⚠️ 如果需要,你可以参考项目1,第4课向PlatformIO项目添加库的说明。
添加以下代码:#include directives to the top of the file, under the existing #include <Arduino.h>:
#include <DHT.h> #include <SPI.h>
这会导入与传感器交互所需的文件。DHT.h header file contains the code for the sensor itself, and adding the SPI.h头文件确保编译应用时链接所需的与传感器通信的代码。
在setup函数之前,声明DHT传感器:
DHT dht(D0, DHT11);
这声明了一个DHT class that manages the Digital Humidity and Temperature sensor. This is connected to port D0实例,即Wio Terminal右侧的Grove插座。第二个参数告诉代码正在使用的传感器是DHT11传感器——你使用的库支持这种传感器的其他变种。
在setup函数中,添加代码以设置串行连接:
void setup() { Serial.begin(9600); while (!Serial) ; // Wait for Serial to be ready delay(1000); }
在setup函数的末尾,delay之后,添加调用启动DHT传感器的代码:
dht.begin();
在loop函数中,添加代码以调用传感器并将温度打印到串行端口:
void loop() { float temp_hum_val[2] = {0}; dht.readTempAndHumidity(temp_hum_val); Serial.print("Temperature: "); Serial.print(temp_hum_val[1]); Serial.println ("°C"); delay(10000); }
这段代码声明了一个空的浮点数数组,并将其传递给readTempAndHumidity on the DHT实例的调用。这个调用将数组填充为两个值——湿度放入数组的第0项(记住在C++中数组是从0开始的,所以第0项是数组中的“第一个”项),温度放入第1项。
温度从数组的第1项读取,并打印到串行端口。
温度以摄氏度为单位读取。对于美国人来说,要将其转换为华氏度,先将摄氏度值除以5,然后乘以9,再加上32。例如,20°C的读数变为((20/5)*9) + 32 = 68°F。
构建并上传代码到Wio Terminal。
⚠️ 如果需要,你可以参考项目1,第1课创建PlatformIO项目的说明。
上传完成后,你可以通过串行监视器监控温度:
> Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- Temperature: 25.00°C Temperature: 25.00°C Temperature: 25.00°C Temperature: 24.00°C
你可以在code-temperature/wio-terminal文件夹中找到此代码。
你的温度传感器程序成功了!
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。