Le serveur Web Super Simple Arduino météo (4 / 5 étapes)

Étape 4: Pression barométrique

Nous avons ajouté la BMP-085 / point de BMP180 capteur de pression barométrique et les calculs pour l’indice de chaleur et de la rosée. Le capteur de pression barométrique a 4 connexions, SDA (A4), SCL (A5), Gnd et VIN (5V). Voir http://arduinotronics.blogspot.com/2014/02/sensing-barometric-pressure.html pour plus de détails.

Le Adafruit BMP-180 est indiqué ci-dessous, mais ont également testé avec le ICStation BMP-085. Aucune modification de code ou circuit. Voir http://arduinotronics.blogspot.com/2014/02/icstation-5v-bmp-085-pressure.html

Voici le code avec tous les ajouts :

#include < Wire.h >
#include < Adafruit_BMP085.h >

flotteur de Tc = 0 ;
flotteur Tf = 0 ;
flotteur Pa = 0 ;
flotteur InHg = 0 ;
flotteur Am = 0 ;
flotteur Af = 0 ;

#include « DHT.h »

#define DHTPIN 2 / / quelle broche nous sommes connectés à

Décommentez peu importe le type que vous utilisez !
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)

Connecter la broche 1 (à gauche) du capteur à + 5V
Relier la broche 2 du capteur à tout ce qui est votre DHTPIN
Relier la broche 4 (à droite) du capteur au sol
Connecter une résistance de 10K de la broche 2 (données) à la broche 1 (puissance) du capteur

DHT dht (DHTPIN, DHTTYPE) ;

flotteur tF ;
flotteur dP ;
flotteur dPF ;

#include < SPI.h >
#include < Ethernet.h >

Entrez une adresse MAC et l’adresse IP de votre contrôleur ci-dessous.
L’adresse IP sera tributaire de votre réseau local :
la mac de Byte [] = {}
0X90, 0xA2, 0xDA, 0 x 00, 0 x 23, 0 x 36} ;
IPAddress ip(192,168,254,177) ;

Initialiser la bibliothèque de serveur Ethernet
avec l’adresse IP et le port que vous souhaitez utiliser
(le port 80 est par défaut pour HTTP) :
EthernetServer server(80) ;

Adafruit_BMP085 bmp ;

void setup() {}
Ouvrez la communication série et attendez de port à ouvrir :
Serial.Begin(9600) ;

Si (! bmp.begin()) {}
Serial.println ("ne pourrait pas trouver un capteur BMP085 valide, vérifiez le câblage!") ;
tandis que (1) {}
}

while (!. {Série)
; attendre pour port série pour se connecter. Nécessaire uniquement pour Leonardo
}

DHT.Begin() ;

Démarrez la connexion Ethernet et le serveur :
Ethernet.Begin (mac, ip) ;
Server.Begin() ;
Serial.Print ("serveur est à") ;
Serial.println(Ethernet.localIP()) ;
}

void loop() {}

Serial.Print ("température =") ;
Serial.Print(BMP.readTemperature()) ;
TC=BMP.readTemperature() ;
TF = ((Tc*9)/5) + 32 ;
Serial.Print(TF) ;
Serial.println ("* F") ;

