【Jetson目标检测SSD-MobileNet应用实例】(五)根据输出的检测结果,使用串口和STM32配合进行电机控制

article/2025/9/23 0:47:20

【Jetson目标检测SSD-MobileNet应用实例】(一)win11中配置SSD-MobileNet网络训练境搭建
【Jetson目标检测SSD-MobileNet应用实例】(二)制作自己的数据集–数据集的采集、标注、预处理
【Jetson目标检测SSD-MobileNet应用实例】(三)训练自己的检测模型和推理测试
【Jetson目标检测SSD-MobileNet应用实例】(四)在Jetson上使用CSI摄像头进行视频推理并输出检测结果

使用模型检测只是我们的对算法的使用,更进一步我们要根据算法得到的结果对应上实际的问题,通过和STM32的配合实现更加实时的电机控制,达到最终解决问题的目的。

Jetson nano串口使用

在Jetson nano中串口的使用我们大多数情况下可以参考Ubuntu下串口的使用,二者除了串口名称的不同其它基本上没有什么差别。
在这里插入图片描述
在下面的程序中我们使用它的UART2,它对应ttyTH1,也就是第8、10号引脚。

查找可用串口

在终端输入指令:

 ls -l /dev/ttyTHS*

可以查看使能了的串口,如果没有的话我们就打开THS1的权限

sudo chmod 777 /dev/ttyTHS1

再次查找设备之后应该就有显示了。

Jetson端串口设置

首先要安装py-serial库

sudo apt-get install python3-serial

通过这个库我们可以使用python进行串口的使用了
然后在jetson 端使用如下脚本测试:

import serial
from time import sleepif __name__=="__main__":ser = serial.Serial()ser.port = "/dev/ttyTHS1"  # 设置端口号ser.baudrate = 9600  # 设置波特率ser.bytesize = 8  # 设置数据位ser.stopbits = 1  # 设置停止位ser.parity = "N"  # 设置校验位ser.open()  # 打开串口,要找到对的串口号才会成功uarthand = 0xauardlast = 0xbrow = 0x11speed = 0x21i = 0x01b = 0x02if (ser.isOpen()):print("打开成功")else:print("打开失败")while True:if i>10:i = 0row = 0x11if b>10:b = 0speed = 0x21if (ser.isOpen()):ser.write(chr(uarthand).encode())ser.write(chr(row).encode())ser.write(chr(speed).encode())ser.write(chr(uardlast).encode())else:print("发送失败")i = i+1b = b+1row = row+0x01speed = speed+0x02sleep(0.2)

在脚本中我简单定义了一个通信帧的协议,包含帧头帧尾,帧头是0x0a,帧尾是0x0b,中间两帧是数据。所有数据通过16进制发送

STM32端接收数据

在STM32端我使用STM32F407ZGT6的串口2,串口的配置就不重复说了,这里直接看到串口的接收中断函数,在串口的中断函数中我们对数据进行解析

u16 USART2_RX_STA = 0;
u8 USART2_ReadState =0;
u8 USART2_RX_BUF[4];  void USART2_IRQHandler(void) //串口2中断服务程序
{u8 Res = 0;if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res = USART_ReceiveData(USART2); //(USART1->DR);	//读取接收到的数据if (USART2_RX_STA == 0){if (Res == 0x0A){USART2_RX_BUF[USART2_RX_STA] = Res;USART2_RX_STA++;}elseUSART2_RX_STA = 0;}else if (USART2_RX_STA >= 1){if (Res == 0x0B){USART2_RX_BUF[USART2_RX_STA] = Res;USART2_ReadState = 1;USART_Cmd(USART2, DISABLE);USART2_RX_STA = 0;}else{USART2_RX_BUF[USART2_RX_STA] = Res;USART2_RX_STA ++;}	}}
}void USART2_RX_BUF_Free(void)
{for(int i = 0; i<4 ; i++){USART2_RX_BUF[i] = 0;}
}

在主函数中我们只需要一直判断USART2_ReadState这个标志位的值,当它为1的时候说明串口接收到一帧数据,就可以根据 USART2_RX_BUF数组的中间两位进行进一步的控制操作了。注意需要及时清除标志位。


