Utiliza sensores, módulos de RF de 433Mhz y chip de Bluefruit BLE de Adafruit para reunir datos en Smartphone con Evothings Studio (3 / 6 paso)

Paso 3: Módulo de transmisor de Arduino

Vamos a empezar haciendo los transmisores. Todos son construidos y codificados de la misma manera, la única diferencia es el número de identificación que añadimos en el código. Vamos a comenzar por cableado para arriba.

Usé el pin 2 en el Arduino para pin de datos y el pin 3 pin de datos del transmisoral receptor. El receptor tiene 2 pines de datos idénticos, basta con utilizar uno. La fotocélula es conectada al pin A0 en el Arduino. Sin embargo, necesitará usar un resistor conectado a uno de los pernos de la fotocélula. Mayoría de las veces, una Resistencia Ω de 10 k es suficiente, pero si va a utilizar en una sala brillante, puede que necesite para sustituirla por una resistencia de 1 k Ω, ya que probablemente se saturarán.

Ahora pasemos al código. Utilizaremos una librería llamada RadioHead enviar y recibido el mensaje con los transmisores/receptores de RF. El necesita es el llamado RH_ASK, que significa RadioHead Amplitude S3.wedding Kpresiente. Usted puede encontrar en este sitio web. Usted también necesitará la librería SPI (Serial Peripheral nterface) que se utiliza para la comunicación entre dos microcontroladores. No es utilizado en el código pero es necesario compilarlo.

#include < RH_ASK.h > / / Biblioteca de Radiohead para módulos de RF
#include <SPI.h > / / no se usa pero necesaria para compilar

El siguiente paso es crear el objeto RH_ASK que denominamos driver. Si no se especifica ningún parámetro, se creará con sus configuraciones por defecto que son:

  • Velocidad = 2000bps
  • Pin RX = 11 (Receive)
  • Pin de TX = 12 (Transmit)
  • Pin de PTT = 10 (Push to talk)

Como utilizo los pines 2 y 3, será especificar los parámetros. El tipo de módulos de RF que estamos utilizando no tienen la función de Ptt, por lo que pueden ignorar, a menos que conecte algo al pin 10, en cuyo caso es necesario establecer el Ptt del perno a un pin sin usar (o -1) como causar algún disturbio de lo contrario.

Controlador RH_ASK (2000, 2, 3); Ajuste el pin RX (receptor) a 2 y el pin de TX (transmisor) a 3

Aquí están las variables globales utilizadas en el código:
La variable de ambiente es número de identificación de Arduino. Necesita incrementarlo para cada transmisor Arduino se utiliza.
La variable startRequest se compone de la letra "a" seguido del número de identificación. El transmisor Arduino comparará la solicitud que reciba de la "madre" Arduino en esta cadena. Si coinciden, enviará nuevamente los datos leídos desde el sensor.
La variable photocellPin es el pin que está conectada la fotocélula.
La variable photocellReading guarda el valor leído de la fotocélula.

sala de constint = 0; Número de identificación
String startRequest = "a"String(room); Cadena de petición enviado por la "madre" Arduino

constint photocellPin = A0; Pin de fotocélula
int photocellReading; Variable para almacenar lectura de fotocélula

La parte de configuración es bastante sencilla. Necesita configurar el pin de la fotocélula a modo de entrada y, si quiere, empezar la comunicación Serial para la depuración.

voidsetup()
{
pinMode (photocellPin, entrada);

Serie.begin(9600); Para la depuración
Si (! driver.init()) / / si los módulos de RF se ha podido inicializar
Serie.println ("init error");
}

En la parte del bucle escribimos el código que se encarga de la recepción de las solicitudes y la transmisión de los datos. Empezaremos por crear un búfer largo de 2 bytes que almacenará la petición recibida. El formato de uint8_t es igual a un bytey significa entero sin signo de 8 bits de longitud. También tenemos que especificar su longitud en la variable buflen .

