Vincent_Wang-30 发表于 2017-12-30 21:40:39

基于LabVIEW的树莓派数据采集(DAQ)和简易示波器

本帖最后由 ky123 于 2018-1-31 14:08 编辑

首先十分感谢e络盟提供的比赛赞助基金。

一、项目名称:
      基于LabVIEW的树莓派数据采集系统(DAQ)

1.原理介绍和搭建环境教程
由于树莓派本省没有AI和AO,手上正好有一块ST的Nucleo F103,所以利用STM32F103的AI做了数据采集的前端,通过SMT32的SPI接口和树莓派的SPI接口相连,采集到的数据不做处理直接送到树莓派。这里STM32F103作为SPI的Slave端,树莓派作为Master端。STM32F103利用mbed现成的SPI Slave程序修改一下即可,这里偷懒了!树莓派部分利用MarkerHub的LINX工具搭建了可以运行在树莓派上的LabVIEW程序。程序比较简单,利用SPI读取到的AI数据利用LabVIEW的chart显示出来。但是在搭建环境这一块比较坎坷,下面一步一步给大家介绍搭建的步骤:
第一步:安装树莓派操作系统 Raspbian。可以利用先下载image文件在利用 Win32 Disk Imager写入SD卡安装,也可以先安装NOOBS,然后在线安装Raspbian,建议用Win32 Disk Imager安装,感觉快一些。不要在线安装比较慢,系统iamge文件下载地址:https://www.raspberrypi.org/downloads/raspbian/
第二步:安装LabVIEW和LINX。
首先安装LabVIEW,建议安装LabVIEW2014以上版本会自带VI Package Manager,这样就可以在VIPM中搜素LINX直接安装了。
安装完LINX后,就可以用网线连接树莓派安装开发环境了。
第二步:在树莓派上安装LINX环境,由于LabVIEW使用的G语言,不能直接在嵌入式系统中开发和运行,之前NI有一个vi转换成C的工具包,然后利用keil把C代码编译成hex或bin下载到MCU中,但是目前这个工具包不在更新了,目前主要利用LINX在嵌入式系统中需要安装一个runtime来运行你的LabVIEW代码,具体的细节可以参考LINX的说明文档:
https://www.labviewmakerhub.com/ ... misc:linx-internals
下面介绍怎样在你的树莓派上安装LabVIEW的运行环境LINX:
       a)、打开LabVIEW->Tool->MakerHub->LINX->LINX Target Configuration            
       b)、在打开的界面中的Hostname or IP中输入raspberrypi,我是直接用SSH或直接接显示器设定IP地址,我尝试了用raspberry访问但是每次都失败,可能是域名解析的问题,建议直接用IP地址访问。在Username中输入pi,在Password中输入raspberry,然后点击connect,然后就可以连上了。右下角会显示树莓派的logo和IP地址,然后点击Install Software按钮,开始安装LINX的树莓派端的LabVIEW的运行环境。安装前需要让你的树莓派利用WiFi联网,需要从网络下载LINX运行环境都树莓派。
      c)、安装后应该可以运行了,但是我发现总是来LabVIEW中总是链接失败,经过艰难的探索发现LINX原来是支持raspberry和BBB( Beaglebone Black),在安装后动态库文件需要指定依赖关系,需要用SSH在树莓派下运行一下指令:
cd /srv/chroot/labview
sudo schroot --run-session -c lv
这样你就进入了LINX在树莓派的运行环境,然后运行
cd /usr/lib
ls liblinx*
这里应该可以看到liblinxdevice_rpi2.so 和 liblinxdevice_bbb.so 这两个文件就是分别对应树莓派和BBB,下面把文件指定为LINX Device,运行
ln -s ./liblinxdevice_rpi2.so ./liblinxdevice.so.
然后就可以用LabVIEW顺利连接上你的树莓派开始开发你的程序了。
2.系统版本
Raspbian Stretch with desktopNovember 2017版
3.应用源代码(根据自身项目实际情况填写,以文档txt的形式);
STM32F103部分读取AI,通过SPI接口把数据送给树莓派。/* Example of Reading all the ADC pins available on the Nucleo_F103RB.

By Joseph Ellsworth CTO of A2WH
Take a look at A2WH.com Producing Water from Air using Solar Energy
March-2016 License: https://developer.mbed.org/handbook/MIT-Licence
*/

#include "mbed.h"

// Host PC Communication channels
Serial pc(USBTX, USBRX, 115200); // tx, rx



AnalogIn   pa0(PA_0); //Analog input channel 1
AnalogIn   pb0(PB_0); //Analog input channel 2


DigitalOut myled(LED1);
//SPISlave device(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS);
SPISlave device(PA_7, PA_6, PA_5, PA_4);//spi_mosi=pa_7,spi_miso=pa6,spi_clk=pa5,spi_cs=pa4
const float voltMeterARef = 3.0;

float readPrint(AnalogIn ain, char *label) {
float tval = ain.read();
float volts = tval * voltMeterARef;
float perc = tval * 100.0;
unsigned shorttvalu16 = ain.read_u16 ();

printf("adc %s R=%3.3f V=%3.3fVU16=%u\r\n",label, tval, volts, tvalu16);

return tval;
}
   

int main() {
device.reply(0xAA);
    while(1) {
      myled = !myled; // toggle led
      
      readPrint(pa0, "PA_0");
      
      readPrint(pb0, "PB_0");
      
      printf("\r\n\r\n");// print the analog data to log by uart port
      if(device.receive())//setup the raspberry to read analog data
          {
            int v=device.read();
            device.reply(v);}//send the analog data to raspberry by spi bus
          }
}

            

LabVIEW部分代码由于是G语言,以附件形式上传。

caifei9280 发表于 2020-12-16 14:25:52

LabVIEW还是挺好用的 ,就玩下还是不错,做项目的话显得不够专业。

txrsky 发表于 2020-8-13 15:14:31

为什么附件下载不了。。

songjzhong 发表于 2020-6-1 09:49:19

不知道现在支持4B不?

songjzhong 发表于 2020-6-1 09:49:19

非常有用。以后多关注哈

joe19960715 发表于 2020-1-7 15:28:53

:D请问支持树莓派3b+吗

涛哥一号 发表于 2020-1-3 14:45:19

支持不支持树莓派3b+呢

涛哥一号 发表于 2020-1-3 14:39:06

支持不支持树莓派3B+?

Vincent_Wang-30 发表于 2018-1-9 09:58:58

看来做LabVIEW的比较少:'(
页: [1]
查看完整版本: 基于LabVIEW的树莓派数据采集(DAQ)和简易示波器

Baidu
map