http://chatgpt.dhexx.cn/article/mvUr4ERD.shtml

相关文章

NB-IOT 温湿度数据上报及IOT平台数据下发(STM32L4,电信Oceanconnect, COAP协议)

在设备侧&#xff0c;智能设备采用了NB-IOT芯片&#xff0c;它和中国电信物联网开放平台之间通过CoAP协议通讯。CoAP报文的payload里是设备的应用数据。 应用server通过http/https协议和平台通讯&#xff0c;通过调用平台的开放API来控制设备&#xff0c;平台把设备上报的数据…

怎么使用nbtscan工具一条命令扫描局域网内所有的IP及MAC

具体操作方法&#xff1a; 1、下载nbtscan.rar文件并解压。 2、然后将解压好的cygwin1.dll和nbtscan.exe两文件拷贝到C:\WINDOWS\system32根目录下&#xff08;根目录下即可&#xff09;&#xff1b; 3、进入cmd窗口就可以输入命令&#xff1a;nbtscan 192.168.X.98/24&#xf…

NB-IOT的使用

目录 一、AT指令 二、串口透明传输 三、搭建自己的服务器 一、AT指令 •AT命令集是由拨号调制解调器(MODEM)的发明者贺氏公司(Hayes)为了控制Modem发明的控制协议。 • •AT是Attention的缩写,协议本身采用文本.每个命令均以AT打头,因此得名 • •主要的移动电话生产厂商诺基…

NB-IOT介绍

文章目录 简介特点超低功耗DRX模式&#xff1a;eDRX模式&#xff1a;PSM模式&#xff1a; 超大连接超低成本超强覆盖 通信协议COAP协议COAP协议消息类型COAP的请求码&#xff08;requests&#xff09;和响应码(responses)COAP的安全性 MQTT协议MQTT工作原理MQTT的消息类型 LWM2…

基于STM32的(NB-IOT(BC26))温湿度监测系统

基于STM32的&#xff08;NB-IOT(BC26)&#xff09;温湿度监测系统 闲来无事&#xff0c;用手头STM32做个项目。 成品功能&#xff1a;STM32采集温度、湿度数据&#xff0c;显示在屏幕上&#xff0c;通过NB-IOT(BC26)模块连接阿里云物联网平台接受数据并实时监控。 材料 STM3…

CAN通信----CANTest下载和安装

一、CANTest 下载 在周立功的官方网站下载免费的 CANTest软件。 下载网址&#xff1a;https://www.zlg.cn/index.php/can/down/down/id/22.html 步骤1&#xff1a;进入官网&#xff0c;点击下载 步骤2&#xff1a;下载完的安装包 二、CANTest 安装 步骤1&#xff1a;双击刚下…

NCBI的NT库比对——blastn

NCBI的NT库比对——blastn NT库比对&#xff0c;包括对测序数据和组装后的基因组序列进行NT库比对&#xff0c;查看是否存在菌污染以及是否是自己的数据。这里我提供这一部分的具体操作过程。 步骤一&#xff1a;NT全库下载 前面有一篇博文&#xff0c;提到了通过Aspera软件…

NB-IoT模块 移远BC26测试 - TCP通信

准备工作 USB转TTL线NB-IoT测试卡&#xff08;电信或者移动制式&#xff0c;BC26支持全频段&#xff0c;B5 B8都可以&#xff09; AT指令 硬件正确连接之后&#xff0c;按住轻触开关 S1 一段时间或者拉高丝印为 PWR 的信号&#xff08;排针&#xff09;一段时间让模块开机&…

NB-IoT移远BC95调试笔记 01 加网测试

一、前言 移远BC95是最早推出的NB-IoT模块&#xff0c;目前厦门这边网络都已经覆盖了。自己拿个设备来玩玩&#xff0c;这篇笔记先记录下加网测试的心得。 本文作者twowinter&#xff0c;转载请注明作者&#xff1a;http://blog.csdn.net/iotisan/ 二、加网总体思路 加网思路…

[内网渗透]—内网扫描

nbtscan Win2012 上传nbtscan和dll程序 upload D:\内网\tools\信息收集\nbtscan\nbtscan.exe上传后用nbtscan命令扫描内网其他网段 shell nbtscan.exe 192.168.52.0/24win2016 此时直接上线Win2016肯定是不行的&#xff0c;因为目标不出网无法访问到kali&#xff0c;所以要…

TBCNN

TBCNN – 基于树的卷积神经网络 TBCNN: A Tree-Based Convolutional Neural Network for Programming Language Processing 一种用于编程语言处理的基于树的卷积神经网络 Abstract: 由于当前还没有将深度神经网络应用于编程语言处理, 提出TBCNN模型来对基于ASTs的编程语言进行…

Nbtscan.exe工具分析

Nbtscan.exe 这是一款用于扫描Windows网络上NetBIOS名字信息的程序。该程序对给出范围内的每一个地址发送NetBIOS状态查询&#xff0c;并且以易读的表格列出接收到的信息&#xff0c;对于每个响应的主机&#xff0c;NBTScan列出它的IP地址、NetBIOS计算机名、登录用户名和MAC地…

内网安全攻防读书笔记(5)——探测域内存活主机和端口扫描

实际探测可以在白天和晚上分别进行探测。 1.利用NetBIOS快速探测内网 nbtscan工具已经上传到我的资源&#xff0c;大家可以下载。此工具用于扫描本地或远程TCP/IP网络上开放NetBIOS名称服务器。有Windows和Linux两个版本&#xff0c;将其上传到目标服务器就可以直接使用。使用…

nbtscan局域网扫描的原理

本文出处&#xff1a;http://blog.csdn.net/xizhibei 相信搞网络的应该都听说过nbtscan这个工具&#xff0c;当我们处于局域网中&#xff0c;想查询同处一个局域网的主机时&#xff0c;它就是个不错的工具&#xff08;比如追踪ARP诈骗源&#xff09; 它也很好用&#xff0c;在…

nbtscan在windows和linux下编译

nbtscan在windows和linux下编译 windows下载编译 linux下载编译 参考文章 windows 下载 http://unixwiz.net/tools/nbtscan-source-1.0.35.zip解压之后&#xff0c;修改nbtscan.c的66行include "getopt.i"为include "getopt.h" 修改nbtscan_common.h为li…

内网探测(主机存活、端口、Web资产)

内网探测&#xff08;主机存活、端口、Web资产&#xff09; 当我们能访问到目标内网任何资源之后&#xff0c;我们就可以对目标内网进行更深层次的信息搜集&#xff0c;比如&#xff1a;主机收集、IP 段搜集、端⼝开放服务、Web资产数量、漏洞类型 0x01. nbtscan 介绍&#xff…

入侵检测——nbtscan(扫描篇)

目录 环境介绍工具简介数据包规则 环境介绍 NAT模式&#xff1a; kali攻击方win7受害者Metasploitable受害者 工具简介 一个在本地或远程TCP/IP网络上扫描开放的NETBIOS名称服务器的命令行工具。它基于Windows系统的nbtstat工具的功能实现&#xff0c;但它可在许多地址上运…

delphi生成一个随机序列号

varFGuid: TGUID;beginCreateGUID(FGuid);edit1.Text : GUIDToString(FGuid);edit1.Text : edit1.Text IntToStr(Length(edit1.Text));edit1.Text : Copy(GUIDToString(FGuid), 2, 36);end; 测试通过

delphi2007 注册码

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; 执行 Setup.exe 文件安装 Delphi 2007 for…

linux 磁盘序列号修改,一个小程序:Linux下取得硬盘的序列号

最近给朋友帮忙&#xff0c;遇到一个问题&#xff1a;如何在Linux取到硬盘的序列号&#xff1f;目前网上说的方法大都是Windows 下用Delphi、C#等工具开发的。如何用ANSI C来实现呢&#xff1f;其实C在做这种底层事情方面比Delphi和C#都要容易的。下面这个函数就是取得硬盘序列…