Connecting hc-05 with iPhone SE iOS(v11.0) - swift

I have done some research on core bluetooth framework. Successfully setup discovery of peripheral of other iPhone, connect, discovered services and characteristics and write some values. All went well. Surprisingly come to know there is apple MIFI program (need to research on it).
In excitement I ordered iPhoneSE, HC-05 bluetooth module, Arduino Builder's Kit R2 with original Arduino UNO. It took some days/wasted in shipment and decent amount and now it's not working.
I write proper set up/initialization for peripheral and central classes, adopted delegates and I think it's all correct. However I am not able to connect to HC-05 bluetooth module.
Observations:
On a Android device i turned on bluetooth in device settings, HC-05
was able to be discovered, enter 0000/1234 (password as per
documentation). And yes i was able to connect it. It means HC-05 is
not malfunctioning.
On a iPhoneSE iOS v11.0, Setting -> turn on bluetooth. But HC-05 is
not discoverable.
I simply want to be successfully discover and connect to HC-05 module using BLE technology. Then with delegate methods look up services/characteristics and then try to on/off led.
I can provide more info and background if needed.
I need some help and direction so that I can purchase the correct bluetooth module which connect to iPhone, and I am sure I can do it.
Thanks.

To answer above question-
HC-05 will not connect iPhone. Because HC_05 is not bluetooth low energy.
I have used AT-09 from amazon.
I have written complete article how I achieved it here, and challanges I faced with solution.

The HC-05 isn't compatible with iOS.
This is because Apple uses MFi Licensing Program and HC-05 is not licensed.
To get things working go for a module supporting minimal BT Version V4.0 BLE. Even better, BT Version: V4.2 BLE & V5.0 (better range and larger packet-size), if iOS (v11.0) supports it.
I am not going to recommend a specific model, that's what Google is for.

Apple devices under the MFi licensing scheme only support limited profiles.
HC-05 is based on Bluetooth 2.0. What will work for Apple mobile devices (iPhone, iPad) will be those modules that utilise Bluetooth 4.0 or Bluetooth Low Energy (BLE).

Related

Create an iPad app that can send/receive data via the USB cable?

