亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

传感器数据与 Raspberry Pi 微处理器的集成

摘要


要在集成机器人系统上实现各种传感器,需要能够输入数字化传感器数据并在控制回路中使用这些数据的编程环境和有效的通信方法。

关键词:I2C 通信,UART 通信,Adafruit Ultimate GP Breakout,Sparkfun MPU-9150 Breakout,Raspberry Pi 设置


简介


传感器数据采集与关联是数字控制系统的关键部分。由于采用嵌入式数字控制器来处理所有传感器数据输入,使这些数据在微处理器上可读和可用的通信接口是编程级别的首要任务。对于团队项目,自主
导航系统需要对 GPS 位置进行持续跟踪,并对航向角进行一致的测量。因此,该小组决定使用 GPS 模块来感测机器人的当前位置(纬度和经度),并使用磁力计来测量路线。两个模块获取的数据都可以在远程用户界面上查看,也可以在控制软件中使用。

目标

这是一个高级教程,假设用户知道 Raspbian 操作系统中的一些基本操作,例如,在命令行中的 bash 命令中使用 Unix 终端安装库或创建脚本文件。本应用笔记的目的是指导用户使用树莓派从不同的通信接口实时读取加速度计数据和 GPS 数据的方法。除了命令行说明,本教程还介绍了将传感器连接到 Pi 的详细信息以及传感器的硬件配置。

信息

硬件
○ Sparkfun 9 自由度突围 MPU9150

用于该项目的惯性测量传感器是带有 sparkfun 设计的分线板的 Invensense MPU-9150。 MPU-9150 是一个多芯片模块,由集成在单个封装中的两个管芯组成。一个芯片是带有 3 轴陀螺仪和 3 轴加速度计的 MPU-6050。另一个芯片装有来自 Asahi Kasei Microdevices Corporation 的 AK8975 3 轴数字罗盘/磁力计。该芯片专为低功耗、低成本和高性能而设计,目前在包括智能手机和平板电脑在内的许多地方使用。

Adafruit Ultimate GPS Breakout

突破是围绕第三代基于 MTK3339 的模块构建的,该模块具有外部天线支持和每秒脉冲输出。它具有 10 Hz 的更新率,可以在 66 个频道上跟踪多达 22 颗卫星。该 gps 模块专为提供低功率输入 (3.3 – 5V) 的嵌入式系统而构建,ENABLE 引脚可用于使用任何微控制器引脚关闭模块。还有一个微小的红色 LED,能够指示信号状态。 LED 在搜索卫星时以 1 Hz 的频率闪烁,并在找到定位点后每
15 秒闪烁一次。当周围没有建筑物时,该 GPS 仅适用于空旷的场地。每当它获得一个 FIX 信号时,它就会以用户
定义的频率更新航向、经度、纬度和高度数据。

通信标准


○ I2C 通信
I2C 代表内部集成电路总线。 I2C 使用微控制器作为主机,并通过单端计算机总线连接具有唯一地址的多个从机。它仅使用两条双向开漏线:串行数据线 (SDA) 和串行时钟 (SCL)。 SDA 在SCL 为低时设置传输位,当SCL 为高时接收数据。
○ UART 通信
UART 代表通用异步接收器/发送器。它从写入/存储到寄存器的数据字节(5-8 位)串行发送/接收数据。所有数据都将以程序员预定义的特定波特率读取。 UART 传输需要三种信号类型:发送数据 (TxD)、接收数据 (RxD) 和信号接地 (SG)。由于这种传输不是双向的,因此需要两条独立的接收和传输线。

零件清单
要在树莓派上进行硬件设置和编程,需要以下部件

● 树莓派
● 电源
● Wifi 加密狗
● Sparkfun MPU9150 陀螺仪和加速度计
● Adafruit Ultimate GPS Breakout
● USB 转 TTL 适配器电缆(可选)
● 面包板
● MF 跳线
假设
在开始本教程之前,需要做几个假设。由于本应用笔记将只关注整个项目的特定方面,因此这里将忽略开箱即用的 Raspberry Pi 和无线网络设置的基本设置过程。以下是本应用笔记基于的一些基本假设:
● 有效的互联网访问
● 已安装 Raspian 操作系统并且 Pi 的启动行为已设置为桌面模式
● a鼠标和键盘连接到树莓派的usb端口,显示器通过HDMI适配器连接以保证图形显示。

