MÓDULO BLUETOOTH (3 / 3 paso)

Paso 3: Código:-

Parámetros serie: COM11 9600 8 N 1

\r o \n al final de la línea de comandos / / Bluetooth Pin 0 & 1 @ velocidad 9600 / comando estructura / / CMD RED| GREEN| AMARILLO = ON|] OFF / / CMD TMAX| SEGUNDOS = valor / CMD segundos = valor / / CMD STATUS / estado mensaje estructura / / estado de RED| GREEN| YELLOW| TMIN| TMAX| SECONDS| TEMP| MUSLO = valor de inicialización de variables necesario para temperatura control flotador maxTemp = 30.0; encender led cuando temp > maxTemp int maxTempSensor = (int) ((maxTemp/100 + 5) * 204.8); Float temperatura = 0.0; maxTemp puede cambiarse más adelante, pero el programa tiene un valor predeterminado para comenzar con. maxTempSensor es la conversión de maxTemp 0-1023 gama proporcionado por el convertidor ADC Arduino; comparación de la temperatura se realizará por una rutina de interrupción que tan rápido como sea posible: es más eficiente directamente comparar entero salida polos de valor en lugar de la temperatura del flotador. Todavía queremos que informe la temperatura y el programa la guardará en la variable con el mismo nombre. Si no está familiarizado con la fórmula de conversión de temperatura, puede tener una mirada aquí. maxSeconds también se puede cambiar con el comando pero otra vez tenemos un defecto int maxSeconds = 10; Enviar mensaje de estado de cada maxSeconds las declaraciones de Pin constantes const int ledPin = 13; led de temperatura const int tempPin = A0; T36 temperatura sensor entrada analógica de pin const int led1Pin = 3; Amarillo const int led2Pin = 4; Verde const int led3Pin = 5; Variables de red utilizado en la rutina de interrupción y acceder desde fuera de ella tempVal int volátiles; volátil int segundos = 0; volátil tempHigh boolean = false; volátil statusReport boolean = false; Volátil es una palabra clave especial que impide que el compilador realiza ciertas optimizaciones: todas las variables que se modifican dentro de una rutina de interrupción y se acceden también fuera de ella deben ser declaradas como volátil para indicar que su valor puede cambiar en cualquier momento y para asegurarse de que la última, correcto, valor se lee de la memoria cuando sea necesario. Variables de la cadena de comando (que se explicará más adelante) String inputString = ""; String comando = ""; String valor = ""; Boolean stringComplete = false; La función de setup() void setup() {conexión serial //start Serial.begin(9600); Serial.Print ("Max T:"); Serial.Print(maxTemp); Serial.Print ("Sensor:"); Serial.println(maxTempSensor); inputString.reserve(50); Command.Reserve(50); Value.Reserve(50);

pinMode (ledPin, salida); digitalWrite (ledPin, LOW);

pinMode (led1Pin, salida); pinMode (led2Pin, salida); pinMode (led3Pin, salida); digitalWrite (led1Pin, bajo); digitalWrite (led2Pin, bajo); digitalWrite (led3Pin, bajo); El método de reserva de una cadena asigna el número de bytes como argumento. El código siguiente es necesario para inicializar la interrupción de temporizador y ponerlo al fuego cada segundo, el más lento puede hacer Arduino; para obtener información detallada, consulte aquí. CLI(); deshabilitar las interrupciones globales

Inicializa el Timer1 para interrupción @ 1000 mseg TCCR1A = 0; todo registro TCCR1A se establece en 0 TCCR1B = 0; mismo para TCCR1B

establecer comparar registro de partido a cuenta de temporizador deseado: OCR1A = 15624; Activar modo de CTC: TCCR1B | = (1 << WGM12); Set brocas CS10 y CS12 para 1024 prescaler: TCCR1B | = (1 << CS10); TCCR1B | = (1 << CS12); habilitar interrupción de timer compara: TIMSK1 | = (1 << OCIE1A);

SEI(); activar interrupciones globales} la rutina de interrupción del temporizador: no podemos cambiar su nombre, pero el contenido es totalmente personalizable. ISR(TIMER1_COMPA_vect) {tempVal = analogRead(tempPin);

Si (tempVal > maxTempSensor) {digitalWrite (ledPin, HIGH); tempHigh = true;} else {digitalWrite (ledPin, LOW); tempHigh = false;} El valor de la temperatura - o, como se señaló anteriormente su 0-1023 representación de entero - se lee en el sensor y se compara con del valor umbral: cuando sobre el built-in LED se enciende y tempHigh se establece en true, de lo contrario el LED está apagado y tempHigh se establece en false. Si (segundos ++ > = maxSeconds) {statusReport = true; segundos = 0;}} Recordar que la interrupción se dispara cada segundo, pero queremos que informe el estado del sistema menos con frecuencia: la variable segundos se incrementa en cada iteración hasta alcanzar los valores cuando el informe es debido; Esto se hará más adelante en el bucle principal marcando statusReport bandera. Como regla general, nunca nunca realizar alguna cosa tan lento tales datos escritura serial desde dentro de una rutina de interrupción. La función loop() interpreta y ejecuta los comandos cuando recibió, entonces informa estado si bandera es levantada por interrupción de temporizador. Para leer una cadena desde el búfer serial, loop() se basa en la función serialEvent() que se definirá al final: esta rutina se ejecuta entre cada vez loop(). No está ampliamente documentada y probablemente no se aplica a todos los modelos de Arduino; en cualquier caso, no es difícil por su contenido dentro de la cañería del lazo (ver final de paso thi). void loop() {intValue int = 0;

Si (stringComplete) {Serial.println(inputString); boolean stringOK = false; if (inputString.startsWith ("CMD")) {inputString = inputString.substring(4); En primer lugar comprobamos si la cadena recibida comienza con "CMD": Si por lo que podemos descartar los cuatro primeros caracteres, de lo contrario te después levantamos un error.

int pos = inputString.indexOf('='); Si (pos > -1) {comando = inputString.substring (0, pos); valor = inputString.substring (pos + 1, inputString.length()-1); / / mando extracto hasta excluida \n allí son dos tipos de comandos: un valor, donde encontraremos "=" separar el par variable + valor y donde el comando es una sola directiva (estado). Si "=" está presente en el pos, la cadena es se dividen en comandos (parte izquierda) y valor (parte derecha), cayendo ambos el "=" en el medio y el carácter de fin de línea al final.

Si (command.equals("RED")) {/ / rojo = ON|] ¿DE value.equals("ON")? digitalWrite (led3Pin, HIGH): digitalWrite (led3Pin, bajo); stringOK = true; } else if (command.equals("GREEN")) {/ / verde = ON|] ¿DE value.equals("ON")? digitalWrite (led2Pin, HIGH): digitalWrite (led2Pin, bajo); stringOK = true; } else if (command.equals("YELLOW")) {/ / amarillo = ON|] ¿DE value.equals("ON")? digitalWrite (led1Pin, HIGH): digitalWrite (led1Pin, bajo); stringOK = true; } Examinamos y ejecutar los comandos de LED; Tenga en cuenta que el código sólo comprueba el valor ON: Si escribes verde = ASD se interpretará como verde = OFF. No es perfecto, pero mantiene las cosas mucho más simples. stringOK = true se establece cada vez que un comando es reconocido y ejecutado para que posteriormente se indicará con comandos mal.

else if (command.equals("TMAX")) {/ / TMAX = valor intValue = value.toInt(); if (intValue > 0) {maxTemp = intValue (float); maxTempSensor = (int) ((maxTemp/100 +.5) * 204.8); stringOK = true;}} else if (command.equals("SECONDS")) {/ segundos = valor intValue = value.toInt(); if (intValue > 0) {maxSeconds = intValue; stringOK = true;}} Cuando el valor debe ser un número, tenemos que convertir y prueba es realmente un número. En el caso de MaxTemp, también se calcula el valor del sensor como se explica en la sección de definición de variables

} / / pos >-1 else if (inputString.startsWith("STATUS")) {Serial.print ("estado rojo ="); Serial.println(digitalRead(led3Pin)); Serial.Print ("estado verde ="); Serial.println(digitalRead(led2Pin)); Serial.Print ("estado amarillo ="); Serial.println(digitalRead(led1Pin)); Serial.Print ("estado TMAX ="); Serial.println(maxTemp); Serial.Print ("estado segundos ="); Serial.println(maxSeconds); Serial.Print ("estado TEMP ="); Serial.println(Temperature); Serial.Print ("estado muslo ="); Serial.println(tempHigh); stringOK = true; } / / inputString.startsWith("STATUS") si el comando es estado, el programa simplemente salidas toda la información en serie.

