文章目录

  • 前言
  • 一、实验准备
    • 1、硬件准备
    • 2、软件准备
  • 二、实验过程
    • 1、下载样例库
      • 1.2、用户库文件结构
      • 1.3、相关配置文件说明
        • 1.3.1、config.json配置文件
        • 1.3.2、main.ts描述文件总述
    • 2、示例代码
    • 3、效果测试
  • 总结

前言

注:本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明。

要做 Mind+ 的一个用户库,突然想到 Arduino UNO 在 Mind+上连云只有一个OBLOQ物联网模块(老贵了),刚好手上有一块庆科的EMW3080 Wi-Fi模块,索性试试,下面摘一段官方的话↓

Mind+是一款拥有自主知识产权的国产青少年编程软件,支持Arduino、micro:bit、掌控板等各种开源硬件,兼容Scratch3.0,支持AI与IoT功能,只需要拖动图形化程序块即可完成编程,还可以使用Python/C/C++等高级编程语言,让大家轻松体验创造的乐趣。

  • Mind+支持三大主流开源硬件平台(Arduino,micro:bit,掌控板esp32),均可以使用基于arduino C的库,因此只需要编写一个arduino的库即可达到三平台兼容。
  • Mind+已经支持几十种常用的扩展小模块库,为方便更多用户的使用,从V1.6.2版本开始开放用户自定义库功能,你可以根据自己的需要编写或移植现有的arduino库,自己设计图形模块(block)的外观及形状,自己设计对应生成的代码。
  • 支持通过网络加载Github的用户库或直接本地加载(config.json或.mpext文件)。
  • 提示:尽管用户库增加非常简单,但依然建议有一定代码基础的用户进行操作,若有需要增加的模块而不懂代码,依然可以给官方反馈需要增加的模块。

    使用用户库请先升级Mind+到V1.6.2 RC2.0及以上版本。


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验准备

1、硬件准备

硬件 数量
Arduino UNO 1
EMW3080 1
杜邦线 若干

2、软件准备

软件
Mind+
VS Code(记事本、Notepad++也可)

二、实验过程

1、下载样例库

  • 样例库:https://gitee.com/dfrobot/ext-oled12864.git
    一下的修改都是基于样例库来进行修改的
  • 官方教程:https://mindplus.dfrobot.com.cn/ext-api

1.2、用户库文件结构

└─newExtensions                    // 项目名称│  config.json                 // 本用户库的配置文件│  LICENSE.TXT                 // 许可证说明│  README.md                   // 文档说明│└─arduinoC                     // arduino模式用户库根目录│  main.ts                 // 图形块描述文件│├─libraries                // arduino库文件,列出本扩展库所有需要引用的.c或.h或.cpp文件│  └─oled12864│          oled12864.cpp│          oled12864.h│          qrcode.c│          qrcode.h│├─_images                  // 图片文件│      featured.png        // MindPlus扩展库展示图片│      icon.svg            // MindPlus中图形块上的图标文件│├─_locales                 // 翻译文件,支持多国语言│      zh-cn.json│      en.json│└─_menus                   // 下拉菜单参数,每个板子可以独立设置leonardo.jsonuno.jsonnano.jsonmega2560.jsonmicrobit.jsonmpython.json

1.3、相关配置文件说明

1.3.1、config.json配置文件

这里的json文件用于展示作者和用户库积木块的一些信息

{"name": {"zh-cn": "庆科-EMW3080","en": "EMW3080"},"description": {"zh-cn": "简单的使用UNO和EMW3080连接阿里云上传数据","en": "EMW3080 Connect Aliyun MQTT"},"author": "Simplymyself","email": "xxx@qq.com","license": "MIT","isBoard": false,"id": "emw3080","platform": ["win", "mac", "web"],"version": "0.0.1","asset": {"arduinoC": {"dir": "arduinoC/","version": "0.0.1","board": ["arduino"],"main": "main.ts"}}
}

1.3.2、main.ts描述文件总述