voidloop()
{
uint8_t buf [2]; Buffer para guardar la solicitud recibida, su tamaño se establece en 2 bytes como la petición es: "a" + String(room) (eg. a0)
uint8_t buflen = sizeof(buf);

Una vez que el receptor de RF recibe un mensaje de tamaño buflen, almacena en buf. Como el formato del mensaje es una matriz de bytes, tenemos que guardarla en una variable de cadena para comparar a la solicitud prevista. Esto se hace asignando la variable buf , precedido por (char *). Tenga en cuenta que el * significa que los caracteres creado serán punteros en bytes, que no usa cualquier almacenamiento de información adicional.

Cuando he probado esto, algunas veces recibió la petición seguida por algunos caracteres extraños que hizo imposible la comparación. Por lo tanto, mantendrá sólo los dos primeros caracteres del mensaje mediante el uso de la cadena la función substring.

Si (driver.recv (buf & buflen)) / / tras la recepción de una solicitud
{
Petición de la cadena = (char *) buf; Guardar la solicitud en una cadena de comparación
petición = request.substring (0, 2); Mensaje recibido a veces va seguido de caracteres extraños, manteniendo sólo los dos primeros
Serie.print ("Got petición:"); Imprimir la solicitud recibida para la depuración
Serie.println(request);

Ahora que tenemos nuestra petición almacenado en una variable de cadena, podemos compararlo a la solicitud de lo que esperábamos, que es startRequest que creamos al principio.

Si (solicitud == startRequest) / / si la petición coincide con la petición de inicio de este Arduino, medir los datos y enviarlo
{
Serie.println ("iniciar solicitud recibida");
Serie.println("");
Delay(150);

Si la solicitud recibida coincide con la startRequest, el Arduino tiene que devolver algunos datos. Así que empezar por leer estos datos, en este caso de la fotocélula mediante la función analogRead y almacenarlo en la variable photocellReading . Esto nos da un valor entre 0 y 1023, pero esto no es práctico para analizar como varía la longitud del valor. Por lo tanto usaremos la función map para asignar el valor a un número entre 100 y 999, que es siempre 3 dígitos.

Envío de datos
Serie.println ("enviar datos");
Serie.println("");
photocellReading = analogRead(photocellPin); Medición de luminosidad
Serie.print ("lectura de fotocélula:");
Serie.println(photocellReading); Para la depuración

Asignación de los datos a un número entre 100 y 999 para que sea siempre 3 dígitos, lo que facilita analizar la madre Arduino
int mapPhotocellReading = mapa (photocellReading, 0, 1023, 100, 999);

Una vez tengamos nuestros datos correctamente asignadas, tenemos que enviar a la "madre" Arduino. Para asegurarse de que no mezcla los datos, vamos a añadir número de identificación de la sala al principio del mensaje que enviaremos. Después de eso, crear una matriz de char (1 byte más largo que la longitud del mensaje) y usando la cadena función toCharArraycopiar nuestro mensaje.

String str = habitación + String(mapPhotocellReading); Creación de una cadena que contiene el número de habitación y de lectura para que la "madre" Arduino sepa dónde viene
datos Char [5]; Char array para almacenar la respuesta, tiene que ser 1 byte ya que la longitud de la cadena
str.toCharArray (datos, 5); Copia de cadena en matriz de char

Ahora todo lo que queda por hacer es enviar el mensaje. Esto se hace mediante el método de Enviar del objeto conductor en un mensaje en el formato de uint8_t . El método waitPacketSent se utiliza para asegurarse de que los datos se envían completamente antes de ejecutar el resto del código

driver.Send ((uint8_t *) datos, strlen(data)); Enviar respuesta
driver.waitPacketSent(); Espera hasta que el paquete de respuesta se envía completamente

Serie.print ("datos enviados:"); Para la depuración
Serie.println(data);
Serie.println("");
}
}
}

Artículos Relacionados

Arduino Nano: Temperatura y humedad DHT11/DHT21/DHT22 Sensor módulo Visuino

Arduino Nano: Temperatura y humedad DHT11/DHT21/DHT22 Sensor módulo Visuino

DTH11 / DTH21 / DTH22 y AM2301son sensores de temperatura y humedad Arduino combinados muy populares.En este Instructable, voy a mostrarles, lo fácil que es programar el Arduino para utilizarlos, con Visuino - un ambiente de desarrollo gráfico fácil
Proximidad Infrarrojo Sensor módulo de mesa de centro y brillantes de la grifería monomando

Proximidad Infrarrojo Sensor módulo de mesa de centro y brillantes de la grifería monomando

Este video se puede encontrar en youtube.http://www.youtube.com/watch?v=h5n0rw8wo14Compruebe hacia fuera el otro y algunos otros de mis videosEsto es simplemente un instructable para explicar cómo funciona este dispositivo. Espero que todo no es dema
Con sensor de huellas dactilares para presencia en combinación con xAMP solución