程序:

  1. 了解用于串行通信的 Raspberry Pi GPIO 配置。本教程后面部分使用的串行引脚是用于 UART 的 GPIO 14&15 和用于 I2C 的 GPIO 2&3。
  1. 将 Adafruit GPS 连接到 Raspberry Pi
    在您的 adafruit gps 模块上找到 Tx/Rx、Vin 和 gnd 引脚。将其 Tx 和 Rx 引脚交叉连接到 Raspberry Pi 上的 Rx 和 Tx 引脚。然后从 Pi 向 Vin 引脚提供 5V 或 3.3V 电压,并将 GND 引脚与 Pi 的地短路。
  1. 将 MPU9150 连接到 Raspberry Pi
    将 MPU9150 分线器的顶部四个引脚连接到 Raspberry Pi。将 GPIO 2 连接到 SDA(数据线),将 GPIO 3 连接到 SCL(时钟线)。从 Pi 向加速度计的 Vcc 引脚提供 3.3V 电压,并将 GND 引脚短接到地。
  1. 准备 Pi 以进行 I2C 通信
    a。在 Raspberry Pi 中打开一个终端并输入以下 bash 命令:
    sudo apt-get update
    sudo apt-get install i2c-tools libi2c-dev
    b。 WiringPi 是一个非常强大的 C++ 库,专为 RasPi 设计,包括用于 PI 的各种 GPIO 工具。要安装 WiringPi,请输入以下命令:
    git clone git://git.drogon.net/wiringPi
    cd WiringPi
    sudo nano /etc/modules
    c。将以下三行添加到文件 (/etc/modules) 的底部,如果它们已经不存在
    snd-bcm2835
    i2c-bcm2708
    i2c-dev
    d .接下来,修改启动参数以在启动时打开 i2c。输入 bash 命令:
    sudo nano /boot/config.txt
    e。将以下行添加到此文件的底部:
    dtparam=i2c1=on
    dtparam=i2c_arm=on
    f。重启你的树莓派
  2. 安装和运行 MPU-6050-Pi-Demo 软件
    a。在终端窗口中输入以下 bash 命令:
    git clone git://github.com/richardghirst/
    PiBits.git
    cd PiBits/MPU6050-Pi-Demo
    sudo apt-get install libgtkmm-3.0-dev
    b.必须编辑一些源文件才能与 Pi 一起使用。我们需要修改 I2Cdev.cpp 和 setup-i2c.sh 文件。使用bash
    命令“nano”编辑文件。
    c。将所有对“/dev/i2c-0”的引用更改为在此文件中读取“/dev/i2c-1”并保存。
    d。输入以下 bash 命令来编译源代码:
    make
    ./setup-i2c.sh
    e。等待源代码编译完成,然后输入以下 bash 命令:
    sudo i2cdetect -y 1
    f。您应该会看到以下输出

G。现在通过键入以下 bash 命令来执行此文件夹中的示例程序“demo_raw”:
./demo_raw
h。此演示将在终端中显示原始陀螺仪和加速度值
a/g:Ax Ay Az Gx Gy Gz

  1. 为了从 Adafruit GPS 模块中获取数据,Adafruit 有自己的自主开发的软件,名为 GPS Daemon (gpsd)。该教程可通过以下链接获得:https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi
  2. 由于 gpsd 不是开源软件,所以最好使用第三方软件,允许用户修改和创建自己的文件以从 gps 中读取。 “libgps”是一个开源 gps 库,主要用于 Raspberry ARM 板,并通过 Adafruit Ultimate GPS Breakout 进行了测试。我们正在我们的项目中使用这个库。
  3. 安装和编译 libgps 包。
    a。要安装 libgps,请键入以下命令:
    git clone git://github.com/wdalmut/libgps.git
    cd libgps
    b。定向到 libgps 文件夹后,通过键入以下命令构建文件以获取 libgps.a:
    make
    sudo make install
  4. 您可以在名为“position_logger.c”的示例文件夹中找到示例代码来测试连接
    a。用
    gcc -o position_logger position_logger.c -lgps
    -lm
    b 编译它。使用
    $ ./position_logger
    c 运行它。当有有效的 gps 信号时(修复 LED 没有以 1 Hz 闪烁),
    您应该直接在控制台中看到纬度和经度的十进制度数
    ,如下所示:
    45.071060 7.646363
    45.071082 7.646385
    45.071078 7.646387
    45.071060 7.646373
    45.071048 7.646358
    45.071052 7.646372
    45.071057 7.646392
    45.071062 7.646397
    45.071062 7.646383
    45.071073 7.646395
    45.071082 7.646403
    结论
    本应用笔记以两个传感器为例,从第一步开始指导用户如何设置传感器和树莓派之间的串行通信。它还简要说明了编辑、编译和运行文件的命令行方法。然而,将这些传感器数据写入算法需要付出更多的努力,而不仅仅是查看它们。最终目标,或者换句话说,本应用笔记的更高级派生应该是从单个
    脚本文件中处理不同的传感器库。这需要更深入地了解每个传感器软件包背后的编码原则。
    参考:
  5. 凯文汤森。 Raspberry Pi 上的 Adafruit Ultimate GPS,2014 年 7 月 15 日。
    Web。 https://learn.adafruit.com/downloads/pdf/adafruit-ultimate-gps-on-theraspberry-pi.pdf
  6. 沃尔特·达尔·穆特。用于 Raspberry Pi 的 UART NMEA GPS 库。 2014 年 9 月 8 日。
    网络。 https://github.com/wdalmut/libgps
  7. InvenSense。 MPU-9150 数据表,2013 年 9 月 18 日。Web。 http://
    www.invensense.com/mems/gyro/documents/PS-MPU-9150A-00v4_3.pdf

来源:传感器数据与树莓派微处理器的集成


制造工艺

  1. 使用 1 线 DS18B20 传感器和 Raspberry Pi 测量温度
  2. Raspberry Pi 上的温度监控
  3. 使用 Raspberry Pi 监测温度
  4. 使用 Raspberry Pi 的运动传感器
  5. Raspberry Pi 土壤湿度传感器
  6. 使用树莓派进行平移/倾斜面部跟踪
  7. 如何将 Lego Mindstorms NXT 超声波传感器连接到 Raspberry Pi
  8. 树莓派上的 HC-SR04 超声波距离传感器
  9. 使用 Raspberry Pi、DHT11 传感器和 Thingspeak 构建您的第一个物联网。
  10. 带有 Raspberry Pi 和湿度传感器的 Aeroponics
  11. Raspberry Pi 温度传感器
  12. 带有 PIR 运动传感器的 Raspberry Pi GPIO:最佳教程