开放原子线下训练营---STM32H7搭载TobudOS开发心得

导语:

本次线下活动是以STM32H7为核心的一个功能强大的开发板,不仅支持Audio,HDMI,还支持4G或者WiFi模块,也可以外接屏幕,本次线下训练营是以4G模块进行开发。
线下的实物开发板如下所示:
在这里插入图片描述

注意:上面的PC、MCU的切换,一定要在MCU,才会有串口数据输出。

其硬件资源的介绍如下所示:
在这里插入图片描述
官网开发板特性:

  • 内置 TobudOS 开源物联网操作系统
  • 意法半导体高性能处理器,最高主频 480M
  • 1M RAM;
  • 256Mbits SDRAM;
  • 128K 片上Flash;64MB qspi flash 128MB spi flash
  • 板载 Type-C 接口 Stlink V2
  • 仿真器 板载 PCIE 接口,可扩展 4G 类物联网模组
  • 板载物联网俱乐部 WAN Interface 接口,可支持
    NB-IoT、WiFi、4G cat1、LoRa 等模组
  • 板载物联网俱乐部 E53 Interface 接口,可扩展全系 E53 传感器;
  • 板载标准 24P DVP 摄像头接口,可支持最高 500 万像素摄像头; 板载 RGB 显示接口,可转换 HDMI 输出;
  • 板载高性能音频解码芯片,可做语音识别测试;
  • 预留 SD 卡、用户按键、SPI Flash
  • 调试 ARM Cortex M 核还需要仿真器,EVB_AIoT_STM32自带 Stlink V2 仿真器,如果您的开发板或者芯片模组没有板载仿真器,就需要连接外置的仿真器,如 J-Link、U-Link 之类的。

其官网的指导文档地址为:
代码仓地址:
https://atomgit.com/OpenAtomFoundation/TobudOS(内含丰富学习视频,请自行下载观看)
训练营参考代码:
https://atomgit.com/tobudos/DeveloperTrainingCamp2023
训练营实验手册
https://atomgit.com/OpenAtomFoundation/TobudOS/blob/master/doc/TobudOS_EVB_AIoT_STM32_Guide.md

一、移植代码

本次线下活动,在之前就已经搭建了环境,能跑起来示例程序。
具体的环境搭建在训练营实验手册链接中有着详细的介绍。其中特别注意的是,MDK的版本需要和指导文档中相同,当时在现场看到很多同学使用了最新版本的MDK,缺少一些插件,导致代码无法运行,建议使用 5.28a版本,其他版本也需要自己进行一些设置。
现场主要是为了熟悉一下TobudOS的整体使用流程,对代码的编写比较少,现场的大佬都已经把相关代码给到我们进行操作。
代码一定要用完整仓库中的代码,使用git clone的方式下载,直接点击下载有可能会有一些奇奇怪怪的错误,代码参考下面的链接:
https://atomgit.com/OpenAtomFoundation/TobudOS
打开代码之后,将整体代码先build一次,保证整个流程没有问题。
然后就是加入E53_SC1的驱动程序,右键add即可:

在这里插入图片描述
上面驱动放置的文件夹,注意将路径导入到C/C++
在这里插入图片描述
在TobudOS的WiFi与4G的配置中,采用了宏定义的切换方法,很方便进行切换:

#define USE_EC600S
//#define USE_ESP8266

#if defined(USE_ESP8266)
#include "esp8266.h"

#elif defined(USE_EC600S)
#include "ec600s.h"
#endif

接下来就需要配置腾讯云。

二、腾讯云的相关配置

直接访问下面的链接到腾讯云网站:
https://cloud.tencent.com/product/iotexplorer
使用自己的账号进行登录,请注意需要实名认证。
找到物联网开发平台
在这里插入图片描述
点击新增实例
在这里插入图片描述
然后,新建一个产品
在这里插入图片描述
新建完成后就可以看到下面的项目
在这里插入图片描述
点击导入物模型,导入JSON模型
在这里插入图片描述
具体代码如下:

{
  "version": "1.0",
  "properties": [
    {
      "id": "power_switch",
      "name": "电灯开关",
      "desc": "控制电灯开灭",
      "required": true,
      "mode": "rw",
      "define": {
        "type": "bool",
        "mapping": {
          "0": "关",
          "1": "开"
        }
      }
    },
    {
      "id": "lum",
      "name": "光传感器",
      "desc": "上报现场光传感器数据",
      "mode": "r",
      "define": {
        "type": "int",
        "min": "0",
        "max": "9999",
        "start": "0",
        "step": "5",
        "unit": "lm"
      },
      "required": false
    },
    {
      "id": "lac",
      "name": "地区区域码",
      "desc": "地区区域码",
      "required": true,
      "mode": "r",
      "define": {
        "type": "int",
        "unit": "",
        "step": "1",
        "min": "0",
        "max": "32",
        "start": "0"
      }
    },
    {
      "id": "cid",
      "name": "基站码",
      "desc": "基站码",
      "required": true,
      "mode": "r",
      "define": {
        "type": "int",
        "unit": "",
        "step": "1",
        "min": "0",
        "max": "32",
        "start": "0"
      }
    }
  ],
  "events": [],
  "actions": [],
  "profile": {
    "ProductId": "KM4CEY91YP",
    "CategoryId": "3"
  }
}

