You are on page 1of 45

Spark Fun Tutorials

Tabla de contenido
Intro: Integrated Circuits (IC)...................................................3
The make-up of an IC.............................................................................3
Common IC packages............................................................................4
Donde sacar proyectos de Arduino...........................................8
Embedded electronics: Interlinking ICs.....................................8
Pull Up resistors.....................................................................................8
Escogiendo un valor para los pull up resistors...................................9
Anlogo y Digital...................................................................10
Conversin Anlogo a Digital (ADC)...............................................11
Protocolos de comunicacin en serie y paralelo......................11
Seiral Communication (standard)...........................................13
Las reglas del Serial.............................................................................13
La conexin fsica (wiring and hardware)............................................14
Hardware.............................................................................................15
Los UARTs (Universal Asynchronous Receiver Transmitter)..................15
Pitfalls al conectar con Serial...............................................................16
Problemas con comunicacin Serial.....................................................17
Serial Peripherial Interface (SPI)............................................17
Conectando muchos Esclavos..............................................................18
Programando para SPI.........................................................................19
Problemas con comunicacin SPI.........................................................20
El I2C o Inter Integrated Circuit..............................................20
I2C Hardware.......................................................................................21
Formas de comunicacin Inalmbrica.....................................21
Infrared................................................................................................22
Sensores..............................................................................22
LSM9DS1 Breakout: nine degrees of freedom (9DOF).........................22
LSM9DS1 Overview (Capabilities)........................................................22
Breakout Board Overview (Pins & Schematic).....................................23
Izquierda:..........................................................................................23

Derecha:...........................................................................................24
Communication....................................................................................25
Usando I2C.......................................................................................25
Hardware Assembly (Dimensions).......................................................25
Los pines de interrups......................................................................25
Los Jumpers......................................................................................25
Hardware Hookup (I2C & SPI Wiring)...................................................27
Using the Arduino Library (install the Arduino library, & example)......28
Basic I2C programm.........................................................................28
Tu localizacin:.....................................................................................28
Magnetic Declination...........................................................................28
SparkFun Photon RedBoard...................................................30
Power Header, External Supply and USB.............................................30
Pins......................................................................................................31
LEDS....................................................................................................32
Bluetooth.............................................................................34
Masters, Slaves and Piconets...............................................................34
Bluetooth Addresses and Names.........................................................34
Proceso de coneccin entre dos dispositivos.......................................35
Bonding and Pairing.............................................................................35
Power Classes......................................................................................36
Perfiles Bluetooth.................................................................................36
More commonly enconuntered Bluetooth profiles...............................36
Serial Port Profile (SSP).....................................................................36
Human Interface Device (HID)..........................................................37
Hands Free Profile (HFP) y Head Set Profile (HSP)............................37
Advance Audio Distribution Profile (A2DP)........................................37
Audio/Video Remote Control Profile (AVRCP)....................................37
Versiones de Bluetooth.....................................................................38
BC118 BLE Mate 2.................................................................38
Hardware Connection..........................................................................41
6-pin Serial Header...........................................................................41
GPIO Headers (General-purpose input/output no special purpose
go unused by default).......................................................................42
BC118 Concepts..................................................................................43

Communication With the Module.........................................................43

Intro: Integrated Circuits (IC)


Son las pequeas cajas negras que encuentras en las tarjetas:

Estn compuestos de muchos componentes electrnicos.

The make-up of an IC

Interior de una de esas cajas negras

Die: La forma de combinacin de las capas de semiconductores, cobre y otros


materiales que al interconectarse forman los compoenentes de los IC, (resistores,
transistores, etc.)

Forma de un IC die.

Common IC packages
Los IC se empacan para poderlos conectar ms fcilmente, del die van a las
patitas de las cajas negras por medio de cables de oro.
Hay muchas formas de empaques:

En estos empaques siempre se encontrar una marca (notch o punto) para indicar
la polaridad del IC; es decir, indicar que pin es el primero.

Con el primer pin identificado, los dems son nmeros crecientes de forma CCW

DIP (Dual in-line packages)

Son los rectangulitos de paquetes de siempre, el espacio entre patitas son 0.1
que son 2.54mm, ese espacio es el mismo para la breadboards.
Sus patitas varian de 4 a 64.

Estos se pueden instalar en sockets para que el DIP pueda ser cambiado (en caso
de dao, etc):

La versin de montaje superficial de estos DIP son los SOPIC (Small Outline
Package IC)
La versin mini de los SOPIC son los SSOP (Shrink Small Outline Package)
Si el empaque ya no es rectangular y ahora es cuadrangular, tenemos un:

