Соединение ESP8266 + TSL2561 I2C

Мой 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
  }
}
Схему можешь выложить? Я не могу сказать, что вы подключили в своем видео.
пожалуйста, выложите код, а не ссылку на код
Просто для комментария 65536 - это 16 бит всех единиц. Поскольку линия данных I2C имеет высокий уровень простоя, это, вероятно, означает, что ведомое устройство не отвечает.
@DoxyLover спасибо, прочитав выше, я начал думать об этом и еще раз просмотрел свой код только для того, чтобы найти довольно очевидную ошибку.

Ответы (1)

Нашел ошибку, немного подумав о том, что упомянул @DoxyLover! Этих двух строк остатка кода здесь быть не должно. По-видимому, светодиод по умолчанию на ESP-01 — это GPIO2 (это один из контактов I2C, которые я использую).

pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);