Мой ESP8266-01 распознает датчик TSL2561 , но показания всегда выводятся 65535
по какой-то странной причине. Но, как я уже сказал, когда я запускаю сканер I2C и подключаю провод, я вижу, что датчик выскакивает на0x39
.
Когда я подключаю тот же датчик к прорыву ESP8266 NodeMCU и прошиваю там тот же код, он считывает его очень хорошо. Я подключил провода, как показано ниже, без каких-либо резисторов или чего-то промежуточного.
| ESP8266-01 | TSL25611 |
|------------|------------|
| VCC (3.3V) | VCC (3.3V) |
| GND | GND |
| GPIO2 | SCL |
| GPIO0 | SDA |
Я не уверен, что я делаю неправильно, хотя.
Мой код:
#include <Wire.h>
#include <ESP8266WebServer.h>
#include <TSL2561.h>
const char *ssid = "Wouter's Place";
const char *password = "";
ESP8266WebServer server(80);
TSL2561 tsl2561(TSL2561_ADDR_FLOAT);
void handleRoot() {
// Read illuminance
float visible = tsl2561.getLuminosity(TSL2561_VISIBLE);
float full = tsl2561.getLuminosity(TSL2561_FULLSPECTRUM);
float ir = tsl2561.getLuminosity(TSL2561_INFRARED);
String response = "";
response += "{\"illuminance\":{";
response += "\"visible\":";
response += visible;
response += ",\"full\":";
response += full;
response += ",\"ir\":";
response += ir;
response += "}";
response += "}";
server.send(200, "application/json", response);
}
void setup(void)
{
Wire.begin(0, 2);
Serial.begin(9600);
Serial.println();
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
Serial.print("Connecting to: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(250);
Serial.print(".");
}
Serial.println();
Serial.print("Connected to wifi, ip: ");
Serial.println(WiFi.localIP());
Serial.println("Setting up TSL2561..");
if (!tsl2561.begin())
{
Serial.println("Could not find TSL2561 sensor, check wiring!");
while (1);
}
Serial.println("Starting server..");
server.on("/", handleRoot);
server.begin();
Serial.println("Web server running!");
}
void loop()
{
server.handleClient();
}
Результирующий вывод:
{
"illuminance":
{
"visible": 0,
"full": 65535
"ir": 65535
}
}
Нашел ошибку, немного подумав о том, что упомянул @DoxyLover! Этих двух строк остатка кода здесь быть не должно. По-видимому, светодиод по умолчанию на ESP-01 — это GPIO2 (это один из контактов I2C, которые я использую).
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
пользователь103380
джсотола
ДоксиЛовер
воутердс