Quad Flat Package (QFP), los cuales poseen de 32 pines a ms de 300 en total,
versiones ms pequeas estn disponibles con TQFP y LQFP.

Otros empaques con los Quad Flat No Leads (QFNL) que son cuads sin patitas o
los Ball Grid Array (BGA), estos ltimos usados para microprocesadores
avanzados (Rasp Berry Pi)

Donde sacar proyectos de Arduino

Arduino-based projects to get your creative juices flowing:


Instructables
Bildr
Arduino Playground
The ITP Physical Computing Wiki
LadyAda
Make: Projects
and, of course, you can find plenty more Arduino tutorials here at
learn.sparkfun.com.

Embedded electronics: Interlinking ICs


Goal: swap information between ICs common language/Communication
Protocols (ComPro)

Pull Up resistors
Comunes al usar Microcontroladores (MCUs)
Qu es?
Tienes un MCU con un pin configurado como INPUT.
Si no hay nada conectado a ese pin y el programa indica leer el estado del pin:
No se sabe si el pin esta en HIGH (pulled to VCC) o en LOW (pulled to ground), a
esto se le conoce como Floating pin (un estado de incertidumbre)
Para prevenir el estado floating, se pone una resistencia del INPUT pin a VCC
(pull up) o a 0V (Pull down)
Pulls Up resitors son ms comunes que los pull down, pues son usados con
botones o swiches.

As cunado el botn no este apretado, el pin leera HIGH pues esta conectado a
VCC por medio del pull up resistor.
Cunado se apriete el botn, la corriente desde VCC, pasando por el resistor, ir
hacia tierra, ocasionando que el INPUT lea un estado de LOW
Si quitamos el pull up resisor, veramos que corto circuitamos la batera.
Escogiendo un valor para los pull up resistors
Botn apretado: Resistencia controla cuanta corriente va de VCC a GND
Botn no apretado: Resistencia controla cuanta corriente va de VCC a INPUT pin.

En general, R1 es R2/10, siendo valores comunes 10K o 100K.


Tambin puedes proponer la corriente a pasar y con VCC calculas el pull up
resistor.
Muchos MCUs ya tienen estos Pull up resistors, en Arduino se puede activar o
desarcivar:
pinMode(5, INPUT_PULLUP); // Enable internal pull-up resistor on pin 5

Anlogo y Digital
Anlogo: Infinitas posibilidades (seales suaves y continuas)
resistors, capacitors, inductors, diodes, transistors, and operational amplifiers are
all inherently analog
Diseo de un circuito con compoenetes slo anlogos es muy complicado.
Digital: Finitas posibilidades (ondas cuadradas de finitos valores)
transistors and logic gates and, at higher levels, microcontrollers or other
computing chips
Donde high voltaje: 5,3.3, 1.8V

Low Voltage: 0V

Conversin Anlogo a Digital (ADC)


0V 0
5V 1
Cuando necesitamos medir seales analgicas, usamos un Analog to Digital
Converter.
Lo que hace es tomar un voltaje analgico y asignarle un nmero.
Cada Pin ADC en un microcontrolador es diferente, esos ADC pines son de:
10 bits; es decir, poseen la habilidad de detectar 2^10 = 1024 niveles. (Arduino)
8 bits = 2^8 = 256 niveles
16 bits 2^16 = 65535 niveles
Para un dac de Arduino (10 bits), y usando 5V, el DAC hace:
(1023/5)*(Entrada voltaje analgica medida) = Lectura ADC
Lectura DAC*(5/1023) = Volts analgicos

Protocolos de comunicacin en serie y paralelo


Paralelo
1. Transfieren muchos bits al mismo tiempo (muchos 0s y 1s)
2. Requieren buses
3. Transmiten con 8, 16 o ms cables.

An 8-bit data bus, controlled by a clock, transmitting a byte every clock pulse. 9
wires are used.
Serie
Trasmiten 1 bit en cada tiempo
Usan no ms de 4 cables

Example of a serial interface, transmitting one bit every clock pulse. Just 2 wires
required!

Serial communication interface es ms fcil, pues sacrificamos velocidad por


numero de pines, los ms conocidos son los USB (Univelsal Serial Bus) y
Ethernet.

Otros comunes son:


1. Serial Communication (standard),
2. Serial Peripheral Interface (SPI), and
3. I2C
All three of these are communication protocols ICs use to communicate between
each other.
Cada uno de los anteriores puede ser en modo:
Sncrono (SPI y I2C): Todos los componentes de un bus comparten una seal de
reloj comn ms directo y rpida transferencia. Necesita un cable extra.
Asncrono (Serial Standard): los datos son transferidos sin la ayuda de una seal
de reloj, minimiza loa cables necesarios y Pines I/O pero a costa de ms esfuerzo
en transferir y recibir datos.
Este mtodo asncrono es muy comn y se usa en sistemas embebidos, como
GPS, Bluetooth, LCDs etc.