图形块描述文件中通过 //% 后面的内容可以定义图形块外观
通过 function 定义 block 对应的生成代码以及位置

这里只制作了三个积木,分别用于连接Wi-Fi,MQTT,发布消息,由于 Mind+ 用户库暂时不支持事件触发的中断,所以暂时还没有做出接收服务器下发指令的积木

//% color="#6699FF" iconWidth=50 iconHeight=40
namespace emw3080 {//% block="Wi-Fi连接到 [wifi_ssid] [wifi_password]" blockType="command"//% wifi_ssid.shadow="string" wifi_ssid.defl=your_ssid//% wifi_password.shadow="string" wifi_password.defl=your_passwordexport function wifiConnect(parameter: any) {let _wifi_ssid = parameter.wifi_ssid.code;let _wifi_password = parameter.wifi_password.code;Generator.addInclude('EMW3080', '#include <EMW3080.h>');Generator.addCode(`while(1) {\n\t\tif (!WiFi_init(${_wifi_ssid}, ${_wifi_password}))continue;\n\t\tbreak;\n\t}`);}//% block="连接到阿里云MQTT [ProductKey] [DeviceName] [password]" blockType="command"//% ProductKey.shadow="string" ProductKey.defl=your_ProductKey//% DeviceName.shadow="string" DeviceName.defl=your_DeviceName//% password.shadow="string" password.defl=your_passwordexport function AliyunConnect(parameter: any) {let _ProductKey = parameter.ProductKey.code;let _DeviceName = parameter.DeviceName.code;let _password = parameter.password.code;Generator.addInclude('EMW3080', '#include <EMW3080.h>');Generator.addCode(`while(1) {\n\t\tif (!Ali_connect(${_ProductKey}, ${_DeviceName}, ${_password}))continue;\n\t\tbreak;\n\t}`);}//% block="使用主题 [pubTopic] 发布 [JSON_DATA_PACK]" blockType="command"//% pubTopic.shadow="string" pubTopic.defl=your_pubtopic//% JSON_DATA_PACK.shadow="string" JSON_DATA_PACK.defl=your_messageexport function Set_pubTopic(parameter: any) {let _pubTopic = parameter.pubTopic.code;let _JSON_DATA = parameter.JSON_DATA_PACK.code;Generator.addInclude('EMW3080', '#include <EMW3080.h>');Generator.addCode(`Upload(${_pubTopic}, ${_JSON_DATA});`);}
}

完成后在 Mind+ 上就可以看到完成后的积木块(外形只是简单做一下,还没有进行修饰)

  • 第一个积木的参数是 Wi-FiSSIDPassword
  • 第二个积木的参数是ProductKeyDeviceNamepasswordpassword是使用阿里云签名工具 hmacsha1 计算得出的密钥
  • 第三个积木的参数是发布消息相应的 主题TopicMQTT消息

2、示例代码

3、效果测试


后续会继续更新相关代码,


总结

以上就是Mind+制作第三方库的一些过程,本文仅仅简单介绍了部分积木块的制作和使用。如有写的不好的地方,欢迎大家提点宝贵的建议。