Serial.Print ("pression =") ;
Serial.Print(BMP.readPressure()) ;
PA=BMP.readPressure() ;
InHg = Pa * 0.000295333727 ;
Serial.Print(inHg) ;
Serial.println ("en Hg ») ;

Calculer en supposant « standard » barométrique d’altitude
pression de 1013,25 millibars = 101325 Pascal
Serial.Print (« Altitude = ") ;
Serial.Print(BMP.readAltitude()) ;
AM=BMP.readAltitude(101550) ; ajusté pour altitude locale
AF = h * 3.28084 ;
Serial.Print(AF) ;
Serial.println ("pieds") ;

vous pouvez obtenir une mesure plus précise de l’altitude
Si vous connaissez le niveau actuel de la mer qui aura la pression
varient avec les conditions météorologiques et autres. Si c’est 1015 millibars
qui est égal à 101500 Pascals.
Serial.Print (« altitude réelle = ") ;
Serial.Print(BMP.readAltitude(101500)) ;
Serial.println ("m") ;

Serial.println() ;

Lecture de température ou humidité prend environ 250 millisecondes !
Lectures du capteur peuvent également être jusqu'à 2 secondes « ancienne » (c’est un capteur très lent)
flotter h = dht.readHumidity() ;
flotteur t = dht.readTemperature() ;

vérifier si les retours sont valables, s’ils sont NaN (pas un nombre), puis quelque chose s’est mal passé !
Si (isnan(t) || isnan(h)) {}
Serial.println ("Impossible de lire de DHT") ;
} else {}
Serial.Print ("humidité:") ;
Serial.Print(h) ;
Serial.Print ("\t %") ;
Serial.Print ("température:") ;
Serial.Print(t) ;
tF = ((t*9)/5) + 32 ;
Serial.println ("* C") ;
}

écoute des clients entrants
EthernetClient client = server.available() ;
Si {(client)
Serial.println ("nouveau client") ;
une requête http se termine par une ligne vide
Boolean currentLineIsBlank = true ;
tandis que (client.connected()) {}
Si (client.available()) {}
char c = client.read() ;
Serial.Write(c) ;
Si vous avez obtenu à la fin de la ligne (a reçu un saut de ligne
caractère) et la ligne est vide, la requête http est terminée,
ainsi vous pouvez envoyer une réponse
Si (c == « \n » & & currentLineIsBlank) {}
Envoyer un en-tête de réponse http standard
client.println ("HTTP/1.1 200 OK") ;
client.println ("Content-Type : text/html") ;
client.println ("Connection : close") ;  la connexion sera fermée après l’achèvement de la réponse
client.println ("Refresh: 5") ;  Actualisez la page automatiquement toutes les 5 sec
client.println() ;
client.println ("< ! DOCTYPE HTML > ") ;
client.println ("< html >") ;

client.println ("< TABLE >") ;
client.println ("< TR >") ;
client.println ("< TD >") ;
la valeur de la DHT-11

client.Print ("humidité:") ;
client.println ("< /TD >") ;
client.println ("< TD >") ;
client.Print(h) ;
client.Print ("\t %") ;
client.println ("< /TD >") ;
client.println ("< /TR >") ;
client.println ("< TR >") ;
client.println ("< TD >") ;
client.Print ("température:") ;

client.println ("< /TD >") ;
client.println ("< TD >") ;
client.Print(t*1.8+32) ;
client.println (« ° ») ;
client.println("F") ;

client.println ("< /TD >") ;
client.println ("< /TR >") ;
client.println ("< TR >") ;
client.println ("< TD >") ;
client.Print ("pression barométrique:") ;

client.println ("< /TD >") ;
client.println ("< TD >") ;
client.Print(inHg) ;
client.println (« ° ») ;
client.println ("In.") ;
client.println ("< /TD >") ;
client.println ("< /TR >") ;

client.println ("< TR >") ;
client.println ("< TD >") ;

client.println ("Point de rosée:") ;

client.println ("< /TD >") ;
client.println ("< TD >") ;
dP = (dewPointFast (t, h)) ;
dPF = ((dP*9)/5) + 32 ;
client.println(DPF) ;
client.println (« ° ») ;
client.println("F") ;

client.println ("< /TD >") ;
client.println ("< /TR >") ;
client.println ("< TR >") ;
client.println ("< TD >") ;

client.println ("indice de chaleur:") ;
client.println ("< /TD >") ;
client.println ("< TD >") ;

client.println(heatIndex(TF,h)) ;
client.println (« ° ») ;
client.println("F") ;
client.println ("< /TD >") ;
client.println ("< /TR >") ;

client.println ("< /table >") ;



client.println ("</html >") ;
rupture ;
}
Si (c == « \n ») {}
vous commencez une nouvelle ligne
currentLineIsBlank = true ;
}
ElseIf (c! = « \r ») {}
vous avez obtenu un personnage sur la ligne courante
currentLineIsBlank = false ;
}
}
}
donner le temps de navigateur web pour recevoir les données
Delay(1) ;
fermer la connexion :
client.Stop() ;
Serial.println ("client disonnected") ;
}
}

Delta max = 0.6544 wrt dewPoint()
6.9 x plus rapide que dewPoint()
Référence : http://en.wikipedia.org/wiki/Dew_point
double dewPointFast (double celsius, humidité du double)
{
double a = 17.271 ;
double b = 237.7 ;
double temp = (a * celsius) / (b + c) + log(humidity*0.01) ;
Td double = (b * temp) / (a - temp) ;
retour de Td ;
}

double heatIndex (double tempF, double humidité)
{
double c1 =-42.38, c2 = 2.049, c3 = 10.14, c4 =-0.2248, c5 = - 6.838e-3, c6 = - 5.482e - 2, c7 = 1.228e-3, c8 = 8.528e-4, c9 = - 1.99e - 6 ;
double T = tempF ;
double R = humidité ;

double A = ((c5 * T) + c2) * T + c1 ;
Double B = ((c7 * T) + c4) * T + c3 ;
double C = ((c9 * T) + c8) * T + c6 ;

double rv = (C * R + B) * R + A ;
Retour à rv ;
}

Articles Liés

Super simple arduino 10-step séquenceur

Super simple arduino 10-step séquenceur

Ce séquenceur est tellement simple que j'ai besoin seulement d'une étape pour vous montrer comment ! En ce moment c'est un séquenceur de le 10 étape, mais pourrait facilement être plus juste en changeant la variable « étape » dans le code.https://Ins
Super Simple planificateur de Roomba Arduino alimenté

Super Simple planificateur de Roomba Arduino alimenté