Con sensor de huellas dactilares para presencia en combinación con xAMP solución

Para un proyecto de la escuela, buscábamos una solución sobre cómo realizar el seguimiento de asistencia de los estudiantes. Muchos de nuestros alumnos llegan tarde. Es un trabajo tedioso comprobar su presencia. Por otro lado, hay mucha discusión por
Arduino Nano: Con DS1820/DS18S20 Maxim un termómetro Sensor módulo

Arduino Nano: Con DS1820/DS18S20 Maxim un termómetro Sensor módulo

He recibido muchas peticiones para tutorial de termómetro OneWire Maxim DS1820/DS18S20 , así que aquí está el primer tal Instructable.En la siguiente Instructables demuestro cómo trabajar con varios termómetros conectados al mismo pin, así como obten
Cómo arreglar una impresora rota sensor de puerta y bisagra (HP Officejet J6488 All-in-One - tal vez útil para otras impresoras demasiado)

Cómo arreglar una impresora rota sensor de puerta y bisagra (HP Officejet J6488 All-in-One - tal vez útil para otras impresoras demasiado)

Hola inventores, este es mi primer instructable. Espero que esto resulta útil por algunas personas como yo, que se rompieron la bisagra de la puerta de su impresora hp y lo pedazo de plástico sin uso.Esta guía Cómo corregir a una impresora rota bisag
Usando el teléfono inteligente como alarma de Sensor de movimiento

Usando el teléfono inteligente como alarma de Sensor de movimiento

Hoy en día, vivimos en un mundo donde los teléfonos inteligentes cada vez somos más cada vez más baratos, teléfono Android básico sólo cuesta alrededor de $60 en la parte del mundo donde vivo en. Independientemente de la marca y el modelo del sistema
Sensor capacitivo para Dummies

Sensor capacitivo para Dummies

Para alguien nuevo en electrónica, detección capacitiva puede ser realmente confuso. Incluso para alguien que ha estado explorando la detección capacitiva durante una semana, es todavía muy confusa. Por suerte, esto tendrá esta guía práctica que te a
SUMO: Smart pulso Monitor (un bajo coste Smart ECG)

SUMO: Smart pulso Monitor (un bajo coste Smart ECG)

Hola a todos,Soy Geeve George 15 años fabricante/electrónica Hobbyist.I amor visión por computador, desarrollo Android y algoritmo de Design.I actualmente estoy en 11 grado estudiante de informática en la escuela del indio de Little Rock. :) Encontra
Cabeza humana a la cabeza de Robot

Cabeza humana a la cabeza de Robot

Plan para hacer algo nuevo pero no tan costoso. Me gusta mucho robótica. Pero debido a la exigencia de servos y otras partes no me gusta hacerlo. Ahora tengo 4 servo motores costo sólo 13$. Ya he enlazarlo un tablero y la placa Arduino.Así que plan p
ELEGANTE banda (Intel IOT)

ELEGANTE banda (Intel IOT)

Mi idea se centra principalmente en la seguridad para las mujeres durante el acoso sexual o en situación de pánico mediante el uso de un dispositivo portátil que mide el pulso, temperatura de sangre. Durante el acoso o la situación de pánico el valor
Monitor de pote de café IoT

Monitor de pote de café IoT

A veces, un producto es tan simple, tan obvio, pregunto por qué no se ha creado todavía. Es la clase de historia... Todos los días en el trabajo, he escuchado a sinnúmero de personas quejándose de que la jarra estaba vacía. La voz colectiva del puebl
Experimentos de Arduino (Supersize Instructable)

Experimentos de Arduino (Supersize Instructable)

Las masas si no todos los experimentos de Arduino hecho a mi manera, que siendo todos de llevar a cabo experimentos diferente a la siguiente persona, como tal este instructable tendrá un montón de videos y fotos, así como descripciones detalladas de
Hacer iBeacon

Hacer iBeacon

iBeacon es una nueva tecnología descrita por Apple Inc. como "una nueva clase de transmisores de baja potencia y de bajo costo que puede notificar a cerca de los dispositivos iOS 7 u 8 de su presencia". La tecnología permite que un teléfono inte
Color Meter

Color Meter

"A diferencia de otros medidores en el mercado este proyecto utiliza Bluetooth 4.0 para comunicarse con un teléfono para que muestre las lecturas que del sensor está recogiendo".Hay mucha información sobre el color de metros disponibles en línea