前言
首先,非常感谢联盛德微电子和面包板社区提供的开发板,让我做本期评测
然后我拿到的板子是:W800_ARDUINO_V4.0和评测页的产品不一样,V4为升级版。但是教程通用
本教程使用arduino IDE
使用VScode开发教程参考:https://doc.winnermicro.net/w800/zh_CN/latest/get_started/index.html#compiling-environment
W800 芯片是一款安全 IoT Wi-Fi/蓝牙 双模 SoC 芯片。支持 2.4G IEEE802.11b/g/n Wi-Fi 通讯协议;支持 BT/BLE 双模工作模式,支持 BT/BLE4.2 协议。芯片集成 32 位 CPU 处理器,内置 UART、GPIO、SPI、I2C、I2S、7816 等数字接口;支持TEE安全引擎,支持多种硬件加解密算法,内置 DSP、浮点运算单元,支持代码安全权限设置,内置 2MBFlash 存储器,支持固件加密存储、固件签名、安全调试、安全升级等多项安全措施,保证产品安全特性。
W800_ARDUINO是一款基于 Wi-Fi/蓝牙 Combo SoC W800调试板卡,兼容 Arduino 接口。支持作为 Wi-Fi 模块与 Arduino 接口主板对接;
也支持作为MCU主控板进行独立调试开发。支持丰富的主、从设备接口。
参考资料
【资料】
W800芯片资料:https://www.winnermicro.com/html/1/156/158/558.html
W800_ARDUINO:https://www.winnermicro.com/upload/1/editor/1715418237771.pdf
W800_ARDUINO原理图:https://www.winnermicro.com/upload/1/editor/1715418063984.pdf
【Arduino IDE项目】
联盛德arduino项目:https://github.com/Hi-LinkDuino/w80x_arduino
(推荐) nulllab空想实验室arduino项目:https://github.com/board707/w80x_arduino/tree/hal-v0.6.0
开发环境搭建
只能使用arduino IDE 1.8版本!!!不能用2.0往上的新版!!!
只能使用arduino IDE 1.8版本!!!不能用2.0往上的新版!!!
只能使用arduino IDE 1.8版本!!!不能用2.0往上的新版!!!
arduino这个问题,我折腾了一晚上,因为我一直用的2.3.3版本(最新),一直都用不了,无论用什么方法
直到我下载了一个1.8版本,才能够正常使用
(一)下载arduino IDE 1.8.19
https://www.arduino.cc/en/software,滑到下面,会有老版本的下载地址,一直安装就好了
(二)添加管理器地址
① 文件----首选项
②附加开发板管理器网址
http://dl.isme.fun/w80x_arduino/package_w80x_index.json
③打开开发板管理器,搜索W80X,然后安装
④选择开发板W800,其他默认
开发学习
GitHub:https://github.com/board707/w80x_arduino/tree/hal-v0.6.0
目前已经完成以上内容,基本上和Arduino uno使用方法一样,该有的功能也有
所以可以用Arduino uno的开发方式来开发W800 arduino
注意:W800 arduino拥有蓝牙、wifi等功能,但是arduino IDE还不支持,GitHub作者回复,在以后会有w80x-arduino-iot新项目
项目学习
虽然Arduino IDE还不支持wifi,但是大多数功能已经适配了,所以我们可以用来做一个小项目,来为W800 arduino这款开发板进行个了解并开荒
(一)了解开发板引脚
(二)点亮RGB灯
我们可以看到板载的RGB灯是连接PWM0、PWM1、PMW2
①将3个PMW接口设置为输出模式
②为引脚写入模拟值
③完整代码
- void setup() {
- pinMode(PB0, PWM_OUT);
- pinMode(PB1, PWM_OUT);
- pinMode(PB2, PWM_OUT);
- }
- void setColor(int red,int green,int blue)
- {
- analogWrite(PB0,red);
- analogWrite(PB1,green);
- analogWrite(PB2,blue);
- }
- void loop() {
- int i;
- for(i=0;i<256;i++)
- {
- setColor(i,0,0);
- delay(4);
- }
- delay(500); //turn the RGB LED red smoth
- for(i=0;i<256;i++)
- {
- setColor(0,i,0);
- delay(4);
- }
- delay(500); //turn the RGB LED green smoth
-
- for(i=0;i<256;i++)
- {
- setColor(0,0,i);
- delay(4);
- }
- delay(100); //turn the RGB LED blue smoth
- }
④效果展示,这可以实现RGB流水灯的效果
(三)DHT11&OLED温湿度计
我们可以用板子上的IIC引脚可以接一个OLED屏幕,然后读取DHT11传感器来做一个温湿度计
①DHT11
对于DHT11的原理,可以看我51单片机温湿度计那一篇文章,讲的很详细
https://mbb.eet-china.com/blog/4067534-457073.html
当我们了解DHT11的原理后,可以自己写一个DHT11库,以后做项目只需要调用库文件即可
当然,由于W800 arduino已经适配Arduino IDE ,所以可以直接用arduino uno的库
DHT11库:https://wwmg.lanzouj.com/iY0pC2e2e2id
②DHT11代码
引入DHT11库,定义DHT11,我们连接PMW3引脚,用于读取数据
DHT11.humidity可以得出湿度, DHT11.temperature可以得出温度
- #include <dht11.h>//引入DHT11库
- /********************###定义###********************/
- dht11 DHT11;//定义传感器类型
- #define DHT11PIN PB3//定义传感器连接引脚。PMW3
- void loop() {
- int temp = 0;
- int humi = 0;
- DHT11.read(DHT11PIN); //更新传感器所有信息
-
- humi= DHT11.humidity;
- temp = DHT11.temperature;
-
- Serial.print("当前温度 (℃): ");
- Serial.println(temp);
- Serial.print("当前湿度 (%): ");
- Serial.println(humi);
- delay(2000);
- }
②0.96OLED (iic)
将OLED屏幕接到板子的IIC引脚,即PA1 PA4
对于oled屏幕,GitHub项目里已经帮大家写好了库了,而且还有demo
GitHub:https://github.com/board707/w80x_arduino/tree/hal-v0.6.0/libraries/GyverOLED-w80x
②编写屏幕代码
我们先选择,对应的屏幕模块
我的屏幕是SSD1306驱动,并且带有缓存区,4针脚IIC
所以选择GyverOLED<SSD1306_128x64, OLED_BUFFER> oled
- #include <GyverOLED.h>//W800_OLED
- GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
对屏幕进行初始化,然后清屏,将清屏内容上传缓存区(空代码)
- void setup() {
- oled.init(); //oled初始化
- oled.clear(); // 清屏
- oled.update(); // 上传缓存区
- }
先设置屏幕的位置setCursor,然后字体大小setScale,用print输出文字,最后上传到缓存区
注意:不支持中文,想要中文只能取模
- oled.setCursor(0, 0); // 字体位置
- oled.setScale(2); //字体大小
- oled.print("temp");
- oled.update();
温湿度计代码
- #include <GyverOLED.h>//W800_OLED
- #include <dht11.h>//引入DHT11库
- /********************###定义###********************/
- dht11 DHT11;//定义传感器类型
- #define DHT11PIN PB3//定义传感器连接引脚。PMW3
- GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;
- void setup() {
- Serial.begin(9600);
- oled.init(); //oled初始化
- oled.clear(); // 清屏
- oled.update(); // 上传缓存区
- }
- void loop() {
- int temp = 0;
- int humi = 0;
- DHT11.read(DHT11PIN); //更新传感器所有信息
-
-
- humi = DHT11.humidity;
- temp = DHT11.temperature;
-
- Serial.print("当前温度 (℃): ");
- Serial.println(temp);
- Serial.print("当前湿度 (%): ");
- Serial.println(humi);
-
- oled.setCursor(0, 0); // 字体位置
- oled.setScale(2); //字体大小
- oled.print("temp");
- oled.setCursor(60, 0); // 字体位置
- oled.setScale(2); //字体大小
- oled.print(temp);
- oled.setCursor(0, 5); // 字体位置
- oled.setScale(2); //字体大小
- oled.print("humi");
-
- oled.setCursor(60, 5); // 字体位置
- oled.setScale(2); //字体大小
- oled.print(humi);
-
- oled.update();
- delay(2000);
- }
③项目展示
建议
(一)希望能够完善一下对Arduino IDE的支持,加上wifi和蓝牙功能的适配,这样能够进一步使用产品,更好的独立使用W800 arduino
(二)希望能改进项目,因为目前大多数人都已经将Arduino IDE升级2.0以上版本,所以最好能够让产品适配2.0版本,而不是停留在1.8版本
(三)希望出厂的时候,提前烧录一个测试程序,用户可以判断板子好坏。切换板载天线和外接天线,可以加个排针,不用焊接的方式来改
(四)在网上相对应的资料较少,可以多开展活动来让资料更加丰富
总结
(一)W800 Arduino这块开发板还是挺好用的,一套体验下来就是一款MAX版的Arduino uno,板子的核心功能wifi和蓝牙虽然没有适配,但是仅用普通功能已经可以完成一般单片机可以完成的工作
(二)W800芯片小巧,性能高,功能丰富,安全性强,用在物联网领域完全没问题
(三)虽然网上的资料较少,但是联盛德对客户的技术支持还是非常到位的,基本上有问必答,有求必应