Hola querida comunidad, estoy montando una pequeña estación meteorológica con arduino usando el sensor BME280.
He intentado trabajar con dos arduinos un mega y un UNO cada uno con un sensor pero el arduino UNO no tiene suficiente memoria para un BME280, SD, LCD y RTC DS3231 y el dinero no alcanza para costear otro mega.
Los sensores que tengo solo tiene la direccion I2C 0x76 asi que por ahi tampoco puedo con la libreria facilitada por CACTUS.io, asi que se me ocurrio tratar de intentar con el BUS SPI, sin embargo cuando compilo el sketch me sale el siguiente mensaje:
sketch_sep30a:78:23: error: redefinition of 'Adafruit_BME280 bme'
Adafruit_BME280 bme_2 (BME_CS_8, BME_MOSI_7, BME_MISO_6, BME_SCK_5); // software SPI
^
C:\Users\Percy\AppData\Local\Temp\arduino_modified_sketch_943371\sketch_sep30a.ino:39:15: note: 'Adafruit_BME280 bme' previously declared here
#define bme_1 bme
^
C:\Users\Percy\AppData\Local\Temp\arduino_modified_sketch_943371\sketch_sep30a.ino:50:17: note: in expansion of macro 'bme_1'
Adafruit_BME280 bme_1 (BME_CS_4, BME_MOSI_3, BME_MISO_2, BME_SCK_1); // software SPI
^~~~~
C:\Users\Percy\AppData\Local\Temp\arduino_modified_sketch_943371\sketch_sep30a.ino: In function 'void printValues_1()':
sketch_sep30a:214:37: error: 'SEALEVELPRESSURE_HPA' was not declared in this scope
Serial.print(bme_1.readAltitude(SEALEVELPRESSURE_HPA));
^~~~~~~~~~~~~~~~~~~~
C:\Users\Percy\AppData\Local\Temp\arduino_modified_sketch_943371\sketch_sep30a.ino:214:37: note: suggested alternative: 'SEALEVELPRESSURE_HPA_1'
Serial.print(bme_1.readAltitude(SEALEVELPRESSURE_HPA));
^~~~~~~~~~~~~~~~~~~~
Adjunto el código de trabajo (Use el código de Adafruit):
Adjunto la imagen del sensor que estoy trabajando.
Bienvenido al foro Arduino o si ya o habías hecho entonces recibe mi felicitación por algo bien posteado!!
Este tema ya ha sido respondido muchas veces.
Dispositivos SPI comparten 3 pienes MOSI, MISO, SCK pero, todos tienen un CS que puede cambiar.
Asi que dos dispositivos con la misma dirección pueden accederse usando dos CS distintos.
Crea tus objetos compartiendo los 3 pienes pero con la diferencia de usar cada un un CS distinto.
Asegúrate que los CS tengan una Resistencia pull-up de 4k7 o 10k y no tendrás problema alguno.
Buenas tardes estimado surbyte, agradezco su comentario pero no me ha quedado claro si el código que estoy trabajando esta mal estructurado o redactado, dado que el problema que tengo es que ni siquiera puedo compilar el código porque me muestra error (mostrado en la publicación inicial) razon por la cual aun no puedo ni el sketch al arduino.
No soy un experto en el tema y lo poco que se es por tutoriales asi que no puedo comprender del todo en donde radica mi error o si esto se debe a la propia biblioteca/libreria del sensor BME280 que no me permite conectar 2 sensores por mas que defina cada uno.
Cualquier aporte y/o comentario de parte de usted o de cualquier miembro de la comunidad sera bienvenido.
Hola, no sabes cuan agradecido estoy por tu ayuda. Llevaba 4 días elaborando ese sketch que he logrado comprender someramente a duras penas después de 8 meses.
Lamentablemente a pesar de obtener lecturas de los dos sensores BME280, solo uno registra valores coherentes, el otro sensor muestra valores negativos de temperatura, etc.
No se si me equivoco, pero esto podría solucionarse con interrupciones del bus SPI?. Lo malo es que este tema solo lo he visto mas no lo he estudiado o revisado aun y no se cuan beneficioso sea si se quieren obtener datos comparables entre si de los dos sensores BME280.
Adjunto captura de pantalla de los resultados obtenidos (CON ERRORES).
Sin embargo, mientras redactaba esta pregunta de casualidad moví las conexiones (no cambie ningún pin) con mi mano sin querer y se colgó el serial pero cuando volví a subir el código......se hizo la luz.
Me pregunto si ese inconveniente que tuve es por las conexiones inestables (no fijas, se mueven) o solo es temporal y de aquí a un tiempo volverá a enviar datos erróneos?.
Espero puedas disculparme por hacer muchas preguntas pero estoy emocionado y a la vez surgen muchas preguntas.
Y por ultimo me gustaría adjuntar el código final que corre dos sensores BME280 gracias al gran aporte de surbyte.
Agradecería nuevamente cualquier aporte estimado surbyte y estimada comunidad.
Lamentablemente a pesar de obtener lecturas de los dos sensores BME280, solo uno registra valores coherentes, el otro sensor muestra valores negativos de temperatura, etc.
Bien vamos a revisar a ver si se ha deslizado algun error.
No se si me equivoco, pero esto podría solucionarse con interrupciones del bus SPI?
No. No se quien te ha metido esa información pero primero, no hay interrupciones para el BUS SPI salvo las que el mismo BUS maneja para si mismo que digamos mejor no meterse en ese tema.
Me pregunto si ese inconveniente que tuve es por las conexiones inestables (no fijas, se mueven) o solo es temporal y de aquí a un tiempo volverá a enviar datos erróneos?.
Si todo lo tienes armado en un protoboard y bueno sería posible que tengas fallas por malas conexiones. A mi no me gustan los protoboards y por eso jamas los uso.
Por favor, si yo te ayudo, tu me ayudas, leyendo las normas y cada vez que adjuntes una imagen usas la explicación Complementaria que te dice como hacer que las vuelvas visibles para todos. Ahora ve de nuevo a las normas del foro y al final dice COMPLEMENTARIO como... Gracias