网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评

autohost
发布于 2020-11-25 19:23
浏览
0收藏

Arduino MKR WiFi 1010开发板将MCU与WiFi/BLE模块结合起来,提供了快速接入网络的功能,简化了一般用户的操作步骤,确实非常实用。另一方面,ESP32的模块目前还只提供了WiFi的配置功能,而BLE则被忽略了,有点可惜,虽则用户可以借助官方提供的工具来自行处理BLE相关的操作,这样一来,门槛显著提升,差评!

Arduino家族正变得越来越庞大!

 

目前的Arduino硬件已形成了清晰的产品线,从入门级的UHO、NANO,到增强特性的产品如MEGA,再到IoT系列的YUN及TIAN等,满足了不同水平的用户需求。入门者可以从UNO开始,掌握了基本的电子小应用开发后,可以逐步过渡到增强型产品应用中,再进一步,就可以开始尝试IoT类型的产品应用了。也可以这么说,正是Arduino,见证了菜鸟的成长!

 

Arduino MKR WiFi 1010隶属Arduino IoT系列产品,板载一颗来自U-BLOX的ESP32模块,提供了IEEE 802.11 b/g/n无线连接能力,除此之外,Arduino MKR WiFi 1010还包含一颗自SAMD21的微处理器,二者共同构成了Arduino MKR WiFi 1010的核心硬件,给广大Arduino用户带来了更好的开发体验。

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

Arduino MKR系列产品相对于经典的UNO来说,体积更加小巧,同时在接口及布局方面也做了调整,新用户也许得花点时间来熟悉新的GPIO接口布局,但也仅限于此。因为不管是哪一款Arduino开发板,其开发流程,API接口等都保持了基本的一致,Arduino  MKR WiFi 1010开发板也不例外,在熟悉了基本的硬件接口后,用户可以很快的进入到开发的角色中来。

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

开发板上负责无线通信的模块型号为U-BLOX NINA-W102,其内部核心为ESP32,其内部框图如下

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

U-BLOX NINA-W102的主要特性如下

   • Wi-Fi 802.11b/g/n

   • Dual-mode Bluetooth v4.2

   • 封装尺寸小

   • 4Mbit/16MBit的SRAM/FLASH存储器

   该模块在Arduino MKR WiFi 1010上的主要功能是连接网络,另外该模块虽然具备WiFi及BLE 4通信功能,目前还只提供WiFi通信功能,至于BLE的功能,目前在Arduino环境下还不能使用。

   开发板上的另一颗芯片是SAMD21,开发板主要的外高接口都是从该芯片引出,关于GPIO接口对应关系,请参考官方原理图。

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

   其实对于Arduino用户来说,很多情况下我们只关心每个GPIO引脚提供了哪些具体的功能,比如GPIO、PWM、AD/DA等,关于这些接口,都可以在开发板的背面,直接从PCB丝印上获取第一手资料,如上图所示。

   开发环境当然首选Arduino IDE,这个IDE虽然虽然经典,但是界面很复古,一些实用的功能如代码提示及补全功能至今也还没有,不过胜在简单,对于大部分用户来说,足够了。

   首先是安装开发板硬件支持平台,如下

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

   这部分是主要针对SAMD21微处理器,这是一款基于ARM Cortex=M0+的32位处理器,Arduino MKR系列产品大部分使用该处理器,另外像ARDUINO YUN及TIAN等高端产品也使用了该处理器。

   至于无线部分的库,则需要安装WiFiNINA库来进行处理,如下

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

   安装好这两个库之后,就可以愉快的开始体验网络编程了。

   我们打开WiFiNINA库自带的WiFiWebServer示例程序来体验下网络编程的快捷特性。打开工程文件后,需要修改代码中关于本地无线路由器的配置,参考代码如下

   char ssid[] = SECRET_SSID; // your network SSID (name)

   char pass[] = SECRET_PASS; // your network password

   接下来开始编译并上传代码到开发板,这一过程和其它的Arduino开发板并无两样。

   接下来在串口监视器中可以看到如下信息

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

   表明开发板和本地无线路由器已建立了连接,设备也通过DHCP方式获取到了适当的IP地址,同时Web Server已开始正常工作,这一点我们可以通过打开浏览器来进行验证。

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

   这是浏览器中得到的结果,很简陋,但是至少工作了!

   如果要打造一个基于Web Server的简单应用,例如显示采集的温度信息,以这个为蓝本,加上适当的外设操作代码,很快就可以做出令人满意的小产品。如果还想进一步的美化,那么,你需要一个HTML的参考设计,来帮你将作品进一步完善。

   然而令人遗憾的是,目前开发板的BLE功能还没有开放出来,如果我们想要使用BLE功能怎么办呢?办法当然是有的,只不过恐怕步骤要麻烦一点。既然无线模块就是ESP32,当然也可以使用ESP32的工具来对之编程并按照我们的意愿来工作。不过这样的话,你需要对ESP32的SDK有一定程度的了解。

   不像一般的ESP32模块,开发板并没有引出该模块的编程接口,所以我们首先得让ESP32模块能接收来自上位机的编程数据,在WiFiNINA库里有个程序,可以将来自串口的数据写入到ESP32模块中,从而实现固件编程的需求。

 

