极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22189|回复: 6

外接传感器,便携式手机蓝牙传输装置

[复制链接]
发表于 2016-2-25 13:16:52 | 显示全部楼层 |阅读模式
本帖最后由 wesleyx825 于 2016-2-29 22:25 编辑

本项目主要基于Processing 3编写android 的app程序,在手机上显示蓝牙数据,并绘制出变化曲线图。在此实验中本人在arduino promini中提前刷入了程序,可以测量三类数据:环境温湿度值(数字引脚接入);光照强度、火焰强度等(双引脚配合10k电阻接入);酒精浓度、一氧化碳浓度、烟雾浓度等(模拟引脚、vcc、gnd)。数据收集以后通过HC-05 以115200的波特率传输到手机上,显示出变化曲线和测量数值。本人将该系统设计成为便携式装置,可以把它绑在手腕上,并设计了多种接口方便拔插使用。有基础的朋友可将其作为数据采集,手机图形化显示的一种简易方法。
优点:1、可以将其设计成为便携式装备,随时随地采集数据;
2、节省一块lcd屏,可以在手机屏幕上显示测量数值;
3、利用processing编程方式在手机app上对数据进行形象展示,显示出数值的变化情况,并可以根据需要随时修改;

背景资料介绍:
Processing是一种具有革命前瞻性的新兴计算机语言,它的概念是在电子艺术的环境下介绍程序语言,并将电子艺术的概念介绍给程序设计师。它是 Java 语言的延伸,并支持许多现有的 Java 语言架构,不过在语法 (syntax) 上简易许多,并具有许多贴心及人性化的设计。Processing 可以在 Windows、MAC OS X、MAC OS 9 、Linux 等操作系统上使用。目前最新版本为Processing 3。
很多Processing互动媒体爱好者总是在PC电脑里演示他们的作品,应该很少有人把作品搬到安卓手机的屏幕上演示,主要原因是Processing程序如何在安卓手机上运行的方法,中文资料很少或者没有,外文倒是有,但说的也不全。想学习基础知识的话,在这里推荐两个网站,都是宜昌老张微博上的资料:
1、        http://www.eefocus.com/zhang700309/blog/14-12/307377_88e74.html
2、        http://www.eefocus.com/zhang700309/blog/15-02/310447_be430.html
另外推荐学习一本全英文书籍,有兴趣的朋友可以看一下:《Rapid_Android_Development Build Rich,Sensor-Based Applications with Processing》
现在开始进行该项目的具体介绍。

  所需材料:
1、        arduino promini一块
2、        HC-05蓝牙模块(修改波特率为115200)
3、        3.7伏锂电池一块(不超过300mah,本人利用一块与promini一样大的锂电池)
4、        锂电池对接线(公母一对)、锂电池充电线
5、        硅胶线、热缩管
6、        Kt板
7、        电烙铁、焊锡、热熔胶枪、热熔胶
8、        杜邦插头芯子、排针
9、        10k可变电阻器、DHT22温湿度传感器、光敏电阻、火焰传感器、酒精传感器等一切以0-5v电压变化反映环境参数变化的传感器;
10、        10k电阻、双面焊接板
11、        一部智能安卓手机

