基于Android的温湿度采集系统

本文介绍了一个结合单片机、蓝牙通信技术与Android App的温湿度采集系统。系统通过Android设备接收和显示由ATmega16单片机采集的SHT30传感器数据,使用HC-05蓝牙模块进行通信。软件部分详细阐述了Eclipse环境下蓝牙连接、设备发现和数据传输的实现,硬件部分介绍了主控模块、采集模块和蓝牙模块的设计。
摘要由CSDN通过智能技术生成

      本次设计结合日常生活中的需要,应用单片机技术、蓝牙通信技术和Android手机APP开发技术,设计了一种以Android智能手机作为指令传送和数据接收终端,获取实时温湿度信息的系统。系统整体框架如图所示。


整体设计包含硬件与软件两大部分,硬件提供数据支持,软件用于数据显示,数据传送的桥梁HC-05蓝牙模块,它支持Socket蓝牙通信协议,这种协议与4.0低功耗蓝牙通信协议有很大的区别,具体可以自己去上网查资料,这里仅介绍传统的蓝牙通信协议。程序流程如下图所示。


下面我将从硬件和软件两个方面对本系统进行详细的介绍。

1.软件部分

软件开发用的是eclipse工具,在文章结束时将一并给出手机端与硬件端完整源代码。

1.1添加蓝牙权限

在设计主程序之前,首先需要在AndroidManifest.xml文件中添加操作蓝牙的权限。

<uses-permissionandroid:name="android.permission.BLUETOOTH"/>  //允许程序连接到已配对的蓝牙设备。

<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"/>  // 允许程序发现和配对蓝牙设备。

1.2打开蓝牙并连接设备

打开蓝牙使用的是eclipse系统自带的蓝牙适配器BluetoothAdapter,通过实例化该对象,运用条件语句判断是否打开蓝牙,具体代码如下:

if (!mBluetoothAdapter.isEnabled())

{  //蓝牙未代开时会执行此语句,提示是否打开蓝牙

IntentenableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

              startActivityForResult(enableIntent,REQUEST_ENABLE_BT);

}

当用户选择打开蓝牙时,程序会执行条件里的语句,跳转至蓝牙设备选择界面

用户点击页面底下的扫描设备时,程序会首先注册一个广播接收机制,监听蓝牙设备的变化,每搜索一个设备就会发送一个广播,当全部搜索完之后会发送该广播,注册广播接收机制的代码如下:

privatefinal BroadcastReceiver mReceiver = new BroadcastReceiver()

@Override 

  public void onReceive(Context context, Intent intent)

String action =intent.getAction();  // When discoveryfinds a device 

if (BluetoothDevice.ACTION_FOUND.equals(action))

BluetoothDevicedevice = intent.getParcelableExtra(BluetoothDevice.EXTRA _DEVICE); 

            if (device.getBondState() !=BluetoothDevice.BOND_BONDED)  

{  //设备绑定状态

mNewDevicesArrayAdapter.add(device.getName()+ "\n" + device.getAddress()); 

            } 

          }

else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action))

            setProgressBarIndeterminateVisibility(false); 

         setTitle(R.string.select_device); 

         if(mNewDevicesArrayAdapter.getCount() == 0)

                   { 

                String noDevices =getResources().getText(R.string.none_found.toString();

             mNewDevicesArrayAdapter.add(noDevices); 

         }

       }

}

};   

系统扫描完所有的可用蓝牙设备后,用户点击其中一个设备,程序会根据点击的设备通过getAdress方法获取该设备地址,该地址将会通过putExtra方法传递给下一个界面。同时运用getName方法获取设备名告知用户。

1.3线程建立连接

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值