下面就是将对应的密钥,用户名填写到MQTT对应的h文件中。
在这里插入图片描述
在这里插入图片描述

这里文档中有详细的对应。

三、下载调试

全部对应完成之后,就可以编译代码,将其下载到开发板中,下载事接入USB之后,需要安装对应的驱动,驱动官网下载即可,右键驱动安装本地就可以。安装完成后,如下所示。
在这里插入图片描述
下载代码时,可能还让升级驱动,直接点击Yes即可。
连接成功之后,在腾讯云就可以看到在线的状态。
在这里插入图片描述
点击调试 可直接在网页进行调试
在这里插入图片描述
点击二维码
手机微信小程序,找到腾讯连连,扫描二维码,注意首次可能需要创建家庭。
在这里插入图片描述
就会出现上图的一个远程开灯。
在这里插入图片描述
就可以直接在手机上点击开关控制灯的亮灭。
在这里插入图片描述

四、感悟

开放原子和腾讯真的非常nice,创造了这么好的氛围,还免费赠送价值这么高的开发板,能够面对面的和各位大佬进行交流,有一个很好的开发氛围。
目前嵌入式的各种搭建与配置越来越简单,之前自己通过云服务器搭建MQTT,需要耗费很多时间和金钱,现在有了越来越简单的办法,应该感谢各位开发者的不断努力!
现场调试的题目比较简单,但是还是很多开发者事先没有准备好环境,或者是配置了一个错误的环境。在所有的开发中也要事先准备好,嵌入式的环境搭建确实是一个比较麻烦的事情,有时候换一个版本就需要多做很多的工作,所以还是需要认真阅读参考手册和文档。感谢腾讯与开放原子的大力支持!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/265965.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

更改WiseAlign软件界面图标方法

