Solar energy is the future of energy industry. The countries all around the world are focusing towards renewable and clean sources of energy. The sunlight is the most abundant resource available everywhere and each day. By generating energy using sunlight, the electricity generation can be done without any pollution. The solar plants now have been generating not only energy but also immense opportunities of employment as well. The solar plants have been now employing more people than the coal industry. So, the use of such resources like the solar energy is useful from every aspect ranging from environment to economy.
The solar technology is still in its infancy. There are continuous research and innovations going on to improve the efficiency of solar cells, reduce cost of manufacturing solar panels and improving power distribution from solar plants. This project is also aimed at an innovation to improve the efficiency of solar panels. This IOT based project is designed to supervise solar photovoltaic power generation to enhance the performance, monitoring and maintenance of the solar plant. With advancement of technologies the cost of renewable energy equipments is going down globally encouraging large scale solar photovoltaic installations. This massive scale of solar photovoltaic deployment requires sophisticated systems for automation of the plant monitoring remotely using web based interfaces as majority of them are installed in inaccessible locations and therefore are easy to be monitored from a dedicated location. The project is based on implementation of new cost effective methodology based on IoT to remotely monitor a solar photovoltaic plant for performance evaluation. This will facilitate preventive maintenance, fault detection, historical analysis of the plant in addition to real time monitoring.
The project allows monitoring power output of a solar panel, incident light intensity and the operating temperature using an IOT board. The IOT board used in this project is Particle Photon. Particle Photon is an Arduino compatible IOT board. For writing the program code for any Photon, developer needs to create an account on Particle website and register the Photon board with his user account. The program code then can be written on Web IDE at the Particle’s website and transferred to a registered IOT board over the internet. If the selected Particle board, Photon here, is switched on and connected to cloud service of the Particle, the code is burnt to the selected board over the air via internet connection and the board starts operating according to the transferred code.
For controlling board over the internet, a web page is designed which uses Ajax and Jquery to send data to the board using HTTP POST method. The web page identifies the board by a device ID and connects to the Particle’s Cloud Service through an access token.
In this project, the particle photon is interfaced with the voltage output pin of the solar panel, LM-35 temperature sensor and LDR sensor to monitor the power output, temperature and the incident light intensity respectively. A character LCD is also interfaced to the board for real time display of the measured parameters. The solar panels are assumed to be installed with internet hotspots at their installation site. The Photon not only displays the measured parameters on the LCD screen, it also sends the measured values to the cloud server from where these parameters can be monitored in real time and logged for analytics and performance evaluation. For viewing the real-time data and logs sent by the board, the user needs to log in to the registered account from the Particle’s official website.
Fig. 1: Prototype of Particle Photon based Solar Panel Monitoring IOT Project
Components Required –
Fig. 2: List of components required for Particle Photon based Solar Panel Monitor
Block Diagram –
Fig. 3: Block Diagram of Particle Photon based Solar Panel Monitor
Circuit Connections –
The solar panel monitoring device is built around the Particle Photon. The IOT device is built by assembling the following components –
Fig. 4: Image of Particle Photon based Solar Panel Monitor
Particle Photon – Photon is a popular IOT board available from the Particle platform. The board houses STM32F205 120Mhz ARM Cortex M3 microcontroller and has 1 MB flash memory, 128 Kb RAM and 18 mixed signal general purpose input output (GPIO) pins with advanced peripherals. The module has on-board Cypress BCM43362 Wi-Fi chip for Wi-Fi connectivity and Single band 2.4GHz IEEE 802.11b/g/n for Bluetooth. The board comes equipped with 2 SPI, one I2S, one I2C, one CAN and one USB interface. The particle Photon has the following pin configuration –
Fig. 5: Table listing pin configuration of Particle Photon
It should be noted that 3V3 is a filtered output used for analog sensors. This pin is the output of the on-board regulator and is internally connected to the VDD of the Wi-Fi module. When powering the Photon via VIN or the USB port, this pin will output a voltage of 3.3VDC. This pin can also be used to power the Photon directly (max input 3.3VDC). When used as an output, the max load on 3V3 is 100mA. The PWM signals have a resolution of 8-bit and run on a frequency of 500 Hz.
In the circuit, 6 GPIO pins of the module are used to interface the character LCD and three analog input pins are used to interface LM-35 temperature sensor, Solar Panel and the LDR sensor.
16X2 LCD: The 16X2 LCD display is used to display the values of the measured parameters. It is connected to the Particle Photon by connecting its data pins D7 to D4 to the pins D0 to D3 of the Particle board. The E and RS pins of the LCD are connected to pins D5 and D6 of the Particle board respectively. The RW pin of the LCD is grounded.
Fig. 6: Table listing circuit connections of LCD and Arduino Uno
LDR sensor – The LDR sensor is used to measure the incident light intensity. The sensor is connected to the A2 pin of Particle Photon. The sensor is connected in a potential divider circuit. The LDR provides an analog voltage which is converted to digital reading by the in-built ADC.
LM-35 Temperature sensor – LM35 is a precision IC temperature sensor with its output proportional to the temperature (in oC). The sensor circuitry is sealed and therefore it is not subjected to oxidation and other processes. With LM35, temperature can be measured more accurately than with a Thermistor. It also possess low self heating and does not cause more than 0.1 oC temperature rise in still air. The operating temperature range is from -55°C to 150°C. The output voltage varies by 10mV in response to every oC rise/fall in ambient temperature, i.e., its scale factor is 0.01V/ oC. The sensor has three pins – VCC, Dout and Ground. The Dout pin of the LM35 is connected to Analog input pin A0 of the particle photon. The VCC and ground are connected to common VCC and Ground.
Solar Panel – Solar panels are devices that convert light into electricity. They got the name “solar” panels from the word ‘Sol’ used by astronomers to reference the sun and the sunlight. These are also called photovoltaic panels where Photovoltaic means “light-electricity”. The phenomenon of converting the solar energy to electric energy is called photovoltaic effect. This effect generates the voltage and current at the output on the exposure of solar energy. A 3 Volts Solar panel is used in the project. A solar panel consists of several solar cell or photovoltaic diodes. These solar cells are P-N junction diode and they can generate an electric signal in presence of solar light. On exposure to the sunlight, this solar panel generates a DC voltage output of 3.3 V at its terminals. This panel can have maximum output power of 0.72 Watt and minimum output power of 0.6 Watt. Its maximum charging current is 220 mA and minimum charging current is 200 mA. The panel has two terminals – VCC and Ground. The voltage output is drawn from the VCC pin. The voltage output pin is connected to analog input pin A1 of the Particle Photon for measurement of the output power from the solar panel.
Power Supply – In the circuit, Particle Photon and sensor modules need a 5V regulated DC for their operation. The AC main is used as the primary source of power. The supply from the mains is stepped down by a transformer and rectified by a full-bridge rectifier. The rectified output is regulated to 5V and 12V using 7805 and 7812 ICs. The pin 1 of both the voltage regulator ICs is connected to the anode of the battery and pin 2 of both ICs is connected to ground. The respective voltage outputs are drawn from pin 3 of the respective voltage regulator ICs. A LED along with a 10K Ω pull-up resistor is also connected between common ground and output pin to get a visual hint of supply continuity.
How the circuit works –
Once the circuit is assembled, it is ready to deploy along with the solar panel. While the solar panel keeps generating electricity, the attached IOT device developed in this project monitors its various parameters. The device is powered from the mains supply that is managing the other performance enhance equipments as well. Once the IOT device is powered, some initial messages are flashed on its LCD display indicating the intent of the application. The power output of the panel, temperature and the incident light intensity are measured by the Voltage Output pin of the solar panel, LM-35 temperature sensor and the LDR sensor respectively. The Voltage Output pin of the solar panel, LM-35 temperature sensor and the LDR sensor are connected to the analog input pins A1, A0 and A2 of the Particle Photon.
The respective parameters are measured by sensing the analog voltage at the respective pins. The analog voltage sensed at the respective pins is converted to digital values using in-built ADC channels. The Particle Photon has 12-bit ADC channels. So the digitized values can range from 0 to 4095. Here, it is assumed that the resistive network interfacing LDR sensor with the controller pin is calibrated to indicate light intensity by direct proportionality.
The LM-35 IC does not require any external calibration or trimming to provide typical accuracies of ±0.25 °C at room temperature and ±0.75 °C over temperature range from −55 °C to 150 °C. Under normal conditions, the temperature measured by the sensor won’t exceed or recede the operational range of the sensor. By trimming and calibration at the wafer level, the use of sensor at lower cost is thereby assured. Due to low-output impedance, linear output, and precise inherent calibration of the LM-35, the interfacing of the sensor to a control circuitry is easy. As the LM-35 device draws only 60 uA from the supply, it has very low self-heating of less than 0.1 °C in still air. Typically in the temperature range from −55 °C to 150 °C, the voltage output of the sensor increases by 10 mV per degree Celsius. The voltage output of the sensor is given by the following formulae –
Vout = 10 mV/°C*T
where,
Vout = Voltage output of the sensor
T = Temperature in degree Celsius
So, T (in °C) = Vout/10 mV
T (in °C) = Vout(in V)*100
If VDD is assumed to be 3.3 V, the analog reading is related to the sensed voltage over 12-bit range by the following formulae –
Vout = (3.3/4095)*Analog-Reading
So, the temperature in degree Celsius can be given by the following formulae –
T (in °C) = Vout(in V)*100
T (in °C) = (3.3/4095)*Analog-Reading *100
So, the temperature can be measured directly by sensing the analog voltage output from the sensor. The analogRead() function is used to read analog voltage at the controller pin.
The voltage output of the solar panel should be typically 3 V which can be directly sensed by the Particle Photon. The Particle photon can directly sense voltage up to 3.3 V. For digitization of the sensed analog voltage, it is again internally referenced to the VDD. The digitized voltage reading is scaled over the 12-bit range i.e. 0 to 4095. So again,
Vout = (3.3/4095)*Analog-Reading
The read sensor data is first displayed on the LCD display and then is passed to the Particle Cloud via Wi-Fi connection. The user needs to login into the Particle’s registered account in order to view the read sensor values. The platform allows connecting to a board from the registered account. The user can monitor received sensor data in real time and can also log data.
Check out the Arduino compatible code to see how Particle Photon read data from the sensor, convert it to physical quantities to be measured, display them on LCD and send them serially to the Cloud server through Wi-Fi connection.
Programming Guide –
The Arduino Sketch begins by importing the LiquidCrystal library for programming the LCD object. The library is automatically added by the particle web IDE. The variables are initialized for storing the sensor data and messages to be passed on the LCD module. An array of byte is declared and initialized to display the special character – degree symbol on the LCD. The setup() function is called in which the LCD object is initialized to display the messages on a 16X2 character LCD and some initial messages are flashed on it. The sensor pins connected to the particle photon are initialized as input pins using pinMode() function. The setup() function runs only once during start of the code.
Fig. 7: Screenshot of Initialization in Particle Photon Code for Solar Panel Monitor
The loop() function is called which iterates infinitely. In the loop() function, values from the sensors and solar panel are ready the using the analogRead() function and converted to respective physical quantities using standard formulas. The data from different sensors is stored in variables, wrapped in proper strings and sent to the LCD module for display. The same data is sent to data logging URL using publish() method on Particle object.
Fig. 8: Screenshot of Loop Function in Particle Photon Code for Solar Panel Monitor
Check out the complete code from the code section. This completes the Arduino code for IOT based Solar Panel Monitoring System.
Project Source Code
//Program to // This #include statement was automatically added by the Particle IDE. #include <LiquidCrystal.h> LiquidCrystal lcd(6, 5, 0, 1, 2, 3); float reading = 0; float Temperature = 0; float temp1 = 0; float volts = 0; float value = 0; float volt = 0; float lux = 0; byte degree[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; void setup() { Serial.begin(9600); lcd.begin(16,2); lcd.createChar(1, degree); lcd.setCursor(0,0); lcd.print("IoT Solar Param.r "); lcd.setCursor(0,1); lcd.print(" Monitoring "); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("ENGINEERS GARAGE"); delay(2000); lcd.clear(); pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); } void loop() { /*---------Temperature-------*/ reading=analogRead(A2); Temperature=(reading*3.3*100)/4096; delay(10); /*---------Voltage----------*/ temp1=analogRead(A1); volts= (temp1*3.3)/4096; delay(10); /*-----Light Intensity------*/ lux=analogRead(A0); //volt=(value/1023.0)*5; //lux=((2500/volt)-500)/3.3; delay(10); /*------Display Result------*/ lcd.clear(); lcd.setCursor(0,0); lcd.print("T:"); lcd.print((int)Temperature); lcd.write(1); lcd.print("C"); lcd.setCursor(8,0); lcd.print("V:"); lcd.print(volts); lcd.setCursor(0,1); lcd.print("Intens: "); lcd.print((int)lux); lcd.print(" Lux"); //Serial.println((int)Temp); // Serial.println(volts); // Serial.println((int)lux); //delay(500); Particle.publish("Voltage", String(volts)); Particle.publish("Temperature", String(Temperature)); Particle.publish("Light Intensity", String(lux)); delay(2000); }
###
Project Video
Filed Under: Electronic Projects, IoT
Filed Under: Electronic Projects, IoT
Questions related to this article?
👉Ask and discuss on EDAboard.com and Electro-Tech-Online.com forums.
Tell Us What You Think!!
You must be logged in to post a comment.