1.前言
2.温湿度计制作
前言
![b745f6a8f6b691a8f5e7c78e91e5a13.jpg b745f6a8f6b691a8f5e7c78e91e5a13.jpg](https://static.assets-stash.eet-china.com/forum/202407/30/172231447525567124115bqs60jdkk05m0ddc.jpg)
非常感谢面包板社区以及机智云能给我评测的机会,作为一位刚入门的小白来说,确实需要这么一套优质、功能全面的开发板
![](static/image/hrline/5.gif)
![](https://docs.gizwits.com/assets/zh-cn/deviceDev/Gokit2/8.png)
这款开发板是一款物联网开发板,集成了物联网很多常用的功能
应用板板载了
- 正反转可调速电机马达
- 温湿度传感器
- 红外感应器
- RGB全彩LED灯
- 另外增加了OLED扩展接口(8针脚)
![](https://docs.gizwits.com/assets/zh-cn/deviceDev/Gokit2/7.png)
主控板采用了Arduino R3版本,可以使用Arduino IDE编程软件,快捷,高效的编程
Arduino IDE的优点就是不需要了解库函数如何做的,里面有非常多封装好的库函数,直接调用即可
![f9c7d4a7078dac813f55a43f9e299e9.jpg f9c7d4a7078dac813f55a43f9e299e9.jpg](https://static.assets-stash.eet-china.com/forum/202407/30/172231445519963124055cmn8ls4oatn982oi.jpg)
WIFI模块采用ESP8266,出厂已经内置机智云的固件,可以通过AirLink 、WebConfig、 SoftAP三种方法进行配网,让开发板拥有WIFI功能
温湿度计制作
1.安装Arduino
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231453268281124212b5abr8dgr8hd5kh5.png)
首先访问Arduino的官网,进入软件下载界面https://www.arduino.cc/en/software
选择自己的系统版本下载,这里我直接选择 WIN10 and newer 64 bits
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231454788224124227chzs6j0ah6ic88a8.png)
可以选择捐赠,也可以选择仅下载,所以我们只下载就可以了
选JUST DOWNLOAD
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231460677418124326g99uek59988lozca.png)
运行下载后的程序arduino-ide_2.2.1_Windows_64bit.exe
然后一直下一步就可以了
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231462190529124341kvw9m2v33v383avu.png)
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231462949403124349yzrda7ghdt3c4uzr.png)
打开软件,一开始应该是英文状态,点击【File】-> 【Preferences】,可以改中文模式,同时可以改主题颜色
![](static/image/hrline/5.gif)
2.创建Arduino
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231501029499125010l7lfdtudma73hzmt.png)
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231506331012125103sree0sxddb9s90he.png)
打开Arduino然后直接另存为文件,到桌面,文件名不要中文
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172231935967571140239yu6zq4f1vzgq0yh9.png)
选择开发板,Arduino uno
用数据线连接开发板,选择端口,我这里是COM12
![](static/image/hrline/5.gif)
3.硬件接线
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172232136159992143601z8snleygwwwungzy.png)
![180c3ae57016eb5200ee584d1fdf236.jpg 180c3ae57016eb5200ee584d1fdf236.jpg](https://static.assets-stash.eet-china.com/forum/202407/30/172232170851948144148pu6xobbuoelb4yuu.jpg)
从原理图可以找出,DHT11温湿度传感器的引脚是D3
开发板预留了一个oled屏幕接口(spi)8针脚
但是我这里只有4针脚(iic)的,所以我需要自行定义两个引脚用来给屏幕传输
GND----GND
VDD----VCC
SCK----D8
SDA----D9
4.编写代码Arduino
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172232002374174141343l3wr484lreerefa4.png)
导入库文件,此项目有2个库文件
1.温湿度传感器库----DHT
2.OLED库文件----U8g2
库文件下载地址
DHT https://mbb.eet-china.com/download/315968.html
U8g2 https://mbb.eet-china.com/download/315969.html
Arduino源码下载
https://mbb.eet-china.com/download/315970.html
导入库文件
#include <DHT.h>
#include <U8g2lib.h>
//uno内存太小用不了常规的中文库
//最多只能用u8g2_font_unifont_t_chinese2
复制代码定义引脚、类型
#define SCL 8
#define SDA 9
//u8g2定义
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /*clock=*/SCL, /*data=*/SDA, /*reset=*/U8X8_PIN_NONE);
//定义针脚
#define DHTPIN 3
//定义类型,DHT11或者其它
#define DHTTYPE DHT11
//进行初始设置
DHT dht(DHTPIN, DHTTYPE);
复制代码中文字模
uint8_t weight_str[][32] =
{
{0x00,0x00,0xC4,0x1F,0x48,0x10,0x48,0x10,0xC1,0x1F,0x42,0x10,0x42,0x10,0xC8,0x1F,
0x08,0x00,0xE4,0x3F,0x27,0x25,0x24,0x25,0x24,0x25,0x24,0x25,0xF4,0x7F,0x00,0x00},/*"温",0*/
{0x00,0x00,0xE4,0x1F,0x28,0x10,0x28,0x10,0xE1,0x1F,0x22,0x10,0x22,0x10,0xE8,0x1F,
0x88,0x04,0x84,0x04,0x97,0x24,0xA4,0x14,0xC4,0x0C,0x84,0x04,0xF4,0x7F,0x00,0x00},/*"湿",1*/
{0x80,0x00,0x00,0x01,0xFC,0x7F,0x44,0x04,0x44,0x04,0xFC,0x3F,0x44,0x04,0x44,0x04,
0xC4,0x07,0x04,0x00,0xF4,0x0F,0x24,0x08,0x42,0x04,0x82,0x03,0x61,0x0C,0x1C,0x70},/*"度",2*/
};
复制代码初始化函数
void setup() {
Serial.begin(9600);
dht.begin(); //DHT开始工作
u8g2.begin();//u8g2开始工作
u8g2.clearBuffer(); // 清空显示设备内部缓冲区
//u8g2.setFont(u8g2_font_unifont_t_chinese2);//设置中文字符集,没内存,别用
u8g2.setFont(u8g2_font_ncenB14_tr);//设置数字样式
}
复制代码循环函数
void loop() {
// 两次检测之间,要等几秒钟,这个传感器有点慢。
delay(2000);
// 读温度或湿度要用250毫秒
float h = dht.readHumidity();//读湿度
float t = dht.readTemperature();//读温度,默认为摄氏度
/*串口*/
Serial.print("Humidity: ");//湿度
Serial.println(h);
Serial.print("Temperature: ");//温度
Serial.print(t);
/*屏幕*/
u8g2.firstPage();
do
{
u8g2.drawXBM(0,8,16,16,weight_str[0]);//x:X位置。y:Y位置。w:位图的宽度。h:位图的高度。bitmap:指向位图开始的指针
u8g2.drawXBM(16,8,16,16,weight_str[2]);//x:X位置。y:Y位置。w:位图的宽度。h:位图的高度。bitmap:指向位图开始的指针
u8g2.drawXBM(0,30,16,16,weight_str[1]);//x:X位置。y:Y位置。w:位图的宽度。h:位图的高度。bitmap:指向位图开始的指针
u8g2.drawXBM(16,30,16,16,weight_str[2]);//x:X位置。y:Y位置。w:位图的宽度。h:位图的高度。bitmap:指向位图开始的指针
u8g2.setCursor(40, 45); //指定显示位置
u8g2.print(h); //使用print来显示字符串 湿度
u8g2.setCursor(40, 20); //指定显示位置
u8g2.print(t); //使用print来显示字符串 温度
} while (u8g2.nextPage());
}
复制代码![](static/image/hrline/5.gif)
5.编译、下载
![0ef7a63800bf9e5c3fe739b8d352482.jpg 0ef7a63800bf9e5c3fe739b8d352482.jpg](https://static.assets-stash.eet-china.com/forum/202407/30/172232187249107144432w6qsygrtagt3g1ef.jpg)
因为Arduino uno只有一个串口,开发板默认让这个串口连接ESP8266
但是下载需要用到串口,所以必须把ESP8266旁边的跳线取下
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/172232206562262144745nipze9kzw9b3ph7w.png)
选择Arduino uno开发板,对应的com端口
然后按下Ctrl+U即可下载,或者点击左上角的上传
![image.png image.png](https://static.assets-stash.eet-china.com/forum/202407/30/17223221487772144908rdrr68zngfrtt3tl.png)
输出这些提示,则代表上传正常
6.验证
![555cd1be1320713dbcd2a73c0674310.jpg 555cd1be1320713dbcd2a73c0674310.jpg](https://static.assets-stash.eet-china.com/forum/202407/30/172232232444320145204vtx8xixkvvxvn8xd.jpg)