pixhawk串口读取传感器数据

2023-05-16


1、 Pixhawk板上串口说明: 

   这里写图片描述  
   测试 使用Pixhawk板上TELEM2接口的USART2,对应的Nuttx UART设备文件尾 /dev/ttyS2 : 

  这里写图片描述


2 读取数据测试

步骤:

    • Firmware/src/modules中添加一个新的文件夹,命名为rw_uart
    • rw_uart文件夹中创建CMakeLists.txt文件,并输入以下内容:
      px4_add_module(
      MODULE modules__rw_uart
      MAIN rw_uart
      COMPILE_FLAGS
      -Os
      SRCS
      rw_uart.c
      DEPENDS
      platforms__common
      )
      这是CMake的编译脚本
    • rw_uart文件夹中创建rw_uart.c文件
    • 注册新添加的应用到NuttShell中。/src/Firmware/cmake/configs/nuttx_px4fmu-v2_default.cmake文件中添加如下内容:
      modules/rw_uart

上面表示把rw_uart.c编译成可以在nuttx里面运行的程序。

rw_uart.c


  

#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <stdbool.h>
#include <errno.h>
#include <drivers/drv_hrt.h>
#include <string.h>
#include <systemlib/err.h>
#include <systemlib/systemlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

__EXPORT int rw_uart_main(int argc, char *argv[]);

int set_uart_baudrate(const int fd, unsigned int baud);

int set_uart_baudrate(const int fd, unsigned int baud)
{
int speed;

switch (baud) {
case 9600:   speed = B9600;   break;
case 19200:  speed = B19200;  break;
case 38400:  speed = B38400;  break;
case 57600:  speed = B57600;  break;
case 115200: speed = B115200; break;
default:
warnx("ERR: baudrate: %d\n", baud);
return -EINVAL;
}

struct termios uart_config;

int termios_state;

/* fill the struct for the new configuration */
tcgetattr(fd, &uart_config);
/* clear ONLCR flag (which appends a CR for every LF) */
uart_config.c_oflag &= ~ONLCR;
/* no parity, one stop bit */
uart_config.c_cflag &= ~(CSTOPB | PARENB);
/* set baud rate */
if ((termios_state = cfsetispeed(&uart_config, speed)) < 0) {
warnx("ERR: %d (cfsetispeed)\n", termios_state);
return false;
}

if ((termios_state = cfsetospeed(&uart_config, speed)) < 0) {
warnx("ERR: %d (cfsetospeed)\n", termios_state);
return false;
}

if ((termios_state = tcsetattr(fd, TCSANOW, &uart_config)) < 0) {
warnx("ERR: %d (tcsetattr)\n", termios_state);
return false;
}

return true;
}

int rw_uart_main(int argc, char *argv[])
{
char data = '0';
char buffer[4] = "";

int uart_read = open("/dev/ttyS2", O_RDWR | O_NOCTTY);//打开串口设备

if (uart_read < 0) {
err(1, "failed to open port: %s", "/dev/ttyS2");
return -1;
}

if(false == set_uart_baudrate(uart_read,9600)){
printf("[YCM]set_uart_baudrate is failed\n");
return -1;
}
printf("[YCM]uart init is successful\n");

while(true){
read(uart_read,&data,1);
if(data == 'R'){
for(int i = 0;i <4;++i){
read(uart_read,&data,1);//读取串口数据
buffer[i] = data;
data = '0';
}
printf("%s\n",buffer);
}
}

return 0;
}

  

编译并刷固件
make clean
make px4fmu-v2_default
make up

查看app
在NSH终端中输入help,在Builtin Apps中出现rw_uart应用。
运行rw_uart应用(前提是模块与Pixhawk连接好)
在NSH终端中输入rw_uart,回车,查看串口数据的打印数据(TELEM2接口的USART2)。
以上就是简单的PIX里面的应用程序。可以从串口读取到数据到内部,可以看到避开了复杂的单片机配置过程,还是很方便的。

3、可以在启动文件中 系统启动的时候就开始运行读取串口的数据

/src/ROMFS/init.d/rc_mc_app下添加子启动


//mcu_avoid start /dev/ttyS6

//laser_gun start /dev/ttyS3

//laser_gun_shoot start /dev/ttyS3



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pixhawk串口读取传感器数据 的相关文章

  • Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍

    一 开篇 很久没更新blog了 xff0c 最近研究的东西比较杂乱 xff0c 也整理了很多东西 xff0c 没有来的及更新 xff0c 最近发现很多小伙伴都开始写blog了 xff0c 在不更新就要 被落后了 兄弟们 xff0c 等等我啊
  • 【Pixhawk】Ubuntu下编译原生固件PX4

    环境 xff1a 编译主机 xff1a Ubuntu 20 0 4 xff08 官方推荐18 0 4 xff09 源码版本 xff1a PX4 1 12 0 xff08 目前最新 xff0c 截至2021 7 22 xff09 建议 尽量以
  • pixhawk使用WiFi模块

    pixhawk使用WiFi 前期准备刷固件安装刷固件软件进入刷固件模式下载固件刷固件 使用接线飞控参数更改使用方法 在使用pixhawk的时候有时候在无人机上不方便搭载处理器 xff0c 这个时候进行外部控制 或者QGC有线方式连接无人机不
  • PIXHAWK飞行模式

    PIXHAWK飞行模式 从mission planner中设置pixhawk的飞行模式时 xff0c 一共给出了多种飞行模式 xff0c 分别为 xff1a MANUAL STABILIZED ACRO RATTITUDE ALTCTL P
  • pixhawk配置垂直起降无人机

    我使用的版本里面没有找到 43 型尾座式垂直起降无人机 就先用x型无人机了 查看代码 发现在init d目录下id号为13003 待续
  • Pixhawk无人机飞行模式详解 (PX4源码)

    我帮大家把飞行模式控制量与特点总结一下 xff0c 方便看代码 xff0c 如下所示 xff1a 辅助模式 Position Mode 位置模式 xff08 定点模式 xff09 横滚俯仰控制角度 xff0c 油门控制上下速度 xff0c
  • pixhawk似乎也是用的四环串级

    pixhawk似乎也是用的四环串级 https blog csdn net sinat 16643223 article details 106973618 阿木社区的pixhawk的课里 https bbs amovlab com plu
  • 自己组装pixhawk的一些感受

    现在你叫我设置遥控器我会了 xff0c 我也清楚电调怎么接线的了 xff0c 也清楚怎么供电的了 xff0c 其实飞控的接线就四个电调的接线 xff0c 加上接收机的接线其他都是一些传感器的接线罢了 xff0c 我现在回过头看无名的无人机就
  • Pixhawk无人机教程-8.1 在Mission Planner中下载与分析日志(转载)

    摘自 xff1a https www ncnynl com archives 201608 491 html Pixhawk无人机教程 8 1 在Mission Planner中下载与分析日志 闪存日志 目录 闪存日志日志类型 闪存 VS
  • Pixhawk学习1——CMakeList.txt的解析

    在PX4的工程文件中 xff0c src modules下是具体的飞控代码 里面主要包含了传感器采集 姿态结算 姿态控制 xff0c 位置结算 位置控制等程序模块 在进行二次开发时 xff0c 需要添加的模块也是在这个文件夹里 每个文件夹里
  • Pixhawk学习7——位置解算

    Pixhawk的位置解算分为两部分 xff0c 第一部分主要为传感器的数据获取 xff0c 而该部分最主要的就是GPS数据的提取 第二部分为与惯性器件之间的组合导航 组合导航的好处我就不用多说了 Pixhawk代码中目前主要有两处组合导航的
  • pixhawk commander.cpp的飞行模式切换解读

    commander cpp逻辑性太强了 xff0c 涉及整个系统的运作 xff0c 所以分别拆分成小块看 另此篇blog大部分是参考 xff08 Pixhawk原生固件解读 xff09 飞行模式 xff0c 控制模式的思路 xff0c 笔者
  • Pixhawk之姿态控制篇

    一 开篇 姿态控制篇终于来了 来了 来了 心情爽不爽 xff1f 愉悦不愉悦 xff1f 开心不开心 xff1f 喜欢的话就请我吃顿饭吧 xff0c 哈哈 其实这篇blog一周前就应该写的 xff0c 可惜被上一篇blog霸占了 但是也不算
  • pixhawk make文件分析

    由于笔者没学过Linux等系统 xff0c 对make文件所知甚少 xff0c 本节分析可能有大量错误 xff0c 只提供参考 xff0c 随着技术积累 xff0c 以后会回过头改正错误的地方 xff0c 也非常欢迎提出指导意见 其中分析大
  • pixhawk position_estimator_inav.cpp思路整理及数据流

    写在前面 xff1a 这篇blog主要参考pixhawk的高度解算算法解读 xff0c 并且加以扩展 xff0c 扩展到其他传感器 xff0c 其实里面处理好多只是记录了流程 xff0c 至于里面实际物理意义并不是很清楚 xff0c 也希望
  • pixhawk: px4代码初学分析:追溯电机控制--pwm输出

    追溯电机控制 pwm输出 正常工作状态下pwm输出过程简述 xff1a 其他状态下pwm输出 xff1a 正常工作状态下pwm输出过程简述 xff1a 姿态解算部分得出姿态控制量通过px4io cpp把姿态控制量发送给IOIO串口读取姿态控
  • win7下 pixhawk (ardupilot) 的编译

    前几天都在搞pixhawk源码编译问题 xff0c 什么在window下用Console或者eclipse xff0c 还是在Ubuntu下 xff0c 都做了 xff0c 而且把 mk文件都看了 xff0c 结果还是有bug 总结一下三种
  • 步骤五:PIXHAWK遥控器的使用

    采用福斯i6s遥控 1 连接飞控 打开遥控器 xff0c 接收机插上飞控 xff0c 再插上送的短接线 xff0c 进行匹配对码RX 2 遥控器长按两秒锁 xff0c system output mode Output mode按照图片这样
  • 树莓派3B使用mavlink串口连接PIXHAWK_V5

    参考网址 xff1a http ardupilot org dev docs raspberry pi via mavlink html https dev px4 io en robotics dronekit html https do
  • mission planner SITL仿真系统配置

    背景 主要参考ArduPilot的官网 作者还拥有个人公众号 会写一些感悟文章 知圈 二维码如下 欢迎扫描关注 关注后有作者微信 欢迎添加交流 链路图 图源 Cygwin 下载 去官网下载Cygwin 作者电脑windows 10 64位

