使用 Arduino MKR1000 将 DHT11 传感器数据上传至 ThingSpeak
组件与材料
| DHT11 温湿度传感器(4 引脚) | ×1 |
| Arduino MKR1000 | ×1 |
项目简介
我之前已为 ESP8266-12E 编写代码,通过 DHT11 采集环境数据并无线上传至 ThingSpeak 绘图。本项目仅需微调即可适配 Arduino MKR1000。

步骤 1:硬件连接
将 DHT11 数据引脚连接到 MKR1000 的 Pin 1(板背面标记为 1 的引脚,即第 5 个引脚)。

步骤 2:安装库文件
步骤 3:安装 SAMD 核心板支持
在 Arduino IDE 中:工具 → 开发板 → 开发板管理器,搜索 Arduino SAMD Boards (32-bits ARM Cortex M0+),安装 1.6.3 版本(1.6.4 版本可能导致 MKR1000 板卡未正确安装)。

步骤 4:配置 ThingSpeak
- 注册免费 ThingSpeak 账号
- 创建通道,设置字段:Field 1 = 湿度,Field 2 = 摄氏度,Field 3 = 华氏度,Field 4 = 体感温度(℃),Field 5 = 体感温度(℉)
- 复制 Write API Key、WiFi SSID 与密码到下方代码中
步骤 5:上传与运行
选择正确的 COM 端口(MKR1000),编译上传。串口监视器将显示数据上传状态。

完整代码
/* 结合 Adafruit DHT 示例、WiFi101 WebClient 与 ThingSpeak 官方模板
* 适配 MKR1000,作者:Stephen Borsay
*/
#include <SPI.h>
#include <WiFi101.h>
#include <DHT.h>
#define DHTPIN 1 // 数据引脚
#define DHTTYPE DHT11 // DHT11
//#define DHTTYPE DHT21 // DHT21
//#define DHTTYPE DHT22 // DHT22
DHT dht(DHTPIN, DHTTYPE);
String apiKey = "YourApiKeyHere"; // ThingSpeak Write API Key
char ssid[] = "YourSSIDHERE"; // WiFi 名称
char pass[] = "YourPasswordHere"; // WiFi 密码
int keyIndex = 0; // 仅 WEP 需要
char server[] = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(9600);
while (!Serial) { ; }
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi 模块未检测到");
while (true);
}
while (WiFi.status() != WL_CONNECTED) {
Serial.print("连接中: ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
delay(10000);
}
Serial.println("WiFi 已连接");
printWifiStatus();
}
void loop() {
delay(2000);
int h = dht.readHumidity();
int t = dht.readTemperature(); // 摄氏度
int f = dht.readTemperature(true); // 华氏度
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("DHT 读取失败!");
return;
}
int hif = dht.computeHeatIndex(f, h);
int hic = dht.computeHeatIndex(t, h, false);
Serial.print("湿度: "); Serial.print(h); Serial.print(" %\t");
Serial.print("温度: "); Serial.print(t); Serial.print(" *C ");
Serial.print(f); Serial.print(" *F\t");
Serial.print("体感: "); Serial.print(hic); Serial.print(" *C ");
Serial.print(hif); Serial.println(" *F");
Serial.println("\n连接服务器...");
if (client.connect(server, 80)) {
Serial.println("已连接");
String tsData = "field1=" + String(h) + "&field2=" + String(t) +
"&field3=" + String(f) + "&field4=" + String(hic) +
"&field5=" + String(hif);
client.print("POST /update HTTP/1.1\r\n");
client.print("Host: api.thingspeak.com\r\n");
client.print("Connection: close\r\n");
client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\r\n");
client.print("Content-Type: application/x-www-form-urlencoded\r\n");
client.print("Content-Length: " + String(tsData.length()) + "\r\n\r\n");
client.print(tsData);
client.stop();
delay(1000);
}
}
void printWifiStatus() {
Serial.print("SSID: "); Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("IP: "); Serial.println(ip);
long rssi = WiFi.RSSI();
Serial.print("信号强度: "); Serial.print(rssi); Serial.println(" dBm");
}
GitHub 仓库
代码同步托管于:GitHub
原理图
DHT 数据线 → MKR1000 Pin 1(第 5 脚);VCC 和 GND 由 MKR1000 供电。
制造工艺
- Parts.Cat.Com如何简化配件采购,为您省时省钱
- Shop.Cat.Com:工程装备、附件、工具一站式采购平台
- 优化Cat®机械:My.Cat.com终极指南
- 树莓派紧凑型 DHT 温湿度扩展板:ATtiny85 + DHT22/DHT11
- 树莓派与 BrickPi 构建 ThingSpeak 温度监测系统
- 树莓派 + DHT11 + ThingSpeak:打造你的第一个物联网项目
- 专访Philip Cotton:3Dfilemarket.com创始人、英国3D打印教育专家
- RP Platform与3Faktur登上3Dprinting.com:推进建筑3D打印
- Arduino MKR1000 开发板详解:引脚定义、Wi-Fi/加密芯片、供电方式与上手指南
- PicoCoreMX8MM:基于 NXP i.MX 8M Mini 的超紧凑 ARM 模块
- Kontron 发布 COM HPC:新一代高性能嵌入式计算标准
- ASTM A551 DHT级热处理钢:关键性能与表现