¿} / / stringOK inputString.startsWith ("CMD")? Serial.println ("comando ejecutado"): Serial.println ("comando no válido"); Si un comando válido o no se ha recibido la señal.

claro la cadena para la próxima iteración inputString = ""; stringComplete = false; } / / stringComplete Variable de la economía doméstica para la siguiente iteración de comando.

Si (statusReport) {temperatura = (tempVal * 0.0048828125 -.5) * 100; Serial.Print ("estado TEMP ="); Serial.println(Temperature); Serial.Print ("estado muslo ="); Serial.println(tempHigh); statusReport = false; }} Si la rutina de interrupción ha levantado la bandera statusReport, cierta información se imprime en serie y se despeja la bandera. Tenga en cuenta que el valor actual de la temperatura se calcula en este punto: por lo tanto, si emite un comando de estado entre el intervalo statusReport, obtendrás el valor de la temperatura anterior. Como se ha señalado, serialEvent() ocurre cuando una nueva información viene en el hardware serie RX. Esta rutina se ejecuta entre cada loop() agote el tiempo, así que usando retraso dentro de bucle puede retrasar la respuesta. Varios bytes de datos pueden estar disponibles. void serialEvent() {mientras que (Serial.available()) {/ / obtener el byte nuevo: char inChar = (char)Serial.read(); / / Añadir a la inputString: inputString += inChar; / / si el carácter entrante es una nueva línea o retorno de carro, fijar una bandera / / por lo que el bucle principal puede hacer algo al respecto: Si (inChar == '\n' || inChar == '\r') {stringComplete = true;}}}