步骤:
一、        修改蓝牙波特率为115200(不熟悉的朋友可在网上查阅相关资料)
二、        烧录arduino promini程序(可以不用焊接线,利用四线的排针靠在焊孔上,等到电脑显示正在上传时按下复位键就可以了)
三、        将promini和蓝牙焊在一起,注意引脚(VCC-VCC,GND-GND、TX-RX、RX-TX)
四、        3.7v锂电池给promini供电,安装对接线随时可以拔插,并利用热熔胶将电池与蓝牙和arduino promini堆叠在一起。
五、        利用焊线接出D2、A0、A1、A2引脚,VCC和GND也都接出四根,每根末端都接上杜邦插头芯子,用热缩管包裹,形成母头
六、        利用kt板将3.7v锂电池、蓝牙、arduino promini包围起来,热熔胶枪进行粘合。注意锂电池对接线要引出来,方便电池充电或给模块供电
七、        在两侧分别引出四组接口,顺序分别为VCC、D2、GND;A0、VCC、GND;VCC、A1、GND;VCC、GND、A2。第一组是DHT22的专用接口,第二、三、四组是电压变化反映环境参数变化的传感器接口。不同的顺序可供各类传感器直插时进行选择。
八、        焊接焊盘,可接入光敏电阻、火焰传感器等。注意利用排针制作公头,杜邦插头芯子制作母头。原理图:

      
九、        将DHT22、焊盘利用双面胶粘在盒子上方
十、        安装绷带、魔术贴便于将装置绑在手臂上
十一、        在手机上下载app并安装,测试蓝牙连接效果。(初期测试时可使用可变电阻器,注意需要点击下方带颜色的方框打开选择曲线图,温湿度值曲线图查看需要切换)
arduino端程序:
  1. int testPin1 = 0 ; //  Sensor wire connected to analog pin 0
  2. int testPin2 = 1 ; //  Sensor wire connected to analog pin 1
  3. int testPin3 = 2 ; //  Sensor wire connected to analog pin 2

  4. #define DHT22_PIN 2 //定义DHT22接在D2号位
  5. #include <DHT22.h> //DHT22的Library
  6. DHT22 myDHT22(DHT22_PIN); //设定DHT22参数
  7. long old_time=0;
  8. long new_time=0;
  9. volatile int Signal1;                // holds the incoming raw data
  10. volatile int Signal2;                // holds the incoming raw data
  11. volatile int Signal3;                // holds the incoming raw data
  12. volatile int Signal4;                // holds the incoming raw data
  13. volatile int Signal5;                // holds the incoming raw data

  14. void setup(){
  15.    pinMode(testPin1,INPUT);  
  16.    pinMode(testPin2,INPUT);
  17.    pinMode(testPin3,INPUT);      
  18.   Serial.begin(115200);             // we agree to talk fast!
  19. }

  20. void loop(){

  21.   Signal1 = analogRead(testPin1);
  22.   Signal2 = analogRead(testPin2);
  23.   Signal3 = analogRead(testPin3);
  24.   
  25.   DHT22_ERROR_t errorCode; //定义errorCode接受错误代码
  26.   errorCode = myDHT22.readData(); //读取errorCode
  27.   if(errorCode == DHT_ERROR_NONE) //如果errorCode为DHT_ERROR_NONE(没有错误)
  28.   {
  29.     Signal4=myDHT22.getTemperatureC();
  30.     Signal4=map(Signal4,-20,60,0,127);
  31.     constrain(Signal4, 0, 127);
  32.     Signal5=myDHT22.getHumidity();
  33.    Signal5=map(Signal5,0,100,0,127);
  34.     constrain(Signal5, 0, 127);
  35.   }
  36.    new_time= millis();
  37.    if((new_time-old_time)>50 ){
  38.     Serial.write(255);
  39.     Serial.write(Signal1/8);
  40.     Serial.write(Signal2/8);
  41.     Serial.write(Signal3/8);
  42.    Serial.write(Signal4);
  43.    Serial.write(Signal5);  
  44.    }
  45.    delay(20);                           //  take a break
  46. }


复制代码


有兴趣从头写processing程序的同学参见附件:processing端程序
想直接下载apk安装到手机上的同学参见附件:蓝牙传输程序

效果图:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2016-2-26 15:17:30 | 显示全部楼层
有没人做过测试呀,有问题可以联系我
回复 支持 反对

使用道具 举报

发表于 2016-2-26 22:19:01 | 显示全部楼层
哪个是手机端的APP?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-26 23:48:40 来自手机 | 显示全部楼层
解压缩蓝牙传输程序的压缩包就是。貌似不能上传apk格式文件,所以就打包上传了
回复 支持 反对

使用道具 举报

发表于 2016-4-21 15:44:36 | 显示全部楼层
神奇的楼主,非常好,能发下Rapid_Android_Development Build Rich,Sensor-Based Applications with Processing的链接吗?
回复 支持 反对

使用道具 举报

发表于 2017-1-8 09:03:47 来自手机 | 显示全部楼层
好贴,留名备查
回复 支持 反对

使用道具 举报

发表于 2017-1-8 12:19:15 | 显示全部楼层
强,学习了,检测侠
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 04:20 , Processed in 0.054832 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表