打开WiFiNINAFirmwareUpdater程序,查看其中的代码如下

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

这段代码将USB串口与NINA串口直接连接起来,实现数据的双向通信,这样esptool工具就可以直接读写ESP32模块了。

 

编译并上传代码到开发板,接下就该是ESPTOOL工具上场的时刻了。

网络触手可及,然而仍然是差评 --Arduino MKR WiFi 1010开发板评-鸿蒙开发者社区

这张图解释了一切。

   user@DESKTOP-8IJDMCH:~$ python -m esptool --chip esp32 --port /dev/ttyS3 --baud 115200 read_mac
    
    esptool.py v2.5.0
    
    Serial port /dev/ttyS3
    
    Connecting.....
    
    Chip is ESP32D0WDQ6 (revision 1)
    
    Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
    
    MAC: 80:7d:3a:86:1e:84
    
    Uploading stub...
    
    Running stub...
    
    Stub running...
    
    MAC: 80:7d:3a:86:1e:84
    
    Hard resetting via RTS pin...
    
    user@DESKTOP-8IJDMCH:~$ python -m esptool --chip esp32 --port /dev/ttyS3 --baud 115200 read_flash_status
    
    esptool.py v2.5.0
    
    Serial port /dev/ttyS3
    
    Connecting....
    
    Chip is ESP32D0WDQ6 (revision 1)
    
    Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
    
    MAC: 80:7d:3a:86:1e:84
    
    Uploading stub...
    
    Running stub...
    
    Stub running...
    
    Status value: 0xff00
    
    Hard resetting via RTS pin...
    
    user@DESKTOP-8IJDMCH:~$

我们已通过ESPTOOL读取到了ESP32的MAC及FLASH状态信息,接下来可以使用ESP32 SDK来进行具体的配置,将BLE的功能添加上去,不过如果这样子的话,Arduino的WiFiNINA库就不能工作了,因为固件变化了。所以接下来的接口及通信工作得全部由你自己来写,嗯,这样又可以写一本书了!

 

总结来说,Arduino MKR WiFi 1010开发板将MCU与WiFi/BLE模块结合起来,提供了快速接入网络的功能,简化了一般用户的操作步骤,确实非常实用。另一方面,ESP32的模块目前还只提供了WiFi的配置功能,而BLE则被忽略了,有点可惜,虽则用户可以借助官方提供的工具来自行处理BLE相关的操作,这样一来,门槛显著提升,差评!

 

另外,如果用户写入自己的固件到ESP32中,想要再恢复到官方的固件,目前也还没有相关的工具提供,官方论坛上有用户提及此事,官方的答复是:会有的,不过要等!

分类
标签
已于2020-11-25 19:23:59修改
收藏
回复
举报
回复
    相关推荐