Seiral Communication (standard)


Las reglas del Serial
Este protocolo asncrono tiene ciertas reglas (para asegurar que la info se
transfiera sin errores):

Baud rate
Que tan rpido la info es enviada en una serial line. [bps]
Ambos dispositivos deben operar a la misma velocidad.
9600 bps es comn en los dispositivos donde la velocidad no es crtica.
A mayor baud rate, ms rpido la info es enviada/recibida
El valor mximo es 115200 (reloj ya no puede ir ms rpido)

Framing the Data: un byte (1 Byte = 8 bits) lo mandamos en paquetes de bits

Data bits / Data chunk


Es el tamao de la info que el serial carga = chunk (su tamao va de 5 a 9 bits)
El estndar es 8 bits.

Synchronization bits
En cada chunk se transfieren 2 o 3 bits especiales:
Start bit (solo hay 1) es indicado por un idle data
Stop bit (comnmente 1, pero pueden haber hasta 2)
Los cuales marcan el inicio y fin de un paquete.

Parity bits
Forma opcional, no muy comn (hace lenta la transferencia de info por un bit) y
simple de checar si hay errores, los hay en pares o nones.

La conexin fsica (wiring and hardware)


Un serial bus son dos cables:
1 el que enva info serial pin TX
2 el que recibe info serial pin RX
Entre componentes, estos pines se cruzan: transmisor componente 1 habla con
receptor componente 2

Dentro de este envio y recepcin de info pueden ser Full o Half DUPLEX
Full Duplex: ambos dispositivos envan y reciben simultaneamente
Half Duplex: los dispositivos toman turnos para enviar y recibir info

Simplex: En ciertos dispositivos como las LCD, solo reciben y no mandan nada de
vuelta al controlador. As, slo es necesario un cable desde el controlador TX al
RX del LCD

Hardware
Las implementaciones con hardware ms populares son : TTL y RS232
Para IC y microcontroladores de bajo nivel usamos:
1 TTL o Transistor-Transistor logic: seales TTL existen entre el voltaje de supply
del microcontrolador (0 a 5V o 0 a 3.3V segn el caso).
El primer valor de supply es un idle (un voltaje constante), valores subsecuente
supply es un bit de valor 1 y el ltimo valor de supply es un stop bit.
Por el otro lado, el primer valor de 0V es un start bit, subsecuentes valores de 0V
es un bit de valor 0.

2 RS232 es como el contrario a TTL y se usaba en compus viejitas, su rango va


de valores de tensin de +13 a -13V.
Hay otros estndares actuales como RS 485 que son convenientes si tienes
cables muy largos (por la mayor tensin usada), donde el cambio de la tensin a lo
largo de estos cables se puede perder si usamos TTL con sus valores de tensin
de 0 a 5V o 0 a 3.3V.
No hay conexin directa entre TTL y RS 232, tendras que cambiar las seales.

Los UARTs (Universal Asynchronous Receiver Transmitter)


Son bloques de circuitos responsables de implementar la comunicacin Serial.
Son intermediarios entre comunicacin Serial y paralela.
Se encuentran comnmente ya dentro de los microcontroladores (1 en el arduino
Uno), pero pueden encontrarse como IC separados.
De un lado tenemos un bus de 8 data lines ms pines de control I/O
Del otro lado tenemos los TX y RX

Los UART son responsables de enviar y recibir seiral info


Al enviar: el UART crea los paquetes de info (syncronozacin, parity) y los enva
por TX en el momento preciso (segn el baud rate)
Al recibir: Con el baud rate y sync bits obtenomos la info mandada desde otro IC.

Pitfalls al conectar con Serial


1. Siempre conecta bien TX y RX de los dos dispositivos
2. Que coincida el Baud rate en ambos dispositivos
3. Que slo un dispositivo este conectado al receptor del otro, nada de 2
dispositivos conectados al RX del arduino.

Problemas con comunicacin Serial


1. Es asncrono (no hay info de reloj transmitida) por lo que los dispositivos se
tienen que poner de acuerdo en tiempo con antelacin y si difieren en ese
tiempo obtenemos informacin basura.
2. Requieren UARTs para TX y RX (son difciles en software)
3. Necesitan de un Start bit y un End bit (de 10 bits enviados, 8 son de info de
verdad)
4. Hechos para comunicacin slo entre dos dispositivos, si se usan ms
podemos daar todos los dispositivos.