Artículos Relacionados

Coche sencillo arduino usando el módulo Bluetooth HC-06

Coche sencillo arduino usando el módulo Bluetooth HC-06

La forma más sencilla de construir un coche de Arduino y controlarlo con tu dispositivo android.Paso 1: Cosas necesarias: Ordenador portátil con el software de Arduino.Cualquier Arduino. (Estoy usando a Leonardo).Dos motores de CC con llantas conecta
Modificar los valores por defecto el módulo Bluetooth HC-05 usando comandos AT

Modificar los valores por defecto el módulo Bluetooth HC-05 usando comandos AT

versiones04 de septiembre de 2013: Aparece en Hackaday.com http://goo.gl/qxvWkd01 de septiembre de 2013: Aparece en DangerousPrototypes.com http://goo.gl/K4kH9gINTRODUCCIÓNEn esta guía voy a explicar cómo utilizar Arduino para cambiar la configuració
Comprobar la salubridad del módulo Bluetooth HC-05 sin ninguna programación o arduino

Comprobar la salubridad del módulo Bluetooth HC-05 sin ninguna programación o arduino

este instructable es dar idea de cómo verificar rápidamente el módulo de Bluetooth antes de comenzar cualquier proyecto así que usted puede estar muy seguro sobre la salubridad del módulo.Este método, compruebe el módulo incluyen la sanidad de los pi
Medidor temp de Arduino/Android - módulo Bluetooth HC-06 - DHT11 & APP ANDROID

Medidor temp de Arduino/Android - módulo Bluetooth HC-06 - DHT11 & APP ANDROID

¡ Hola mundo! Hoy he hecho una aplicación para leer cualquier texto o valor del serial monitor para tu teléfono android, puede utilizar cualquier sensor que muestra valores o texto.USTED PUEDE AGREGAR CUALQUIER CÓDIGO! NO HAY NECESIDAD DE CAMBIAR EL
Cómo controlar la placa arduino con un módulo bluetooth y un teléfono con android

