В этом проекте мы разработаем систему мониторинга солнечной энергии на основе технологии Интернета вещей (IoT) с использованием WiFi-модуля ESP32. Модуль ESP32 будет подключаться к сети WiFi и загружать параметры солнечного зондирования, такие как напряжение солнечной панели, температура и интенсивность света, на сервер Thingspeak.
Солнечным электростанциям необходим мониторинг солнечных панелей для оптимальной выработки энергии. Солнечная энергия — это будущее энергетической отрасли. Страны по всему миру сосредоточены на возобновляемых и чистых источниках энергии. Солнечный свет — это самый распространенный ресурс, доступный везде и каждый день. Мы можем использовать солнечный свет для выработки электроэнергии, которая не загрязняет окружающую среду. Продолжаются исследования и инновации для повышения эффективности солнечных элементов , снижения стоимости производства солнечных панелей и улучшения распределения электроэнергии от солнечных установок. Этот проект также направлен на инновации для повышения эффективности солнечных панелей.
Проект позволяет контролировать выходную мощность солнечной панели, интенсивность падающего света и рабочую температуру с помощью микроконтроллера ESP32 WiFi + BLE. Солнечная панель и датчики точно подключены к контроллеру ESP32, который контролирует солнечную панель и нагрузку. Таким образом, пользователи могут просматривать напряжение, температуру и солнечную освещенность онлайн из любой точки мира.
Существует множество возможных вариантов использования этой технологии, включая солнечные города, умные деревни, микросети и солнечное уличное освещение.
Также на нашем сайте вы можете посмотреть проект питания ESP32/ESP8266 с помощью солнечных панелей и мониторингом уровня заряда.
Необходимые компоненты
- Модуль ESP32 (купить на AliExpress).
- Солнечная панель (3-25 В) (купить на AliExpress).
- Модуль датчика напряжения (купить на AliExpress).
- Датчик температуры LM35 (купить на AliExpress).
- Фоторезистор.
- ЖК дисплей 16x2 с интерфейсом I2C (купить на AliExpress).
- Резистор 2.2 кОм.
- Кабель передачи данных Micro-USB.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Модуль датчика напряжения 0-25 В
Модуль датчика напряжения — это простой, но очень полезный модуль, который использует делитель напряжения для уменьшения входного напряжения в 5 раз. Модуль датчика напряжения 0–25 В позволяет использовать аналоговый вход микроконтроллера для контроля напряжений, которые намного выше, чем он способен обнаружить.
Датчик напряжения по сути является делителем напряжения, состоящим из двух резисторов с сопротивлениями 30 кОм и 7,5 кОм, т.е. делителем напряжения 5 к 1. Таким образом, выходное напряжение уменьшается в 5 раз для любого входного напряжения. Внутренняя схема модуля датчика напряжения приведена ниже.
Датчик температуры LM35
Серия LM35 представляет собой прецизионные интегральные температурные устройства с выходным напряжением, линейно пропорциональным температуре по шкале Цельсия. Она имеет преимущество перед линейными датчиками температуры, откалиброванными в Кельвинах, поскольку пользователю не требуется вычитать большое постоянное напряжение из выходного сигнала для получения удобного масштабирования по шкале Цельсия.
Устройство LM35 не требует какой-либо внешней калибровки или подстройки и обеспечивает типичную точность ±¼°C при комнатной температуре и ±¾°C в диапазоне температур от −55°C до 150°C .
Светозависимый резистор (LDR)
Светозависимые резисторы (LDR) или фоторезисторы — это электронные компоненты, которые часто используются в электронных схемах, где необходимо определять наличие или уровень света (освещенности).
LDR сильно отличаются от других форм резисторов, таких как резистор с углеродной пленкой, резистор с металлической оксидной пленкой, резистор с металлической пленкой и т. п., которые широко используются в других электронных конструкциях. Они специально разработаны для их светочувствительности и изменения сопротивления, которое это вызывает.
Блок-схема системы мониторинга солнечной энергии IoT
Давайте рассмотрим структурную схему системы мониторинга солнечной энергии на основе технологии Интернета вещей (IoT) с ESP32. ESP32 сопряжен с датчиком напряжения, датчиком температуры LM35 и фоторезистором (LDR). Эти три датчика используются для контроля выходной мощности, температуры и интенсивности падающего света соответственно.
Символьный ЖК-дисплей также подключен к плате для отображения измеренных параметров в реальном времени. Предполагается, что солнечные панели будут установлены с точками доступа к интернету на месте их установки. ESP32 не только отображает измеренные параметры на ЖК-экране, но и отправляет измеренные значения на облачный сервер Thingsepak.
Параметры напряжения, температуры и освещенности можно отслеживать в режиме реального времени и регистрировать на сервере Thingspeak для аналитики и оценки производительности.
Схема проекта
Схема системы мониторинга солнечной энергии на основе Интернета вещей с модулем WiFi ESP32 представлена на следующем рисунке.
ESP32 является основным контроллером для всего проекта. Есть 3 датчика, которые напрямую подключаются к выводам GPIO ESP32. 3 датчика — это датчик напряжения (0-25 В), датчик температуры LM35 и датчик LDR (фоторезистор).
Подключите вход датчика напряжения к контакту GPIO14 платы ESP32. С другой стороны напряжения датчик подключает солнечную панель с диапазоном напряжения от 3 В до 25 В, поскольку максимальная чувствительная способность датчика напряжения составляет всего 25 В. Аналогично подключите вход датчика температуры LM35 к GPIO34 ESP32. LDR требует резистора 2,2 кОм последовательно для измерения аналогового напряжения, подаваемого на аналоговый вывод ESP32. Входные выводы LDR подключаются к GPIO35 ESP32.
Подключите выводы SDA и SCL ЖК-дисплея I2C к GPIO21 и GPIO22 ESP32 соответственно. Вы можете запитать ЖК-дисплей и LM35 через вывод 5 В ESP32.
Печатная плата для проекта
Если вы не хотите собирать схему на перфорированной плате, а вам нужна печатная плата для проекта, то вот печатная плата для вас. Я использовал EasyEDA для проектирования печатной платы. Печатная плата для системы мониторинга солнечной энергии IoT выглядит примерно так, как показано ниже.
Файл Gerber для изготовления данной печатной платы вы можете скачать по следующей ссылке.
Изготовленная печатная плата для нашей системы мониторинга солнечной энергии представлена на следующем рисунке.
Настройка сервера Thingspeak
ThingSpeak предоставляет очень хороший инструмент для проектов на основе IoT. Используя сайт ThingSpeak, мы можем отслеживать наши данные и управлять нашей системой через Интернет, используя каналы и веб-страницы, предоставляемые ThingSpeak. Поэтому сначала вам нужно зарегистрироваться в ThingSpeak. Посетите https://thingspeak.com и создайте учетную запись.
Затем создайте новый канал и три переменные: напряжение, температура и освещенность.
Затем создайте ключ API. Этот ключ необходим для программирования модификаций и получения данных от модуля ESP32 WiFi.
Теперь нажмите на каналы, чтобы увидеть потоковую передачу данных в режиме онлайн.
Исходный код программы
Код для системы мониторинга солнечной энергии на основе Интернета вещей с ESP32 прост и может быть написан в среде Arduino IDE.
Для компиляции кода требуется библиотека I2C LCD.
В следующих строках вам необходимо изменить ключ API Thingspeak, SSID WiFi и пароль на свои данные.
1 2 3 |
String apiKey = "***************"; const char* ssid = "**************"; // Enter your WiFi Network's SSID const char* pass = "**************"; // Enter your WiFi Network's Password |
Теперь вы можете загрузить следующий код на плату ESP32.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
#include <WiFi.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); const int lm35_pin = 34; const int voltageSensor = 14; float vOUT = 0.0; float vIN = 0.0; float R1 = 30000.0; float R2 = 7500.0; int value = 0; float RLDR; float Vout; float Lux; String apiKey = "***************"; const char* ssid = "**************"; // Enter your WiFi Network's SSID const char* pass = "**************"; // Enter your WiFi Network's Password const char* server = "api.thingspeak.com"; WiFiClient client; void setup() { Serial.begin(115200); lcd.begin(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Welcome To"); lcd.setCursor(0, 1); lcd.print("Our Projects"); delay(2000); lcd.clear(); Serial.println("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("*"); } Serial.println(""); Serial.println("WiFi connected"); } void loop() { int temp_adc_val; float temp_val; float tempF = temp_val * 9 / 5 + 32; temp_adc_val = analogRead(lm35_pin); /* Read Temperature */ temp_val = (temp_adc_val * 4.88); /* Convert adc value to equivalent voltage */ temp_val = (temp_val / 10); /* LM35 gives output of 10mv/°C */ lcd.setCursor(0, 0); lcd.print("T:-"); lcd.print(tempF); Serial.print("Temperature = "); Serial.print(tempF); delay(1000); value = analogRead(voltageSensor); vOUT = (value * 5.0) / 3724.0; vIN = vOUT / (R2 / (R1 + R2)); int sensorValue = analogRead(35); Vout = (sensorValue * 0.0048828125); RLDR = (10000.0 * (3 - Vout)) / Vout; Lux = (RLDR / 500); lcd.setCursor(10, 0); lcd.print("L:"); lcd.print(Lux); delay(1000); lcd.setCursor(0, 1); lcd.print("Solar Volt:"); lcd.setCursor(12, 1); lcd.print(vIN); if (client.connect(server, 80)) { String postStr = apiKey; postStr += "&field1="; postStr += String(temp_val); postStr += "&field2="; postStr += String(vIN); postStr += "&field3="; postStr += String(Lux); postStr += "\r\n\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); delay(100); client.print("Host: api.thingspeak.com\n"); delay(100); client.print("Connection: close\n"); delay(100); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); delay(100); client.print("Content-Type: application/x-www-form-urlencoded\n"); delay(100); client.print("Content-Length: "); delay(100); client.print(postStr.length()); delay(100); client.print("\n\n"); delay(100); client.print(postStr); delay(100); } client.stop(); Serial.println("Sending...."); delay(15000); } float mapfloat(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } |
Тестирование работы проекта
После загрузки кода ESP32 подключится к сети WiFi. Затем он установит соединение с сервером Thingspeak, используя API-ключ.
В это же время на ЖК-дисплее можно увидеть параметры измерения солнечной энергии.
Чтобы проверить правильность работы проекта, вы можете перенести солнечную панель в темную комнату или полностью на солнце. Будут наблюдаться значительные изменения в параметрах измерения.
Аналогично, перейдите в приватный режим просмотра сервера Thingspeak, и вы увидите параметры, зарегистрированные в графическом формате, вместе с временными интервалами.
Данные загружаются только с интервалом в 15 секунд на сервере Thingspeak. Вы можете изменить интервал на 30 секунд или 1 минуту или больше в соответствии с вашими требованиями.