Serial Peripherial Interface (SPI)


Para enviar info entre MCUs y pequeos perifricos (shift registers, sensors, SD
carfds etc.)

Este protocolo aade starst y stops para ayudar a sincronizar cuando la


informacin llegue.
Es un full dplex, ya que tiene lneas separadas de envio y recepcin, por lo que si
la datasheet lo indica, puedes enviar y recibir al mismo tiempo.
SPI usa dineas separadas de Info/data y reloj, que mantiene ambos lados en
perfecta sincrona.
En SPI, el hardware que recibe puede ser un simple shift register, en lugar de un
UART (ms caros y complejos)
Para mandar comunicacin de regreso (un poco ms complejo que slo enviar)
En SPI, un solo lado (master) es el que genera la seal de reloj (CLK o SCK).
MOSI (Master Out Slave In): Canal en el que el master le enva info al slave,
MISO (Master In Slave Out): Este canal se usa cuando el slave necesita
responder al master, recuerda que el master es el que pone la seal de reloj .: el
slave al mandar su info la acomoda en tiempo segn el master.
SS (Slave Select): Esta lnea o canal se usa para seleccionar un slave con el que
desees hablar, la seal prepara al slave para recibir info o para mandar info. As, la
seal indica que envie o reciba info y selecciona al slave.
Esta seal se mantiene en HIGH para desconectar a los esclavos del SPI bus, a
esto se le conoce como Active Low
Cuando SS line va LOW, activa un slave determinado

Conectando muchos Esclavos


Existen dos formas:
1 En general cada esclavo necesita un canal SS separado. Muchos slaves,
necesitaran muchas seales SS (para activarlos uno a la vez), Existen BInary
Decoder Chips, que pueden multiplicar estas salidas SS.

2 Otra forma es encadenando al MOSI y conectando un solo MISO, haciendo uso


de una solo SS line, una vez que la info fue recibida por slaves, todos se activan al
mismo tiempo con la seal SS comn.
1. En esta ltima configuracin uedes desconectar el MISO para casos en los
que slo necesitas mandar info y no recibir nada, como el caso de LEDs.
2. Si se necesita recibir info de slaves, necesitas mandar suficientes
comandos de receive para obtener la info que necesitas.
3. Necesitars mandar suficiente informacin para que esta llegue a todos los
slaves
4. La primer parte de la info mandada, pasar hasta el ltimo slave.

Programando para SPI


Este protocolo es sencillo, por lo tanto yo puedo programar rutinas para manipular
los I/O lines en una secuencia apropiada para transferir info.
En Arduino podemos hacerlo en cualquier Pin por medio de comandos de: shiftIn()
and shiftOut()
Para slo ciertos pines de manera ms rpida y eficiente se usa la SPI Library la
cual toma ventaja del hardware SPI en el MCU.
Al Usar la librera, tienes que usar los pines SS, SCK, MOSI y MISO que el MCU
tiene.
Checa las opciones de interface para los dispositivos a los que deseas
comunicarte, pues las opciones de concordar segn sus datasheets.

setBitOrder(): Controlar que mandar primero si el MSB o el LSB (Most o el Least


Significant Bit)
setDataMode(): Controlar cuando Slave lee info: en sing edge o falling edge del
clock pulse, adems de determinar cuando el Clock se considera idle si en HIGH
o en LOW.
setClockDivider(): Puedes acomodar al velocidad de transferencia de info, en un
Arduino el master clock es de 16MHz, la funcin puede bajar la frecuencia (8MHz,
125kHz, etc)

Problemas con comunicacin SPI


1. Requiere muchos pines
2. Solo permite un maestro en el bus, no varios

El I2C o Inter Integrated Circuit


Protocolo de Comunicacin Sncrono de distancia corta con 2 cables de seal
(para intercambiar info) que permite:
Multiples ICs Escalvos digitales comunicarse con 1 o ms ICs Maestros
digitales

1.
2.
3.
4.
5.

Aqu con dos cables, podemos hablar con 1008 esclabos


Puede haber varios maestros
Los maestros no pueden hablar entre si
Los maestros toman turnos para hablar con los esclavos
De 9 bits de info, 8 son de info y 1 de Meta data

I2C Hardware
En un I2C tenemos dos seales:
SCL: seal de Clock (generado por el master device, puede ser alterado por un
esclavo por medio de Clock stretching)
SDA: Seal de Data
Los mensajes se rompen en dos marcos:
Marco Address: Master indica al slave (al que se le enva el mensaje) e
intercambian info a 8 bits el uno con el otro.

