查看: 555|回复: 4

[原创] 【Up-Board试用】Ubuntu外设篇:二、SPI+ADC做的PM2.5检测仪

[复制链接]

10

主题

5

好友

1259

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    无聊
    前天 09:31
  • 签到天数: 295 天

    连续签到: 4 天

    [LV.8]以坛为家I

    发表于 2016-12-27 18:31:28 |显示全部楼层
    本帖最后由 踏平幼稚园 于 2016-12-28 09:39 编辑

    前言
        该贴主要包括spi和adc使用,mraa库填坑经历,demo代码

    模块简介
        pm2.5模块:型号GP2Y1010AU0F,通过adc采样获取电压,进而计算pm2.5
        oled模块:0.96寸oled,驱动ic为ssd1306。采用spi方式传输数据,图形库移植的u8glib

    编译运行
        1、使用mraa最新release版本编译pm2.5代码,运行
            make
            sudo ./pm25
       
        2、运行发现up board的adc根本读不到数据。
             adc_err1.png

        3、查了下系统日志发现,libmraa报错:adc通道超过最大限制。额。。。我用的0啊喂!!!还有更小的吗?难道还要我用负数?肯定不是啊,由此推断mraa库有问题

    mraa库填坑
        一、git clone下载mraa代码,切换到v1.5.1查看代码发现up.c文件里压根就没有定义aio_count,根本就没有adc能读出来才怪
            git clone git@github.com:intel-iot-devkit/mraa.git

        二、 checkout到master下,发现up.c里已经定义aio_count了。恩,看来最新库是支持adc的,果断升级安装
            1、卸载最新v1.5.1版本mraa
                sudo apt-get install libmraa1 libmraa-dev mraa-tools python-mraa python3-mraa

            2、安装mraa编译依赖
                sudo apt-get install git build-essential swig3.0 python-dev nodejs-dev cmake libjson-c-dev

            3、 cd到mraa代码目录
                mkdir build
                cmake ..
                make
                sudo make install

            4、恩,安装最新mraa库总可以了吧,让我们试一下,重复第一步编译运行

            5、额。。。。还是读不出来,再看下系统日志。等会。。。pin28是什么鬼,adc采样不是pin7吗?
                 2016-12-27 15-25-56屏幕截图.png

            6、打开aio.c文件定位到看到106行,有pin的赋值
                 aio.png
             
            7、然后再看up.c里发现gpio_count等于28,所以pin=0+28。

        三、修改mraa库
            1、既然最新版本代码也有问题,那就只能自己动手丰衣足食了,改呗。本着最小代码改动,最小影响其他平台的原则,将aio.c文件106行代码改为以下内容,并在文件开头添加string.h头文件“#include <string.h>”。
    1. if(strncmp(board->platform_name, "UP", 2) == 0) pin = 7;
    2. else pin = aio + board->gpio_count;
    复制代码
    2、再次编译安装mraa
            
            3、然后再编译运行pm25
                 2016-12-27 18-23-48屏幕截图.png

            4、恩,这就对了

    演示视频
           pm25.gif


    总结:
        mraa库目前来看还不是足够稳定,如果遇到问题有找不到本身代码问题,不妨去看一下系统日志里的libmraa是不是有错误,如果有那就去库的代码里看一下是不是库本身的问题吧。。。

    代码(只有c的凑合吧) pm25.tar.gz (841.19 KB, 下载次数: 3)


    已有 1 人评分铜板 收起 理由
    loveeeboard + 50 + 30 好教程

    总评分: 铜板 + 50  + 30   查看全部评分

    回复

    使用道具 举报

    7

    主题

    0

    好友

    1241

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    无聊
    2017-6-27 15:43
  • 签到天数: 218 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-12-27 18:47:10 |显示全部楼层
    这个都有现成的代码直接用啊!赞!
    回复

    使用道具 举报

    22

    主题

    0

    好友

    1536

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2016-7-19 10:35
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2016-12-27 19:42:31 |显示全部楼层
    直接用GIT版本试试, UP是后起之秀,应该GIT会更新的
    回复

    使用道具 举报

    10

    主题

    5

    好友

    1259

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    无聊
    前天 09:31
  • 签到天数: 295 天

    连续签到: 4 天

    [LV.8]以坛为家I

    发表于 2016-12-27 20:20:19 |显示全部楼层
    netlhx 发表于 2016-12-27 19:42
    直接用GIT版本试试, UP是后起之秀,应该GIT会更新的

    改的就是github上的master分支代码.......
    回复

    使用道具 举报

    3

    主题

    1

    好友

    3765

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    昨天 23:28
  • 签到天数: 870 天

    连续签到: 4 天

    [LV.10]以坛为家III

    发表于 2016-12-27 23:28:08 |显示全部楼层
    写的好,很有价值。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-9-24 00:26 , Processed in 0.153406 second(s), 16 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部