本帖最后由 小恶魔owo 于 2024-11-2 23:22 编辑

前言
image.png
52abbb63b3b4ba83d880ebe861389f3.jpg
首先,非常感谢联盛德微电子和面包板社区提供的开发板,让我做本期评测
然后我拿到的板子是: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 存储器,支持固件加密存储、固件签名、安全调试、安全升级等多项安全措施,保证产品安全特性。
b0296c5fb6e21ecd7239ee90cb67c9c.jpg
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往上的新版!!!

image.png
arduino这个问题,我折腾了一晚上,因为我一直用的2.3.3版本(最新),一直都用不了,无论用什么方法
直到我下载了一个1.8版本,才能够正常使用

(一)下载arduino IDE 1.8.19
https://www.arduino.cc/en/software,滑到下面,会有老版本的下载地址,一直安装就好了

(二)添加管理器地址
① 文件----首选项
image.png

②附加开发板管理器网址
http://dl.isme.fun/w80x_arduino/package_w80x_index.json
image.png

③打开开发板管理器,搜索W80X,然后安装
image.png
image.png

④选择开发板W800,其他默认
image.png


开发学习
GitHub:https://github.com/board707/w80x_arduino/tree/hal-v0.6.0
image.png
目前已经完成以上内容,基本上和Arduino uno使用方法一样,该有的功能也有
所以可以用Arduino uno的开发方式来开发W800 arduino

注意:W800 arduino拥有蓝牙、wifi等功能,但是arduino IDE还不支持,GitHub作者回复,在以后会有w80x-arduino-iot新项目
image.png



项目学习
虽然Arduino IDE还不支持wifi,但是大多数功能已经适配了,所以我们可以用来做一个小项目,来为W800 arduino这款开发板进行个了解并开荒

(一)了解开发板引脚
image.png
image.png
acc366dabecfd43804141f86b8d584d.jpg


(二)点亮RGB灯
我们可以看到板载的RGB灯是连接PWM0、PWM1、PMW2
image.png
image.png

①将3个PMW接口设置为输出模式
image.png

②为引脚写入模拟值
image.png

③完整代码
  1. void setup() {
  2.   pinMode(PB0, PWM_OUT);
  3.   pinMode(PB1, PWM_OUT);
  4.   pinMode(PB2, PWM_OUT);
  5. }

  6. void setColor(int red,int green,int blue)
  7. {
  8.     analogWrite(PB0,red);
  9.     analogWrite(PB1,green);
  10.     analogWrite(PB2,blue);
  11. }

  12. void loop() {
  13.     int i;
  14.     for(i=0;i<256;i++)
  15.     {
  16.         setColor(i,0,0);
  17.         delay(4);
  18.     }
  19.     delay(500);           //turn the RGB LED red smoth

  20.     for(i=0;i<256;i++)
  21.     {
  22.         setColor(0,i,0);
  23.         delay(4);
  24.     }
  25.     delay(500);           //turn the RGB LED green smoth
  26.   
  27.     for(i=0;i<256;i++)
  28.     {
  29.         setColor(0,0,i);
  30.         delay(4);
  31.     }
  32.     delay(100);           //turn the RGB LED blue smoth

  33. }






④效果展示,这可以实现RGB流水灯的效果
7b74a976f59cd4bb5fc1 -original-original.gif


(三)DHT11&OLED温湿度计
我们可以用板子上的IIC引脚可以接一个OLED屏幕,然后读取DHT11传感器来做一个温湿度计

①DHT11
image.png
对于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可以得出温度
  1. #include <dht11.h>//引入DHT11库

  2. /********************###定义###********************/
  3. dht11 DHT11;//定义传感器类型
  4. #define DHT11PIN PB3//定义传感器连接引脚。PMW3
  1. void loop() {
  2.   int temp = 0;
  3.   int humi = 0;
  4.   DHT11.read(DHT11PIN); //更新传感器所有信息

  5.   humi= DHT11.humidity;
  6.   temp = DHT11.temperature;
  7.   
  8.   Serial.print("当前温度 (℃): ");
  9.   Serial.println(temp);

  10.   Serial.print("当前湿度 (%): ");
  11.   Serial.println(humi);

  12.   delay(2000);

  13. }

