Датчик Sparkfun CCS811 не взаимодействует с Arduino

У меня есть датчик качества воздуха в помещении Sparkfun CCS811, который необходимо подключить к Arduino. Я припаял провода к датчикам и подключил к ардуино. Проверил соединение мультиметром, так что часть работает. Но даже используя пример кода в библиотеке, я все равно не получаю показания датчика.

Код:-

#include <Wire.h>

#include "SparkFunCCS811.h" 

#define CCS811_ADDR 0x5B // Адрес I2C по умолчанию
//#define CCS811_ADDR 0x5A //Альтернативный адрес I2C

CCS811 mySensor(CCS811_ADDR);

void setup()
{
  Serial.begin(9600);
  Serial.println("CCS811 Basic Example");

  Wire.begin(); //Инициализировать аппаратное обеспечение I2C

  //Рекомендуется проверять статус возврата на .begin(), но это не так
  //необходимый.
  CCS811Core::status returnCode = mySensor.begin();
  if (returnCode != CCS811Core::SENSOR_SUCCESS)
  {
    Serial.println(".begin() returned with an error.");
    //пока (1); // Зависание, если возникла проблема.
  }
}

void loop()
{
  //Проверяем готовность данных с помощью .dataAvailable()
  if (mySensor.dataAvailable())
  {
    //Если это так, попросите датчик считать и вычислить результаты.
    //Получить их позже
    mySensor.readAlgorithmResults();

    Serial.print("CO2[");
    //Возвращает рассчитанное значение CO2
    Serial.print(mySensor.getCO2());
    Serial.print("] tVOC[");
    //Возвращает рассчитанное значение TVOC
    Serial.print(mySensor.getTVOC());
    Serial.print("] millis[");
    //Просто время с момента запуска программы
    Serial.print(millis());
    Serial.print("]");
    Serial.println();
  }

  delay(10); // Не спамить шину I2C
}

Вещи, которые я пробовал: – 1) разное сочетание контактов А4, А5 2) 0x5A & 0x5B адрес i2c 3) с помощью пробуждающего штифта с заземлением 4) с использованием 3.3 & 5В для питания датчика

Что еще нужно сделать?

, 👍0

Обсуждение

Не подавайте на датчик 5В. В даташите указано максимальное напряжение 3,6В. Вы можете уничтожить его с 5V, @chrisl

Мы не можем видеть, как вы подключили датчик. A4 — контакт SDA, A5 — SCL. Вам нужно подключить их к соответствующему контакту датчика. Также I2C не предназначен для длинных проводов. Попробуйте добавить мощные подтягивающие резисторы к обеим линиям (возможно, 4,7 кОм)., @chrisl

@chrisl будет помнить о них. SDA подключен к A4, а SCL к A5, так что это не проблема, загрузите изображение проводки выше. Провода длиной около 50 см, так что я думал, что это будет хорошо. Подтянуть резисторы на линии SDA и SCL?, @suu

Да, по одному подтягивающему резистору на каждую из обеих линий. Да и 50см уже многовато (I2C сделан для связи между микросхемами на одной плате или на близких расстояниях, поэтому несколько см). Сильные подтягивания могут помочь, если ваша проблема связана с этим., @chrisl

спасибо за помощь, проблема была в пайке, так что она решена. Кроме того, я использовал i2c с проводом 1 м, где я подключил Arduino и ЖК-дисплей, и это сработало. Просто делюсь своим опытом, если это поможет., @suu


1 ответ


1

Проблема была в месте пайки. ПДД и усилители; Контакт 3,3 В на датчике был слегка в контакте. Я изменил его и начал нормально работать.

,