I want to create an iPad app that connects to another machine, laptop or otherwise, via USB and communicates to some other application I develop running there.
I know that this is easy to achieve via Bluetooth or WiFi but this particular set of solutions must be done via a USB cable.
Is it possible to do so without access to the Apple MFi program? (I am about 5 weeks in and the response is not looking good).
iOS App --> USB Cable --> Mac OSX --> Desktop App (without MFi access)
Thanks
To use USB communication Apple does not provide any API within IOS SDK. The only option right now is MFI. I don't think Apple will allow this in near future.
To use serial communication, you need MFI as you may have discovered. However, there is a poor man's way of achieving this. I have done so during development.
Enable "Internet sharing" on your device and connect to it. Use "ifconfig" on your Mac to find out the interface to use. You do not need to use this as the default connection, but it needs to be active. If I remember correctly, only one end can initiate connections (it was a while so I am sorry that I don't remember the details).
EDIT: I would also like to point out that I did this on an iPhone, not an iPad.
Not over USB but over RS232 (serial port)
Look here: http://www.redpark.com/c2db9.html
But:
The cable uses the old 30 pin connector, but according to them it's compatible with the Lightning adapter
The application won't be accepted on the AppStore, it's for internal use only.
There is a (small) book that explains how to use this cable to connect an iPhone directly to an Arduino, it's been published in late 2011. "iOS Sensor Apps with Arduino Wiring the iPhone and iPad into the Internet of Things" http://shop.oreilly.com/product/0636920021179.do

How can I create a Bluetooth serial connection between an iPhone and an Arduino+Bluetooth Mate?

I have a project where I need my iPhone to communicate with an Arduino. Bluetooth seems like the best option for the communication. How should I program my iPhone (what framework?) to communicate with the Bluetooth Mate or do Apple's restrictions prevent this? Is it possible with a jailbroken iPhone? Is there a better way other than Bluetooth? Sample code would be helpful.
Thanks in advance
Actually you can make it happen now without Jailbreaking or MFi enrollment.
Take a look ate Bluetooth 4.0 in newer iOS devices and Arduino BT 4.0 shield.
This might help: http://blog.makezine.com/2012/03/19/bluetooth-4-0-from-arduino-to-iphone-no-jailbreaking-no-mfi/
Meanwhile there is an Arduino shield available from Seeedstudio: Bluetooth Low Energy Shield
Devices following the Bluetooth 4.0 specification can be accessed by all iPhone/iPad models with a Bluetooth 4.0 chip inside (currently iPhone 4S, 5 and iPad 3) running with iOS 6. You no longer need to be part of the MFI program or jailbreak the device for most purposes. Use the Core Bluetooth Framework that's also discussed in the WWDC 2012 videos Core Bluetooth 101 (Core OS) and Advanced Core Bluetooth (Core OS).
It's been a while since I was in contact with embedded bluetooth-to-iphone devices, but as far as I remember you have to buy authentication chips from apple.
Apple MFi
But as jailbreak is an option this might work. But I never tried this, because I once was in possession of some authentication chips.
I found btstack with a quick googling, maybe it's helpful.
Try instaling bluetoth iBlueNova, and it will comunicate with each device.
Yes, the best way to do this would be to use Blynk. Make an account, copy the example code, and get started with the Blynk app!
Apple's OS app sandbox prevents generic (Classic non-BLE) Bluetooth serial data comm on stock OS devices, except for a few companies registered in their MFi program.
The most reliable and possibly the easiest solution is to the use the Arduino Ethernet shield with a physical network connection to your WiFi router. The Arduino would host web pages or respond directly to http that did your work for you.
No jailbreaking, no BT programming, no serial com port stuff. Just regular old web pages. Sweet stuff.
The simplest solution would be to navigate with any browser on your network, including your iPhone, to your Arduino and issues commands.
Example:
http://192.168.1.101/?1
192.168.1.101 = the IP of your Arduino
?1 would mean PIN13 pulled high (i.e. turn on the LED)
Your code would be something like:
EthernetClient client = server.available();
while (client.connected())
{
if (client.available())
{
char cVar = client.read();
if (cVar != '?') return;
Serial.Print(cVar)
if (cVar == '1') digitalWrite(13, HIGH); //turn on the led
}
}
That code is quick and dirty so don't hold it against me!
Let me know what you decide and how it works out. I need to go read up on http://blog.makezine.com/2012/03/19/bluetooth-4-0-from-arduino-to-iphone-no-jailbreaking-no-mfi/
Thanks for that link ygbr!

iPhone Bluetooth application to connect to a Bluetooth printer

Has anybody succeeded in developing a bluetooth application on the iPhone that prints to a Bluetooth printer?
I have been investigating the feasibility of developing an iPhone application that could print to a Bluetooth-enabled printer. I've gone through the most of the postings in this thread and was confused by the mail exchanges.
As per my analysis:
Gamekit - can be used for bluetooth connectivity between iPhones and IPods ONLY
Bonjour - can be used for wi-fi connectivity between iPhones/IPods and bonjour-enabled printer
We can use an external accessory to connect to a third party Bluetooth-enabled printer provided the 3rd-party printer complies with the necessary regulations from Apple (registering for either “Made for iPod”/ “Works with iPhone”, and also customizing their printer with specific hardware/software, etc.)
Could someone please share their experiences?
You want their external accessory framework. Not GameKit. Happy coding!
The External Accessory framework provides support for communicating with external hardware connected to an iPhone OS–based device through the 30-pin dock connector or wirelessly using Bluetooth.
(This is exactly what you were looking for)
To detect and connect to external devices ExternalAccessoryFramework should be used.Me too developing an application for connecting iphone to other hardware devices via bluetooth .A'm facing the problem with the protocol.The protocol should be the hardware supported ones and the protocol should be given in the info plist file..
Happy coding.
You can want to try this Bluetooth printer, which is Apple MFI approved
http://www.bluebamboo.com/other_file/P25i%20Datasheet%20%28EN%29%20v1.0%2009-Oct-2011.pdf
I would bet that you would need to use Bonjour and Wi-Fi for this application. The bluetooth hardware is restricted to gameplay from what I've seen.
well i have sucsessfully accomplished bt printing on a customers I-phone both devices have to be in discovery mode to do so and then the combination wireless and bt will allow only photo printing though otherwise you will need an app

Accessing Bluetooth via Bonjour/GameKit from the iPhone SDK simulator (circa 3.1.3)

I'm in the process of getting hardware for an iPhone prototype, and I'm wondering if it's possible to access bluetooth (ExternalAccessory, Bonjour or GameKit) exposed by development box (eg. a macbook) using the SDK's simulator as of the latest version (3.1.3 at the time of writing)
Before I get any answers on the subject, I accept that I will need an iPhone for the actual development - this is simply a prototype.
I'm not sure I understand your question entirely.
I can state that in iOS (as of May 2011) the only access you have to bonjour is through the Gamekit functionality. That functionality is fairly robust, but (for instance) you will not be able to create a BT based bonjour service that other non-iOS BT enabled devices can find.
On the simulator, even if the underlying device HAS bluetooth capabilities, you will NOT be able to perform "real" bluetooth operations. Instead the simulator will simulate some capabilities, and ignore others. You really do need multiple devices to load your code onto and run, in order to test out BT code.
Bluetooth connectivity is inaccessible using the Simulator. If WiFi is good enough for you, that works with Bonjour and GameKit on the Simulator as well. Otherwise, just like for the accelerometer and several other components of the device, you will need an actual device.

How can an iPhone access another non-iPhone device over wireless or Bluetooth?

I'm trying to figure out if an iPhone can connect to another non-iPhone device over wireless or Bluetooth and have seen conflicting information. Much of what I've found was before version 3.0 of the SDK came out, when it certainly wasn't possible. Looking at Stack Overflow questions, like Can the iPhone 3.0 SDK provide full access to Bluetooth devices (headsets)? mention you can't connect to an arbitrary device unless if it's part of the "Works for iPhone" device. Do I need hardware that is part of this program?
Looking through the Apple documentation, Peer-to-Peer Connectivity, it mentions connecting two iPhones, not an iPhone to another Bluetooth device. Then there are articles like iPhone SDK focus: Bluetooth enhancements that includes this quote
...and with the newly-announced "standard support" should allow file transfer between the iPhone and a computer, as well as between nearby iPhones
Another Stack Overflow question, GameKit in iPhone SDK 3.0, mentions Bonjour, and the Apple documentation for Bonjour talks about connecting to Bonjour devices, but can an iPhone connect to any Bonjour device? Does it have to have a Wi-Fi connection, or can it use Bluetooth?
Even if I could use Bluetooth to connect to another device, it won't be available on first generation iPhones and iTouches, I believe. Is that correct? I'm thinking of an iPhone application that would need to communicate with other non-iPhone devices in the area, probably using Bluetooth, but possibly a direct wireless connection. What are the possibilities and limitations of this approach? Is it not possible to have an iPhone connect to an arbitrary Bluetooth device? Does the other device have to be on a wireless Bonjour network that? I'm trying to figure out if it's even possible for this to work or if it's not worth the effort.
The only way to communicate with other Bluetooth devices via the External Accessory framework in iPhone OS 3.0 is if they are in the Made for iPod accessory program. Even though they communicate through standard Bluetooth connections, accessories need special hardware in order to process the data stream coming from the iPhone / iPod touch. Unfortunately, this means that your idea of communicating with generic Bluetooth devices won't work on iPhone OS 3.0.
If the devices you want to talk to are Bonjour-discoverable via Wi-Fi, they don't need to be part of the Made for iPod program. However, that doesn't sound like your case.
Third-party developers in the near future may produce dongles that connect through the 30-pin dock port and give access to existing Bluetooth devices. If these developers opened up their communication protocol, that might enable your goal of communicating with these devices.
You can use NSStream for opening IPv4/IPv6 sockets on the iPhone. The devices to which you're connecting do not have to be iPhones or use Wi-Fi necessarily. Because of how network communication protocols are laid out, you simply don't have to care what kind of device your iPhone is communicating with.
Bonjour, on the other hand, uses NSStream internally. It's basically a nifty little wrapper which allows for auto-discovery. You need the Bonjour protocol installed on all devices which you want to participate in the auto-discovery process. There is even an implementation for Windows.
As part of the iPhone OS 3.0 SDK, Apple announced the ability to control hardware accessories through either Bluetooth or the dock connector. The dock connector supports standard protocols (that is, play, pause, etc.) as well as any custom protocols the developer wants to implement.
As far as connecting via Bluetooth, you can talk to other iPhones or other devices. For example, you can use stereo Bluetooth to connect compatible Bluetooth stereo headphones, car kits, or other accessories.
As far as what devices support Bluetooth communication, everything except the first generation iPod Touch should be okay.
See also Apple's page on iPhone OS accessories.