Étape 2: Le programme
Ci-dessous, vous trouverez le code complet.
Juste quelques remarques :
Le BMP180 est une version actualisée de la BMP085. Les bibliothèques BMP085 sont compatibles avec le BMP180.
AdaFruit a 2 versions de la bibliothèque. J’ai pris la version 1 comme je l’ai trouvé plus facile de travailler avec. Version 2 requiert également l’installation de la bibliothèque « Capteur ».
Dans le code, je présente aussi un flotteur supplémentaire : suis '. qui donne la pression en « mmHg » que je n’ai pas utilisé de maintenant il n’y a aucune conversion de chaîne encore et il n’est pas ajouté à la datastream, mais ajoutant il devrait maintenant être aussi simple que 1 + 1
/ * Arduino--> ThingSpeak canal via Ethernet et Ethernet l’esquisse ThingSpeak Client est conçu pour l’Arduino. Cette esquisse met à jour un canal d’alimentation avec une lecture d’entrée analogique via l’API ThingSpeak (http://community.thingspeak.com/documentation/) à l’aide de HTTP POST. L’Arduino utilise DHCP et DNS pour une configuration de réseau simple. L’esquisse comprend également un chien de garde / Reset function pour s’assurer que l’Arduino reste connecté et/ou regagne connectivité après une panne de réseau. Utilisez le Serial Monitor sur l’IDE Arduino pour voir vos commentaires verbeux réseau et ThingSpeak état de la connectivité. Débuter avec ThingSpeak: * Sign Up pour le nouveau compte d’utilisateur - < a href = « https://www.thingspeak.com/users/new » rel = « nofollow » > https://www.thingspeak.com/users/new < /a > * entrer une adresse MAC dans ce sketch sous « Paramètres de réseau Local » * créer une nouvelle chaîne en sélectionnant des canaux, puis Create New Channel * entrez la clé API écrire dans ce sketch sous « Paramètres ThingSpeak » Arduino exigences : * Arduino Ethernet Shield ou Arduino Ethernet * Arduino 1.0 IDE configuration réseau requise: * port Ethernet sur routeur * DHCP activé sur le routeur * adresse MAC Unique pour Arduino créé : 17 octobre 2011 par Hans Scharler (http://www.iamshadowlord.com) des crédits supplémentaires : exemple de croquis des équipe Arduino Ethernet par Adrian McEwen ajouté dht11/BMP180 a montré dtostrf fonction de diy_bloke 22/11/2014 * / #include < SPI.h > #include < Ethernet.h > #include < dht11.h > #include < Wire.h > #include < Adafruit_BMP085.h > / / C’est la bibliothèque de la version 1 #define DHT11PIN 4 / / la température/humidité capteur Adafruit_BMP085 bmp ; dht11 DHT11 ; Paramètres du réseau local mac Byte = {0xD4, 0 x 28, 0xB2, 0xFF, 0xA0, 0xA1} ; Doit être unique sur le réseau local / / ThingSpeak paramètres char thingSpeakAddress [] = "api.thingspeak.com" ; String writeAPIKey = « REPLACE_THIS_BY_YOUR_API_BUT_KEEP_THE_QUOTES » ; const int updateThingSpeakInterval = 16 * 1000 ; Intervalle de temps en millisecondes pour mettre à jour ThingSpeak (nombre de secondes * 1000 = intervalle) / / Configuration Variable long lastConnectionTime = 0 ; lastConnected booléen = false ; int failedCounter = 0 ; Initialiser l’Arduino Ethernet Client EthernetClient client ; void setup() {/ / Start série pour le débogage sur le Serial Serial.begin(9600) moniteur; / / démarrage Ethernet sur Arduino startEthernet();} void loop() {/ / lire la valeur de la broche d’entrée analogique 0 String analogPin0 = String(analogRead(A0), DEC); / / imprimer la réponse mise à jour de Serial Monitor 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() ; flotteur p = (bmp.readPressure () / 100,0); //this est pour la pression en hectoPascal float m=(bmp.readPressure()/133.3); / / il s’agit de la pression 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) ; } / /---/ / Débrancher ThingSpeak si (! client.connected() & & lastConnected) {Serial.println("...disconnected") ; Serial.println() ; client.Stop() ; } / / Mise à jour ThingSpeak si ()! client.connected() & & (millis() - lastConnectionTime > updateThingSpeakInterval)) {updateThingSpeak ("champ1 ="+ temp +"& champ2 ="+ humide +"& field3 ="+ pres +"& field4 =" + temp2);} / / vérifier si Arduino Ethernet doit être redémarré 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 ("connexion : close\n"); client.print ("X-THINGSPEAKAPIKEY:" + writeAPIKey + "\n"); client.print ("Content-Type : application/x-www-formulaires-urlencoded \n"); client.print ("Content-Length:") ; client.Print(tsData.length()) ; client.Print("\n\n") ; client.Print(tsData) ; lastConnectionTime = millis() ; Si (client.connected()) {Serial.println ("Connecting to ThingSpeak...") ; Serial.println() ; failedCounter = 0 ; } else {failedCounter ++ ; Serial.println ("Connection to ThingSpeak a échoué ("+ String(failedCounter, DEC) +")") ; Serial.println() ; }} else {failedCounter ++ ; Serial.println ("Connection to ThingSpeak a échoué ("+ String(failedCounter, DEC) +")") ; Serial.println() ; lastConnectionTime = millis() ; Sub}} startEthernet() {client.stop() ; Serial.println ("connexion Arduino pour réseau...") ; Serial.println() ; Delay(1000) ; Se connecter au réseau amd obtenir une adresse IP via DHCP si (Ethernet.begin(mac) == 0) {Serial.println ("DHCP a échoué, reset Arduino pour essayer à nouveau") ; Serial.println() ; } else {Serial.println ("Arduino connectée au réseau via DHCP") ; Serial.println() ; } delay(1000) ; }