自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 CANAPE中加载DBC后,如何在脚本中获取到DBC内的信号量

CANAPE编程

2022-11-01 15:31:37 1398 1

原创 在ch32v307单片机上移植LUA

下载lua源代码先到官网下载lua源代码,http://www.lua.org然后解压出源码源码移植这里基于官方例程中的串口例程进行移植,USART_Printf例程使用MounRiver Studio该工程,然后添加lua源码需要将lua.c和luac.c移出工程。在源码目录中找到相应文件,选中文件,鼠标右键点击【参与/排出编译】。设置头文件路径包含。在main.c中添加lua相关头文件。添加lua与单片机硬件支持。编译后出错,发现无法找到math.h库,需要在设置

2022-05-10 10:59:13 1006

原创 CPU是如何工作的

晶体管到门电路二极管的工作相信大家都知道二极管的工作特性,那如何使用二极管去构建一个门电路呢?二极管的与门:上拉电阻,只有AB同时为高电平,输出为高电平二极管的或门:下拉电阻,只要AB任一一个为高电平,输出为高电平MOS管的工作在高频处理时,我们一般使用的是MOS管而不是三极管。那为什么要使用MOS管呢?使用MOS管可以达到更高的开关频率以及更低的功耗。但是MOS管的成本也相对更高。以下是使用MOS管构建门电路:MOS管的与门电路MOS管...

2022-01-20 13:11:41 12734 9

原创 UDS学习笔记(七)——网络地址

