Paso 4: Paso 4: el código
Así que estoy seguro en este momento la mayoría de ustedes está familiarizada con el IDE de Arduino. Utilizaremos subir nuestro código de comprador tiempo a Arduino. He conectado una versión limpia y documentada del código a este paso, pero vamos a ir un poco sobre él (no laborioso, sólo lo suficiente para usted entender lo que está sucediendo).
La primera parte del código es nuestro #defines, sólo para hacer la vida un poco más fácil. También tenemos algunas variables en la parte superior que nos ayudan a analizar los datos un poco más fácil.
Setup() función
Aquí vamos, esto es cómo conectar nuestro ESP a nuestro Arduino. Había reservado algo de espacio en la parte superior de la respuesta de la cadena. Esto es un asimiento de una iteración anterior del código que había repetido pila accidentes porque la. JSON simplemente había abrumado mi micro pequeño. Probablemente puede lanzar esta línea de código hacia fuera, guardó. Después de eso ves arranque una I2C (TWI, alambre, SMB, lo que sea...) conexión. Esto es donde realmente se va mis datos. Luego viene el Serial. Esta es la conexión con el ESP, observe la velocidad de 115200 baudios. Eso es SUPER importante hacer bien, de lo contrario tu Arduino habla inglés y el ESP habla cantonés y todo el mundo está confundido. Se dará cuenta de que los comandos AT son, que te dije que sería importantes! El código comprueba en primer lugar para asegurarse de que el dispositivo está listo realizar un restablecimiento de software y a la espera de la ESP responder. Después establece el ESP en modo de estación y permitir conexiones múltiples. Podemos conectarnos a múltiples APs, pero para nuestro uso ahora sólo utilizaremos una de las conexiones. Es decir tras un intento de conectarse a la WiFi (función siguiente observamos). Una vez tenemos correctamente (con suerte) conectado a la WiFi que empuje y conectar con nuestro anfitrión (en este caso Wunderground).
connectWiFi() función
Esta función es las carne y las patatas de nuestro código. Así que lo que tenemos aquí es un comando (AT + CWJAP) que está diciendo nuestra ESP a un punto de acceso. Es seguido por el AP SSID y la contraseña. Si el ESP devuelve "OK" luego nos hemos con éxito unido a la AP. Si no, la conexión falló. Si estás usando un MEGA u otro microcontrolador multi serial que puede establecer hasta enviar la PC mensajes de lo que está sucediendo. Estoy enviando mis datos sobre I2C a una FPGA, por lo que sólo arrojó las respuestas.
Loop() función
Esta es la última porción importante del código. Esta área se conecta a la API de tiempo subterráneo y descarga los datos. Una vez que el ESP comienza a enviar datos de vuelta nos empuje en la variable de la cadena de respuesta que declaró anteriormente. Capturé los datos línea a línea (empezando y terminando con), y buscó los datos que necesitaba (temp_f y tiempo). Esto mantiene la cantidad de datos que tienda/análisis en hasta un mínimo de tiempo que uno trata de Arduino.
Otras funciones
La mayor parte de este código está bastante bien documentado, así que usted debe poder averiguar lo que está sucediendo en el resto de él. Voy a través y busca temp_f y tiempo. Luego convertir esos valores en bytes a enviar a mi FPGA (manteniendo el tamaño mínimo). Había convertido el tiempo en un valor de 1 byte. Esto me da hasta 256 códigos de tiempo diferentes. Entonces utilicé un método sencillo para convertir de binario codificado Decimal a la temperatura y envíe a la FPGA en 2 paquetes de 1 byte (total en una pantalla de siete segmentos de 4 dígitos).
Créditos
Este código vino parcialmente de mi propio trabajo y parcialmente de la de los demás. No recuerdo todas las fuentes que extraer ideas y código de, pero si alguno de ustedes pasar a otro trabajo que se ve así, me dejan saben. Me encantaría dar el crédito donde es debido.