简介

H3 H861 WiFi 开发板 是一款基于Hi3861V100 WiFi模组设计的开发板,纯国产化芯片设计方案,最小化模块尺寸。Hi3861V100是一款高度集成的2.4GHz WiFi SoC芯片,集成IEEE 802.11b/g/n基带和RF电路,RF电路包括功率放大器PA、低噪声放大器LNA、RF balun、天线开关以及电源管理等模块;支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。芯片集成高性能32bit微处理器、硬件安全引擎以及丰富的外设接口,外设接口包括SPI、UART、I2C、PWM、GPIO和多路ADC,最高时钟可达50MHz;芯片内置SRAM和Flash,可独立运行,并支持在Flash上运行程序。WiFi基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE 802.11 b/g/n协议的各种数据速率。

warning_yellow.png H3 H861 WiFi开发板属于开发级产品,上手需要一定的软件开发经验,新手上车需谨慎!!!

技术规格

  • 接口:USB-TYPE-C
  • 工作电压:3.3V
  • 模块:WF-H861-RTA1
  • IO口:11个
  • 复位按键:×1
  • 尺寸:41×25.4mm

引脚说明

HarmonyOS Dev Board

使用教程

HarmonyOS开发环境配置

写在前面的话:

  • Open Harmony OS环境搭建步骤较多,比较繁琐,建议多多尝试,最好有相关的底层软件开发经验。
  • Open Harmony OS功能多导致整个框架较为复杂,同一功能会有不同的源文件来自不同区域,对于新手来说,可能会混淆
  • I2C仅支持主机模式,不支持从机模式
  • Open Harmony OS使用DevEco Device Tool作为VSCode插件进行工程管理,使用GN/Ninja进行源码构建与编译,使用海思官方的ToolChain进行代码上传。
  • 教程文档略长,请耐心阅读,谢谢!

硬件准备

  • DFRobot H3 H861 WiFi dev board * 1
  • USB-C线缆

DevEco Device配置下载

Open Harmony OS通过华为官方推出的DevEco Device Tool插件,在VSCode中进行开发。

解压DevEco Device Tool压缩包,双击安装包程序,点击“下一步”进行安装(如果之前安装过这个环境,会弹出先卸载之前版本再安装,请按照要求卸载)

设置DevEco Device Tool的安装路径,请注意安路径不能包含中文字符,并且安装目录尽可能短,同时不要安装到C盘目录。
我们建议您再其他盘根目录新建一个文件夹安装。
点击"下一步"。

根据安装向导提示,安装依赖的python(默认路径即可)以及VSCode,其中VSCode在我们之前的指导中已经安装过,所以这里就会显示安装完成

按照提示正常安装DevEco后,再次打开VSCode,扩展出现DevEco环境

VSCode扩展配置

建议在Extension 中安装”Chinese“ "GN" "C/C++"
Chinese插件是VSCode中文界面插件。
GN是Make工具插件,安装后可更方便管理GN文件
C/C++是代码环境,该插件可让开发者高效开发C/C++代码


Hi3861 SDK(开发工具包)配置

以下两种方法选一个就可以安装SDK

方法一:
点击下载 Hi3861 SDK
下载过程中需要注册并登录Gitee账号。


将该压缩包解压至DevEco Device Tool安装路径下,具体路径见下图
可能您从Gitee的SDK包中hi3861_hdu_iot目录下并没有1.0.0文件夹,需要自己手动新建文件夹,并且将所有文件都直接放在1.0.0文件夹下。

工程配置

在DevEco中,菜单->主页->新建工程,并按照下图进行工程配置
配置完成后,点击确认完成工程配置

样例代码

配置完成后打开该项目文件夹,在这里我们将修改两个.gn文件来指定编译对应的代码,一个.c源文件来编写代码

首先需要将如下路径的.gn编译文件修改并保存。
src->applications/sample/wifi-iot->app->BUILD.gn
该.gn文件会指定编译"iothardware->led_example"文件夹

import("//build/lite/config/component/lite_component.gni")

lite_component("app") {
    features = [
       "iothardware:led_example",
    ]
}

接下来,我们需要将src->applications/sample/wifi-iot->app->-iothardware->BUILD.gn保存
该.gn文件会指定编译同目录下的"led_example.c"

static_library("led_example") {
    sources = [
        "led_example.c"
    ]

    include_dirs = [
        "//utils/native/lite/include",
        "//kernel/liteos_m/kal/cmsis",
        "//base/iot_hardware/peripheral/interfaces/kits",
    ]
}

最后将src->applications/sample/wifi-iot->app->iothardware->led_example.c文件,修改为如下样例代码并保存

#include <stdio.h>
#include <unistd.h>

#include "cmsis_os2.h"
#include "ohos_init.h"
#include "iot_gpio.h"

#define LED_TASK_GPIO 6
#define LED_TASK_STACK_SIZE 1024
#define LED_TASK_PRIO   25
#define DELAY_TICKS_50 (50)
#define GPIO_HIGH       (1)
#define GPIO_LOW        (0)

static void* GpioTask(void)
{
    static int count = 100;

    IoTGpioInit(LED_TASK_GPIO);
    IoTGpioSetDir(LED_TASK_GPIO, IOT_GPIO_DIR_OUT);

    while (count--) {
        printf(" Hello World!\n");
        IoTGpioSetOutputVal(LED_TASK_GPIO, GPIO_LOW);
        osDelay(DELAY_TICKS_50);
        IoTGpioSetOutputVal(LED_TASK_GPIO, GPIO_HIGH);
        osDelay(DELAY_TICKS_50);
    }
    return NULL;
}

