Датчик качества воздуха Sparkfun CCS811 не работает

у меня есть плата Arduino uno и датчик sparkfun ccs811. Я попытался воспроизвести руководство с домашней страницы sparkfun (https ://learn.sparkfun.com/tutorials/ccs811-air-quality-breakout-hookup-guide?_ga=2.45231532.967238096.1560976781-258902726.1560976781), включая часть состояний ошибок.

Я загрузил одно изображение проводки (обновлено). Я также пытался использовать альтернативное аппаратное соединение с SDA на A4 и SCL на A5, как указано в комментариях к коду (см. домашнюю страницу).

Однако он просто не работает, и я всегда получаю этот код ошибки в последовательном мониторе beginCore завершается с: I2C_ERROR

Вот мой код (без верхнего блока комментариев):

#include <Wire.h>

#include "SparkFunCCS811.h" //Нажмите здесь, чтобы получить библиотеку: http://librarymanager/All#SparkFun_CCS811

#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();
Serial.print("beginCore exited with: ");
switch ( returnCode )
{
case CCS811Core::SENSOR_SUCCESS:
 Serial.println("SUCCESS");
 break;
case CCS811Core::SENSOR_ID_ERROR:
 Serial.println("ID_ERROR");
 break;
case CCS811Core::SENSOR_I2C_ERROR:
 Serial.println("I2C_ERROR");
 break;
case CCS811Core::SENSOR_INTERNAL_ERROR:
 Serial.println("INTERNAL_ERROR");
 break;
case CCS811Core::SENSOR_GENERIC_ERROR:
 Serial.println("GENERIC_ERROR");
 break;
default:[enter image description here][2]
 Serial.println("Unspecified error.");
}


if (returnCode != CCS811Core::SENSOR_SUCCESS)
{
Serial.println(".begin() returned with an error.");
while (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
}

, 👍0

Обсуждение

Может быть, ваше заземление к датчику находится не в том месте? На изображении видно, что фиолетовый провод подключен на один контакт справа от контакта заземления., @chrisl

Ты был прав; Я только что исправил это и загрузил новое изображение. Но он все еще не работает., @Harry333


1 ответ


5

Вам нужно припаять эти разъемы к разъему. Простое вставление их в сквозные отверстия не обеспечивает надежного соединения.

,

Так просто, хоть и трудно узнать :D, @Sim Son