Paso 2: El programa
A continuación encontrará el código completo.
Sólo algunas observaciones:
La BMP180 es una versión actualizada de la BMP085. Las bibliotecas BMP085 son compatibles con la BMP180.
AdaFruit tiene 2 versiones de la librería. Elegí la versión 1 como resultaba más fácil trabajar con. Versión 2 también requiere la instalación de la biblioteca de 'Sensor'.
En el código también presento un flotador adicional: estoy '. da la presión en "mmHg" como yo no he utilizado por ahora no hay ninguna conversión de la cadena aún y no se agrega al flujo de datos, pero agregarlo ahora debe ser tan sencillo como 1 + 1
/ * Arduino--> canal de ThingSpeak mediante el bosquejo de ThingSpeak cliente está diseñado para el Arduino Ethernet y Ethernet. Este bosquejo actualiza un canal con una analógica lectura entrada a través de la API de ThingSpeak (http://community.thingspeak.com/documentation/) utilizando HTTP POST. Arduino utiliza DHCP y DNS para una configuración simple de red. El bosquejo también incluye un perro guardián / Reset función para asegurarse de que el Arduino se mantiene conectado o recupera la conectividad después de un corte de red. Usar al Serial Monitor en el IDE de Arduino para ver comentarios detallados de la red y el estado de conectividad de ThingSpeak. Para empezar con ThingSpeak: * para registrarse para nueva cuenta de usuario - < a href = "https://www.thingspeak.com/users/new" rel = "nofollow" > https://www.thingspeak.com/users/new < /a > * Ingrese una dirección MAC en este sketch en "Configuración de red Local" * crear un canal nuevo mediante la selección de canales y luego crear nuevo canal * Introduzca la clave de API de escribir en este bosquejo bajo "Configuración de ThingSpeak" Arduino requisitos : * Arduino Ethernet Shield o Arduino Ethernet * Arduino 1.0 IDE red requisitos: * puerto Ethernet en el Router * DHCP activado en el Router * dirección MAC única de Arduino creado: 17 de octubre de 2011 por Hans Scharler (http://www.iamshadowlord.com) créditos adicionales: ejemplo bosquejos de equipo Arduino Ethernet por Adrian McEwen añadido dht11/BMP180 demostró la función de dtostrf por diy_bloke 22/11/2014 * / #include < SPI.h > #include < Ethernet.h > #include < dht11.h > #include < Wire.h > #include < Adafruit_BMP085.h > / / la biblioteca de la versión 1 #define DHT11PIN 4 / / temperatura/humedad del sensor Adafruit_BMP085 bmp; dht11 DHT11; Configuración de red local bytes mac [] = {0xD4, 0x28, 0xB2, 0xFF, 0xA0, 0xA1}; Deben ser únicos en redes locales / / configuración de ThingSpeak char thingSpeakAddress [] = "api.thingspeak.com"; String writeAPIKey = "REPLACE_THIS_BY_YOUR_API_BUT_KEEP_THE_QUOTES"; const int updateThingSpeakInterval = 16 * 1000; Intervalo de tiempo en milisegundos para actualizar ThingSpeak (número de segundos * 1000 = intervalo) / / de configuración Variable largo lastConnectionTime = 0; Boolean lastConnected = false; int failedCounter = 0; Inicializar el Arduino Ethernet cliente EthernetClient cliente; void setup() {/ / Inicio serie para la depuración en el Serial Monitor Serial.begin(9600); / / iniciar Ethernet en Arduino startEthernet();} void loop() {/ leer valor de pines de entrada analógica 0 cadena analogPin0 = String(analogRead(A0), DEC); / / actualización respuesta a Serial Monitor de impresión si (client.available()) {char c = client.read(); Serial.Print(c); } //---DHT11---int chk = DHT11.read(DHT11PIN); char t_buffer [10]; char h_buffer [10]; Float t=(DHT11.temperature); String temp=dtostrf(t,0,5,t_buffer); Serial.Print(Temp); Serial.Print(""); Float h=(DHT11.humidity); String humid=dtostrf(h,0,5,h_buffer); Serial.println(humid); ---BMP180---bmp.begin(); flotador p = (bmp.readPressure () / 100.0); //this es para presión en hectoPascal float m=(bmp.readPressure()/133.3); / / esto es para la presión en mmHG float t2=(bmp.readTemperature()); char p_buffer [15]; char t2_buffer [10]; String pres=dtostrf(p,0,5,p_buffer); String temp2=dtostrf(t2,0,5,t2_buffer); Serial.println(Pres); } / /---/ / Desconecte de ThingSpeak si (! client.connected() & & lastConnected) {Serial.println("...disconnected"); Serial.println(); Client.STOP(); } / / Actualiza ThingSpeak si ()! client.connected() & & (millis() - lastConnectionTime > updateThingSpeakInterval)) {updateThingSpeak ("Campo1 ="+ temp +"& Campo2 ="+ humedad +"& field3 ="+ pres +"& Campo4 =" + temp2);} / / comprobar si Arduino Ethernet necesita ser reiniciado si (failedCounter > 3) {startEthernet();} lastConnected = client.connected(); } void updateThingSpeak (String tsData) {si (client.connect (thingSpeakAddress, 80)) {client.print ("POST /update HTTP/1.1\n"); client.print ("Host: api.thingspeak.com\n"); client.print ("conexión: close\n"); client.print ("X-THINGSPEAKAPIKEY:" + writeAPIKey + "\n"); client.print ("Content-Type: aplicación/x--www-form-urlencoded \n"); client.print ("Content-Length:"); Client.Print(tsData.length()); Client.Print("\n\n"); Client.Print(tsData); lastConnectionTime = millis(); Si (client.connected()) {Serial.println ("conexión a ThingSpeak..."); Serial.println(); failedCounter = 0; } else {failedCounter ++; Serial.println ("conexión a ThingSpeak fallada ("+ String(failedCounter, DEC) +")"); Serial.println(); }} else {failedCounter ++; Serial.println ("conexión ThingSpeak fracasado ("+ String(failedCounter, DEC) +")"); Serial.println(); lastConnectionTime = millis(); }} void startEthernet() {client.stop(); Serial.println ("Conectando Arduino a la red..."); Serial.println(); Delay(1000); Conectar a red amd obtener una dirección IP usando DHCP Si (Ethernet.begin(mac) == 0) {Serial.println ("no DHCP, reset Arduino para intentarlo de nuevo"); Serial.println(); } else {Serial.println ("Arduino conectado a la red mediante DHCP"); Serial.println(); } delay(1000); }