查看: 4992|回复: 4

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

[复制链接]
  • TA的每日心情
    开心
    2022-6-16 19:35
  • 签到天数: 649 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 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, 下载次数: 30)

    评分

    参与人数 1与非币 +50 +30 收起 理由
    loveeeboard + 50 + 30 好教程

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-8-27 21:30
  • 签到天数: 219 天

    连续签到: 1 天

    [LV.7]常住居民III

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

    使用道具 举报

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

    连续签到: 1 天

    [LV.3]偶尔看看II

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

    使用道具 举报

  • TA的每日心情
    开心
    2022-6-16 19:35
  • 签到天数: 649 天

    连续签到: 1 天

    [LV.9]以坛为家II

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

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

    使用道具 举报

  • TA的每日心情

    2021-12-7 12:35
  • 签到天数: 1354 天

    连续签到: 1 天

    [LV.10]以坛为家III

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

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 04:54 , Processed in 0.152337 second(s), 24 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.