Hi
im trying to connect a Bmp180 sensor to a nodemcu.
with inspiration from this post:
Hi iam sending data from BMP180 to app Blynk. But data are not correct. Temp yes but another data no:Pressure = 96579 Pa
Altitude = 402.94 meters
in my city are : Pressure = : 1032.4 hPa
Altitude = 520 meters
I useing library Adafruit_BMP085… Thank you
Code:
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
#d…
Using D5 for SCL and D6 for SDA.
tried with and without 1k resistor between VVC-SCL and VVC-SDA
It keeps rebooting:
[337] Connecting to xxxx
[3339] Connected to WiFi
[3339] IP: 192.168.0.29
[3339]
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ \/ '_/
/____/_/\_, /_//_/_/\_\
/___/ v0.4.3 on NodeMCU
[3345] Free RAM: 45056
[5001] Connecting to blynk-cloud.com:8442
[5063] <[02|00|01|00] f2b5fdd5991649a89cf14ddc22bb2132
[5107] >[00|00|01|00]ďż˝
[5107] Ready (ping: 6ms).
[5108] <[11|00|01|00]Gver[00]0.4.3[00]h-beat[00]10[00]buff-in[00]256[00]dev[00]NodeMCU[00]build[00]Jan 15 2017 14:54:47[00]
[5144] >[00|00|01|00]ďż˝
[5929] >[14]>ďż˝[00|05]
[5929] >vr[00]10
[6937] >[14]>ďż˝[00|05]
[6937] >vr[00]10
[6975] >[14]>ďż˝[00|05]
[6975] >vr[00]11
[6976] >[14]>ďż˝[00|05]
[6976] >vr[00]12
[6976] >[14]>ďż˝[00|05]
[6976] >vr[00]13
[7938] >[14]>ďż˝[00|05]
[7939] >vr[00]10
[8013] >[14]>ďż˝[00|05]
[8013] >vr[00]11
[8016] >[14]>ďż˝[00|05]
[8016] >vr[00]12
[8017] >[14]>ďż˝[00|05]
[8017] >vr[00]13
Exception (0):
epc1=0x40106da9 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: cont
sp: 3ffefe40 end: 3fff0050 offset: 01a0
>>>stack>>>
3ffeffe0: 0000007f 00ffff00 3ffeec12 40204992
3ffefff0: 00000000 3ffeec12 3ffeec12 402049e8
3fff0000: 3ffeec2c 3ffeec12 3ffeec2c 40202b7d
3fff0010: 00000000 00000000 3ffeec2c 40204509
3fff0020: 3fffdad0 00000000 3ffef020 40203691
3fff0030: 3fffdad0 00000000 3ffef020 40205360
3fff0040: feefeffe feefeffe 3ffef030 40100718
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v3de0c112
~ld
[344] Connecting to xxxx
[3347] Connected to WiFi
[3347] IP: 192.168.0.29
[3347]
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ \/ '_/
/____/_/\_, /_//_/_/\_\
/___/ v0.4.3 on NodeMCU
I’m trying with this code:
#define BLYNK_DEBUG
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
char auth[] = "f2b5fdd5991649a89cf14ddc22bbxxxx"; // Put your Auth Token here. (see Step 3 above)
SimpleTimer timer;
#define I2C_SCL 14 // D5 Barometric Pressure Sensor (BMP085)
#define I2C_SDA 12 // D6
Adafruit_BMP085 bmp;
float dst, bt, bp, ba;
char dstmp[20], btmp[20], bprs[20], balt[20];
bool bmp085_present = true;
void setup()
{
Serial.begin(115200); // See the connection status in Serial Monitor
Blynk.begin(auth, "xxxx", "xxxx"); //insert here your SSID and password
Wire.begin(I2C_SDA, I2C_SCL);
timer.setInterval(3000L, sendUptime);
}
void sendUptime()
{
float bp = bmp.readPressure();
Blynk.virtualWrite(10, bp); // virtual pin
float ba = bmp.readAltitude();
Blynk.virtualWrite(11, ba); // virtual pin
float bt = bmp.readTemperature();
Blynk.virtualWrite(12, bt); // virtual pin
float dst = bmp.readSealevelPressure();
Blynk.virtualWrite(13, dst); // virtual pin
}
void loop()
{
Blynk.run();
timer.run();
}
Hi, may be in SETUP need add code:
if (!bmp.begin()) {
Serial.println(“Could not find a valid BMP085 sensor, check wiring!”);
while (1) {}
}
tried you suggestion but this resulted in “Could not find a valid BMP085 sensor, check wiring!”
[3347] Connected to WiFi
[3347] IP: 192.168.0.29
[3347]
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ \/ '_/
/____/_/\_, /_//_/_/\_\
/___/ v0.4.3 on NodeMCU
[3353] Free RAM: 45312
[5001] Connecting to blynk-cloud.com:8442
[5043] <[02|00|01|00] f2b5fdd5991649a89cf14ddc22bb2132
[5078] >[00|00|01|00]ďż˝
[5078] Ready (ping: 0ms).
[5078] <[11|00|01|00]Gver[00]0.4.3[00]h-beat[00]10[00]buff-in[00]256[00]dev[00]NodeMCU[00]build[00]Jan 15 2017 16:08:13[00]
Could not find a valid BMP085 sensor, check wiring!
Soft WDT reset
ctx: cont
sp: 3ffefd60 end: 3ffeff50 offset: 01b0
>>>stack>>>
3ffeff10: 00000000 00000d1b 3ffeee6c 402035f1
3ffeff20: feefeffe feefeffe feefeffe 3ffeef28
3ffeff30: 3fffdad0 00000000 3ffeef20 402052b8
3ffeff40: feefeffe feefeffe 3ffeef30 40100718
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v3de0c112
~ld
I have this connection SCL - D1, SDA - D2 for my BMP180.
Bob, may I see your sketch?
found this example, and even this makes errors maybe its a defect bmp180 sensor?
from : http://www.esp8266learning.com/wemos-mini-bmp180-sensor-example.php
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
void setup()
{
Serial.begin(9600);
//Wire.begin (4, 5);
if (!bmp.begin())
{
Serial.println("Could not find BMP180 or BMP085 sensor at 0x77");
while (1) {}
}
}
void loop()
{
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" Celsius");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pascal");
Serial.println();
delay(5000);
}
Here is an example. I adapted it for NodeMCU and Blynk.
#include <Wire.h>
#include <Adafruit_BMP085.h>
// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println(“Could not find a valid BMP085 sensor, check wiring!”);
while (1) {}
}
}
void loop() {
Serial.print(“Temperature = “);
Serial.print(bmp.readTemperature());
Serial.println(” *C”);
Serial.print("Pressure = ");
Serial.print(bmp.readPressure());
Serial.println(" Pa");
// Calculate altitude assuming 'standard' barometric
// pressure of 1013.25 millibar = 101325 Pascal
Serial.print("Altitude = ");
Serial.print(bmp.readAltitude());
Serial.println(" meters");
// you can get a more precise measurement of altitude
// if you know the current sea level pressure which will
// vary with weather and such. If it is 1015 millibars
// that is equal to 101500 Pascals.
Serial.print(“Real altitude = “);
Serial.print(bmp.readAltitude(101500));
Serial.println(” meters”);
Serial.println();
delay(500);
}
Hi i useing this sketch and is good.
#define BLYNK_DEBUG
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <BH1750.h> // https://github.com/claws/BH1750
BH1750 lightMeter;
char auth[] = "75a3e91cbdf98b35eea63e9c1"; // Put your Auth Token here. (see Step 3 above)
SimpleTimer timer;
#define I2C_SCL 12 // Barometric Pressure Sensor (BMP085)
#define I2C_SDA 13
Adafruit_BMP085 bmp;
float dst, bt, bp, ba;
char dstmp[20], btmp[20], bprs[20], balt[20];
bool bmp085_present = true;
void setup()
{
Serial.begin(9600); // See the connection status in Serial Monitor
Blynk.begin(auth, "ASUS", "Jersin72"); //insert here your SSID and password
Wire.begin(I2C_SDA, I2C_SCL);
delay(10);
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
//while (1) {}
}
timer.setInterval(20000L, sendUptime);
lightMeter.begin();
}
void sendUptime()
{
uint16_t lux = lightMeter.readLightLevel();
Blynk.virtualWrite(4, lux);
float bp = bmp.readPressure()/1;
Blynk.virtualWrite(9, bp); // virtual pin
float ba = bmp.readAltitude();
Blynk.virtualWrite(7, ba); // virtual pin
float bt = bmp.readTemperature();
Blynk.virtualWrite(12, bt); // virtual pin
float dst = bmp.readSealevelPressure(520)/100;
Blynk.virtualWrite(13, dst); // virtual pin
}
void loop()
{
Blynk.run();
timer.run();
}
1 Like
Jiri_Bam
I got yours working but, you know how to set it up with a fixed altitude?
My Bmp180 will be stationary and it altitudes moves around…
see bottom of screenshot, yellow numbers
#define BLYNK_DEBUG
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <BH1750.h> // https://github.com/claws/BH1750
BH1750 lightMeter;
char auth[] = "xxx"; // Put your Auth Token here. (see Step 3 above)
SimpleTimer timer;
#define I2C_SCL 12 // D6 Barometric Pressure Sensor (BMP085)
#define I2C_SDA 13 // D7
Adafruit_BMP085 bmp;
float dst, bt, bp, ba;
char dstmp[20], btmp[20], bprs[20], balt[20];
bool bmp085_present = true;
void setup()
{
WiFi.mode(WIFI_STA);
Serial.begin(9600); // See the connection status in Serial Monitor
Blynk.begin(auth, "xx", "xxx"); //insert here your SSID and password
Wire.begin(I2C_SDA, I2C_SCL);
delay(10);
if (!bmp.begin())
{
Serial.println("Could not find a valid BMP085 sensor, check wiring!");
//while (1) {}
}
timer.setInterval(100000L, sendWifi);
timer.setInterval(20000L, sendUptime);
lightMeter.begin();
}
void sendWifi()
{
Blynk.virtualWrite(1, map(WiFi.RSSI(), -105, -40, 0, 100) );
}
void sendUptime()
{
uint16_t lux = lightMeter.readLightLevel();
Blynk.virtualWrite(4, lux);
float bp = bmp.readPressure()/1;
Blynk.virtualWrite(9, bp); // virtual pin
float ba = bmp.readAltitude();
Blynk.virtualWrite(7, ba); // virtual pin
float bt = bmp.readTemperature();
Blynk.virtualWrite(12, bt); // virtual pin
float dst = bmp.readSealevelPressure(529)/100;
Blynk.virtualWrite(13, dst); // virtual pin
}
void loop()
{
Blynk.run();
timer.run();
}
tjohansen:
altitudes
Hi. I dont use altitudes. Because BMP180 show bad value altitudes… And i dont know how fixed it… Maybye a otherwise count…
Dee
November 3, 2018, 12:53am
11
Hi can i see your connection please
Gunner
November 3, 2018, 1:34am
12
Why reopen a two+ year old topic to ask for something easily available with a little looking, searching and testing