Best Board Getting Started with Arduino BLE

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
markhardy
 
Posts: 2
Joined: Tue Dec 08, 2015 3:22 pm

Best Board Getting Started with Arduino BLE

Post by markhardy »

Hi there,

I'm experienced in software, but new to hardware and am wondering what a beginner who doesn't know how to or want to solder etc. should get to start working with BLE through Arduino. Does the nrf8001 Breakout (https://www.adafruit.com/products/1697) meet this description? Does it require another board to operate?

Thanks,
Mark

User avatar
adafruit_support_mike
 
Posts: 67454
Joined: Thu Feb 11, 2010 2:51 pm

Re: Best Board Getting Started with Arduino BLE

Post by adafruit_support_mike »

The nRF8001 is an older chip. It's simple, but lacks some things that are popular in BLE these days, like the ability to act as an iBeacon. Our nRF51822 breakouts are the current standard.

If you want a board that can connect to a regular Arduino, we have nRF51822 breakouts that communicate using the Serial/UART interface or SPI:

https://www.adafruit.com/products/2479 - UART
https://www.adafruit.com/products/2633 - SPI

The UART version is a little easier to communicate with if you plan to send text, the SPI version is a little more convenient for raw data, but both will do either job.

If you want an all-in-one board, we have the Feather BLE: https://www.adafruit.com/products/2829

It uses an ATmeag32u4 microcontroller which handles USB communication internally, so it doesn't need a separate USB-to-Serial converter like the Arduino Uno.

User avatar
markhardy
 
Posts: 2
Joined: Tue Dec 08, 2015 3:22 pm

Re: Best Board Getting Started with Arduino BLE

Post by markhardy »

Thanks!

User avatar
evankstone
 
Posts: 5
Joined: Wed Dec 09, 2015 7:56 pm

Re: Best Board Getting Started with Arduino BLE

Post by evankstone »

adafruit_support_mike wrote:The nRF8001 is an older chip. It's simple, but lacks some things that are popular in BLE these days, like the ability to act as an iBeacon. The UART version is a little easier to communicate with if you plan to send text, the SPI version is a little more convenient for raw data, but both will do either job.
This is one of the best explanations I've seen for the reasons for selecting UART or SPI, so thank you very much for that!

I've also heard that SPI is a little easier to work with and is a little faster, correct?

So I was wondering if there was a good rundown/tutorial/description on the differences between UART and SPI from the Arduino usage side? How are they coded differently? Or are the Adafruit code examples pretty much the resource we would use to learn those details?

I'm currently using a RedBearLab BLE Shield and it works pretty well, and I'm also waiting for my TinyCircuits BLE board to arrive to try that out, but both of those are based on the nRF8001 -- which, honestly is totally fine for our needs. However, the Adafruit BLE breakouts and also the Feather products look amazing, super well designed and thought out, and they appear to be really well supported, which is why I'm considering switching.

Thanks in advance!

User avatar
adafruit_support_mike
 
Posts: 67454
Joined: Thu Feb 11, 2010 2:51 pm

Re: Best Board Getting Started with Arduino BLE

Post by adafruit_support_mike »

When you get down to the details, SPI and UART are more different than they are similar.

SPI is a shared-bus, clocked, synchronous, full-duplex connection. You can have multiple devices connected to the same MISO, MOSI, and SCK lines, each activated by its CS pin. The SCK signal controls when the devices at both ends of the connection send and receive data, and both devices do the same thing at the same time. When the SCK signal goes high, both devices read the their input lines. When SCK goes low, both devices write the next bit to their output lines. The microcontroller reads MISO (Master In, Slave Out) and writes MOSI (Master Out, Slave In). The device whose CS pin is selected reads MOSI and writes MISO. One bit passes each way for every tick of SCK, making it a full-duplex connection (both talk, both listen). SPI connections can run at several megahertz.

There's no formal standard for SPI, so the description above is more of an example than a spec. SPI variants will use other signals, like a Data/Command signal that identifies the bits flowing through MOSI. You'll also find every possible permutation of when to read and write bits relative to SCK.

UART is a full-duplex asynchronous protocol. Each device sends bits out on its TX line and listens for bits on its RX line. There's no clock to control the timing though, so the devices at either end have to sync up using their own internal clocks and an agreed-upon data rate. Each device is free to send data through its TX line whenever it wants, so data can move both ways at the same time, but doesn't have to. The UART connection protocol specifies a certain number of bits per chunk of data, with the most common value being 8, or one byte per chunk. Since the devices at both ends have to agree on the connection rules, you can only have two devices connected through a single UART.

UARTs can run at speeds into the gigahertz range, but the rates you'll get from a microcontroller usually peak at about 250kbps.

User avatar
evankstone
 
Posts: 5
Joined: Wed Dec 09, 2015 7:56 pm

Re: Best Board Getting Started with Arduino BLE

Post by evankstone »

Thank you for the detailed answer... It will probably take me a few reads to fully understand all the particulars (since I'm still coming up to speed on all this) but I really appreciate you answering my question!

Super helpful and awesome of you! :)

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”