文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

无线通信:WIFI、MQTT 开发例程

2024-11-30 16:04

关注

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

一、无线通信

1、Wifi

(1)STA /AP 相关函数

主要学习Hi3861V100的STA和AP模式。常用接口函数如下:

// STA 模式
1.定义: int ConnectToHotspot(WifiDeviceConfig* apConfig);
功能: 连接WiFi
参数: WiFi相关参数比如SSID,passward
返回值: 1:成功
依赖: //foundation/communication/wifi_lite/interfaces/wifiservice
2.定义: void DisconnectWithHotspot(int netId);
**功能: 断开WiFi
参数: WiFi对应的netId
**返回值:
依赖: //foundation/communication/wifi_lite/interfaces/wifiservic

// AP模式
1.定义: int StartHotspot(const HotspotConfig* config);
功能: 开启AP
参数: AP参数包括:IP地址,默认网关,子网掩码
**返回值: 0:成功
依赖: //foundation/communication/wifi_lite/interfaces/wifiservice
2.定义: void StopHotspot(void);
功能: 断开AP
参数:
返回值:
依赖: //foundation/communication/wifi_lite/interfaces/wifiservice

(2)STA\AP demo运行

第一步,将已有demo移动到app目录下:

static_library("wifi_control") {
sources = [
#"wifi_connecter.c",
"wifi_starter.c",
#"wifi_connect_demo.c",
"wifi_hotspot_demo.c",
]

第二步,修改applications/sample/wifi-iot/app/目录下的BUILD.gn,,在features字段中添加wifi_demo: wifi_control。

import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [ "wifi_demo:wifi_control", ]
}

第三步,步骤四:Hi3861V100作为STA模式(参考步骤2修改文件实现demo功能),使用开发板连接手机热点,可以在wifi_connect_demo.c修改热点名称和passward(注意:只支持4G网络),源码中的demo wifi名:“H”,passward:“12345678”,代码如下所示:

static void WifiConnectTask(void)
{
osDelay(10);
// setup your AP params
WifiDeviceConfig apConfig = { 0 };
strcpy(apConfig.ssid, "H"); // 设置wifi ssid "h" Set wifi ssid
strcpy(apConfig.preSharedKey, "12345678"); // 设置wifi passward "12345678" Set wifi password
apConfig.securityType = WIFI_SEC_TYPE_PSK;

int netId = ConnectToHotspot(&apConfig);
int timeout = 60;
while (timeout--) {
printf("After %d seconds I will disconnect with AP!\r\n", timeout);


osDelay(100);
}
DisconnectWithHotspot(netId);
}

编译运行之后,设置热点H,passward12345678,复位开发板,打开串口调试Monitor后,可以看到开发板已经连接到手机上。

Hi3861作为AP模式(参考步骤一修改BUILD),可以使用手机连接开发板AP,可以在wifi_hotspot_demo.c文件中修改开发板AP的名称和passward。demo AP名称:“HiSpark-AP”,passward为:“12345678”,代码如下所示。

#include "wifi_starter.h"

static void WifiHotspotTask(void)
{
WifiErrorCode errCode;
HotspotConfig config = { 0 };

// 设置AP的配置参数 set configuration parameters for AP
strcpy(config.ssid, "HiSpark-AP"); // AP :HiSpark-AP
strcpy(config.preSharedKey, "12345678"); // Password:12345678
config.securityType = WIFI_SEC_TYPE_PSK;
config.band = HOTSPOT_BAND_TYPE_2G;
config.channelNum = 7;

osDelay(10);

printf("starting AP ...\r\n");
errCode = StartHotspot(&config);
printf("StartHotspot: %d\r\n", errCode);

int timeout = 60;
while (timeout--) {
printf("After %d seconds Ap will turn off!\r\n", timeout);
osDelay(100);
}

printf("stop AP ...\r\n");
StopHotspot();
printf("stop AP ...\r\n");
osDelay(10);
}

编译运行之后,手机上可以看到HiSpark的无线网络,点击后输入passward即可连接,串口可以看到连接信息。

2、MQTT

(1)bearpi MQTT使用

mqtt目前已经移植到了OpenHarmony中,在源码vendor目录下bearpi、hihope等公司均有相应的应用demo。这里我先说如何使用bearpi的mqtt。

import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
# "startup",
# "iothardware:led_example",
# iothardware指的是工程目录
# :led_example指的是工程生成的静态库/文件
# "wifi_demo:wifi_control",
"D5_iot_mqtt:iot_mqtt",
]
}
static void MQTTDemoTask(void)
{
WifiConnect("H", "12345678");
printf("Starting ...\n");
int rc, count = 0;
MQTTClient client;
printf("MQTTSubscribe  ...\n");
// 下面这行 "substopic" 修改为 "web_fan_btn"
rc = MQTTSubscribe(&client, "web_fan_btn", MQTT_QOS, messageArrived);
if (rc != 0) {
printf("MQTTSubscribe: %d\n", rc);
osDelay(MQTT_DELAY_2S);
}
····
·····
message.payloadlen = strlen(payload);
// 下面这行 "pubtopic" 修改为 "fan"
if ((rc = MQTTPublish(&client, "fan", &message)) != 0) {
printf("Return code from MQTT publish is %d\n", rc);
NetworkDisconnect(&network);
MQTTDisconnect(&client);
}
osDelay(MQTT_DELAY_500_MS);
}
}
static void MQTTDemo(void)

如果自己设定的mqtt服务器,需要约定好topic。编译运行后,测试如下图所示,点击风扇按钮,开发板可以接收到发送过来的数据。

(2)hihope MQTT使用

这个已经有详细教程,可参考连老师文章,https://ost.51cto.com/posts/10201。

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

来源:51CTO 开源基础软件社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