随机推荐

  • STM32寄存器的简介、地址查找,与直接操作寄存器

    什么是寄存器 提到单片机 xff0c 就不得不提到寄存器 根据百度百科介绍 xff0c 寄存器是中央处理器内的组成部分 寄存器是有限存贮容量的高速存贮部件 xff0c 它们可用来暂存指令 数据和地址 简单来说 xff0c 寄存器就是存放东西
  • 卡尔曼滤波五个公式推导

    一 两个方程 1 xff0c 系统的状态方程 xff08 预测方程 xff09 x k 61 A k
  • 实时操作系统RTOS(一)——资源整理

    文章目录 1 COS2 FreeRTOS3 NuttX参考资料 1 COS Micrium官网 C全家桶的githubMicrium书籍 xff08 C OS III C OS II C TCP IP C USB xff09 Micrium
  • 路由器设置之后不能连网,动态ip显示为0

    刚从学习毕业 xff0c 那么独居的日子里 xff0c 网络自然是不可或缺的 xff0c 于是博主在等到安装人员上门之后 xff0c 他竟然提出无耻的要求 配置路由器要收费 xff0c 于是乎作为一名计算机从业者 xff0c 自然不能让他把
  • 链表的倒序

    1 用函数实现 xff1a 定义3个临时变量 xff0c p1储存当前节点 xff0c p2储存后一个节点 xff0c p3储存重新指向的那个节点 步骤 xff1a 1 p1指向当前节点 xff0c p2指向后一个节点 xff0c 将p2的
  • Python入门:使用PyCharm调试Python程序

    Python入门 xff1a 使用PyCharm调试Python程序 面向Python初学者 PyCharm集成运行环境 在了解Python编程之前 xff0c 我们需要先弄明白如何编写运行代码 所以非常有必要先讲解一下Python的集成开
  • Debian9.5安装g++

    看了网上很多文章 gcc安装很轻松 xff0c 但是g 43 43 的安装过程就曲折多了 写此博客记录一下Debian9 5操作系统下g 43 43 安装过程 首先替换apt源为阿里云的源 xff1a debian 配置 debian 7
  • CMakeLists.txt文件中添加OpenCV库依赖项

    CMakeLists txt文件中添加OpenCV库依赖项 cmake needs this line cmake minimum required VERSION 2 8 Define project name project openc
  • 物理地址和逻辑地址

    1 物理地址和逻辑地址 物理地址 xff1a 加载到内存地址寄存器中的地址 xff0c 内存单元的真正地址 在前端总线上传输的内存地址都是物理内存地址 xff0c 编号从0开始一直到可用物理内存的最高端 这些数字被北桥 Nortbridge
  • 树莓派无opencv时进行视频实时处理

    用树莓派 xff0c 想要进行图像处理 xff0c 但网上的很多教程都用opencv xff0c opencv在树莓派上安装很麻烦 xff0c 那怎样进行图像处理呢 xff1f 代码如下 xff1a from picamera array
  • make: warning: Clock skew detected. Your build may be incomplete.

    问题现象 xff1a make warning Clock skew detected Your build may be incomplete 问题分析 xff1a 根据报警提示 xff0c 应该问题出现时钟问题 问题原因 xff1a 当
  • 关于Java之IO流音乐拼接小项目

    需求 xff1a 做一个音乐串烧 分析 xff1a 1 有n个音乐 xff0c 找到高潮部分 xff0c 2 获取高潮部分的流对象 3 把这部分对象保存成一个mp3 4 把它们拼接起来 以下为源码供大家分享 xff1a 方法一 xff1a
  • pixhawk源码下载与编译

    今天和同学在一起讨论发现自己还在看的pixhawk源码的版本好低啊 xff0c 就下个最新的吧 想起有些人还不会下载源码 xff0c 以及用什么工具查看 源码的下载我用的是git shell工具下的 xff0c px4的github网址是h
  • pixhawk开发环境

    Windows 7 64bit 软件安装 首先 xff0c 需要安装一些软件 xff0c CMake 32位的Java jdk以及PX4 Toolchain Installer CMake的话笔者使用的是CMake 3 3 2 win32
  • Pixhawk-信息流浅解析

    根深方能叶茂 在等待的日子里 xff0c 刻苦读书 xff0c 谦卑做人 xff0c 养得深根 xff0c 日后才能枝叶茂盛 Better 根爷 之前我们已经谈到系统框架 xff0c 之前谈到了定制自己功能的两部 xff1a 添加模块和修改
  • Python跨进程共享数据/对象

    1 跨进程共享方式 在multiprocess库中 xff0c 跨进程对象共享有三种方式 xff1a xff08 1 xff09 第一种仅适用于原生机器类型 xff0c 即python ctypes当中的类型 xff0c 这种在mp库的文档
  • Pixhawk-姿态解算-互补滤波

    根深方能叶茂 在等待的日子里 xff0c 刻苦读书 xff0c 谦卑做人 xff0c 养得深根 xff0c 日后才能枝叶茂盛 Better 根爷 终于说到了正题 xff0c 姿态解算这一部分很重要 xff0c 主要的基础就是惯性导航和多传感
  • Pixhawk-姿态解算源码注释

    根深方能叶茂 在等待的日子里 xff0c 刻苦读书 xff0c 谦卑做人 xff0c 养得深根 xff0c 日后才能枝叶茂盛 Better 根爷 这一部分是我在看源码时 xff0c 自己注释的一点笔记 xff0c 现在直接贴上来 当然这其中
  • Pixhawk-串级pid介绍

    根深方能叶茂 在等待的日子里 xff0c 刻苦读书 xff0c 谦卑做人 xff0c 养得深根 xff0c 日后才能枝叶茂盛 Better 根爷 鉴于串级PID在pixhawk系统中的重要性 xff0c 无论是误差的补偿 xff0c 如姿态
  • pixhawk串口读取传感器数据

    1 Pixhawk板上串口说明 xff1a 测试 使用Pixhawk板上TELEM2接口的USART2 xff0c 对应的Nuttx UART设备文件尾 dev ttyS2 xff1a 2 读取数据测试 步骤 xff1a 在Firmware