Termómetro de barbacoa Chef IMP: Internet-Connected (6 / 7 paso)

Paso 6: Una mirada más de cerca cómo funciona: código

Por si tienes curiosidad: vamos a echar un vistazo a lo que hace el termómetro de la barbacoa funciona!

Vamos a empezar con el código de dispositivo. Es corto y simple. Tiene dos trabajos: recoge las lecturas de temperatura y responder al pulsar un botón.

Echa un vistazo a la definición de función para getTemp().

Esta función recoge las lecturas de temperatura a intervalos regulares. El intervalo se define por una constante, el intervalo, en la parte superior del archivo. El primer getTemp lo que hace es programar para ejecutar otra vez en segundos de intervalo, por llamar a imp.wakeup (intervalo, getTemp). Horarios de una devolución de llamada; el imp puede continuar haciendo otras cosas, y en segundos de intervalo, el sistema operativo telefónicamente y nos pide que vuelva a ejecutar el getTemp.

Después programar para funcionar otra vez, getTemp lee el voltaje en el divisor de termistor, luego utiliza una curva de 2ª orden simple para estimar la temperatura. Los coeficientes de la curva de ajuste se almacenan como constantes en la parte superior del archivo (si te fijas, notarás sólo estamos usando una curva lineal de ajuste! Pero el ajuste de 2 º orden hay si quieres probarlo).

A continuación, tenemos una función que cuenta al imp qué hacer cuando es el momento de ir a dormir:

