最近在做一个语音控制、重力感应的智能车

iOS Nov 14, 2014

2014-11-14 更新

驾校也快该考科二了,最近也没怎么研究新东西。不过昨天把蓝牙发送数据研究出来了。

代码

引入一个LGBluetooth的框架,在viewDidLoad方法里写上

[LGCentralManager sharedInstance];

再写一个方法扫描设备

// 扫描 1 秒钟
[[LGCentralManager sharedInstance] scanForPeripheralsByInterval:1
                                                     completion:^(NSArray *peripherals)
 {
     // 如果发现了设备
     if (peripherals.count) {
         [self testPeripheral:peripherals[0]];
     }
 }];

里面嵌套了一个testPeripheral方法

[peripheral connectWithCompletion:^(NSError *error) {
    [peripheral discoverServicesWithCompletion:^(NSArray *services, NSError *error) {
        for (LGService *service in services)
        {
            if ([service.UUIDString isEqualToString:@"ff00"]) {
                [service discoverCharacteristicsWithCompletion:^(NSArray *characteristics, NSError *error) {
                    
                    for (LGCharacteristic *charact in characteristics) {
                        
                        if ([charact.UUIDString isEqualToString:@"ff01"]) {
                            __block int i = 0;
                            [charact writeByte:0x01 completion:^(NSError *error) {
                                if (++i == 3) {
                                    // finnally disconnecting
                                    [self.peripheral disconnectWithCompletion:nil];
                                }
                            }];
                        }
                    }
                }];
            }
        }
    }];
}];

说明

代码写的应该很明白了,至于 ff00,ff01,我理解为通道,这个,下载一个 LightBlue,可以帮助你理解,在 ff00 通道中,扫出来 ff01 和 ff02 ,ff01 通道为写通道。不同模块可能不一样,附图两张供大家理解。

该图为LightBlue的截图,软件可以在 AppStore 下载到。

2014-11-11 更新

最近在做一个智能车,小车已经做出来了,支持蓝牙通信。现在差的就是软件部分。软件部分的语音识别已经做完,蓝牙做到了扫描和连接,发送数据还在继续蛋疼中。稍后补充详细内容。

智能车

先上图

由于不是我做的,技术参数我也不懂,就介绍到这里吧。

语音识别

开始用了百度的语音 API,发现百度太特么坑爹,那demo里面居然还有内存管理的代码妈蛋的。

然后果断选择了讯飞的云服务,也是完全免费 点我 申请这个服务,获得 App_Key,然后就可以用了。参照官方的demo,就行.不需要太多代码,很简洁的。

蓝牙

蓝牙协议本身经历了从 1.0 到 4.0 的升级演变, 最新的 4.0 以其低功耗著称,所以一般也叫 BLE(Bluetoothlow energy)。

iOS 有两个框架支持蓝牙与外设连接。一个是  ExternalAccessory。从 iOS3.0 就开始支持,也是在 iPhone4s 出来之前用的比较多的一种模式,但是它有个不好的地方,External Accessory 需要拿到苹果公司的 MFI 认证。

另一个框架则是本文要介绍的 CoreBluetooth ,在 iPhone4s开始支持,专门用于与 BLE 设备通讯(因为它的 API 都是基于 BLE 的)。这个不需要MFI,并且现在很多蓝牙设备都支持 4.0,所以也是在 iOS 比较推荐的一种开发方法。

这是最蛋疼的模块了,硬件方面我狗屁不通,什么通道啊啥的,完全不懂啊有木有,现在只知道通过FF01通道,可以写数据。

蓝牙模块用的 MBTV4,蓝牙 4.0 的。因为上面提到,正常情况下苹果只支持蓝牙 4.0 的模块。

蓝牙到现在其实还不算明白,简单了解下,有一个中央和周边的概念,如果用 CoreBluretooth 框架,步骤就是,创建中央管理器,扫描外设、连接外设、扫描可用的服务和特征、再去做交互。

Tags

Jie Li

🚘 On-road / 📉 US Stock / 💻 Full Stack Developer / 🎓 Grad Student / ®️ ENTJ

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.