本帖最后由 小恶魔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

③完整代码
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流水灯的效果
    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可以得出温度
    #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

    ②编写屏幕代码
    image.png
    我们先选择,对应的屏幕模块
    我的屏幕是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);

  • }
  • 复制代码


    ③项目展示
    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芯片小巧,性能高,功能丰富,安全性强,用在物联网领域完全没问题
    (三)虽然网上的资料较少,但是联盛德对客户的技术支持还是非常到位的,基本上有问必答,有求必应