Добавляем ESP8622 NodeMCU в Arduino IDE и работаем с датчиками DS18B20.

Для работы с платой NodeMCU (ESP8622) в среде разработки Arduino IDE зайдем в настройки программы и добавим ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json для Менеджера плат:

Затем перейдем в сам менеджер плат:

В открывшемся окне в строке введем esp8266 и как только пакет будет найден установим его:

Подключим ESP8622 NodeMCU к USB разъему ПК и после установки драйверов плата будет доступна в Arduino IDE:

Итак, контроллер теперь доступен в среде разработки для программирования.

Чтобы была возможность работать с датчиками DS18B20 нужно установить специальные библиотеки MAX31850 OneWire и MAX31850 DallasTemp.

Перейдем в меню «Инструменты>Управление библиотеками» (ctrl+shift+l) и в поиске введем MAX31850. Установим их:

Перезагрузим Arduino IDE, все готово для работы с ESP8622 и датчиками DS18B20. Подключим датчики к контакту D4 платы через резистор 4,7 КОм как показано на схеме (купить контроллер и датчики можно на aliexpress):

ПОдключаем датчики температуры DS18B20 к ESP8622 NodeMCU
ПОдключаем датчики температуры DS18B20 к ESP8622 NodeMCU

Найдем адреса этих датчиков, загрузив в контроллер скетч:

/*
 * Rui Santos 
 * Complete Project Details https://randomnerdtutorials.com
 */

#include <OneWire.h>

// Based on the OneWire library example

OneWire ds(D4);  //Номер пина, к которому подключены датчики

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
    byte i;
  byte addr[8];
  
  if (!ds.search(addr)) {
    Serial.println(" No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(2500);
    return;
  }
  Serial.print(" ROM =");
  for (i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }
}

Откроем монитор порта и видим адреса трех наших датчиков:

запишем их, эти адреса вставим в следующий скетч, который будет опрашивать датчики и отправлять данные в COM порт:

#include <OneWire.h>
#include <DallasTemperature.h>

// Номер контакта к которому подключены датчики
#define ONE_WIRE_BUS D4
// Setup a oneWire instance to communicate with a OneWire device
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);

DeviceAddress sensor1 = { 0x28, 0x2A, 0xE5, 0xBB, 0x5D, 0x14, 0x1, 0x88 };
DeviceAddress sensor2 = { 0x28, 0xAB, 0xA6, 0xDA, 0x5D, 0x14, 0x1, 0xED };
DeviceAddress sensor3 = { 0x28, 0x19, 0x33, 0x37, 0x5D, 0x14, 0x1, 0x35 };


void setup(void){
  Serial.begin(9600);
  sensors.begin();
}

void loop(void){ 
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
  
  Serial.print("Sensor 1(*C): ");
  Serial.print(sensors.getTempC(sensor1)); 
  Serial.print(" Sensor 1(*F): ");
  Serial.println(sensors.getTempF(sensor1)); 
 
  Serial.print("Sensor 2(*C): ");
  Serial.print(sensors.getTempC(sensor2)); 
  Serial.print(" Sensor 2(*F): ");
  Serial.println(sensors.getTempF(sensor2)); 
 
  Serial.print("Sensor 3(*C): ");
  Serial.print(sensors.getTempC(sensor3)); 
  Serial.print(" Sensor 2(*F): ");
  Serial.println(sensors.getTempF(sensor3)); 
 
  delay(2000);
}

После успешной компиляции и загрузки скетча в память контроллера, открываем монитор порта и видим показания с датчиков:

При компиляции скетча можно столкнуться с проблемой. Компилятор обнаруживает несколько библиотек OneWire и DallasTemperatures и выбирает те, которые были установлены в нем по умолчанию для контроллеров Arduino. Для решения этой проблемы, папки оригинальных библиотек «OneWire» и «DallasTemp» необходимо перенести из места установки программы Arduino IDE (обычно это «C:\Program Files (x86)\Arduino\libraries»), а на их место скопировать библиотеки «max31850_OneWire» и «max31850_DallasTemp». Скорее всего вы их найдете в папке документов пользователя — C:\Users\пользователь\Documents\Arduino\libraries.

На этом все, спасибо за прочтение и всем удачи!!!!

Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *