头像-61188

cztqwan闲看庭前花开花落,漫卷天上云卷云舒。

  • 湖北省武汉市
  • 单片机 嵌入式 DSP
  • 科研教育

个人成就

获得 1 次赞

帮助过4人

附件

一、简介 在上一讲中,已经可以读出mpu6050的加速度传感器和角速度传感器的原始数据。不过对于很多时候这些原始数据并不是那么的有用,特别是对于搞四轴,需要的是姿态数据,也就是欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。要得到欧拉角数据,就得利用原始数据,进行姿态融合解算,不过这个过程比较复杂。而mpu6050自带了数字运动处理器,即dmp,并且,invensense提供了一个mpu6050的嵌入式运动驱动库,结合 mpu6050的dmp,可以将原始数据,直接转换成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到yaw、roll和 pitch。。这一讲将介绍如何使用内置的dmp进行姿态解算。 二、硬件电路 硬件电路和上一讲是一样的,这里就不再多说了。 三、软件工具 选用不同的上位机要使用不同的协议,关于协议这里不进行深入讲解。这里将用到匿名四轴上位机,要了解协议的可以上网查找,或者打开软甲后按下f12键,可以看到基本的介绍。 要使用dmp进行姿态解算,还需要dmp固件库,固件库中包含以下文件: 四、软件设计 打开上一讲的工程,把固件库文件夹复制到工程目录下: 打开工程,添加固件库文件到工程中,添加路径: 在inv_mpu.c文件中更改头文件信息: 在inv_mpu_dmp_motion_driver.c文件中更改头文件信息: 接下来需要在inv_mpu.c中添加以下几个函数: 该函数用于dmp库的初始化,可以看到该函数中调用了许多函数来设置mpu6050,这些函数也要一一实现,对于这部分代码就不多说了,在原来的代码上稍作修改即可,可以查看源代码。 接下来实现取得欧拉角的函数: 该函数根据dmp输出的四元数转换为欧拉角,欧拉角就是最终需要的数据。 到这里,dmp库的移植就基本完成了,但有一个

  • 浏览量:2219
  • 下载量:216
  • 下载:0IC币
  • 上传者:cztqwan
  • 上传时间:2015-10-10

附件

一、简介 在上一讲中,已经可以读出mpu6050的加速度传感器和角速度传感器的原始数据。不过对于很多时候这些原始数据并不是那么的有用,特别是对于搞四轴,需要的是姿态数据,也就是欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。要得到欧拉角数据,就得利用原始数据,进行姿态融合解算,不过这个过程比较复杂。而mpu6050自带了数字运动处理器,即dmp,并且,invensense提供了一个mpu6050的嵌入式运动驱动库,结合 mpu6050的dmp,可以将原始数据,直接转换成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到yaw、roll和 pitch。。这一讲将介绍如何使用内置的dmp进行姿态解算。 二、硬件电路 硬件电路和上一讲是一样的,这里就不再多说了。 三、软件工具 选用不同的上位机要使用不同的协议,关于协议这里不进行深入讲解。这里将用到匿名四轴上位机,要了解协议的可以上网查找,或者打开软甲后按下f12键,可以看到基本的介绍。 要使用dmp进行姿态解算,还需要dmp固件库,固件库中包含以下文件: 四、软件设计 打开上一讲的工程,把固件库文件夹复制到工程目录下: 打开工程,添加固件库文件到工程中,添加路径: 在inv_mpu.c文件中更改头文件信息: 在inv_mpu_dmp_motion_driver.c文件中更改头文件信息: 接下来需要在inv_mpu.c中添加以下几个函数: 该函数用于dmp库的初始化,可以看到该函数中调用了许多函数来设置mpu6050,这些函数也要一一实现,对于这部分代码就不多说了,在原来的代码上稍作修改即可,可以查看源代码。 接下来实现取得欧拉角的函数: 该函数根据dmp输出的四元数转换为欧拉角,欧拉角就是最终需要的数据。 到这里,dmp库的移植就基本完成了,但有一个

  • 浏览量:2239
  • 下载量:208
  • 下载:0IC币
  • 上传者:cztqwan
  • 上传时间:2015-10-10

附件

一、简介 在上一讲中,已经可以读出mpu6050的加速度传感器和角速度传感器的原始数据。不过对于很多时候这些原始数据并不是那么的有用,特别是对于搞四轴,需要的是姿态数据,也就是欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。要得到欧拉角数据,就得利用原始数据,进行姿态融合解算,不过这个过程比较复杂。而mpu6050自带了数字运动处理器,即dmp,并且,invensense提供了一个mpu6050的嵌入式运动驱动库,结合 mpu6050的dmp,可以将原始数据,直接转换成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到yaw、roll和 pitch。。这一讲将介绍如何使用内置的dmp进行姿态解算。 二、硬件电路 硬件电路和上一讲是一样的,这里就不再多说了。 三、软件工具 选用不同的上位机要使用不同的协议,关于协议这里不进行深入讲解。这里将用到匿名四轴上位机,要了解协议的可以上网查找,或者打开软甲后按下f12键,可以看到基本的介绍。 要使用dmp进行姿态解算,还需要dmp固件库,固件库中包含以下文件: 四、软件设计 打开上一讲的工程,把固件库文件夹复制到工程目录下: 打开工程,添加固件库文件到工程中,添加路径: 在inv_mpu.c文件中更改头文件信息: 在inv_mpu_dmp_motion_driver.c文件中更改头文件信息: 接下来需要在inv_mpu.c中添加以下几个函数: 该函数用于dmp库的初始化,可以看到该函数中调用了许多函数来设置mpu6050,这些函数也要一一实现,对于这部分代码就不多说了,在原来的代码上稍作修改即可,可以查看源代码。 接下来实现取得欧拉角的函数: 该函数根据dmp输出的四元数转换为欧拉角,欧拉角就是最终需要的数据。 到这里,dmp库的移植就基本完成了,但有一个

  • 浏览量:2234
  • 下载量:224
  • 下载:0IC币
  • 上传者:cztqwan
  • 上传时间:2015-10-10

附件

一、简介 上一讲已经成功地在开发板上成功地运行了简单的gui程序,这一讲将通过gui控制开发板上的led-run、led-err、beep。关于led-run、led-err、beep的控制方法在前面第7讲已经介绍过了,这里就不多说了。这一讲主要讲解如何在gui的代码中添加控制硬件的代码。 二、gui的设计 由于需要控制led-run、lec-err和蜂鸣器,所以添加3个按钮来控制它们的开和关。 在终端输入:qtcreator来启动qt creator,然后新建一个工程,工程名为gui_led。 选择“forms”下的“mainwindows.ui”进入gui编辑器。 向其中添加3个按钮和4个标签,并且通过右下角的属性列表中更改标签和按钮上显示的字,更改完成后结果如下: 选中第一个按钮,然后右键,选择“go to slot...”,进入按钮按下事件函数: 在弹出的对话框中选中“clicked()”,然后点击“ok”: 这样就进入了按钮1的按下事件函数: 在该函数中添加以下代码: 同样用相同的放法在按钮2和按钮3的按下事件函数中添加该代码,只需要把pushbutton改成pushbutton_2、pushbutton_3。 到此,gui的设计部分就完成了,可以点击“”按钮,查看在桌面上运行的效果: 点击按钮后: 三、控制功能的实现 在main.cpp和mainwindow.cpp添加以下头文件: #include  #include  #include  #include  #include  #include  在主函数添加以下代码: int fd,ret;     fd = open("/sys/class/leds/led-err/trigger",o_rdwr);  

附件