目录物理地址与功能地址网络层地址在使用Python学习ISO15765的过程中,发现它的网络地址很有意思。因此在此做一个笔记,记录ISOTP的网络地址的定义。这里使用的是python-can-isotp库,文档为:参考文档在其文档中,我们可以看到它的地址设定有以下:import isotpisotp.Address(isotp.AddressingMode.Normal_11bits, rxid=0x123, txid=0x456)isotp.Address(isotp.A.

2020-12-16 15:54:41 3470

原创 UDS学习笔记(六)——程序刷写

在github上找了好几个刷写固件的源码,那么接下来通过源码来分析刷写程序的步骤吧https://github.com/satish77/ip_uds_bl_toolhttps://github.com/GoodnightV/UDS-based-Refresher/blob/master/DiagboxSRC/src/main.cpp...

2020-12-15 16:11:06 8427 9

原创 使用ESP32玩转CAN(2)Arduino入门

环境搭建:资料在网上已经有很多了。推荐资料:环境搭建。如果下载很慢,无法下载下来的话,推荐资料:环境搭建在安装完环境之后,我们便可以安装CAN总线库了。CAN库:https://github.com/miwagner/ESP32-Arduino-CAN。库的安装请先下载为ZIP文件,然后在项目->加载库->添加ZIP库就可以直接加入。参考以下代码:#include <ESP32CAN.h>#include <CAN_config.h>CAN_device_

2020-12-15 10:35:51 8705 31

原创 使用ESP32玩转CAN总线(1)

对于汽车开发工程师来说,CAN总线是工作最最基础的一部分了。虽然工作已经有了CANOE,CANAPE,INCA等开发工具,但简单的使用这些软件没有极客精神,有时候还是想能够做一个自己的工具,可以通过编程来玩转CAN总线。由于之前接触过ESP8266,因此当ESP32推出的时候,我对其尤为关注。ESP32的性能更为强大,而最重要的是ESP32已经支持CAN总线了。在其官方文档中,CAN总线被名命为TWAI(Two-wire Automotive Interface)。因此在查阅文档的时候,发现没有CAN总线时

2020-12-14 14:56:28 18800

原创 使用正则表达式解析A2L文件

首先要声明在Gihub上已经有pya2l库了,有需要的朋友可以安装该库学习A2L文件。但我在调用该库解析A2L的时候报错了,可能是我的A2L文件有些参数错误。因此没办法解析我的A2L文件。我的目的是想找到A2L文件中的标定量,因此通过正则表达式可以直接匹配标定量的名字以及地址。以下是简易的匹配代码import re #导入re模块with open(r'你的A2L文件','r') as f: #打开Demo.a2l,读出内容存入txt,关闭文件 txt=f.read() f

2020-11-10 10:59:51 2027 2

原创 用Python做小工具——pypy程序的打包

在前面介绍的pypy打包的过程中,我遇到了一个非常棘手的问题。那就是pypy的标准库中,里面包含了很多我们并不需要的库文件。例如里面的一些测试文件,一些没有引用到的文件等等。单纯靠手工去删除的话是非常的麻烦的。而如果不对这些文件进行删除,便会导致新的问题。那就是当软件被打包成单个文件的时候,需要解压大量的小文件。导致软件的启动时间非常的长。这对一个小程序来说。启动时间长是非常难堪的。于是我便想办法。如何才能把标准库中的不必要文件去掉呢。刚开始我是一个库一个库的删除。这是一个毫无意义的工作。因为要是有新的需求

2020-08-23 22:14:28 2007 1

原创 用Python做小工具——打包程序

在前面的一章里,我们学习到了两种方法把python打包成EXE文件。但是这两种方式都是使用的Cpython作为解析器。导致其运行效率不是很高。而且这两种方法打包出来的软件还是挺大的。在这里我想介绍一下自己手动打包pypy的方法。在网上没有找到pypy打包的程序。因此在这里...

2020-08-23 17:59:11 2071 1

原创 用Python做小工具——精简blf文件

软件背景做汽车开发工作的应该大部分都知道BLF(BinaryLoggingFormat)文件。它是由Vector公司定义的用于记录总线数据的一种文件格式。在汽车开发的过程中,可能我们要录一段时间很长的数据,而CAN总线上有些数据是每隔10ms发送一次,有些是隔100ms,有些是隔1S发送一次的。而当我们要回放分析数据的时候,由于时间太长,导致电脑卡顿,回放的时间比较长。因此产生了一种想法:很多时候我们并不需要特别精确的数据。而在分析数据的时候,如果把10ms一次的数据变为100ms一次。将会大的...

2020-08-21 23:37:58 8712 6

原创 CANOE CAPL编程 HEX文件读取

最近在学习CAPL编程,简单的操作基本掌握了。其实CAPL就是C语言的简化版本,少了挺多特性的。刚开始上手有点不太懂,后面看了几个别人的实例后就手痒痒想动手做点什么。刚好在工作上遇到一些问题,想要用CAPL编写一个UDS刷写器。但是网上只能找到S19文件读写的例子。而我们的固件都是HEX文件的。那么我就动手做了一个HEX文件解析器。首先用Excel打开一个hex文件,通过分列很容易就能得到我的HEX文件里面只有00,01,04三种码。那么我们在解析的时候只需要对这三种不同状态的进行不同的解析即可。.

2020-06-08 13:26:46 8345 21

原创 通过Excel学习PID算法(连续系统的PID)

在之前,我们用倒水的例子通俗易懂的解释了什么是PID算法。在这里先回顾一下之前的学习的内容。P表示对误差的比例系数。与目标值差多少,就在下一次修正中加上这个误差与P的乘积,同时会导致系统有一个超调量,即超出我们所需的高度。I表示对误差的积分的比例系数。用于消除静态误差。如果I越大,则系统的响应速度就会变得越缓慢,即达到目标值的速度也会更久了。D表示相邻两个误差之间的比例系数。用于降低系统的超调量。...

2020-04-21 11:01:59 2634 2

原创 庆钊的Micropython学习笔记(一):简介

最近开始学习micropython,能翻到这篇文章的想必对micropython有一定了解了。我也不对micropython进行介绍了。说一下我选择学习mp的原因:工作的时候需要接触到CAN总线,而stm32的mp版本就能实现can总线的快速发送以及接受。同时如果连接屏幕,就能快速的监控CAN总线上的数据。(其实有个想法,使用树莓派做一个CAN总线监控器,后面继续学习吧哈哈)同时需要很快的...

2020-03-08 20:17:25 642

原创 通过Excel学习PID算法(一步步理解它的KP,KI,KD)

PID原理PID控制算是应用非常广泛的经典控制算法。但是怎么理解PID这三个参数呢?在参考了别人的文章之后,我还是有点一知半解,这时候发现不自己动手算一算是很难理解PID了,但是我又不想做这种重复的计算,于是想到了通过Excel来举个例子。接下来,我们通过一个很简单的例子来表示一个PID控制,并用Excel来计算PID带来的好处等等。这个例子就是,我们要往桶里倒水,并且我们的目标是...

2019-10-11 17:07:40 10697 3

原创 UDS学习笔记(五)——ISO14229

在学习完ISO15765后,我们就可以正式的学习UDS了,也就是ISO14229。我们前面知道了,所有的ISO14229中的服务啊,请求啊,都是在ISO15765基础上进行的。例如10功能代码表示的就是切换对话模式的功能。接收端接收到消息之后,还要进行相应的答复。因此我们本节就分为诊断请求以及诊断响应两个部分进行学习。目录诊断请求诊断响应诊断请求那我们按套路,首先就上一张...

2019-09-19 09:41:28 4393

原创 UDS学习笔记(四)——ISO15765

前面的文章说过了ISO15765在帧的封装的时候,在首位加了一个02表示帧的有效数据是两个,但如果仅仅表示有效数据位的话,CAN总线协议上也有表示数据长度代码。实际上ISO15765有很多的功能,在CAN总线的基础上,主要实现单帧传输以及多帧传输。首先上一张图:第一眼看这张图,肯定会很蒙,这是什么呢?表格从上到下,可以了解到有4类帧:单帧(SF),首帧(FF),连续帧(CF),流控帧(FC...

2019-09-17 15:17:52 15603 4

原创 UDS学习笔记(三)——协议的理解

在理解了CAN总线之后,我们就需要学习UDS协议了。百度一下UDS协议,出现很多的两个标准是ISO14229,ISO15765。ISO14229就是我们说的UDS诊断协议了,那还有一个ISO15765又是什么呢?这么多的标准要把脑袋都搞大了。那我们就从实际的数据包进行分析吧,让我们知道这两个协议的对数据包的影响,那我们就很容易的理解这两个标准了。首先我们要知道无论是UDS协议还是ISO1576...

2019-09-13 20:38:25 12922 3

原创 UDS学习笔记(六)——基于UDS的程序烧写流程

在学习了这么多的服务之后,我们就可以正式开始学习程序烧写流程这一环节了。根据ISO14229提供的文档或者网上的很多资料都能知道,程序烧写可以分为三大流程:预编程阶段,编程阶段,后编程阶段。本文也是根据这三大流程进行一步步的分析的。预编程阶段里面的有的步骤不是必须的预编程阶段的功能是使ECU进入到刷写状态。首先我们要进入到扩展模式,使用的是10服务中的03子服务进入到扩展...

2019-09-11 16:04:25 14871 12

原创 UDS学习笔记(二)——硬件的搭建以及配置开发环境

网上上对CAN总线的介绍很多,对于CAN总线的介绍就到这了。接下来是对硬件的搭建。前文说过了硬件使用的是树莓派与MCP2515模块。MCP2515模块MCP2515是一个CAN总线控制器,其实上面还集成了一个CAN收发器。但是由于MCP2515占主要功能(将SPI总线扩展称CAN总线),因此我们就暂且叫它MCP2515模块吧。MCP2515模块树莓派树莓派是一个基于Linux...

2019-09-10 16:31:22 5930 8

原创 UDS学习笔记(一)——CAN总线介绍

最近刚入职车企,在烧写汽车整车控制器的时候,接触到了UDS协议。因此想要做一个能够烧写整车控制器的硬件。在查阅网上的资料之后,发现很多的资料都不齐全,同时自己也是一个新手,对CAN总线也接触不是很多。因此看那些资料的时候也十分的困惑。我之前学习过串口,SPI,I2C等总线,因此理解CAN总线起来相对也比较容易。在之后的学习中,因此我会尽量用自己的话去形容那些比较官方的语言。因为自己还没具有能够...

2019-09-08 23:59:25 10054 4

原创 在arduino上使用Modbus协议控制无编码器减速电机(一)

使用硬件: GA-12减速电机、arduino uno、L298N电机驱动板使用软件:modbus poll、python首先要明白电机驱动板的工作原理:通道A使能可以通过PWM调节输出A的电压,从而调节其转速。其逻辑输入有:本次使用的库文件为<L298N.h>、"Modbus.h"、"ModbusSerial.h"。均可以在GitHub上找到。ardu...

2019-05-14 11:17:34 2975

原创 使用python,通过串口ROS直接控制电机驱动器(8)

在有了别人的代码后,我就很容易的参考他的方法来实现电机的这个功能,因此我简单的写了一个Python程序,通过调用之前写的Python驱动程序,实现了对单轮电机的速度控制。该程序的实现原理:第一:将导入单轮电机的类实例化,创建对象。第二,创建一个叫base_controller的节点,然后订阅/cmd_vel(速度)主题,定义要发布的/odom(里程计)主题(里程计功能我还暂未实现,但是...

2019-04-30 23:28:12 2103 3

原创 在Arduino平台上使用ESP8266芯片:直接读取MPU9250数据,在ESP8266上解析输出四元数和欧拉角。

在前面我们使用了六轴传感器MPU6050,通过调用DMP库,直接让传感器输出欧拉角或四元数。这种方式能减少单片机的运算负担,但是我们无法调节里面的滤波算法和 姿态解析。而且对于九轴传感器MPU9250来说,调用DMP库输出的最大速度为200HZ(百度的数据,具体多少我也不清楚)。因此如果我们需要更高频率的输出,我们可以直接读取MPU9250的九个数据,然后在单片机处理,输出四元数或欧拉角。第一...

2019-04-05 00:15:13 4772 7

原创 导航资料

最近在学习运动传感器,就此做一些笔记,大概总结一下我在硬件以及软件方面上的学习。常见的运动传感器有分六轴传感器和九轴传感器,代表芯片分别为MPU6050和MPU9250,六轴传感器又称IMU:包含三轴线加速度计,测量物体坐标系下的三轴线加速度;三轴角速度计,测量物体坐标系下的三轴欧拉角变化率。九轴传感器又称MARG或AHRS:除了前述两类,还包含三轴磁力计,测量地球磁力线在物体坐标系下...

2019-03-07 11:27:25 437

原创 在K2P路由器,非官方openwrt固件,安装软件遇到的坑!

手上有一台斐讯K2P,A2版本的路由器,一直空闲在宿舍,最近发现这个路由器被破解了,可以刷上不死breed,还有很多大神做的固件。因此我想用它刷上openwrt系统后,安装某软件,从而直接在路由器上完成学校的宽带验证登陆。接下来我就介绍我在刷路由器上遇到的坑。首先在网上很难找到纯净的openwrt系统,只有各种被改版后的系统,因此在安装软件的时候遇到了各种问题。但是在克服这些问题后,便能用上大...

2019-02-25 13:50:44 24006 2

原创 在Arduino平台上使用ESP8266:使用BMP280传感器测试温度,压强数据。

首先介绍我使用的传感器模块名为GY-91,模块集成了MPU9250和BMP280两个传感器。在GitHub上有ESP8266驱动BMP280传感器的代码,BMP280库文件(点此下载)第一步:接线连接ESP8266的3.3V与传感器的VIN和3.3;GND与GND;D1与SCL;D2与SDA。第二步:修改代码如果直接编译烧写程序进去的话很大可能是找不到BMP280传感器,因为在...

2019-01-22 17:35:11 6392 22

原创 在Arduino平台上使用ESP8266:使用MPU6050和DMP库,获取姿态信息。

最近闲下来,想学习一下运动传感器,于是在淘宝买了块MPU6050传感器。想要更多了解这款芯片信息的可以自己百度。在看了网上大多数的教程案例后,我发现网上的大多数都是基于AVR芯片处理,但是我想用我自己手上有的Esp8266来驱动这个传感器,在开发的过程中我遇到很多坑。于是我自己总结了已下几点坑。第一:接线要接的线有五条:VCC,GND,SCL,SDA,INT。前四个的功能很容易,最后一个是...

2019-01-22 11:02:52 7226 13

原创 在Ubuntu上安装交叉树莓派编译环境并传到树莓派上

一、交叉编译链搭建1.PC机环境:Ubuntu16.04 64位操作系统2.交叉工具链的搭建1)下载必要软件:sudo apt-get install build-essential git2)安装交叉编译环境:3)测试交叉编译环境:4)简单例子测试:编写一个简单测试文件,在虚拟机上编译完成后上传到树莓派中执行:首先创建一个hello的文件夹:    mkdir...