static void GpioExampleEntry(void)
{
    osThreadAttr_t attr;

    attr.name = "GpioTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = LED_TASK_STACK_SIZE;
    attr.priority = LED_TASK_PRIO;

    if (osThreadNew((osThreadFunc_t)GpioTask, NULL, &attr) == NULL) {
        printf("[GpioExample] Falied to create GpioTask!\n");
    }
}
SYS_RUN(GpioExampleEntry);

Tool Chain/烧录接口配置

下载Hi3861 ToolChain(烧录工具链)
将Tool Chain压缩文件解压到电脑非C盘的任意位置,但是注意文件路径不要过长。
随后在DevEco->菜单->工程配置->hi3861->编译->compiler_bin_path中配置。

将选择刚刚解压后文件的目录即可。

下载CH34x驱动安装软件,并按照提示安装驱动。
然后我们使用USB-C线缆将DFRobot Harmony OS 开发板连接到电脑上,此时电脑设备管理器中会出现名为CH340K的端口

在DevEco->菜单->工程配置->hi3861->烧录->upload_port中选择出现的CH340K COM口

编译/烧录

在界面左下角PROJECT TASKS中,点击clean清除上次编译结果

点击build进行编译(初次编译耗时很长,大约5分钟)
出现success,编译成功

点击Upload上传代码

出现Connecting, please reset device键后点击板载RST按键
如果长时间不按RST的话可能导致烧录失败,并且此时再次点击Upload的话,会因为上次烧录程序异常退出而导致端口号被占用。需要重新插拔USB后再次点击Upload。

出现Execution Successful,上传成功

点击Monitor打开串口监视器,串口打印Hello World,并且板载LED灯间隔一秒闪烁

样例代码

在鸿蒙OS中添加测试程序

**applications/sample/wifi-iot/app/**目录下添加一个新文件夹,在这个文件夹下再添加一个.c文件(这个就是需要实现的demo),还有一个.gn文件(用于编译)。

修改demo目录下的.gn文件。

Sources里面需要填写demo的名字,include_dirs下面填写的是demo中包含的头文件的绝对地址。
修改在app文件夹下面的.gn文件。

在.gn下的features下面添加需要编译的demo。

GPIO使用(在线程中实现引脚的高低电平的切换)

//GPIO引脚初始化
GpioInit();
//将复用引脚设置为 GPIO
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
//设置为输出
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
//引脚输出低电平
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
//延时300ms
usleep(300000);
//开引脚拉高/低的线程LedTask()
osThreadNew((osThreadFunc_t)LedTask, NULL, &attr);

ADC采集

按教程添加完ADC文件,添加入下图的工程文件

编译运行之后可以在串口上看到电压值输出为:

输出PWM

鸿蒙OS默认PWM是不打开的,需要手动配置打开,在vendor\hisi\hi3861\hi3861\build\config\usr_config.mk中,将**# CONFIG_PWM_SUPPORT is not set改为CONFIG_PWM_SUPPORT=y**

PWM 的使用

vendor\hisi\hi3861\hi3861\app\wifiiot_app\init\app_io_init.c 文件中:

配置7号引脚为pwm输出

PWM信号占空比=duty/freq。频率=时钟源频率/freq。使用默认参数可以
编译运行上面的代码可以在7号引脚(PWM0)上看到波形输出

IIC驱动SSD1306

  1. 编写代码

  1. 修改配置文件为:

  1. 打开iic

  1. 编译烧录

串口通信

编译并运行demo

把TX接出来在sscom上可以看到uart2串口的数据,完成回环测试

读取板子的温度

编译并运行demo

串口打印出温度值

AT指令测试

SDK中,UART1默认用作AT命令通道

Flash读写

编译运行flash_demo,打印读取指定地址的flash值(注意在写flash的时候地址偏移要避免与程序空间冲突),在sscom上可以看到打印结果


自动连接wifi
根据教程:https://bbs.elecfans.com/jishu_1994865_1_1.html
编译运行demo,可以在sscom上看到wifi连接情况

ANY测试

ANY功能是一种华为私有的短数据通信功能,允许处于同一信道的2个Wi-Fi设备进行
直接的点对点无连接通信。参考:https://bbs.elecfans.com/jishu_1994996_1_1.html

  1. 调用hi_wifi_softap_start()启动softap
  2. 调用hi_wifi_any_init(),对模块进行初始化
  3. 创建UDP通信
  4. 手机作为sta扫描附近wifi连接模块
  5. 手机安装教程附件的app
  6. 手机使用app想模块发送可以连接的wifi的ssid以及pswd
  7. 可以在sscom上看到此时的模块变成sta模式并接入wifi

在ANY测试demo中添加NV操作以便保存wifi 密码

在上一个实验中模块每次初始化以后都需要手机端发送一次wifi的密码才能使模块再次连接,所以在此处加入nv操作,将密码保存在nv非工厂区

MQTT测试

1.解压https://github.com/eclipse/paho.mqtt.embedded-c中的压缩包
2.移植到鸿蒙OS工程中
3.编译运行
4.使用sscom给hi3861发送AT指令连接wifi

5.AT+MQTTTEST(该AT指令是注册进系统的自定义指令),用来启动MQTT循环发送
6.使用mqtt工具连接服务器并订阅hi3861的topic,可以看到订阅的消息

SPI通信

1.编译运行例程

  1. 连接arduino SPI从机

在串口打印中可以看到来自hi3861的数据

更多

DFshopping_car1.png DFRobot商城购买链接