Formas de comunicacin Inalmbrica

Infrared
https://learn.sparkfun.com/tutorials/ir-communication

Sensores
LSM9DS1 Breakout: nine degrees of freedom (9DOF)
Acceleration
3-axis accelerometer
(Scale, +/- 2, 4, 8 o 16 [g])
Angular velocity
3-axis gyroscope
(Scale, +/- Finer resolution = 245, 500, Max Gross resolution = 2000 [/s] = [DPS])
Heading
3-axis magnetometer (Measure power and direction of magnetic fields)
(Scale, +/- 2, 4, 12 o 16 [Gauss] = [Gs])

LSM9DS1 Overview (Capabilities)

Es un IC de 3.3V, no ms de 3.6V deben ser aplicados (o lo


daaras)
Si usas I2C, no necesitas nada ms
Si usas SPI, necesitars un Level Shifter o Logic Level
Converter Bi directional para conectar un dispositivo de 3.3V a
uno de 5V.
Hay 2 Pins de Chip Select (CS):
1 CS AG (Accelerometer & Gyroscope)
2 CS M (Magnetometer)
Y 2 pins de Serial Data Out (SDO)
1 SDO AG (Accelerometer & Gyroscope)
2 SDO M (Magnetometer)
Como soporta 2 mtodos de comunicacin: SPI & I2C, algunos

pins fungirn con dobles roles.


Si CS pins son LOW: SPI mode se asume
Si CS pins son HIGH: I2C mode se asume
Si SPI mode, SDO son SDO
Si I2C mode, SDO es un Address Selector
Checar Datasheet para ms detalles.
Breakout Board Overview (Pins & Schematic)

Izquierda:

1. Power
a. VDD: <Entre 2.4V 3.6V>
b. GND
2. I2C communication Protocol seleccionado por Default
a. I2C
i. SDA (Canal bidireccional de comunicacin)
ii. SCL (Serial Clock)
b. SPI
i. SDA es el MOSI

ii. SCL (Serial Clock)


Derecha:

1. Data Enable
a. DEN: Pin Raro, pues datasheet no dice mucho de
el
INT Son pines de interrupts programables.
2. Interrupt Accel y Gyro: INT 1 y 2
a. Alertan cuando se alcanzan ciertos lmites por
encima o debajo de un valor threshold.
b. Data Ready
c. FIFO Overruns
3. Interrupt Magnetometer: INT M
a. Alertar sobre o debajo un threshold.
4. Data Ready para Magnetmetro: RDY
a. Indica cuando nueva informacin de magnetmetro
esta disponible.
5. Chip Select Pins: CS
a. Magnetmetro CSM
i. HIGH (1) I2C enabled
ii. LOW (0) SPI enabled
b. Accel/Gyro CSAG
i. HIGH (1) I2C enabled
ii. LOW (0) SPI enabled
6. SDO
a. I2C
i. SDOM Magnetometer Address Select: LSb M de
I2C
ii. SDOAG LSb AG de I2C
b. SPI
i. SDOM Magnetometer MISO: Data Output
ii. SDOAG Accel/Gyro MISO: Data output.

Communication
Usando I2C

1 Selecciona I2C al tener CS_AG y CS_M en HIGH


2 Selecciona la I2C address al poner en LOW o HIGH los pines
de SDO_AG y SDO M
3 Conectar SCL de componente a SCL de MCU
4 Conectar SDA de componente a SDA de MCU
La tarjeta ya tiene un Pull Up resistor de 10K en SDA y SCL, si
es muy grande esta resistencia puedes poner un resistor en
paralelo para bajarla.

Hardware Assembly (Dimensions)


Los pines de interrups

No son crticos a la hora de conectar, pero ellos sacan lo ms


del chip.
Accel y Gyro
INT1 y 2:
Programables para interrumpir como Active HIGH o Active
LOW
Se activan en eventos de Data Ready o al exceder ciertos
lmites.
Magnetometer
DRDY:
Ira LOW cuando nueva info de magnetmetro este disponible
INTM:
Se activa cuando se supera un lmite

Los Jumpers

Su propsito es poner el chip automticamente en I2C


Por default (Cerrados)
SJ1: Pone Chip en I2C mode
SJ2: Pone Address de I2C
SJ3: Pone Pull up resistors a SDA y SCL
Lo anterior permite que si usas I2C en el Breakout,
puedes ignorar los 4 pines de SDO y CS, si usas SPI
entonces los usars.
Se pueden quitar sin problemas los canales que comunican los
3 cuadritos en cada grupo con una navaja, pero no es
necesario hacerlo pues puedes usar SPI sin quitarlos.