②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

②编写屏幕代码
image.png
我们先选择,对应的屏幕模块
我的屏幕是SSD1306驱动,并且带有缓存区,4针脚IIC
所以选择GyverOLED<SSD1306_128x64, OLED_BUFFER> oled
  1. #include <GyverOLED.h>//W800_OLED
  2. GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;

对屏幕进行初始化,然后清屏,将清屏内容上传缓存区(空代码)
  1. void setup() {
  2.   oled.init();  //oled初始化
  3.   oled.clear();   // 清屏
  4.   oled.update();  // 上传缓存区
  5. }

先设置屏幕的位置setCursor,然后字体大小setScale,用print输出文字,最后上传到缓存区
注意:不支持中文,想要中文只能取模
  1. oled.setCursor(0, 0);   // 字体位置
  2.   oled.setScale(2);     //字体大小
  3.   oled.print("temp");
  4. oled.update();

温湿度计代码
  1. #include <GyverOLED.h>//W800_OLED
  2. #include <dht11.h>//引入DHT11库

  3. /********************###定义###********************/
  4. dht11 DHT11;//定义传感器类型
  5. #define DHT11PIN PB3//定义传感器连接引脚。PMW3

  6. GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;

  7. void setup() {
  8.   Serial.begin(9600);
  9.   oled.init();  //oled初始化
  10.   oled.clear();   // 清屏
  11.   oled.update();  // 上传缓存区
  12. }

  13. void loop() {
  14.   int temp = 0;
  15.   int humi = 0;
  16.   DHT11.read(DHT11PIN); //更新传感器所有信息
  17.   
  18.   
  19.   humi = DHT11.humidity;
  20.   temp = DHT11.temperature;
  21.   
  22.   Serial.print("当前温度 (℃): ");
  23.   Serial.println(temp);

  24.   Serial.print("当前湿度 (%): ");
  25.   Serial.println(humi);

  26.   
  27.   oled.setCursor(0, 0);   // 字体位置
  28.   oled.setScale(2);     //字体大小
  29.   oled.print("temp");

  30.   oled.setCursor(60, 0);   // 字体位置
  31.   oled.setScale(2);     //字体大小
  32.   oled.print(temp);

  33.   oled.setCursor(0, 5);   // 字体位置
  34.   oled.setScale(2);     //字体大小
  35.   oled.print("humi");
  36.   
  37.   oled.setCursor(60, 5);   // 字体位置
  38.   oled.setScale(2);     //字体大小
  39.   oled.print(humi);
  40.   
  41.   oled.update();
  42.   delay(2000);

  43. }


③项目展示
5d78d6b690c41fcaa1cd182aade2b5f.jpg



建议
(一)希望能够完善一下对Arduino IDE的支持,加上wifi和蓝牙功能的适配,这样能够进一步使用产品,更好的独立使用W800 arduino
(二)希望能改进项目,因为目前大多数人都已经将Arduino IDE升级2.0以上版本,所以最好能够让产品适配2.0版本,而不是停留在1.8版本
(三)希望出厂的时候,提前烧录一个测试程序,用户可以判断板子好坏。切换板载天线和外接天线,可以加个排针,不用焊接的方式来改
(四)在网上相对应的资料较少,可以多开展活动来让资料更加丰富

总结
55ccc5027d7797079c9e -middle-original.gif
(一)W800 Arduino这块开发板还是挺好用的,一套体验下来就是一款MAX版的Arduino uno,板子的核心功能wifi和蓝牙虽然没有适配,但是仅用普通功能已经可以完成一般单片机可以完成的工作
(二)W800芯片小巧,性能高,功能丰富,安全性强,用在物联网领域完全没问题
(三)虽然网上的资料较少,但是联盛德对客户的技术支持还是非常到位的,基本上有问必答,有求必应