Mai 2015: Videos
Test run of the first version of the Mirror tested at the river neckar across about 100m over 5 hours.
Bycicle reflectors show the efect of the sun reflection around our living room window. Without the reflectors it would be very hard to aim the light.
This shows the impact in our living room for a 2 hour period. around 15:30 the light outside fades but the sunlight reflected from the mirror is still there.
Interview at Maker Faire Hannover 2014 relative to the first version of the mirror. The mirror is discussed after 11 minutes.
March 2015: Overview of the Ziegelspiegel Technology
List of Main Mechanical Components
- Mirror 50cm diameter from the closest home improvement store
- Wooden CD Rack for 3x15 CDs from MÃ¶belum
- Aluminium Pole 20mm diameter
- Fischertechnick Cog with 58 teeth and Snail
- 2 Stepper Engines rated at 3.9V from Pololu
- Threaded Rod M6
Stepper that turns the machine around
Stepper that lifts up the mirror
List of Main Electronic Components
- 3.4W Solar Panel from Voltaic Systems Inc.(visible in the image at the top)
- 6600 mAH Lipo Battery (blue)
- Solar Charger V2 from Adafruit (with the big capacitor)
- Adjustable Power Booster from Pololu (narrow blue module, set to 7V)
- Adafruit Fona GSM/GPRS module (with a SIM800L SOC)
- High Side Switch (looks like a MOSFET but has 5 pins)
- Chrondot RTC (the round chip)
- Olimexino ASM (red module)
- Sainsmart Arduino Mega clone (black)
- 2 Stepper low voltage stepper drivers from Pololu (white, directly plugged into the Mega Pins)
Mainboard with all modules
Battery secured with a rubber strap
Charger, Voltage regulator and the Antenna of the Phone
Fona, Clock, Switch and Oli (partially hidden by the cables)
Mega with the stepper driver modules plugged directly into the plenty Mega Pins
There was a first version of the mirror which can be looked at here ZiegelSpiegel 1.0 at Hannover Maker Faier 2014 The 2nd version of the mirror was meant to become "acceptable" to the people who I would ask to put it into their yard. It had to be weatherproof - so they could put it into a corner so its not in their way. It had to be self-sufficient in regards of power supply and connectivity - so no wires were required. It neded to be remote controllable so I would not have to enter their premises to change the target angles or any other control parameter. And lastly it needed to be tested to run for weeks and months without any in-place service.
To make it weatherproof I figured I had to either use weatherproof components throughout or put some or all of the machine into a box. I decided for the later as it would help to make the machine "compact". I used a wooden CD-Tower for up to 3 sets of CD on top of each other. It's slim silhouete is just big enough to house al of the electronics and the mechanics. On top I though I would put a round mirror lying flat if the sun was not shining. This way the mirror protects the machine from direct rain, snow or hail impact - at the times of day when it would be raining the mirror would have no other function anyway. I painted the box with black enamel so even if the bo would be hit by rain sideways it would flow off.
As the machine would draw energy from a solar panel mounted in the bottom of the box it did not have any ties/cables to its surrounding. So I deciced to let the machine turn itself around a2 cm diamter aluminum pole in its center. Why 2 cms? Because this was the best compromise between the sizes of drills available to drill holes into the box, the inner diameter of clamps and cogs that should hold onto the pole and the neccessity to have the pole wide enough to not bend under wind pressure.
Solar Panel - this brings us to the power supply. It sounded easy but did require quite some iterations to get it right. First learning was that the Arduino Mehg, that would be powerful enough to do correct sun angle calculations, did not really allow you to run it at less then 10ma even in sleep mode. This is due to the power regulator and due to the USB chip, also due to the LEDs on the board. In general I believe prototyping boards are not meant to be run on battery power for extended periods. I did not want to replace the mega clone with a more battery friendly version (which are not easy to find). So I decided "let's simply turn off power completely to the Mega when not needed", in particular at night. But who turns it off and on? The clock I have been using (a very precise temperature-compensated ChronoDot) had an alarm signal that would go low when the alarm rings - so a "not" circuit could provide an "on" signal - here I decided to not use a not logic chip but a small Olimexino that is ATTINY85 based. A signal is nice but to turn power on to something consuming 200ma is not possible with a simple logic chip. So I started working with a NPN MOSFET with the most simple way to turn something off - by turning on and off the connection to ground. But the Mega was connected to the clock via I2C, to the power supply via an analog in to measure the voltage, to the Olimexino itself to tell the small Arduino to turn of again and to the wireless module. The Olimexino always had to had power (consumers less then 1 ma when sleeping and when its led is cut) and also the wireless module had to be connected directly to the battery as it draws so much power for a short time when connecting. So the problem with the "low-side-switch" was that all of these connections to other modules that had power and ground led to the mega getting current flowing in and out its GPIO without actually having power - not a good situation.
The second attempt was to use a so-called "high-side switch". It actually can turn the supply voltage to the load off and the load, the switch and all other modules can share a common ground. This was a much simpler set-up with my limited electronics skills to get to work. But this time I had false currents happening still between thepin that would turn the wireless module off and on and the Mega. Maybe with a few diodes this could have been solved. But I instead opted to the following approach: The mega would tell the olimexino (short oli) to turn the wireless module on or off. This way I had decoupled the Mega and the wireless module and I was down to less then 1ma when mega was off and everything else was sleeping.
But, when turning on or off power the simple boolean connection between a Mega output and an Oli input led to false signals - as the Mega turned on the Oli registered it should also turn on the phone. To get this turning one problem under control I went ahead and used PWM frequencies to communicate from the Mega to the Oli to a) turn off everything or b) turn on the wireless or c) turn off the wireless. Now everything worked stable (after a lot of debugging of the wiring, the Mega and the Oli code).
Overall this was the toughest problem and I recommend to anyone putting up a battery operated rig to look for a mainboard that has everything on it and can do low power sleep. Having multiple modules (clock, oli, regulator, solar charger, wireless, mega) each with different on and off states can become a nightmare.
After the power problems were solved I could run my machine for multiple days and the battery would stay stable on cloudy days and the battery would increase its power level on sunny days - Bingo!
The last challenge (in reality all of these challenges happen in parrallel but its easier to line them up for the story) was to remote monitor and control the machine. I first thought of using Zigbee 2 devices that have a range up to 1000m. But with this setup I would have to have arduinos on either end and as I wanted to use the Internet anyway for monitoring I started to think in the direction of Wifi or GPRS based IP connectivity. Wifi would again require to impose on the hosts of the machine to provide their Wifi SSID and password to my machine - so I in the end bought a 40Â€ GPRS module from Adafruit called "Fona". It has a SIM-Card slot and can do Calls, SMS, GPRS in 2G and 3G networks and a few more tricks. The machine posts its key parameters to ubidots.com via a HTTP POST request every hour. I would have liked to post data more often or more data at a time. But the end to end cycle for turning on the device and sending the data is 20 seconds. That would eat up to much power if done more then once an hour. And sending an hours data (from the eeprom of the Mega) also does not work as the 8KB RAM available in the Mega do not really allow to put a 10K string with the hours data together - especially when using JSON and a public cloud IoT solution like Ubidots which eats up 90 bytes for every 2 bytes of payload due to authentication and identifcation of your variables.
Fall 2014: Decision to build a new version
The old Ziegelspiegel has proven that it is possible to beam the sunlight for hours across the river into our living room. To make this work for weeks and months I now plan the 2nd version. More robust (wind), weatherproof (rain), remote controllable/maintainable (to not get on peoples nerves who put up the device) and completely self reliant (no power outlet, no wifi). I have started to think about the weatherproof approach first. My idea is to create a box mounted on a pole. The box houses all mechanics and electronics and turns on the pole during the day. On top of the box is the mirror lying flat protecting the box from direct hits by rain. When the right moment comes the mirror tilts upwards based on a broad hinge on the side of the box and does its mirroring job. A solar panel in the middle of the mirror (to keep it simple) or somewhere on the side of the box would be the final element. My first challenge is the solar power supply. I learned that all Arduino stuff is for short term supply and below 5 v only - all what I found cannot even deal with the irregular high voltage a solar panel could come up with. So right now I'm going for the "classic" 12v "laderegler" (charge controller) to feed into a led-based battery. I can draw 6v from the laderegler for the Arduino and up to 12v for the stepper motors - for the later 6v might actually be sufficient - not to have to much amps drawn on a system that has only a small panel. How does this all add up? 400ma on 6v per stepper engine hour - this will allow for 4 hours of operation. And then the 500ma at 7V solar panel needs to make up for this durig these 4 hours and during the rest of the day. I hope this works. If not I need to reduce the sun reflecting hours to the core. BTW if the weather is bad the battery will still charge as the panel will still provide some load. So it might last for all of the sunny opportunities after all. This last discussion lends me to believe a solar panel mounted on the box is better - donÃ„t need to touch the mirror to harvest the sun.
October 5th 2014: First time testing over 570m
Hooray - for the first time I tried to run this across the valley of the neckar from a spot 570 m away on the other slope of the river. The key outcome can be watched here: https://www.youtube.com/watch?v=LxPr2WmXz3o. Its a part of the 6 hour run where the light shines into our living room as planned for 2 hours. What caught me by surprise was that the limit boundaries I had set this morning led to a shut down at 4 pm - I'd rather have this run until sunset :-). These are the other things I learned: I left the mirror on a table in a parking spot - this was a little uncomfortable - someone might break it or take something away. then I left it there for a few others stopping by to check on the batteries once. When the system seemed to have stopped I rushed over to find out what was going on - It would be nice to be able to remotely monitor what is going on. The fact that my display did not show me that the limit was reached did not help - I also need to fix this. If I would put this in someones backyard remote maintenance and power supply from sun or relectric grid becomes mandatory. Calling up on people just to walk in to check what is going on or change batteries is too much of a nuisance. Remote maintenance might even include updating the firmware. To allow for the right range for the time period the mirror should be working in requires the mirror to be turned to an angle different then 180Â° (south) to allow for a maximum length of the mirroring experience. So the whole thing really leads me to considering to build a new version that is weatherproof and remote controllable. I'm thinking of something mounted on a stick (to look out above everything and to be easible pushed into the earth). Oh well - testing things often leads to the consideration of rebuilding it completely.
September 14th 2014: Latest Changes to the Heliostat (aka "Ziegelspiegel")
6 digits of precision available on the Arduino Uno are simply not precise enough to calculate the position of the Sun. The error can be as big as 0.3 degrees. Now i switched to an Arduino Mega that can deal with the Big Numbers library with really big/precise numbers. Another benefit of the Mega is that I can put in printf statement to my hearts content as I don't run out of memory anymore. The other big change was to move all of my calculations (the sun position, calculating the target from mirror and sun, calculating the mirror from target and sun) into a c-library. I can now run this library both on my PC in test routines and on the Arduino. On the PC I can then finally use a debugger which allowed me to find and fix 2 bugs that have been in the system for quite some time.