2019-01-16 15:01:55 415

原创 使用python,通过串口ROS直接控制电机驱动器(7)

在做好电机的驱动后,接下来我们便可以把它移植到ROS平台上,移植的过程其实很简单,就是按照官方的例程订阅和发布消息。首先我们要确认我们的程序要订阅些什么内容,比如说很容易想到我们要订阅速度信息,并发布实际速度信息,等等。如图所示是传统电机的驱动模型,因此我们移植到ROS平台上需要订阅cmd_vel(速度信息),和发布Odometry(里程计信息)。在订阅了速度信息后,我的地盘是两车轮模...

2019-01-16 15:00:59 2324 4

原创 在Arduino平台上使用ESP8266:订阅ROS消息,通过tcp无线控制IO

在本教程之前,请先确认是否安装好arduino的IDE和加载了ROS的库文件;安装IDE的参考文章:https://blog.csdn.net/zengqz123/article/details/82712648加载ROS库的参考文章:http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup在RO...

2019-01-16 10:33:16 1890 4

原创 使用python,通过串口ROS直接控制电机驱动器(6)

python驱动电机部分完结,现在把全部代码公布,基本实现驱动器速度控制部分功能。接下来我将把电机驱动器移植到ROS上,实现驱动器与ROS之间的通讯。下图为我代码的基本框架:#!/usr/bin/env pythonimport serialimport timeimport threadingimport structmotor_speed_mode = b'\x02\x...

