UNO, sensore Bmp280 ed Ethernet shield

Ciao ragazzi, ho da poco iniziato un progetto per costruire una “stazione meteo” da mettere sopra il tetto di casa mia. Ho deciso di usare UNO con un sensore dht22 e un bmp220. Ho intenzione di trasmettere i dati ad un indirizzo ip e poi vedrò di manipolarli con php o qualcosa di simile.
Sono alla fase di test con la ethernet shield, dopo aver provato tutti i sensori ed aver verificato il corretto funzionamento.
Ho iniziato con l’esempio Webserver integrato nell’ide, quindi ho inserito al posto della lettura dei valori A0–>A5 il codice per la lettura del dht22. riesco a vedere correttamente puntando all’indirizzo ip di arduino i dati di temperatura e umidità rilevati.
Per quanto riguarda il bmp220 ho problemi in quanto se provo ad inserire una qualsiasi funzione per questo sensore come bmp.readTemperature(), arduino non riesce neanche a inizializzare la rete, ne a comunicare alcun dato.
Il sensore è collegato con interfaccia I2C ai pin A4 e A5 come da sketch di esempio del sensore, unica cosa che ho dovuto fare è modificare nella libreria del sensore (adafruit_bmp280.h) l’indirizzo in 0x76.
Vi posto lo sketch che sto cercando di usare, sicuro di un vostro aiuto! Grazie :slight_smile:

/*
  Web Server

 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield.

 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)

 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 modified 02 Sept 2015
 by Arturo Guadalupi

 */
 #include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

//#define BMP_SCK 13
//#define BMP_MISO 12
//#define BMP_MOSI 11 
//#define BMP_CS 10

Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);
#include "DHT.h"

DHT dht;
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 0, 200);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  dht.setup(2); // data pin 2
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // output the value of each analog input pin

                delay(dht.getMinimumSamplingPeriod());

  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();
float temperature1= bmp.readTemperature();

  client.print(humidity);
  client.print("%  ");
  client.print(temperature);
   client.print(" °C ");
  client.println("
");
  
 client.print("Temperature = ");
   client.print(temperature1);
   client.print(" *C");
    client.println("
");
  
        //  for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
        //    int sensorReading = analogRead(analogChannel);
        //    client.print("analog input ");
          //  client.print(analogChannel);
         //   client.print(" is ");
          //  client.print(sensorReading);
          //  client.println("
");
         // }
          client.println("</html>");
          break;
 
          
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(100);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}

nel setup manca il bmp.begin()

:confused: Questo capita quando si vuole fare troppo in fretta e si ha sempre troppo poco tempo. Grazie infinite :)