上一讲已经能在虚拟机上的linux系统中编写程序,并且在目标平台上运行了,这一讲将通过编写c代码的方式让aworks平台的led闪烁和蜂鸣器响起。 在linux中,所有的外设都被当成文件来看待,所以led和蜂鸣器也不例外。 led和蜂鸣器的接口位于/sys/class/leds目录下: 其中beep为蜂鸣器的接口,led-err和led-run为aworks平台的主板上的两个可编程控制的led的接口。 这几个文件的作用如下: 要在c程序中操作led,首先需要设置trigger文件中的内容。然后修改brightness文件中的内容,设置led点亮或熄灭。对于蜂鸣器也是一样的。 在nfs共享文件目录下新建led-err目录,然后进入该目录,新建led-err.c文件: 打开编辑器,输入以下代码: 然后新建makefile文件,输入以下内容: 同样的原理,可以编写一个控制蜂鸣器发声的c程序。 在终端输入make,编译程序,暂时忽略这些警告。 将开发板用网线和串口线连接pc,打开串口终端,输入用户名和密码后,挂载nfs共享文件夹,然后就可以看到刚才写好的两个程序。 进入led-err文件夹,输入命令执行程序,可以看到开发板上led灯每隔1s钟闪烁一次。     同理,可以执行蜂鸣器的程序,按下ctrl+c可以退出程序。     源代码:                     

附件

上一讲已经能在虚拟机上的linux系统中编写程序,并且在目标平台上运行了,这一讲将通过编写c代码的方式让aworks平台的led闪烁和蜂鸣器响起。 在linux中,所有的外设都被当成文件来看待,所以led和蜂鸣器也不例外。 led和蜂鸣器的接口位于/sys/class/leds目录下: 其中beep为蜂鸣器的接口,led-err和led-run为aworks平台的主板上的两个可编程控制的led的接口。 这几个文件的作用如下: 要在c程序中操作led,首先需要设置trigger文件中的内容。然后修改brightness文件中的内容,设置led点亮或熄灭。对于蜂鸣器也是一样的。 在nfs共享文件目录下新建led-err目录,然后进入该目录,新建led-err.c文件: 打开编辑器,输入以下代码: 然后新建makefile文件,输入以下内容: 同样的原理,可以编写一个控制蜂鸣器发声的c程序。 在终端输入make,编译程序,暂时忽略这些警告。 将开发板用网线和串口线连接pc,打开串口终端,输入用户名和密码后,挂载nfs共享文件夹,然后就可以看到刚才写好的两个程序。 进入led-err文件夹,输入命令执行程序,可以看到开发板上led灯每隔1s钟闪烁一次。     同理,可以执行蜂鸣器的程序,按下ctrl+c可以退出程序。     源代码:                     

附件

一、简介 tft-lcd即薄膜晶体管液晶显示器。tft-lcd与无源tn-lcd、stn-lcd的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(tft),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。tft-lcd也被叫做真彩液晶显示器。 对于软件调试而言,最重要的交互方式有串口和lcd。对于lcd,s3c6410有自带的lcd驱动接口,但是我手头没有飞凌的lcd(飞凌的lcd还是挺贵的,学生党,唉~),恰好手头有一个spi接口的lcd(以前玩stm32剩下的),就想着使用s3c6410的io直接驱动该lcd。 本讲将以2.2寸的lcd(spi版)为例介绍,该lcd支持65k色显示,显示分辨率为320×240,接口为spi串行接口,不带触摸屏。在本讲中,将使用io口模拟spi通信,驱动lcd,今后有时间再研究硬件spi通信。 该模块如图所示: 该模块有如下一些信号线: cs:tft片选信号 reset:硬件复位tft dc/rs:命令/数据标志 sdi/mosi:spi主机写信号 sdo/miso:spi主机读信号 sck:时钟信号 led:背光控制 由于只是进行显示,所以只需要向液晶写入数据,固而只需要连接sdi/mosi,而把sdo/miso悬空。为了方便起见,直接把led背光控制连接到3.3v上(如果有需要也可以连接到io口上,使用pwm波控制背光),所以连接该模块只需要5个io口。 该lcd模块使用的驱动芯片为ili9341,下面介绍一下ili9341。 ili9341液晶控制器自带显存,在16位模式下,ili9341采用rgb565格式存储颜色数据。最低5位代表蓝色,中间6位为绿色,最高5位为红色。数值越大,表示该颜色越深。ili9341所有的指令都是8位的(高8位无效),且参数除了读写 gram 的时候是16位,其他操作参数,都是8位的。 关于ili9341的命令,这里就不做介绍了,有兴趣的可以查询ili9341的数据手册。 二、硬件设计 由于ok6410开发板上的摄像头接口有3.3v的电源接口,所以选择使用这