1.前言
2.温湿度计制作
前言
非常感谢面包板社区以及机智云能给我评测的机会,作为一位刚入门的小白来说,确实需要这么一套优质、功能全面的开发板
这款开发板是一款物联网开发板,集成了物联网很多常用的功能
应用板板载了
- 正反转可调速电机马达
- 温湿度传感器
- 红外感应器
- RGB全彩LED灯
- 另外增加了OLED扩展接口(8针脚)
主控板采用了Arduino R3版本,可以使用Arduino IDE编程软件,快捷,高效的编程
Arduino IDE的优点就是不需要了解库函数如何做的,里面有非常多封装好的库函数,直接调用即可
WIFI模块采用ESP8266,出厂已经内置机智云的固件,可以通过AirLink 、WebConfig、 SoftAP三种方法进行配网,让开发板拥有WIFI功能
温湿度计制作
1.安装Arduino
首先访问Arduino的官网,进入软件下载界面https://www.arduino.cc/en/software
选择自己的系统版本下载,这里我直接选择 WIN10 and newer 64 bits
可以选择捐赠,也可以选择仅下载,所以我们只下载就可以了
选JUST DOWNLOAD
运行下载后的程序arduino-ide_2.2.1_Windows_64bit.exe
然后一直下一步就可以了
打开软件,一开始应该是英文状态,点击【File】-> 【Preferences】,可以改中文模式,同时可以改主题颜色
2.创建Arduino
打开Arduino然后直接另存为文件,到桌面,文件名不要中文
选择开发板,Arduino uno
用数据线连接开发板,选择端口,我这里是COM12
3.硬件接线
从原理图可以找出,DHT11温湿度传感器的引脚是D3
开发板预留了一个oled屏幕接口(spi)8针脚
但是我这里只有4针脚(iic)的,所以我需要自行定义两个引脚用来给屏幕传输
GND----GND
VDD----VCC
SCK----D8
SDA----D9
4.编写代码Arduino
导入库文件,此项目有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());
- }
5.编译、下载
因为Arduino uno只有一个串口,开发板默认让这个串口连接ESP8266
但是下载需要用到串口,所以必须把ESP8266旁边的跳线取下
选择Arduino uno开发板,对应的com端口
然后按下Ctrl+U即可下载,或者点击左上角的上传
输出这些提示,则代表上传正常
6.验证