Coffee Space


Listen:

Solar Power

Preview Image

Preview Image

This project is an initial experiment for attempting to figure out how much power can realistically be expected from a modestly sized solar panel.

Parts

Parts are as follows:

Solar Panel

Specifications:

  • 18V (in reality it actually seems to be lower than this - depending on light conditions)
  • 2.5W
  • 19.5 x 12 x 0.3 cm

Implementation:

0001  ________
0002 |        |     ____
0003 |  SP   +|----| WM |
0004 |       -|----|____|
0005 |________|
  • SP - Solar panel
  • WM - WeMos

Experience:

  • Connects fine with large solder pads.
  • Voltage is high enough in decent levels of sunlight (>10V).

Voltage Regulator

Specifications:

  • 6-20V input
  • 5V output
  • 2A current

Implementation:

0006  ________
0007 |        |     ____      ____
0008 |  SP   +|----| VR |----| WM |
0009 |       -|----|____|----|____|
0010 |________|
  • SP - Solar panel
  • VR - Voltage regulator
  • WM - WeMos

Experience:

  • Too inefficient to be used on a solar panel of this size.

WeMos D1 R2

Specifications:

  • >15mA current usage
  • 5V (USB) or 9-24V (power jack)

Implementation:

0011 #include <ESP8266WiFi.h>
0012 extern "C"{
0013   #include "user_interface.h"
0014 }
0015 
0016 const char* ssid = "WIFI_NAME_HERE";
0017 const char* password = "PASSWORD_HERE";
0018 
0019 unsigned long startTime;
0020 WiFiServer server(80);
0021 
0022 #define TRUE 1
0023 #define FALSE 0
0024 #define DEBUG TRUE
0025 
0026 void setup(){
0027   /* Store data about starting conditions */
0028   startTime = millis();
0029   /* Begin the serial communications */
0030   #if DEBUG == TRUE
0031     Serial.begin(115200);
0032     Serial.println("There is life");
0033     delay(10);
0034   #endif
0035   /* Turn off WiFi LED */
0036   wifi_status_led_uninstall();
0037   /* Stop the WiFi completely dying */
0038   wifi_set_sleep_type(LIGHT_SLEEP_T);
0039   /* Start the Wifi connection */
0040   WiFi.begin(ssid, password);
0041   /* Wait until the WiFi is up */
0042   while(WiFi.status() != WL_CONNECTED){
0043     delay(500);
0044     /* Display attempt to connect */
0045     #if DEBUG == TRUE
0046       Serial.println("Connecting...");
0047     #endif
0048   }
0049   /* Begin the server on the WiFi */
0050   server.begin();
0051   /* Display local IP address */
0052   #if DEBUG == TRUE
0053     Serial.println(WiFi.localIP());
0054   #endif
0055 }
0056 
0057 void loop(){
0058   /* Wait until we find a client */
0059   WiFiClient client = server.available();
0060   /* Make sure we have a valid client */
0061   if(!client){
0062     return;
0063   }
0064   /* Wait until the client is available */
0065   while(!client.available()){
0066     delay(1);
0067   }
0068   /* Get all data from client */
0069   client.flush();
0070   /* Write the page */
0071   String s = "";
0072   s += "HTTP/1.1 200 OK";
0073   s += "\r\n";
0074   s += "Content-Type: text/html";
0075   s += "\r\n";
0076   s += "\r\n";
0077   s += "<h1>Data</h1>";
0078   s += " </br>status: alive";
0079   s += " </br>up_time_ms: ";
0080   s += (millis() - startTime);
0081   s += " </br>os_chip_id: ";
0082   s += system_get_chip_id();
0083   s += " </br>os_free_heap_size: ";
0084   s += system_get_free_heap_size();
0085   s += " </br>os_time_us: ";
0086   s += system_get_time();
0087   s += " </br>os_rtc_us: ";
0088   s += system_get_rtc_time();
0089   s += " </br>os_boot_time: ";
0090   s += system_get_boot_version();
0091   /* Output to client and then close */
0092   client.print(s);
0093   delay(1);
0094   client.stop();
0095 }

Experience:

  • Lower power operations do not perform very well. The amount advertised do not match achievable values in reality. This could be for multiple reasons, but much more debugging is required.
  • Solar panel was not able to provide enough power to get the WiFi started, despite the surface mount LEDs being activated.

Experiment

Below is a video of a USB fan plugged into the solar panel. It did need a finger nudge in order to initially get going, but was able to sustain a spin at a low speed once going. A small covering of the solar panel was enough to stop the fan.

Raw video

Conclusion

From the simple experimentation, it seems that either more solar panel surface area is required or that we need an intermediate power storage system to allow higher current draw at given moments.