Hardware Hookup (I2C & SPI Wiring)

Si usas I2C sin interrups solo soldas los 4 pines de la


izquierda.
Dado que mide movimiento, el breakout posee 4 orificios para
fijarlo, el diametro de esos orificios es 0.13

Using the Arduino Library (install the Arduino library, &


example)
Basic I2C programm
* How to create a LSM9DS1 object, using a constructor (global
variables section).
* How to use the begin() function of the LSM9DS1 class.
* How to read the gyroscope, accelerometer, and magnetometer
using the readGryo(), readAccel(), readMag() functions and
the gx, gy, gz, ax, ay, az, mx, my, and mz variables.
* How to calculate actual acceleration, rotation speed,
magnetic field strength using the calcAccel(), calcGyro()
and calcMag() functions.
* How to use the data from the LSM9DS1 to calculate
orientation and heading.

Tu localizacin:
Ve Compass app en la parte de abajo encontraras tu locacin en grados, minutos
segundos.
Casa:
19 17 36 N = 19.2933
99 8 23 W = 99.1397
Conversin:
1 = 60 min = 3600 seg

Magnetic Declination
http://www.ngdc.noaa.gov/geomag-web/?
model=WMM&lon1=998%2723%27%27&startYear=2015&startDay=24
&lat1Hemisphere=N&resultFormat=pdf&browserRequest=true&startMo
nth=10&lat1=1917%2736%27%27&lon1Hemisphere=W&fragment=de
clination#declination
El ngulo entre el true north y la horizontal trace del local magnetic field.

Ng is geographic or true north,


Nm is magnetic north,
is magnetic declination
it can be:
"Positive" (or "easterly", east of true north)
"Negative" (or "westerly", west of true north)

SparkFun Photon RedBoard

Board Overview (components and features)

Power Header, External Supply and USB

Pin
Label

Nominal Voltage

Voltage
source

Current Output
Limit

3.3V

3.3V

3.3V regulator

800mA

output
V-USB

4.8V (5V minus a


diode drop)

USB

500mA (fused)

VIN

4.5-15V

Barrel Jack

Depends on external
supply

Analog Pins cant stand 5V as input.


Pins

Como trabaja a 3.3V:


Los I/O pins trabajan a 3.3V (HIGH=3.3V, LOW=0V)
Mucho cuidado con inputs de 5V, no todos los pines lo
soportan.
En rojo oscuro: Cuidado al conectar!
En morado: Son duplicados, no los puedes usar como
inputs si los estas usando para comunicacin (SPI, I2C)
(outputs)
Pin
Label

Alterna
te
Name

Analo
gs

(ADC)

A0

A0

A1
SS

P
5V
W Digit
M
al
input
?

Digit
al
Read

Digit
al
Write

5V
Analo
g
input?

Analo
g
Read

A1

A2

Analo
g
Write

(Slave
Select)
SCK

A3
(Clock)

MISO

A4

MOSI

A5

DAC

A6

WKP

A7

TX

Tx

RX

Rx

SDA

D0

SCL

D1

D2

D3

D4

D5

D6

D7

Digital
s

LEDS

Power: Is powered my board?


D7: Attached to pin D7 for debugging
The RGB LED identifies the connectivity status of the P1
module.
LED Color

LED
activity

Device Mode

Breathing

Connected to WiFi and Particle Cloud

Cyan

Blinking

Connected to WiFi, Connecting to


Particle Cloud

Green

Blinking

Connecting to WiFi

Blue

Blinking

Listening mode (waiting for WiFi info)

Pink

Blinking

Receiving new application over-theair

Pink

Breathing

Connected in safe mode

White

Breathing

Application running, WiFi of

OrangeYellow

Blinking

DFU mode

Cyan

MODE and RESET Buttons


RESET button: Can be used to restart the Photon RedBoards
application. After pressing and releasing the button, the
Photon will begin to boot up from scratch, which means itll
have to re-connect to WiFi.
Diagnostic modes
Mode: To switch between running, safe (Wifi/Cloud connected
no app running), listening (to re-configure WiFi, check the
firmware version, or module identity while an application is
running), and DFU modes.
To place the Photon in any of those modes, begin by holding
both RESET and MODE down.
Then release RESET, while still holding MODE.
Release the MODE button to leave the Photon RedBoard in the
desired state.

Bluetooth
Protocol of wireless communication that Works with 2.4GHz

Masters, Slaves and Piconets


Piconets: Bluetooth networks
Un master puede conectarse hasta con 7 slaves, coordina, solicita y
manda informacin a los slaves
Un slave solo puede estar conectaod a un master y no puede hablar con
los otros slaves

