详见博客 : http://blog.csdn.net/freeape/article/details/47837415
Pixhawk—添加一个自定义传感器—超声波(串口方式)
说明
首先超声波模块是通过串口方式发送(Tx)出数据,使用的模块数据发送周期为100ms,数据格式为:
R0034 R0122 R0122 R0046 R0127 R0044 R0044 R0125 R0034 R0037 R0041 R0122 R0122 .....
则可以通过Pixhawk板上的串口来接收(Rx)数据,即将超声波的Tx接口连接到Pixhawk板上的Rx接口。
Pixhawk板上串口说明:
测试使用Pixhawk板上TELEM2接口的USART2,对应的Nuttx UART设备文件尾/dev/ttyS2
:
读取数据测试
步骤:
- 在
Firmware/src/modules
中添加一个新的文件夹,命名为rw_uart
- 在
rw_uart
文件夹中创建module.mk
文件,并输入以下内容:- MODULE_COMMAND = rw_uart
- SRCS = rw_uart.c
- 在
rw_uart
文件夹中创建rw_uart.c
文件 - 注册新添加的应用到NuttShell中。
Firmware/makefiles/nuttx/config_px4fmu-v2_default.mk
文件中添加如下内容:- MODULES += modules/rw_uart
rw_uart.c
1 |
|
编译并刷固件
- make clean
- make upload px4fmu-v2_default
查看app
- 在NSH终端中输入
help
,在Builtin Apps中出现rw_uart
应用。
- 在NSH终端中输入
- 运行rw_uart应用(前提是模块与Pixhawk连接好)
- 在NSH终端中输入
rw_uart
,回车,查看超声波的打印数据。
- 在NSH终端中输入
发布超声波的数据
在无人机运行时,首先是要将应用随系统启动时就启动起来的,且将获得的超声波数据不断的发布出去,从而让其他应用得以订阅使用。这里也使用Pixhawk里面的通用模式,即主线程,检测app命令输入,创建一个线程来不断的发布数据。
定义主题和发布主题
- 在
modules/rw_uart
文件夹下创建一个文件:rw_uart_sonar_topic.h
rw_uart_sonar_topic.h
1 |
|
rw_uart.c
1 |
|
测试发布的主题—订阅主题
测试可以随便一个启动的app中进行主题订阅,然后将订阅的数据打印出来,看是否是超声波的数据。这里测试是在固件的src/examples
文件夹中的px4_simple_app
应用进行测试的。
- 将
px4_simple_app
应用添加到NuttShell中。Firmware/makefiles/nuttx/config_px4fmu-v2_default.mk
文件中添加如下内容:- MODULES += examples/px4_simple_app
- 在
px4_simple_app.c
中代码内容:
1 |
|
编译并刷固件
- make upload px4fmu-v2_default
在NSH中测试(已加入自启动脚本中)
- rw_uart start /dev/ttyS2
- px4_simple_app
加入系统启动脚本
可以加入到光流的自定义启动脚本中:/fs/microsd/etc/extras.txt
。这样随着系统的自启动,rw_uart
就会默认启动了。
1 | # start sonar |