制作Mind+ Arduino UNO + EMW3080芯片连接阿里云的用户库相关推荐

  1. 【arduino】nodemcu连接阿里云上传PZEM-004T数据

    本博客讲解nodemcu使用arduino编写代码,连接阿里云并上传PZEM-004T的数据. 设备 PZEM-004T 10A v3模块, 测量负载的电压.电流.功率.用电量等. nodemcu 不 ...

  2. Mixly第三方用户库开发Arduino UNO使用EMW3080连接阿里云

    文章目录 前言 一.实验准备 1.硬件准备 2.软件准备 二.实验过程 1.Mixly库说明 2.文件编写 2.1.编写xxx.xml文件 2.2.编写block/xxx.js文件 2.3.编写zh- ...

  3. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(九)---制作APP

    前几篇文章讲解了如何在阿里云控制台上给设备登记"身份证",如何用MQTT.fx客户端模拟一个设备连接阿里云物联网平台,分析了arduino编程环境如何配置依赖库,在arduino ...

  4. 手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程...

    使用Ardui no 的方式快速连接阿里云物联网平台. 文中提到的 AliyunIoTSDK 这个 Arduino 库,可以在 Arduino 库商店里搜索到(搜索 AliyunIoTSDK) Ali ...

  5. 从arduino板开始做到阿里云app控制--WeMos D1或ESP8266连接阿里云文章合集及源代码

    近期不断有麻油问我要源代码,就不遮掩了,粘贴到此处,复制粘贴即可.前提是arduino环境搭建好. /** 这是使用wemos d1模块连接阿里云的代码,亲测成功* 注意阿里云设备三元素一定要用自己的 ...

  6. Android Studio 连接阿里云数据库【制作基于数据库的多人远程聊天APP】

    Android Studio 连接阿里云数据库的简单方法[制作基于数据库的多人远程聊天APP] 首先购买好一个阿里云数据库RDS[我买了一年用了49元] 1.进入官网–>打开右上角的控制台 2. ...

  7. arduino UNO R3/ESP8266连接MCP2515 CAN

    arduino UNO R3/ESP8266连接MCP2515 CAN CAN接收: // demo: CAN-BUS Shield, receive data with interrupt mode ...

  8. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(四)---阿里云物联网平台使用基础

    前面几个文章一直在分析arduino d1 wifi模块如何安装开发板库,如何编程,如何调用wifi操作库,如何运行第一个网络扫描程序. 现在突然跳转到介绍阿里云,为什么呢? 原因很简单,就是物联网设 ...

  9. 使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(五)---MQTT.fx模拟设备连接阿里云

    前文提到,物联网设备在阿里云物联网平台登记了"身份证"之后,阿里云物联网平台上的设备就处于"未激活""离线"或者"在线" ...

最新文章

  1. 用泰勒级数来估计函数的近似值
  2. 问题 RadioButtonList+TextBox的复合控件如何做
  3. 小米4硬改教程_小米手环3美化/修改资源包教程(含加入二维码教程)
  4. 【转】Phong和Blinn-Phong光照模型
  5. UEFI下面安装win7+Xubuntu18.10双系统
  6. PHP语言 -- Ajax 查询数据
  7. 专注企业市场 或是网盘危机的有效出路
  8. DataFrame与Dataset 的区别
  9. java的反射技术_Java学习——反射技术
  10. python实现中文繁体字与简体字转换
  11. 华三交换机如何进入配置_如何初始化配置H3C交换机
  12. 去空格函数trim-C语言
  13. Machine Learning机器学习自学资料整理
  14. Bad Request This combination of host and port requires TLS
  15. JAVASCRIPT 网页特效经典300例 pdf
  16. NRF51822 回顾总结
  17. Python+ASAquick+PSIPred蛋白质序列特征计算,ASAquick安装调用(Linux)
  18. 日本互联网的十大知名巨头!你听说过几个?
  19. 面试官最爱提的问题TOP10来自:北京人才市场报
  20. 数据显示强生新冠疫苗对德尔塔变异病毒有效;康方生物派安普利提交第三个上市申请 | 医药健闻...

热门文章

  1. (赤焰剑C-SKY)1-初识
  2. TensorFlow深度学习:3.API示范
  3. 高速信号完整性——EMI的分析及其抑制方法
  4. python京东预约抢购_Python参考代码:京东抢券脚本
  5. 推荐1个易上手代码开源的好用的H5网页编辑工具
  6. python每日一小记(2)--字符串和编码
  7. shiro+jwt登录认证anon配置无效
  8. Pytorch 损失函数 Mean Squared Error
  9. macOS Monterey 12.0.1 (21A559) 虚拟机 IOS 镜像
  10. 如何删除tmp计算机桌面,教你Win10系统中tmp文件删除不了应该如何解决?