Ви не увійшли.
Всем привет. Обращаюсь к вам с таким вопросом (возможно глупым).
Подключил Adafruit_CCS811 по шине I2C к ESP8266 (NodeMCU v1.0), написал небольшой скетч (см. далее) и, после успешной компиляции и завершения загрузки, получаю вот такое сообщение в мониторе порта:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3584, room 16
tail 0
chksum 0xb0
csum 0xb0
v2843a5ac
~ld
Вот мой скетч:
#include <Adafruit_CCS811.h>
Adafruit_CCS811 ccs;
void setup() {
Serial.begin(9600);
Serial.println("Hello CSS811");
ccs.begin();
}
void loop() {
if (ccs.available()) {
if (!ccs.readData()) {
Serial.print("CO2: ");
Serial.print(ccs.geteCO2());
Serial.print(", TVOC: ");
Serial.println(ccs.getTVOC());
} else {
Serial.println("ERROR!");
while (1);
}
}
delay(10000);
}
Подключение: GND -> GND; VCC -> 3V3; SDL -> D0; SCL -> D1 (менял местами); WAK -> GND.
Прочитал довольно много статей и обсуждение по поводу этой ошибки, есть ссылка на документацию. Решение пока найти не могу
Данная проблема возникает и с другими модулями (BME280, OLED). Прошивал, настраивал Arduino IDE по инструкции в интернете. Работаю с EPS8266, по-сути, впервые.
UPDATE #1: Я не использую прямое подключение между ESP8266 и моим breadboard, подключаю через мама-папа (мама к контроллеру, папа к плате). Читал, что есть мелкие "браки" для ESP-12E, которые создают глюки при работе через вставку контроллера в плату.
Остання редакція MykolaM (2020-10-07 00:50:18)
Неактивний
А пример из библиотеки что говорит?
Ну вначале я бы проверил. подключился ли у тебя датчик или нет
if(!ccs.begin()){
Serial.println("Failed to start sensor! Please check your wiring.");
while(1);
}
Следующее надо убедиться что нет проблем с питанием.
Датчик подключаеться напрямую к 3.3 соотв использует тот же стабилизатор что и само ядро. Я сталкивался не раз платами когда его банально не хватало даже запустить Wifi. Ну для начала надо убедиться что у тебя хорошие 5 вольт, а потом уже експерементировать с 3.3. Попробовать отдельно его запитать. не забыв про общую землю
Неактивний
г0сть пише:А пример из библиотеки что говорит?
Дает такой же ответ.
В таком случае как выше было сказано проверьте датчик. Возможно у него адрес китайцы поменяли. Запустите i2с-сканер и посмотрите ответ
Ну вначале я бы проверил. подключился ли у тебя датчик или нет
if(!ccs.begin()){
Serial.println("Failed to start sensor! Please check your wiring.");
while(1);
}
Не получил сообщение "Failed to start sensor! Please check your wiring." в Мониторе Порта. Как я понимаю, всё подключено верно. Я подобную штуку запускал с BME280 и там уже падало сообщение об ошибке "связывания/подключения", пока я не переподключил.
Следующее надо убедиться что нет проблем с питанием.
Датчик подключаеться напрямую к 3.3 соотв использует тот же стабилизатор что и само ядро. Я сталкивался не раз платами когда его банально не хватало даже запустить Wifi. Ну для начала надо убедиться что у тебя хорошие 5 вольт, а потом уже експерементировать с 3.3. Попробовать отдельно его запитать. не забыв про общую землю.
Да, я использую 3.3 напрямую, WAK отправляю в общий GND. Не знаю, насчет питания самой платы, я подключал её к интернету и передавал данные с BME280, всё работало отлично. Можно было ввести IP: 192.168.0.17 и увидеть данные с датчика.
Что означает "убедиться что у тебя хорошие 5 вольт", как это сделать?
Неактивний
MykolaM пише:г0сть пише:А пример из библиотеки что говорит?
Дает такой же ответ.
В таком случае как выше было сказано проверьте датчик. Возможно у него адрес китайцы поменяли. Запустите i2с-сканер и посмотрите ответ
Использовал для проверки вот такой скетч:
#include <Wire.h>
void setup(){
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop(){
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 8; address < 127; address++ ){
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0){
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000);
}
Удивительно, но я сейчас не получил сообщение "I2C Scanner", которое находится в void setup().
Неактивний
Заметил странное поведение платы, ранее такого не видел. Вот скетч:
void setup() {
Serial.begin(9600);
Serial.println("Hello!");
}
void loop() {
Serial.println("Hello!");
delay(1000);
}
Знаете, что вывелось? Ничего
Неактивний
Знаете, что вывелось? Ничего
Скорость в мониторе порта правильно выставлена?
Скорость в мониторе порта правильно выставлена?
Вот тоже решил только что проверить, как оказалось - нет. Исправил, теперь получаю это сообщение:
Hello CSS811
Failed to start sensor! Please check your wiring.
Сканер I2C отдает ответ:
Scanning...
No I2C devices found
Остання редакція MykolaM (2020-10-07 13:59:17)
Неактивний
Ну вот - либо что-то неправильно подключено, либо датчик дохлый
Подключал неверно, не знаю, как у автора гайда работало через D0/D1, но вот корректная схема распиновки платы. Буду пробовать подключать так.
Остання редакція MykolaM (2020-10-18 02:21:43)
Неактивний
Ну вот - либо что-то неправильно подключено, либо датчик дохлый
В итоге по правильной распиновке мой золотой датчик не подключился Подключил OLED, всё нашло по адресу 0x3C, буду пробовать работать сейчас с ним, что-то выведу. Похоже, придется возвращаться/менять/покупать датчик CCS-811.
P.S.: Хочу заметить, что у меня всё же не CCS-811, а CJMCU-1881, иными словами - Модуль датчиков качества воздуха CCS811 + SI7021 + BMP280.
Неактивний
Ну как 2 последних лекарства
1. попробуй поменять местами SDA <-> SLC
2. Подтянуть RST резистором 1-10 ком на 3.3v. Может он у тебя банально в reset висит.
Привет, прошу прощения, что пропал на 10 дней, подгрузили по работе.
Так вот, SDA < - > SCL пробовал менять изначально, не помогало. Сейчас подключил на 3.3V через 4.7k по RST (вывел в общее питание) - не помогло Мой I2C-Scanner, код которого я представил выше, так и не заметил этот дорогостоящий датчик. Что теперь делать не знаю - возврат просить уже поздно, а чинить сам не умею.
Неактивний
Маловероятно что все три датчика дохлые. Брать мультиметр, искать схему этого модуля или даташиты на каждый датчик отдельно и прозванивать цепи, смотреть все-ли правильно кетайцы запаяли.
Маловероятно что все три датчика дохлые. Брать мультиметр, искать схему этого модуля или даташиты на каждый датчик отдельно и прозванивать цепи, смотреть все-ли правильно кетайцы запаяли.
Но ведь подключение у них общее, что-то бы да и нашло, мне кажется, что сами пины для подключения дохлые. У меня есть ещё BME, там 1 датчик и он тоже не находится по I2C.
Неактивний
Дохлые на есп? Тогда что в #13?
г0сть пише:Маловероятно что все три датчика дохлые. Брать мультиметр, искать схему этого модуля или даташиты на каждый датчик отдельно и прозванивать цепи, смотреть все-ли правильно кетайцы запаяли.
Но ведь подключение у них общее, что-то бы да и нашло, мне кажется, что сами пины для подключения дохлые. У меня есть ещё BME, там 1 датчик и он тоже не находится по I2C.
Вот и проверьте доходит ли до них питание, что на квадратной шине творится. Может резисторы подтяжки не того номинала или в обрыве/непропай
Дохлые на есп? Тогда что в #13?
Думаю, что дохлые именно на датчике, а не на ESP. К нему я подключал другие датчики (в т.ч. OLED) и они работали. Ещё хочу попробовать подключить к УНО этот датчик, вдруг произойдет чудо На завтра уже заказал мультимер, приедет, буду проверять.
Неактивний
Вопрос на засыпку: D0 подтянут внешним сопротивлением на Vcc ?
Если да, то: читаем мануал внимательно. Для нормальной загрузки ESP8266 с флешки (у нее есть и другие варианты загрузки) D0 (GPIO15) должен быть в LOW, D3 (GPIO0) и D4 (GPIO2) должны быть в HIGH. После загрузки можете их использовать как хотите, но при старте обеспечьте именно такие уровни
Неактивний