Balázs Simon
Published © MIT

Solar Energy in the Cloud

You'd think that solar energy and clouds are not the best match, but in this project I'll show you how you can make it work!

IntermediateFull instructions provided20 hours2,945

Things used in this project

Hardware components

Azure Sphere MT3620 Starter Kit
Avnet Azure Sphere MT3620 Starter Kit
×1
Seeed Studio Grove - LCD RGB Backlight
×1
Servo Module (Generic)
×2
Solar panel 0.5V 100mA - 53 X 18mm
Or something similar
×4
Camera platform
"Plastic FPV PT Pan Tilt Camera Platform for SG90 MG90 Servo"
×1
Texas Instruments CD4051BE Analog multiplexer
×1
Resistor 10k ohm
Resistor 10k ohm
×6
Resistor, 4.7 ohm
Resistor, 4.7 ohm
Dummy load for the solar panels
×1
Male-Header 36 Position 1 Row- Long (0.1")
Male-Header 36 Position 1 Row- Long (0.1")
×1

Software apps and online services

Microsoft Azure IoT Central
Visual Studio 2017
Microsoft Visual Studio 2017

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)
Soldering iron (generic)
Soldering iron (generic)
Hot glue gun (generic)
Hot glue gun (generic)

Story

Read more

Custom parts and enclosures

Light shade - without solar panel holders

If you don't want do put solar panels and just want to build a fun light tracker than you can print this light shade as it lacks the solar panel holder wings.

Light shade - with solar panel holders

This light shade contains the wings for the solar panels. If you want to attach solar panels or anything else to the Solar Tracker then print this file.

Solar Tracker housing - top part

This is the top part of the housing. You'll attach the top servo and the LCD screen to this part.

Solar Tracker housing - bottom part

This is the bottom part of the Solar Tracker housing. You'll attach the MT3620 to this part.

Schematics

Circuits of the project

Fritzing schematics for the connections of the circuits

Code

Solar Tracker.json

JSON
This is the capability model of the device that you have to upload when you create a new device in Azure IoT Central.
{
  "@id": "urn:<YOUR_COMPANY_NAME_HERE>:SolarTracker_5sa:1",
  "@type": "CapabilityModel",
  "implements": [
    {
      "@id": "urn:solarTrackerMonitoringAndControl:SolarTracker_5sa:_8a9tigi:1",
      "@type": "InterfaceInstance",
      "displayName": {
        "en": "Interface"
      },
      "name": "SolarTracker_5qt",
      "schema": {
        "@id": "urn:solarTrackerMonitoringAndControl:SolarTracker_5qt:1",
        "@type": "Interface",
        "displayName": {
          "en": "Interface"
        },
        "contents": [
          {
            "@id": "urn:solarTrackerMonitoringAndControl:SolarTracker_5qt:DeviceEnabled:1",
            "@type": "Property",
            "description": {
              "en": "Enabled (seeking then sun) or disabled (looking at the ground)"
            },
            "displayName": {
              "en": "Device enabled"
            },
            "name": "DeviceEnabled",
            "writable": true,
            "schema": "boolean"
          },
          {
            "@id": "urn:solarTrackerMonitoringAndControl:SolarTracker_5qt:Power:1",
            "@type": "Telemetry",
            "description": {
              "en": "Power level of the solar panel"
            },
            "displayName": {
              "en": "Power"
            },
            "name": "Power",
            "displayUnit": {
              "en": "mW"
            },
            "schema": "double"
          },
          {
            "@id": "urn:solarTrackerMonitoringAndControl:SolarTracker_5qt:Voltage:1",
            "@type": "Telemetry",
            "description": {
              "en": "Voltage levels of the solar panels"
            },
            "displayName": {
              "en": "Voltage"
            },
            "name": "Voltage",
            "displayUnit": {
              "en": "V"
            },
            "schema": "double"
          },
          {
            "@id": "urn:solarTrackerMonitoringAndControl:SolarTracker_5qt:Brightness:1",
            "@type": "Telemetry",
            "description": {
              "en": "Average combined brightness, calculated from the 4 photo resistors"
            },
            "displayName": {
              "en": "Brightness"
            },
            "name": "Brightness",
            "displayUnit": {
              "en": "Lux"
            },
            "schema": "double"
          }
        ]
      }
    }
  ],
  "displayName": {
    "en": "Solar Tracker"
  },
  "contents": [],
  "@context": [
    "http://azureiot.com/v1/contexts/IoTModel.json"
  ]
}

Solar Tracker source code

The program code that is running on my Azure Sphere MT3620

Custom Azure Sphere libraries

I created a Servo library for Azure Sphere SDK and I also ported a Grove RGB LCD library from Arduino to use in my project. I created these separate libraries so you don't have to extract them from my project.

Credits

Balázs Simon

Balázs Simon

12 projects • 85 followers

Comments