Bluetooth Addresses and Names


Todo bluetooth tiene una direccin de 48 bit abreviada como BD_ADDR y
representada como un 12 digitos hexadecimal.
24 bits de su direccin son los ms significativos y se le llaman
Organization Unique Identifier (OUI) el cual identifica al manufacturero.
Los otros 24 bit, son visibles en otros dispositivos bluetooth.

Aqu se muestra esos 24 bit de este modulo de bluetooth , que en 12


digitos hexadecimales es: 000666422152

Los primeros 24 bit son:


000666 = es la OUI de Roving Networks el manufacturero
del mdulo.
Los siguientes 24 bit son:
422152 = La identificacin del dispositivo
Proceso de coneccin entre dos dispositivos
1. Inquiring: Para descubrir al otros dispositivo uno le da al otro un
inquiry, el que recibe, responde con su ID y posiblemente otra
informacin (su nombre, etc.)
2. Paging formar la conexin entre los dispositvos: Antes de esta
conexin, los dos dispositivos deben saber sus direcciones (ID)
3. Connection: Ya en la conexin, un dispositivo puede participar
activamenteo puede entrar en estado de sueo.
a. Active Mode
i. Dispositivo transmitiendo o recibiendo info
b. Snif mode
i. Modo de ahorro de energa, duerme y escucha
transmisiones a un determinado intervalo como 100
ms
c. Hold Mode
i. Es un snif mode pero con un tiempo determinado de
sleep, un master puede indicar a un slave que se
ponga en Hold mode

d. Park Mode
i. El estado ms inactivo, slave inactivo hasta que
master le diga que se active.

Bonding and Pairing


Bonded: Dispositivos que automticamente se conectan al estar lo
suficiente mente cerca
Para crear un Bond, se tiene que llevar a cabo un proceso de pairing.
Pairing: Proceso que requiere de autenticacin en la conexin en el que
comparten sus direcciones, nombres, perfiles y una clave para hacer
futuros bondings, esta info la guardan en su memoria.
La autenticacin puede ser el presionar un boton (audfonos bluetooth)
Compartir un nmero de 6 digitos, ping o clave alfanumrica.

Power Classes
La potencia de un dispositivo bluetooth tiene que ver con su alcance,
algunos solo trabajan en una clase y otros pueden controlar su calse,
tenemos as la siguiente tabla.

Class
Number
Class 1
Class 2
Class 3

Max Output Power


(dBm)
20 dBm
4 dBm
0 dBm

Max Output Power


(mW)
100 mW
2.5 mW
1 mW

Max
Range
100 m
10 m
10 cm

Perfiles Bluetooth
Protocolo adicional que ayuda a el Bluetooth a definir que tipo de info se
esta transmitiendo y como ser usada.
Para ser compatibles, los dispositivos bluetooth tienen que poseer los
mismos perfiles: Headset profile (HSP), Human Interface Device (HID),
etc.

More commonly enconuntered Bluetooth profiles


Serial Port Profile (SSP)
Remplaza sin problemas a la comunicacin Serial (cables RS 232)
Es bueno para enviar mucha info entre dos dispositivos

Es tal cual un TX y RX pero inalmbrico

Human Interface Device (HID)


Reemplaza a la conexin USB (ms compleja)
Es el tipo de perfil apropiado para teclados, ratones, joysticks, PS3
Controllers etc.
Hands Free Profile (HFP) y Head Set Profile (HSP)
Manda audio de ida y de regreso
Advance Audio Distribution Profile (A2DP)
Transfiere audio de un dispositivo a otro en una sola direccin pero con
mucha ms calidad.
Es comn su uso de MP3 a Bocina bluetooth.

Audio/Video Remote Control Profile (AVRCP)


Es el A2DP pero expandiendo a que la bocina (o lo que recibe input) de
ciertos comandos a la fuente, en el caso de una bocina (auricular) que
pare, rebobine, adelante, pase a siguiente cancin, volumen etc.

Versiones de Bluetooth
1. Versin 1.2 (la ms estable de las versiones 1), alcance de 10
metros, trasferencia de 1Mbps
2. Versin 2.1 (ms estable de las versiones 2), mejora su
transmisin a 2.1Mbps e introduce SSP Secure Simple Pairing.
3. Version 3, mejora su transmisin a 24 Mbps, (que es realidad es
por Wifi, bluetooth solo establece la conexin y la maneja),
aquellas versin 3 + HS tiene la capacidad de usar Wifi para
obtener los 24 Mbps, aquellos que solo tienen versin 3, se limitan
a 3Mbps en transmisin.
4. Versin 4: Versin Low Energy o BLE, separa en categoras de
Clsico, alta velocidad y baja velocidad, las cuales llaman a las

