Друзья, я подключил модуль ADS1115 к NodeMCU v3 и почему-то NodeMCU не может получить с него правильные показания напряжения (со входов А0, А1, А2, А3). При чём если ADS1115 подключить по похожей схеме к Ардуино Нано и залить практически один и тот же скетч, то всё работает! Спойлер: Схема подключения к NodeMCU Спойлер: Скетч заливаемый в NodeMCU Код (C++): #include <Wire.h> #include <Adafruit_ADS1015.h> Adafruit_ADS1115 ads; void setup(void) { Wire.begin(D1, D2); //(SDA, SCL) Serial.begin(9600); ads.setGain(GAIN_TWOTHIRDS); // 2/3x gain +/- 6.144V 1 bit = 3mV 0.1875mV (default) ads.begin(); } void loop(void) { int16_t adc0; adc0 = ads.readADC_SingleEnded(0); Serial.print("AIN0: "); Serial.println(adc0); Serial.print("Напряжение: "); Serial.print(float((adc0*0.1875)/1000.0)); Serial.println("В"); delay(1000); } При работе с NodeMCU в мониторе порта напряжение равно 0 (хотя должно быть 2,2 В, т.к. на резистивный делитель напряжения подаётся 3,3 В) При работе с Ардуино Нано в мониторе порта напряжение равно 3,3 В (т.к. на резистивный делитель напряжения подаётся 5 В). Небольшая разница в подключении NodeMCU и Ардуинки: У Ардуино Нано SDA и SCL находятся на выводах А4 и А5 (NodeMCU я подключаю через D1 и D2). Логика у Ардуинки 5 В (у NodeMCU 3,3 В). И касаемо скетча, при заливке в Ардуинку, я убираю строчку: Wire.begin(D1, D2). Возможно я не учитываю какую-нибудь особенность при подключении ADS1115 и NodeMCU, но судя по многочисленным роликам и форумам, я вроде бы делаю всё правильно... но...
Весёлый итог: промучился целый день, пробовал другую плату NodeMCU, но всё тоже самое. В итоге даже Ардуинку заглючило и она стала тоже нули показывать. Взял я китайский тестер ещё раз померить напряжение на входе А0 в ADS1115 и вдруг компьютер не выдержал и ребутнулся... ну ок, подумал я и продолжил играть с тестером. Вдруг снова не дозагрузившись ПК опять ушёл в ресет... )) Виной этому оказался неисправный китайский тестер. Короче, я всё перезагрузил, ещё раз пересобрал схему на макетке, в сотый раз перезалил скетчи и вдруг алилуя! NodeMCU заработала как и должна! Надеюсь, что теперь и дальше будет нормально работать, так как передо мной стоит следующая задача: Скрестить 3 датчика напряжения ZMPT101B + ADS1115 + NodeMCU. И чувствую, что без подводных камней там тоже не обойдётся, хотя напрямую ZMPT101B + NodeMCU отлично работает, но увы, одного аналогового входа мне недостаточно.
Zvere4ek - учитывайте важное обстоятельство - на AD1115 нельзя подавать напряжение, превышающее напряжение на пине VCC. Поэтому на NodeMCU максимальное напряжение, которое вы можете измерять - 3.3в, а на Нано - 5в. Может быть в этом и был корень проблем? И как следствие - на входы выключенной AD1115(когда VCC = 0v) нельзя подавать измеряемый сигнал, можете пожечь плату
Спасибо за советы. Да, я знаю, что у ADS1115 есть такая особенность. Поэтому, в вышеуказанной схеме, я для перестраховки на А0 (в ADS) подавал напряжение через резистивный делитель. Да и питается ADS у меня от выхода 3,3 В с NodeMCU, поэтому сжечь её пока не получилось Надеюсь, что она и дальше будет исправно работать Глюки были либо из-за макетной платы (хотя я по-разному пробовал переставлять разные провода, но не все, при чём с Ардуинкой всё исправно работало, для чего всего несколько проводков перевтыкалось), либо из-за компьютера. Да ещё и китайский тестер подвёл, из-за которого я несколько раз не мог понять, почему нет напряжения на том или ином контакте. В общем, похоже с вопросом данной темы топика я разобрался. Возможно кому-то поможет схема и мой простейший скетч для тестирования ADS1115.