自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (5)
  • 收藏
  • 关注

原创 BMS上位机(三)

升级流程相对比较简单,但是要考虑异常情况的处理,防止升级后的软件打开情况,需要做好校验工作。

2022-11-26 19:50:08 1950

原创 BMS上位机(一)

BMS,电池管理系统,上位机

2022-07-02 15:14:15 6963 4

原创 嵌入式开发之有限状态机

总述有限状态机是嵌入式开发中使用的常用方法,是针对一些连贯状态的控制响应。例如:按键按下灯亮,按键抬起灯灭状态机结构设计状态机是有许多的子状态构成,而子状态包括当前的状态、事件触发后的下一个状态、触发的事件以及触发后执行的动作,由此其数据结构可以如下:typedef void (*func)(void *);typedef struct fsm_table_t{​ int cur_status; //当前状态 int next_status; //触发后进入的下一状态

2021-04-24 11:17:28 485

原创 WinForm显示3D图(Sharpgl)

总述Sharpgl是.NET平台的Opengl,可以用来绘画、展示3D图,本文将介绍如何显示SOlidWorks等软件制作的3D模型。安装Sharpgl下载SharpGL.vsix文件并点击安装,VS中就会有相应的项目出现了,之后创建工程时选择这个项目建立即可。解析模型在网上不难找到个人写的3DS解析库,直接使用即可。一般这些解析库针对的是3ds或者obj文件,对于SolidWorks创建的模型就需要一些转换工作了。保存模型为STL类型使用Spin3D软件转换为3ds/obj解析器代码

2021-04-10 20:58:10 8995

原创 XR872图传声传小例程——无线传输

总述XR872是一颗带DVP接口以及JPEG编码能力的WiFi芯片,比较使用图像传输方面的轻应用,本例程采用上位机与XR872之间进行图片传输,并进行即时显示。配网以及传输简述配网采用串口发送命令行的形式进行给设备配网,也可改成一键配网(smartconfig, airkiss)。net sta config "your wifi ssid" "your wifi pwd" + 换行net sta enable//等待设备联网传输设别IP传输上位机广播需要获取摄像头IP的命令,设备接收

2021-01-22 23:40:59 2701 22

原创 WIFI类物联网产品配网方式简述

总述智能家居类物联网产品常使用WIFI通信方式,这类产品在初始化时都必须要有一个配网过程,配网方式很大程度上影响着用户体验。配网方式比较方式简介Airkiss微信一键配网方式,操作简单,采用广播长度编码方式,不适用于5G路由器配网,有失败概率SmartConfig种类较多,各大厂家都有,有广播长度编码、组播长度编码、组播IP编码,操作简单,有失败概率AP配网设备端作为AP热点等待手机连接,固定IP地址作为服务端,等待手机连接建立通信通道接收SSID和PWD,操作

2020-12-13 13:55:58 2235 3

原创 嵌入式开发——RTOS

总述对于较为复杂的应用开发,还是使用RTOS比较好。RTOS一般都集成了线程管理、线程同步、共享资源保护等功能模块。使用RTOS能够方便的管理多个功能模块,并且发挥CPU的最大资源使用(无时无刻的进行着任务的切换与运行)。RTOS对比名称简述RT-Thread国产开源RTOS,生态组件很多(GUI、IDE等),文档丰富,对于国内开发者比较友好,支持POSIX接口 官网FreeRTOS比较经典开源的RTOS,使用很广泛,组件较少UCOS早期的商用付费RTOS

2020-10-31 14:09:42 1413

原创 嵌入式开发——物联网

趋势当前物联网与人工智能是比较火热的话题。不管是基于实用还是噱头,似乎什么产品上都加上了APP远程控制。物联网设备逐年递增,未来市场不可估量,根据相关报告估计2020年全球有500亿的设备连接量。物联网国内WIFI芯片价格也变得越发便宜,堪称白菜价,各大厂对于物联网这一块也开始加大布局,这对于物联网无疑具有很大的促进作用。市场上对于物联网嵌入式开发的需求也在增加,物联网的开发主要是熟悉无线通信的方式与机制。常用的无线通信方式有WIFI、蓝牙、LORA、NB-IOT、ZIGBEE、蜂窝信号等。

2020-10-25 13:19:10 6773 9

原创 嵌入式Littlevgl之linux移植

总述Littlevgl相比较于安卓、QT,占用资源少、使用简单,所以在linux系统下使用Littlevgl优势也比较明显。移植准备工作源码:lvgl:https://github.com/littlevgl/lvgl驱动:lv_drivers:https://github.com/littlevgl/lv_drivers例子:lv_examples:https://github.com/littlevgl/lv_examples下载慢可以将上面链接先导入到码云上再下载。配置工作源码

2020-10-11 14:52:06 2709 2

原创 物联网通信之——Mqtt

总述Mqtt是目前物联网使用最广泛的通信之一,底层是基于TCP连接进行数据通信,采用订阅/发布的通信协议,非常适合低带宽、低开销的硬件终端场景使用。设备: 可发布,可订阅到主题代理服务器: 缓存消息数据,接收发布消息并转发给订阅的设备Linux搭建Mqtt服务器1、 安装mosquittosudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppasudo apt-get updatesudo apt-get install mosquit

2020-08-23 14:54:35 1872

原创 嵌入式之OTA详解

总述对于物联网产品,OTA升级功能总是必不可少的,可以随时更新终端产品的用户体验,不过OTA对升级过程中的安全性要求极高,以防一不小心设备成砖。升级方式1、 双区域备份升级——pingpong升级 顾名思义,Flash分为两个区域A,B,A作为初始固件运行区,当检测到升级需求时,将新的固件写入到B区,校验新的升级固件完全下载写入后,设备重启后Bootloader启动代码从升级信息区读取当前应当运行的区域,后跳到指定的区域运行程序。 优点:升级代码下载到设备后,就不再需要任何处理,设备资源占用小

2020-08-16 17:37:05 3446

原创 物联网之轻量级TCP/IP协议栈——Lwip

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-06-25 23:42:30 1487

原创 物联网连接之阿里云

简介物联网(IOT)的市场规模将会越来越大,目前也已经较普及于各行各业,例如工厂、家用电器等。目前各大物联网平台有小米、阿里、易微联等,阿里的飞燕平台对于产品的云端接入比较友好、方便,搭配上Alios能快速搭建可量产的产品。实战此实例以XR872为硬件基础。搭建Alios环境搭建环境不使用Alios可以自行移植LinkkitSDK阿里云创建产品登录网址1、点击免费开通2、创建新项目3、创建产品、定义功能属性(mqtt topic设置与发送数据中会使用到的)4、完成云端产品的所有定

2020-06-13 17:30:06 901

原创 C# webBrowser控件调用echart

C#调用EchartEchart对于数据展示相当优美,前端调用很方便,对于古老的Winform如何调用呢?下载EchartEchart官网下载后得到:echarts.js 和 echarts.min.jshtml中引入: <!-- 引入 ECharts 文件 --> <script src="echarts.min.js"></script>之后可以调用Echart使用,主要是对Echart的option设置。Echart Option主要参数说明

2020-06-07 18:01:37 2574

原创 嵌入式GUI—Littlevgl

Littlevgl介绍与移植1、简介 Littlevgl是一种纯C语言编写的GUI,控件多且美,移植简单,只要对接一个显示接口,需要触摸的再加一个触摸控制接口。2、移植 显示接口移植: static void tft_flush(int32_t x1, int32_t y1, int32_t x2, int32...

2020-05-04 14:35:12 3984

原创 语音识别之VAD——静默检测

1、简介 静默检测对于语音识别有这很重要作用,什么是静默检测?顾名思义就是检测语音的状态,静默状态还是激活状态,这样才能保证送进语音识别模型的是一句完整语音数据,排除一些噪音的干扰。如同下图所示,当然这里存在一个问题,就是多长时间的静默状态才当作语音的结束,以及多大的语音能量以及多长时间的状态持续才当作语音的开始。2、算法简介 2.1 语音激...

2020-05-01 12:41:08 8088

原创 BMS上位机(四)

带主题切换,语言切换的上位机,可私聊。

2024-05-05 17:20:17 201

原创 离线语音识别PocketSphinx(一)

对于设备的控制,最简单方便的交互当属语音控制了,目前市面上也有许多的离线语音控制模块,可以任意更换需要识别的语句,但是识别模型这块都是闭源的,能够配置改动的不多,PocketSphinx是一个开源的离线语音识别库,且能训练自己的语音识别模型。

2023-09-10 15:35:50 769

原创 IMU姿态计算

IMU即惯性测量单元,主要用于对机体的加速度与角速度的测算,使用场景很多,例如: 平衡车、惯性导航等等。

2023-09-02 11:24:23 731

原创 Lvgl+发布订阅设计模式

以Lvgl加发布订阅模式实现简单的UI显示。

2023-06-18 11:12:07 198

原创 发布与订阅设计模式(C语言)

发布与订阅模式,由一个消息代理中心基于消息主题进行数据的传输与转发,完全隔离发送者与接收者之间的联系,实现高度的解耦,当然该模式也存在缺点,例如由于存在消息代理,所以效率没有直接传输的高等。

2023-06-10 15:10:34 966 2

原创 Modbus上位机调试工具开发

传输格式包含RTU和ASCII, RTU采用的是二进制传输。地址功能码数据校验码。

2023-05-13 19:50:20 329 1

原创 LvglV7.0.2内存管理(二)

一般的内存管理以及Flash的存储管理,基本原理与此类似,基本都是数据头加数据体再基于链表数据结构进行管理。注意: 内存分配的时候并不是刚好申请需要的大小,一般都是基于某个大小进行对齐处理,这样 能提高访问效率。

2023-03-14 22:43:13 1067

原创 LvglV7.0.2框架(一)

Lvgl跟系统类似,外部只需调用其心跳计数函数,其内部控制相关任务的运行与控制。lv_tick_inc(x) 控制Lvgl内部tick计数增加xlv_task_handler 循环执行注册的任务。

2023-03-11 11:54:24 698

原创 基于Live555实现数据流的推送

首先实现一个比较通用的MediaSubsession,继承OnDemandServerMediaSubsessionpublic :public :return sms;接着实现数据获取类public :private :public :public :/*实现获取数据到fTo,最大fMaxSize*/ ret = getStreamData(fSourceHandle ,(char *) fTo , fMaxSize)

2023-02-27 22:48:50 2458

原创 C#数据采集上位机

数据采集

2023-02-19 10:44:18 1802

原创 CH582+上位机控制(Winform)

CH582芯片功能强大,外设也比较多(USB、蓝牙、SPI、IIC等等),很适合做一些DIY的开发,例如:USB转其它协议等。上位机配置协议详情,通过USB将数据传递给CH582,实现USB转SPI\IIC\UART以及控制灯和升级的功能。USB作为Device并配置为虚拟串口设备,上位机不需要选择串口号,通过PID/VID自动搜索设备。在协议配置界面可以配置需要下发的组合逻辑,进行读写操作。

2022-11-05 13:10:01 1141 1

原创 C#动态库封装(CH341\CP2112)

常见的设备在PC端都只提供C/C++的动态库,当需要使用C#调用时就需要进行封装一下,下面对CP2112/CH341提供的动态库进行封装。

2022-10-15 23:04:41 1898 1

原创 Live555(一)

Live555是一个比较完善的RTSP库,可用来做服务端和客户端,即可以作为RTSP Client 拉取服务端的流媒体,也可以作为RTSP Server被客户端拉取流媒体。左上角点击:: 媒体 -> 打开网络串流 -> 输入播放路径(例如:rtsp://192.168.99.166:8554/文件名)rtsp://username:password@192.168.99.166::8554/文件名。执行后会创建一个服务端,可以使用VLC软件播放该服务端的视频文件。

2022-09-17 18:03:06 361

原创 BMS上位机(二)

一中定义了上位机界面布局,接下来定义串口协议格式采用主机主动读写的方式,在modbus基础上加以修改。小端模式地址 | 功能码 | 数据 | 校验码地址 | 功能码 | 数据长度 + 数据 | 校验码......

2022-07-09 19:29:38 1751 1

原创 Linux WiFi使用

总述Linux下WiFi使用也比较多,即可作为局域组网,也可通过路由/移动网络连接外网使用。常用软件命令:wpa_passphrase hostapdWiFi加载一般WiFi模组为sdio接口传输数据(802.11帧),驱动由厂商提供流程:insmod xxx.koifconfig wlan0 upSta模式(wpa_passphrase)wpa_passphrase ssid password > /etc/wpa_supplicant/ssid.conf #生成连接路由器配置

2022-05-15 22:00:10 1210 1

原创 单片机实现物体检测(人脸识别等)

总述边缘计算很有前景,对于低要求的识别任务完全可以下放到嵌入式设备运行。本文实现的应用基于TF lite Macro框架。实现训练模型基于YoloV3修改网络文件进行训练自己的模型,识别单个物体,输出773位置信息, 输入为56563大小图片。模型文件机见下文连接下载Darknet源文件,在linux下进行make,生成darknet可执行文件以及相关库使用Darknet自带的浣熊数据集或者自己标注新的其它数据集训练命令: ./darknet detector train voc.data

2022-04-05 22:14:09 8359

原创 BLE蓝牙HID设备开发(BL602)

总述BLE蓝牙在物联网中使用很广泛,许多WiFi物联网芯片都带有BLE蓝牙,天猫精灵找队友也是有使用BLE蓝牙广播实现的。BLE蓝牙缺点是不适合大数据传输的场景。BLE蓝牙BLE蓝牙主机开发基本包括:广播数据的设置service的属性设置广播数据结构数据结构,31个数据长度由n个以下结构构成:(除蓝牙5.0外广播数据最大31个字节长度)LengthAD TypeAD Data广播数据长度广播数据类型广播数据HID设备广播数据LengthAD

2022-03-01 10:46:55 2405

原创 Winform动态加载界面

简述功能新增与修改可能性很大,但是整个展示的框架一般不会变动,动态加载就能满足需要的应用场景。软件框架左侧与顶部作为菜单显示栏,右下区域全部作为展示界面,此区域作为动态加载父窗口。整个界面框架大致如下:动态加载界面动态库建立控件项目,设计一个想要的界面,编译成动态库,这里就拿以前的串口控件加载动态库 string dllPath = ""; public LoadDll(string dllpath) { dllPa

2021-09-05 19:37:41 1958

原创 WiFI探针

简述WiFi设备会定期向周围发送探测请求,其中包含改设备的MAC地址,通过获取周围设备的MAC地址可以进行流量的统计。原理802.11帧格式WiFi设备处于监听状态下可以获取到空中所有的802.11帧,通过解析其中的地址2就可以获取到周围存在的设备MAC地址了。使用准备一个WiFi模组或者开发板,设置WiFi模式为监听模式(与STA/AP不同), 抓取周围的802.11帧数据,获取其中的MAC地址,由于如果设备一直存在,会定期发送探测帧,故可根据此实时更新当前周围的设备数量。实现效果硬件

2021-08-29 17:08:14 1642

原创 NAT Router

总述由于IPV4外网地址有限,所以不可能每个联网设备配备一个外网IP地址,顾需要将多个内网设备映射到一个外网IP使用,这就诞生了NAT Router。简述原理内网与外网可以当作两个网卡端口,每个端口都有输入与输出,内网网卡端口在网络层解析处理数据的源地址与目标地址,如果目标地址同样为内网地址直接转发,否则转到外网网卡端口处理发送(此时需要修改源地址为外网地址,并添加到映射表,待外网数据返回后查表进行转发到内网)。总结对于WiFi模组只要能同时存在AP和STA两种模式,就可以作为WiFi中继器使用

2021-08-22 14:07:38 682

原创 LVGL动画

总结Lvgl的动画自带几种效果非常好用,下面简单介绍一下动画基本使用//封装一下对象添加动画流程/* *obj: 控件对象 *exec_cb:动画设置函数,例如:控件的位置等 *time:动画时长 *start:动画开始值 *end:动画结束值 *path_cb:动画效果 */void lv_obj_add_anim(lv_obj_t* obj, lv_anim_exec_xcb_t exec_cb, uint16_t time, lv_coord_t start, lv_coord

2021-07-18 21:58:15 4722

原创 循环缓冲区

总述嵌入式开发中经常会用到循环缓冲区,例如:串口的数据接收。实现头文件:#ifndef __RINGBUFFER_H_#define __RINGBUFFER_H_#define MAX_BUFFER_SIZE (1024)typedef struct ringbuffer_t{ char buffer[MAX_BUFFER_SIZE]; //缓冲区大小 int in_flg; //目前数据写入的位置 int out_flg; //目前数据读取的位置}ringbuffer

2021-06-27 19:02:57 594

原创 嵌入式Linux开发中如何定位崩溃处?

程序崩溃程序开发中难免会因为各种各样的问题导致程序崩溃, C/C++语言开发过程中最常见的就是由于内存的问题导致的崩溃。例如:#include "stdio.h"#include "stdlib.h"int main(void){ int *p = NULL; *p = 1; return 0;}导致:Segmentation fault (core dumped)GDB搭配CoredumpGDBGDB是用来进行程序调试的,例如:单步调试,打断点等,

2021-05-16 11:57:18 551

原创 C#自定义组合串口控件

总述winform自定义组合控件可以对经常使用的一些功能进行封装到一起,形成一个新的控件,方便使用。示例说明创建项目打开VS,选择窗体控件库创建项目串口配置控件实现效果控件说明label4显示连接状态串口号combox初始化时自动搜索串口并添加波特率combox限定选择项(115200等)数据位combox5,6,7,8停止位combox0, 1.5, 2自动重连checkbox串口因某些原因断开时自动尝试重连启动butto

2021-05-01 13:21:07 757

BMS管理系统上位机V1.0

BMS管理系统上位机V1.0

2022-07-09

物体检测网络模型的 文件

物体检测网络模型的 文件

2022-04-05

alios控制台(cli)组件移植

cli组件类似linux的shell交互,对于调试以及需要交互的嵌入式开发有很好的借鉴作用,由于是开源的也可以直接使用

2020-10-06

littlevgl.7z

littvgl的字库生成软件,可以生成汉字以及一些矢量图片,方便快捷,官网的在线生成字库比较麻烦,感谢这个软件作者的付出。

2020-05-04

webrtc.zip

webrtc的vad模块,使用起来特别方便,能够检测语音的开始与结束。只要调用里面的webrtc_vad与typedefs,即可使用

2020-05-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除