更改WiseAlign软件界面图标方法 未替换时 首先将图片转换为BMP格式,在搜索栏处输入画图,点击打开画图工具 按住图标拖动到画布内,或是直接CtrlV将图标复制到画布内 点击文件,再点击另存为 保存类型选择“24位位图(*.bm…

超分辨数据集:Set5 Set14 BSD100 Urban100 Manga109

DIV2K数据集官网上很好找到,但是网上流传的Set5 14 BSD100,Urban100 Manga109都是私人进行处理过的版本,各个处理方式都不同,为了统一方式写了这篇文章。 官方的DIV2K x2、x3、x4的LR图片使用下面matlab代码生成(已经经过测试最后…

Hadoop入门学习笔记——五、在虚拟机中部署Hive

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 五、在虚拟机中部署Hive5.1. 在node1虚拟机安装MySQL5.2.…

drawio绘制组织架构图和树形图

drawio绘制组织架构图和树形图 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能,并实现了云…

VSCode SSH 连接提示: spawn UNKNOWN

随笔记录 目录 1. 背景介绍 2. 确认问题 : ssh -V 3. 解决问题 3.1 确认本地 ssh.exe 路径 3.2 修改vscode Remote.ssh:Path 3.2.1 设置 Reomte.ssh:Path - 方法一 3.2.2 设置 Reomte.ssh:Path - 方法二 1. 背景介绍 windows 系统vscode ssh remote CentOS7&#xff…

【Nacos】—客户端与服务端源码解析

Nacos系列 Nacos—简述、注册中心、配置中心 Nacos安装教程 SpringBoot项目与Nacos配置 一、背景介绍 Nacos(Naming and Configuration Service)是阿里巴巴开源的服务发现和配置管理工具,它是一个全面的微服务基础设施组件,提供…

Linux命令-查看内存、GC情况及jmap 用法

查看进程占用内存、CPU使用情况 1、查看进程 #jps 查看所有java进程 #top 查看cpu占用高进程 输入m :根据内存排序 topMem: 16333644k total, 9472968k used, 6860676k free, 165616k buffers Swap: 0k total, 0k used, 0k free, 6…

【vue】前端页面点击按钮弹窗播放m3u8格式视频

最终效果&#xff1a; 1.表格操作列 <el-table ref"tables" v-loading"loading" :data"list" :default-sort"defaultSort" sort-change"handleSortChange" border><el-table-column label"id" align&qu…

【面向对象】对比JavaScript、Go、Ada、Python、C++、Java、PHP的访问限制。

在不同编程语言中&#xff0c;控制成员&#xff08;变量、方法、类等&#xff09;可见性的机制不尽相同。以下是对比JavaScript、Go、Ada、Python、C、Java、PHP所使用的访问限制关键字和约定&#xff1a; 一、JavaScript ### JavaScript访问限制 早期的JavaScript并没有类似…

vue 使用 html2canvas 截取图片保存

vue 使用 html2canvas 截取图片保存 好久没有写博文了&#xff0c;写够了&#xff0c;没啥想写的了&#xff0c;这个号算是废了&#xff0c;哎&#xff0c;气人啊&#xff01;越来越胖&#xff0c;越来越懒了。 html2canvas 简介 html2canvas是一个JavaScript库&#xff0c;它…

自定义类型:结构体,枚举,联合(2)

2. 位段 2.1 什么是位段 位段的声明和结构是类似的&#xff0c;有两个不同&#xff1a; 1.位段的成员必须是 int、unsigned int 或signed int 。 2.位段的成员名后边有一个冒号和一个数字。 比如&#xff1a; struct A {int _a:2;int _b:5;int _c:10;int _d:30; };A就是一…

Spark Shell的简单使用

简介 Spark shell是一个特别适合快速开发Spark原型程序的工具&#xff0c;可以帮助我们熟悉Scala语言。即使你对Scala不熟悉&#xff0c;仍然可以使用这个工具。Spark shell使得用户可以和Spark集群交互&#xff0c;提交查询&#xff0c;这便于调试&#xff0c;也便于初学者使用…

Apache Flink 进阶教程(七):网络流控及反压剖析

目录 前言 网络流控的概念与背景 为什么需要网络流控 网络流控的实现&#xff1a;静态限速 网络流控的实现&#xff1a;动态反馈/自动反压 案例一&#xff1a;Storm 反压实现 案例二&#xff1a;Spark Streaming 反压实现 疑问&#xff1a;为什么 Flink&#xff08;bef…

15-Echarts简化系列之:geo 地理坐标系,地图资源基本绘制和配置项使用

Echarts版本&#xff1a;5.4.3 geo&#xff1a;地理坐标系组件用于地图的绘制&#xff0c;支持在地理坐标系上绘制散点图&#xff0c;线集。绘制地图的数据源可支持 geojson和 svg 格式。 本文章中提供 实例代码 和地图 静态资源 &#xff0c;项目以 react ts 为主&#xff0…

html旋转相册

一、实验题目 做一个旋转的3d相册&#xff0c;当鼠标停留在相册时&#xff0c;相册向四面散开 二、实验代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" con…

大一C语言查缺补漏 12.23

遗留下来的问题&#xff1a; 3-1 6 3-2 2 3-2 5 在C语言中&#xff0c;标识符的第一个字符是有什么规范吗&#xff1f; 在C语言中&#xff0c;标识符的第一个字符必须是以下两种情况之一&#xff1a; 字母&#xff08;a~z或A~Z&#xff09; 下划线 (_) 在C语言中&…

FFmpeg——视频处理工具安装以及简单命令学习。

FFmpeg 是一个免费、开源且高度可定制的多媒体处理工具&#xff0c;它是一个强大的跨平台框架&#xff0c;用于处理音频、视频、多媒体流和图像。FFmpeg 的主要功能包括解码、编码、转码、流处理、多路复用、分离、合并、过滤等&#xff0c;支持多种音视频格式&#xff0c;包括…

[Angular] 笔记 7:模块

Angular 中的模块(modules) 是代码在逻辑上的最大划分&#xff0c;它类似于C, C# 中的名字空间&#xff1a; module 可分为如下几种不同的类型&#xff1a; 使用模块的第一个原因是要对代码进行逻辑上的划分&#xff0c;第二个非常重要的原因是为了实现懒惰加载(lazy loading)&…

OpenHarmony南向之Audio

音频架构 Audio驱动框架基于HDF驱动框架实现&#xff0c;包含内核态&#xff08;KHDF&#xff09;&#xff0c;和用户态&#xff08;UHDF&#xff09;&#xff0c; 对北向提供音频HDI接口 音频框架图 驱动架构主要由以下几部分组成。 HDI adapter&#xff1a;实现Audio HAL层…

Gradle - 安装、环境变量、配置国内源、常用命令

目录 一、Gradle 1.1、安装&环境变量 1.2、配置国内源 1.3、Gradle 项目文件介绍 1.4、Gradle 中的常用指令 一、Gradle 1.1、安装&环境变量 a&#xff09;从 Gradle 官网下载对应的版本&#xff1a;Gradle | Releases 这里以 8.0 版本为例&#xff0c;下载附带…