Paso 7: Excavación en el código
Imp los firmwares están escritos en un lenguaje orientado a objetos llamado ardilla, que se ve y se siente mucho como javascript. Ardilla corre en una máquina virtual sobre la imp OS dentro de la imp, errores de tiempo de ejecución no golpee el dispositivo fuera de línea, y usted tiene acceso a un montón de características interesantes basados en OS, como con entrada serial y fácil una línea API para establecer GPIOs o comunicarse con dispositivos periféricos.
Para echar un vistazo en todas las cosas que puede hacer en el firmware del imp, comprobar hacia fuera el imp eléctrica referencia de la API y electric imp trabajado página de ejemplos. Para ver que pines pueden hacer qué, Compruebe hacia fuera el imp pin mux.
Aquí nuestro código es bastante simple. Aquí está nuestro procedimiento operativo básico:
- Establecer algunas constantes
- Definir una clase para el sensor de temperatura
- Crear una instancia de nuestra clase para crear un objeto de sensor de temperatura
- Leer el Sensor de temperatura
- Enviar la datapoint al agente
- Horario para despertar un poco y hacerlo todo otra vez
Las constantes en las líneas 8 y 9 parecen un poco siniestras, pero son simples. Estos son los parámetros para el termistor - puede encontrar en la hoja de datos para el termistor que está utilizando. Si estás usando el termistor ligado al anterior, incluso puede guardar los parámetros ya establecidos aquí.
Líneas 20 a 71 son una definición de clase - esto es básicamente un conjunto de instrucciones de cómo hacer diferentes cosas importantes con un termistor, como leer la temperatura. Esto viene directamente de github - es una pieza bonita, modular de código por lo que fácilmente pueden ser reutilizado.
Después de eso, sólo necesitamos definir nuestra lógica de alto nivel. En las líneas 79 a 83, configuramos los dos pernos que estamos utilizando. Acuérdate de cuando construimos el dispositivo, uno de los pasadores es un pin depermitir , que permitirá que la corriente fluya a través del termistor cuando se encuentra bajo. El otro pin es nuestro pin entrada analógica, que usaremos para leer el voltaje en el termistor.
Línea 86, hacemos un llamamiento a nuestra definición de clase de principios para crear un objeto de termistor. Este objeto toma las constantes que hemos creado anteriormente y tiene métodos que nos permiten leer la temperatura en Celsius o Fahrenheit.
Líneas de 88 a 96 son donde la magia sucede, activar el sensor, tomar una lectura, envíe al agente y desactivar el sensor para ahorrar batería.
Y por último, programar un despertador en quince minutos. Vamos a ir a un sueño profundo en el tiempo, ahorro de la batería:
Es el firmware del dispositivo - echemos un vistazo al agente. Ya hemos visto parte del agente - establecemos las líneas Sparkfun clave pública y clave privada 6 y 7 del agente antes. A continuación, tenemos otra definición de la clase; éste define métodos para interactuar con un flujo de datos de Sparkfun.
Líneas 62 a 65 son algo realmente interesante de código - este es el gancho que utiliza el agente para recibir nuevos datos de temperatura del dispositivo. Esto se hace mediante el registro de un agente "callback" con agent.on. Esto, dice, "cuando el dispositivo le envía un evento llamado"temp", llame la función siguiente con los datos marcados con esa etiqueta". Mirando hacia atrás en la línea 95 del firmware del dispositivo, vemos que enviamos datos marcados "temp" con una función llamada "agent.send". Esto es donde los datos fueron!
Por último, vemos el agente hacer dos cosas cuando empieza a correr. La primera: envía un mensaje avisándonos que comenzó y está listo para recibir datos. Segundo, se crea una instancia de un objeto de secuencia de datos de Sparkfun con la clase que definimos antes, dejarnos usar los métodos de esas clases para enviar datos a Sparkfun, como viene en.
El agente no reiniciar o dormir; se inicia la primera vez el dispositivo arranca con este modelo y continúa funcionando para siempre, manejando cada datapoint nueva cuando se trata llamar a la devolución de llamada "device.on". Es el cerebro del dispositivo en la nube!
Es el firmware! Disfrute de su nuevo termómetro conectado a Internet.