Cómo controlar la placa arduino con un módulo bluetooth y un teléfono con android

en este tutorial usted aprenderá cómo utilizar un módulo de bluetooth e inventor de la aplicación del MIT para crear un enlace inalámbrico de la serie entre un teléfono con android y una placa arduino.Aquí está un breve vídeo que muestra una aplicaci
EN el modo de comando del módulo Bluetooth HC-06 y HC-05

EN el modo de comando del módulo Bluetooth HC-06 y HC-05

ACTUALIZADO 18 de julio: ahora puede entrar en el modo de HC-05, utilizando una placa Arduino, (arduino uno utilizado en este tutorial)ACTUALIZADO el 7 de julio: tuve la oportunidad de probar un módulo HC06. Esta guía cubre ahora HC-06 módulo demasia
Hackear y actualizar tu sistema estéreo con un módulo bluetooth

Hackear y actualizar tu sistema estéreo con un módulo bluetooth

Tengo este amplificador estéreo que tiene un gran sonido pero sin conectividad inalámbrica.Con unos cuantos dólares y un poco de paciencia es posible que sea un sistema estéreo bluetooth gran!Paso 1: Comprar algunos componentes Se necesita:Un xs3868
Magic Wand POV mensaje pantalla con módulo Bluetooth

Magic Wand POV mensaje pantalla con módulo Bluetooth

A persistencia de la visión (POV) es un pequeño palo como instrumento que puede mostrar mensajes (palabras completas) usando sólo 5 LEDS (en este caso) que parpadea según la persistencia de la visión. Aquí brindamos la facilidad de mostrar el texto d
HC05 Divisor de tensión Módulo Bluetooth

HC05 Divisor de tensión Módulo Bluetooth

Recientemente tomé prestado un módulo Bluetooth de mi amigo, porque había perdido mina. Me di cuenta de que el módulo Bluetooth no tenía ninguna placa breakout. Así que aunque Lea las hojas de datos y encontré que esto era un HC05 y funcionó en 3.3v
Arduino - control de la casa con el Bluetooth y voz utilizando el módulo Bluetooth HC-06.

Arduino - control de la casa con el Bluetooth y voz utilizando el módulo Bluetooth HC-06.

¡Hola mundo! Hoy hice un dispositivo de control Inicio con 2 relés y un módulo Bluetoothutilizarlo como un sistema de control de voz. Puede utilizar esta aplicación para su control -> (Haga clic aquí para la aplicación) puede definir cualquier palabr
Éxito con el JY-MCU (linvor) el módulo Bluetooth

Éxito con el JY-MCU (linvor) el módulo Bluetooth

escribo este instructable porque he tenía pesadillas que esta barato, pero bien construida módulo bluetooth para trabajar.  Valió la pena el reto para ahorrarme $50 para un simple servicio de puerto serie (RS232 emulador) SPP.  Voy a entrar en el hac
Conectar el módulo Bluetooth HC-05 a Arduino

Conectar el módulo Bluetooth HC-05 a Arduino

El módulo Bluetooth HC-05 es una excelente interfaz para comunicarse con el móvil. Tiene una gran velocidad de transferencia y muy fácil de implementar.Para probar este tutorial necesitas lo siguiente:-Cualquier placa Arduino que te gusta y si no ya
Actualización de Arduino relé módulo bluetooth

Actualización de Arduino relé módulo bluetooth

Paso 1: Cómo Lista de piezas:-módulo de relé 1 canal-Attiny45/85-Módulo de bluetooth HC-05/06-Jefe del pin de algunos-Conector de pcb mini USBInfo:El programa attiny es arduino modificado un poco la aplicación SoftwareSerial.Su tan usando parseInt, p
Androino! Control de un Arduino desde tu dispositivo Android mediante un módulo bluetooth barato.

Androino! Control de un Arduino desde tu dispositivo Android mediante un módulo bluetooth barato.

Este instructable muestra cómo leer valores de los sensores de un Arduino con tu dispositivo Android mediante un dispositivo serie bluetooth baratos se puede pedir por menos de $10 en dealextreme o ebay.Este ejemplo usa Python como lenguaje de script