comme la plupart des gens j'étais sceptique à propos de l'obtention d'un robot aspirateur, alors comme une marche d'essai, j'ai pensé que j'achèterais maintenant obsolète iRobot Roomba 530, qui a été fortement réduits (ils sont encore disponibles en
Serveur Web Python pour votre Raspberry Pi

Serveur Web Python pour votre Raspberry Pi

Remarque : Si vous voulez seulement un serveur web qui ne nécessite pas de Python, consultez ce tutoriel, que j'ai fait pour un serveur web super facile pour le Raspberry Pi.Vous savez certains Python de base ou vous voulez en apprendre un peu et vou
Serveur web de Arduino feu rouge

Serveur web de Arduino feu rouge

à la place je travaille, nous utilisons xymon pour surveiller nos serveurs. Tous les services surveillés sont importants, mais nous voulions un indicateur distinct pour simplement montrer la santé globale des systèmes plus critiques. En outre, nous s
Station météo DIY Arduino et Raspberry Pi et serveur web

Station météo DIY Arduino et Raspberry Pi et serveur web

Il s'agit d'un projet qui va prendre la température à l'aide de la sonde de température TMP36 IC et une carte Arduino . Ces données seront envoyées au cours de la série-le Raspberry PiConseil, modifier une page web que le Raspberry Pi est l'hôte lui-
[Domotique] Version 2: Vérifier l’étiquette RFID à l’utilisation de serveur web simple.

[Domotique] Version 2: Vérifier l’étiquette RFID à l’utilisation de serveur web simple.

Ce contenu est Wizwiki-W7500 + RFID-RC522 + serveur Web.IDE est compilateur de web mbed ARM.Cette mission du projet est de vérifier l'étiquette RFID à l'utilisation de serveur web simple.Etape 1: Description-Vous avez besoin de pièces liste ci-dessou
La partie de ESP8266 2 - serveur Web Arduino

La partie de ESP8266 2 - serveur Web Arduino

Dans mon précédent instructable The ESP8266 partie 1 - Module WIFI série pour Arduino, j'ai tenté de décrire ce qui est, comment faire pour se connecter, tester et configurer le ESP8266 (appelons-le ESP pour faire court). Ici, nous ferons une vue d'e
Comment : connecter votre Arduino à Internet comme un serveur Web

Comment : connecter votre Arduino à Internet comme un serveur Web

The INTERNET OF THINGS... < file d'attente éclairs et le tonnerre >C'est ce que tous les enfants cool font ces jours-ci. Pourquoi est-ce qu'ils devraient avoir tout le plaisir ? Nous allons configurer un Arduino comme un serveur Web que n'importe qu
Framboise serveur Web envoie des données GET à l’Arduino Nano conduite 6 servos

Framboise serveur Web envoie des données GET à l’Arduino Nano conduite 6 servos

http://www.youtube.com/watch?v=f7oSqLO9iJoIl s'agit d'un petit projet que j'ai fait pour une collègue qui est la construction d'un modèle échelle 1/48 RC d'une classe Fletcher Destroyer (Eh oui... qui rend le « modèle » environ 8 pieds de long!) Il a
LES DÉBUTANTS SUPER SIMPLE ROBOT II (ARDUINO UNO VER.)

LES DÉBUTANTS SUPER SIMPLE ROBOT II (ARDUINO UNO VER.)

Ce ' ible repose sur mon assez populaire SUPER SIMPLE débutants ROBOT ' ible. Après beaucoup, beaucoup de demandes de fournir une version mise à jour de Arduino, c'est ici !J'ai créé ce Instructable et son prédécesseur, pour le wannabe de robot n00by
Serveur Web Arduino avec capteurs

Serveur Web Arduino avec capteurs

Je l'ai fait pour apprendre à utiliser les capteurs.Et je veux active/désactive mon ventillator si im pas à la maison.Donc, si im pas à la maison que je peux regarder mon statut de salle.Plus tard, je veux faire la notification par courrier électroni
Arduino et Pi en harmonie - comme un serveur web de capteur !

Arduino et Pi en harmonie - comme un serveur web de capteur !

Cet Arduino et Raspberry Pi base de données de capteur de projet prend de l'Arduino et il envoie via USB le Raspberry Pi. Les données sont ensuite formées dans une page web sur la Pi. La page web est entièrement personnalisable. Ici, nous utilisons l
Des tableaux de bord super simple directement sur le linkit un

Des tableaux de bord super simple directement sur le linkit un

Cela a commencé comme un manque de sorte d'un port de cette idée d'un intel projet edison, j'ai commencé : Intel Edison capteur tableau de bord à l'aide de franc-bord et PythonC'est aussi peu une augmentation de cette instructable :Quand j'ai commenc
Serveur Web pour le contrôle des appareils ménagers

Serveur Web pour le contrôle des appareils ménagers

Cette instructable décrit comment faire un serveur Web simple mais puissant, utilisé pour le contrôle d'appareils électroménagers. Au coeur du circuit est le microcontrôleur ATmega328. J'ai choisi ce parce que je voulais utiliser les bibliothèques de