versiones anteriores de bluetooth. Sacrifica distancia y transmisin


por bajo consumo de energa. (50m y 0.27 Mbps)

BC118 BLE Mate 2


No posee capacidad de conectividad Serial

1. 6-pin FTDI Basic compatible serial header - This header


has the same pinout as that of an FTDI Basic board; its
meant to connect to a client device such as an Arduino
Pro. Weve provide two rows of pins to make multiple
connections to these pins (e.g. to snif the signals for
troubleshooting) easier.
2. LED0 and LED1 - These LEDs display information about
the current state of the module. These LEDs reflect
the logical state of the module, and a reset of the
module may be needed before the settings take efect.
LED 0
Blue
BLINK
OFF

LED 1
Red
OFF
BLINK

ON

OFF

OFF

ON

ON

ON

Status
Scanning
Advertising
Connected
Central
Connect
Peripheral
Idle

3. LEDs jumper - this jumper ships closed with solder; clear


the jumper to disable the LEDs and save some current
for low-power situations.
4. INP jumper - this jumper connects the voltage input pin
on the 6-pin header to the 3.3V regulator on the BLE
Mate 2. It can be cleared to remove the regulator from
the circuit and save current.
5. REG jumper - clearing this jumper will break the
connection between the output of the 3.3V regulator and
the supply of the BC118 module.

6. GPIO headers - All the pins on the BC118 are broken out
to these pins, as are power and ground.
Hardware Connection
6-pin Serial Header

1. DTR - Connected only to the other DTR pad. This pin can
be connected to PIO5 to provide a DTR output to the
client device; that signal will be at a voltage determined
by the supply voltage of the BC118 module and so may
not be adequate to drive the reset signal on an Arduino.
2. RXI - Data IN from the client device.
3. TDO - Data OUT from the BC118 device. Shifted up to
the level on the VCC pin of this header.
4. VCC - Connected to the INP jumper (see below).
5. CTS (Clear to Send) - Connected only to the other CTS
pad. Can be connected to PIO6 to provide an RTS signal
to the BC118. That signal must not exceed the supply
voltage of the BC118 module.
6. GND - Negative supply rail for the entire module.

GPIO Headers (General-purpose input/output no special


purpose go unused by default)

AIO2 - By default, this is an analog input, which can be read


by sending the command AIO 2 to the module. The module
will respond with the voltage on this pin, in mV. If the ACFG
parameter is ON, this pin will reflect the modules state:
HIGH if the module is connected or LOW if the module is not.

AIO1 - Default function is same as AIO2. If the ACFG


parameter is ON, pulling this pin HIGH will enable
transparent mode, causing data presented to the RX pin to be
sent verbatim (Word by word) to any connected device.

AIO0 - Default function is same as AIO2. If ACFG is ON,


this pin determines the modules role at boot time. If the
signal is HIGH, the module will boot into Central mode. If LOW,
Peripheral mode.

P3 - GPIO3. Default is to either mirror from or mirror to


another connected device. More on this later.

P4 - LED0 output.

P8 - By default, exit transparent mode. Can be configured as


an IO pin for mirroring by setting the GPIO parameter to
OFF

WK - Dependent upon the WAKE and WLVL parameters,


this pin can be used to wake the device from hibernation.

VIN - This pin connects to the INP jumper. More on this below.

GND - Ground for the entire circuit.

P5 - When parameter FCTR is ON, this will be a CTS (Clear


to Send) output from the BC118.

P6 - When parameter FCTR is ON, this will be an RTS


(Request to Send) input to the BC118.

P7 - GPIO7. See P3 above.

P11 - GPIO11. See P3 above.

P9 - LED1 output.

P10 - GPIO10. See P3 above.

P2 - Not currently enabled.

VDD - This pin ties directly to the supply rail of the BC118. It
must be kept between 1.8V and 4.3V to avoid damage
to the module.

GND - Ground for the entire circuit.

BC118 Concepts
Posee un custom BLE profile (to take into account when designing an
app)
Ser slo fcil conectarse a otros BC118
En genral: Al cambiar settings en el BC118, tendrs que guardar los
cambios en su memoria y luego resetear el mdulo antes de que entren
en efecto.
Si hay dudas, Write/Reset es la forma de estar seguros.
Para conectar a otros dispositivos, el BC118 debe estar en Central Mode
y escaneando.

Communication With the Module


Hay dos tipos de transacciones que el usuario puede iniciar:
Commands
Setting/getting parameters.