×

将WizFi360 EVB Pico连接到Azure IoT Cloud

消耗积分:0 | 格式:zip | 大小:0.40 MB | 2023-06-09

吴湛

分享资料个

描述

在本文档中,我将提供如何将最新的 Wiznet 产品 – WizFi360-EVB-Pico连接到Azure IoT Cloud的说明

我将使用WIZnet 提供的WizFi360-EVB-Pico-AZURE-C

一、环境准备

在开始之前,有必要为 WizFi360-EVB-Pico 设置环境。与Raspberry Pi Pico 的开发环境相同。

在本指南中,我使用了Windows 10 Visual Studio Code和基于C/C++的环境。对于环境准备,我参考了Raspberry Pi 文档网站上的Getting started with Raspberry Pi Pico指南。

如果您在遵循 Raspberry Pi 指南时遇到任何问题,请查看以下链接,作者在其中解释了环境准备的每个安装步骤。

或者,参考我之前的帖子——“让我们使用 Raspberry Pico 以太网示例吧!” - 开发环境配置'

2. 硬件准备

WizFi360-EVB-Pico是一款基于高性能、低价格的 MCU RP2040并使用WizFi360添加 Wi-Fi 连接的开发板

可以在以下链接中找到更多详细信息:

WizFi360-EVB-Pico 与 Raspberry Pi Pico 引脚兼容。但请记住,引脚 GPIO4 ~ GPIO7 / GPIO20 用于 RP2040 和 WizFi360 之间的 UART 通信/复位。

pYYBAGSBm5KAemrMAAE1OjUdz0Y003.png
 

请按照以下步骤上传固件并运行。

① 使用 5 针 micro USB 数据线将 WizFi360-EVB-Pico 连接到台式机或笔记本电脑。

3. 软件准备

需要以下串行终端程序进行示例测试,从下面的链接下载和安装。

4. Azure 物联网云的准备

登录到Azure 门户。

如果您没有帐户,请创建一个。

Azure IoT Cloud 是付费云平台,但您可以创建一个免费帐户

WIZnet 提供了 4 个示例应用程序,基于示例应用程序 Azure IoT Cloud 设置应进行相应设置。

// The application you wish to use should be uncommented
//
#define APP_TELEMETRY
//#define APP_C2D
//#define APP_CLI_X509
//#define APP_PROV_X509

(...)

//-----------------------------------------------------------------------------------
// CALL Main Funcion - WizFi360 Azure IoT example funcion
// Select one application.
//-----------------------------------------------------------------------------------
#ifdef APP_TELEMETRY
    iothub_ll_telemetry_sample();
#endif // APP_TELEMETRY
#ifdef APP_C2D
    iothub_ll_c2d_sample();
#endif // APP_C2D
#ifdef APP_CLI_X509
    iothub_ll_client_x509_sample();
#endif // APP_CLI_X509
#ifdef APP_PROV_X509
    prov_dev_client_ll_sample();
#endif // APP_PROV_X509
//-----------------------------------------------------------------------------------

在本指南中,我将继续使用“iothub_II_telemetry_sample”来连接 Azure IoT Cloud。

① 创建物联网中心

pYYBAGSBm5SAaMArAABQYCYC8io309.png
 

填写项目详细信息并在“基本”选项卡上选择您的订阅。

pYYBAGSBm5iAQUr4AABNsK-FkZY453.png
 

对于“网络”、“管理”、“标签”和其他项目,可以保留默认设置。

选择“查看 + 创建”以查看您的选择。单击底部的“创建”按钮以完成 IoT 中心的创建。

poYBAGSBm5uAFeOgAABG9XiDkjo424.png
 

② 添加物联网设备

单击创建的 IoT 中心左侧菜单中的“设备”和“添加设备”

pYYBAGSBm52ASh1WAABQlL6LQRw869.png
 

对于“iothub_II_telemetry_sample”设备设置将如下图所示进行。对于其他示例应用程序,这些设置可能会有所不同。

pYYBAGSBm6GAHp4fAAA58yuwF3Y698.png
 
pYYBAGSBm6OAbbhSAABRP4KI5vk814.png
 

请参阅相应示例应用程序中的指南文档以找到合适的 Azure 物联网云。

5. 示例设置

① 设置 Wi-Fi 配置

在“ WizFi360 -EVB-Pico-AZURE-C/examples/ ”目录下的“socket_startup.c”中设置 Wi-Fi 网络信息。

/* Wi-Fi configuration */
#define SSID "ssid"
#define PASSWORD "password"
#define SECURITY_TYPE ARM_WIFI_SECURITY_WPA2

② 选择示例应用

由于我将使用“iothub_II_telemetry_sample”进行连接,因此我将使用“ WizFi360-EVB-Pico-AZURE-C/examples/iot_demo.c ”中的应用程序,如下所示。

// The application you wish to use should be uncommented
//
#define APP_TELEMETRY
//#define APP_C2D
//#define APP_CLI_X509
//#define APP_PROV_X509

③ 输入连接字符串

您可以通过单击相应的物联网设备找到连接字符串。

pYYBAGSBm6OAbbhSAABRP4KI5vk814.png
 
pYYBAGSBm6qAf-UcAABkLZEoRN0874.png
 

将 IoT 中心连接字符串粘贴到“ WizFi360-EVB-Pico-AZURE-C/examples/sample_certs.c ”。

const char pico_az_connectionString[] = "HostName=my-rp2040-hub.azure-devices.net;DeviceId=my-rp2040-device-telemetry;SharedAccessKey=Zp2...xQ=";

6. 示例构建和上传

①建造

完成所有必需的更改后,按 F7 或单击 Visual Studio Code 状态栏中的“构建”按钮。

构建完成后,您可以在“ WizFi360-EVB-Pico-AZURE-C/build/examples/ ”中找到生成的“ azure_mqtt_demo.uf2 ”文件

②上传

开机时按下 WizFi360-EVB-Pico 上的 BOOTSEL 按钮,您应该会看到 RPI-RP2 驱动器。只需拖放“main.uf2”文件即可。

pYYBAGSBm66AYCGUAABuL2Le-IA669.png
 

7.运行示例

① 使用Tera Term连接到WizFi360-EVB-Pico的串行COM口。

pYYBAGSBm7GAcsvGAAEF40KZOUI529.png
 

② 如果例子运行正常,在终端应该可以看到Wi-Fi和Azure IoT Cloud的连接步骤和传输的消息。

poYBAGSBm7eAWpahAAIVDZE1OOY052.png
 

Azure IoT Explorer可用于检查传输的消息。

poYBAGSBm7qAaiH9AAEM5i6fxR4270.png
 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'将WizFi360 EVB Pico连接到Azure IoT Cloud',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);