2019-01-15 18:32:31 2614 1

原创 使用python,通过串口ROS直接控制电机驱动器(5)

接下来我便是驱动电机的代码实现了,由于需要发送十六进制的字节码,因此我们要引入Python的struct模块,把数字转换为字节串。 def motor_speed_set(self): a1 = 6 a4 = check_code(a1, self.set_speed) self.serial.write(struct.pack("&...

2019-01-15 18:29:16 1614 2

原创 在嵌入式linux环境下,搭建ROS下位机

最近在ros官网上发现rosserial支持embeddlinux,于是对这个产生了很大的兴趣,传统大家都是用arduino来做下位机,通过串口的形式来做控制的,但是有时候我们的下位机可能需要很大的计算量,这时候用普通的单片机可能性能就不是很够的了,因此我做这样一个教程,通过给树莓派编译rosserial_embeddedlinux,实现通过网络的形式给上位机发布消息。首先我们要有一台运行Ub...

2019-01-12 10:56:52 1952

原创 使用python,通过串口ROS直接控制电机驱动器(4)

继续上节的工程,我给电机做了一个简单的建模后,就需要具体实现每一个功能了。首先我们要在脑海里建立好一个模型,我们一方面向串口输入数据,一方面还要从串口里接收数据。在刚开始的时候,我定义了很多个函数,在发送完数据后立马就接收驱动器回复的数据,在后期想用多线程的时候很容易产生错误,导致驱动器不知道我发送的是什么指令需要使用线程锁来编写,又导致程序非常的复杂。在参考网上的的串口多线程编程的过程中,我...

2019-01-08 17:59:25 2492 10

原创 使用python,通过串口ROS直接控制电机驱动器(3)

运用python最大的好处就是我们能够通过面向对象的方式来编写程序,因此在这一节里我们首先创建一个电机的对象,在脑海里构思,电机有哪些属性,需要哪些控制方法!在考虑到这么多的属性与方法之后,我参考卖家基于stm32的can通讯类方法,写了以下设置初始化方式:class SpeedMotor: def __init__(self, device, acc, dcc): ...

2019-01-07 10:47:00 2751

原创 使用python,通过串口ROS直接控制电机驱动器(2)

第一节:运用测试程序测试电机是否正常工作在第一节中,我们需要测试一下用Python串口控制电机的可行性。请确保自己安装好anaconda。第一步:安装pyserial模块(遇到问题百度解决)打开命令行输入:pip install pyserial第二步,参考驱动器使用手册,了解驱动器串口(RS232)通讯协议:第三步:根据通讯协议写测试代码:import seri...

2019-01-04 15:56:08 4974 2

原创 使用python,通过串口ROS直接控制电机驱动器(1)

最近在一个公司实习,公司需要我用ROS搭建一个机器车地盘,因此我开始学习关于ROS方面的东西。通常传统的方法大家搭建机器车地盘的时候会想到用一个stm32开发板作为中间层次,对上层上位机通过ros-stm32串口的方式通讯,对下层电机驱动器通过pwm的模拟电压来控制电机。但是公司给我的驱动器的通讯方式不仅仅是模拟量的输出,还可以通过can或者串口的形式来控制驱动器。我之前的学习基本是在上位机上...

2019-01-03 10:56:54 8816 5

原创 arduino入门(esp8266)-环境搭建

为什么是arduino? arduino是一系列的控制板,我选用学习arduino控制板的原因是它能和ros很好的结合在一起使用,操作是否简单,价格便宜。对于个人学习来说是一个很好的平台。市面上有很多芯片能够支持arduino,我十分推荐的一个芯片是esp8266。 esp8266,只需要15元左右就能做好最小系统,并且esp8266带有wifi芯片,在后期智能车设计过程中,...

2018-09-15 12:02:58 27031

原创 arduion控制电调

控制无刷电调要使用20ms的PWM信号。

2018-09-15 11:14:22 2193

XCP_ReferenceBook_V3.0_EN.pdf_英中对照.pdf

XCP_ReferenceBook_V3.0_EN.pdf_英中对照

2019-11-11

空空如也

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

TA关注的人

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