Датчик 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В для питания датчика
Что еще нужно сделать?
@suu, 👍0
Обсуждение1 ответ
▲ 1
Проблема была в месте пайки. ПДД и усилители; Контакт 3,3 В на датчике был слегка в контакте. Я изменил его и начал нормально работать.
,
@suu
Смотрите также:
- Влияет ли размер AWG на сигнал от датчиков?
- Можно ли использовать трехпроводной датчик электропроводности (Sensorex CS 150) напрямую с Arduino?
- Библиотека DHT.h не импортируется
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как подключить более 10 датчиков к Arduino uno r3
- Как использовать два ультразвуковых датчика для управления двигателем 5 Вольт?
Не подавайте на датчик 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