将Arduino蓝牙传感器与iOS集成

这是我博客的一个交叉报道。 您可以在 此处 找到原始帖子

我最近一直在探索的一个领域是传感器电路与iOS应用之间的蓝牙通信。 我想根据Adafruit优秀人士提供的一些示例分享这些研究之一。 它由一个传感器组成,该传感器可以检测到火焰的存在,并通过蓝牙将该信息发送到iPhone应用程序,该应用程序显示传感器的读数。

这是实际的样子:

在本研究中,我使用Adafruit的FLORA系列基于Arduino的板进行原型制作。 FLORA板与Arduino IDE完全兼容,可轻松用于可穿戴项目。

我使用的蓝牙板是FLORA蓝牙模块,传感器是Inland 24传感器套件中随附的火焰传感器。

这是完整的电路:

Arduino素描

为了运行Arduino草图,您需要确保您具有:

  • 最新版本的Arduino IDE
  • 已安装Adafruit AVR板套件
  • 已安装Adafruit BluefruitLE nRF51库

该草图是基于Adafruit BluefruitLE nRF51库中包含的blueart_cmdmode草图构建的。 大部分草图是用于配置FLORA和FLORA蓝牙模块的样板代码。

循环功能内部的代码将从火焰传感器获取值,对其进行缩放,并确定是否是近距离火焰(小于1.5英尺),远距离火焰(1-3英尺)或未检测到火焰:


//读取模拟量A9上的传感器:
int sensorReading = AnalogRead(A9);
//映射传感器范围(四个选项):
// ex:'long int map(long int,long int,long int,long int,long int)'
int range = map(sensorReading,sensorMin,sensorMax,0,3);
  //范围值: 
开关(范围){
案例0://距离不到1.5英尺的火。
Serial.println(0);
Serial.flush();
打破;
情况1://距离1-3英尺之间的火。
Serial.println(1);
Serial.flush();
打破;
情况2://未检测到火灾。
Serial.println(2);
Serial.flush();
打破;
}
...
}

iOS应用

iOS应用程序是Adafruit制作的Basic Chat应用程序的简化版本,其中显示了如何在iOS应用程序和支持蓝牙的Arduino之间实现双向通信。

我为此演示修改了该应用程序,以便它仅从蓝牙传感器接收信息,对于此应用程序,我只需要将信息从传感器发送到iPhone; 无需双向通讯。

Adafruit Basic Chat教程很好地概述了蓝牙通信如何与iOS协同工作。 对于此示例,最重要的部分是updateIncomingData函数,它将侦听来自FLORA传感器的传入蓝牙数据,并相应地更新UI:


func updateIncomingData(){
NotificationCenter.default.addObserver(forName:NSNotification.Name(rawValue:“ Notify”),对象:nil,队列:nil){
通知中

让dataString =特征ASCIIValue作为字符串
如果(dataString ==“ 0”){
self.stateLabel.text =“近距离射击”
self.backgroundView.backgroundColor = UIColor.red
} else if(dataString ==“ 1”){
self.stateLabel.text =“遥远的火”
self.backgroundView.backgroundColor = UIColor.red
}其他{
self.stateLabel.text =“不点火”
self.backgroundView.backgroundColor = UIColor.white
}
}
}

运行草图和应用

  • 将草图上传到您的FLORA板上。 打开串行监视器以确认草图已上传,并且蓝牙传感器已配置。
  • 在物理设备上运行iPhone应用程序。 确保已启用蓝牙。 当您看到Arduino出现时,单击“连接”。
  • 使用打火机测试系统是否正常运行。

可以在此处找到该项目的存储库。