Esta función hace dos cosas: en primer lugar, configura Pin1 como un pin de activación, de manera que si se presiona el botón se activará el imp de sueño profundo. En segundo lugar, dice el imp para ir al sueño profundo para como está permitido (MAXSLEEP se define como 86396 segundos en la parte superior del archivo, este es un día menos de 4 segundos. La llamada a server.sleepfor() alerta al servidor que el dispositivo se va a dormir, por lo que el agente no tendrá que esperar a que la imp que desaparecen antes de que se da cuenta de lo que ha sucedido.

A continuación, hay una función de controlador de eventos de prensa botón:

Esta es una función interesante. Resulta que, cuando usted presione el botón en todos, el imp llama a esta función inmediatamente. El imp no espere varios segundos para ir a dormir, como se podría pensar de cómo funciona el termómetro. En cambio, el imp llama a esta función inmediatamente y espera para ver si el usuario mantiene el botón de durante tres segundos. Si lo hace, va a dormir. Si no, deja la función y vuelve a hacer lo que estaba haciendo antes.

A continuación, vemos algunas devoluciones de llamada se registran para agente eventos:

El primer controlador de aquí permite que el agente al dispositivo para ir a dormir. Mientras el dispositivo está funcionando, la guarda de agente atención a cuánta temperatura cambiar es ver y ajusta la cantidad de tiempo permitirá el dispositivo permanecer despierta antes de llamar a este evento y que el dispositivo para ir a dormir para ahorrar batería.

El segundo controlador es utilizado en ocasiones especiales. El agente no sabe automáticamente ID de dispositivo del dispositivo, pero es necesario para establecer los nombres de canal para enviar datos a Xively. Normalmente, el agente y el dispositivo arrancar juntos cuando el agente se inicia por primera vez, después de que el agente se queda en. Sin embargo, a veces el agente se reiniciará por sí mismo, tal como si usted empuja nuevo código a él. En este caso, el agente necesita una forma de pedir el dispositivo cuál es su ID de dispositivo: esta función le da una forma de hacerlo.

Después de eso, hemos terminado con las definiciones, y llegamos al punto donde se iniciará operación tiempo de ejecución cuando el dispositivo se inicia. Lo primero que el imp hace cuando lo botas es averiguar por qué arrancar. Si es debido a una activación de Pin1, el imp hace lo mismo no si presiona el botón para enviarlo a dormir - se queda aquí y espera a ver si presiona el botón. Si te dejaron ir antes de tiempo de espera de 3 segundos, el imp volverá directamente a dormir antes de que incluso se conecta a internet.

Por último, nos instanciar los objetos que necesitamos hacer nuestro trabajo y verificar con el agente, después de comenzar la lectura de la temperatura para empezar.

Echemos un vistazo al código del agente en el siguiente paso, si te interesa.

Artículos Relacionados

TempBug: termómetro conectado a internet

TempBug: termómetro conectado a internet

En enero pasado, tuvimos algunos problemas con el calor en mi oficina. Específicamente, el tipo de problemas en donde el calor no es, que suba y todavía no no encendido. Esto se encendió por más de unos días y terminó un día o dos después de que cons
Aumentar la gama de un termómetro inalámbrico de barbacoa (rev 2)

Aumentar la gama de un termómetro inalámbrico de barbacoa (rev 2)

este instructivo describe un proceso muy simple para aumentar la gama de un termómetro inalámbrico de barbacoa.Mientras que el proceso debe ser similar para casi todos los termómetros RF, el modelo específico que estoy Pirateando es un "Maverick Redi
Termómetro de tubo Nixie bargraph analógico en 13

Termómetro de tubo Nixie bargraph analógico en 13

este es un proyecto para un gráfico de barras ruso IN-13 tubo de Nixie para utilizar como un termómetro de habitación interior.Se llama "NixieTherm" y también está disponible como un recinto de incluido kit completo como se muestra en www.Nixiek
Smart termómetro Personal con Arduino

Smart termómetro Personal con Arduino

Este instructable es preparado como parte de nuestra tarea para TfCD (tecnología para el diseño de concepto) el curso en TU Delft. Se prepara el siguiente instructivo:bo Koperdraat: 4209567Karthik Mahadevan: 4501578En este instructable aprenderá a co
Hacer un termómetro digital

Hacer un termómetro digital

en este instructable, usted aprenderá cómo hacer un simple termómetro digital por menos de £10 utilizando algunos componentes simples y 1 IC.Proyecto terminado debería ser algo como esto:Paso 1: Las partesAquí está una lista de todas las piezas que n
Construir el termómetro Digital más simple!

Construir el termómetro Digital más simple!

a pesar de que un aficionado electrónico desde hace años, esta será mi primera instructable aquí!Este proyecto no es una solución permanente para un termómetro digital, pero una rápida para construir uno en caso de que usted no puede encontrar su ded
Tablero de conexión Wi-Fi ESP8266: NeoPixels, termómetro, sueño profundo, AP servidor Web config, EEPROM

Tablero de conexión Wi-Fi ESP8266: NeoPixels, termómetro, sueño profundo, AP servidor Web config, EEPROM

En el archivo adjunto zip puede leer tutoriales sobre hacer divertidas las cosas con la Junta de ESP8266 WiFi de bajo costo:Módulo Wi-Fi ESP8266 de programación de IDE Arduino.Interruptor ON/OFF luz usando su teléfono móvil sobre Wi-Fi."NeoPixels&quo
Reloj con termómetro usando Arduino i2c 16 x 2 lcd, RTC DS1307 y DHT11 sensor.

Reloj con termómetro usando Arduino i2c 16 x 2 lcd, RTC DS1307 y DHT11 sensor.

Hello! Ya ha pasado un tiempo no me he posteado nada en Instructables, pero ahora hice un simple proyecto que he visto en internet en varias formas. He conseguido crear un código con otros códigos que he encontrado en internet y tengo que decir es tr
Termómetro al aire libre de LED

Termómetro al aire libre de LED

si no quieres leer cualquier cháchara sin sentido puede sentirse libre saltar a la página dos.Estáis avisados.Durante el verano una vez más estaba buscando un divertido proyecto, que podría aprender algo de (AKA lío hasta veinte veces y corregir mis
Termómetro con LM35 de Arduino

Termómetro con LM35 de Arduino

Hola, todo el mundo!!!!!! Hoy voy a mostrarte cómo hacer un termómetro con Arduino y LM35 sensor de temperatura, construido en un protoboard y conectado con puentes (manojo de cables: D).Paso 1: Reunir las partes Esta es la lista de las piezas necesi
Arduino WiFi termómetro (con página web) - Arduino wireless

Arduino WiFi termómetro (con página web) - Arduino wireless

Lo que usted necesitaUna placa Arduino (cualquier placa compatible es aceptable).LM-35 (para utilizar con el archivo suministrado se puede utilizar DS18B20 pero tienes que convertir el código fuente respectivamente).Módulo de router WiFi HLK-RM04.Fue
PICAXE lanzador perfecto termómetro

PICAXE lanzador perfecto termómetro

A veces, tonto parece que funciona.  Estaba terminando el software para un termómetro digital con todas las piezas en la mesa de trabajo y se me ocurrió que aún no había dado ninguna consideración a un recinto.  Esto es inusual para mí ya que pido ge
Termómetro LCD - Arduino

Termómetro LCD - Arduino

Vamos a aprender cómo crear un termómetro que muestra la temperatura en un LCD!Paso 1: Hardware necesario -Un Arduino Uno-Un protoboard-Jumper cables-Un potenciómetro de 10K-Un sensor de temperatura- Y por supuesto, una pantalla LCD (pantalla de cris
Termómetro digital de ventana

Termómetro digital de ventana

Hola, mundo! Si alguien preguntara lo que hoy es la temperatura, probablemente sería capaz de decir mirando su teléfono o un termómetro de la ventana. De hecho, usted probablemente lo haría con ningún pensamiento acerca de cómo llegó a la temperatura