Are you waiting for something that may never happen? Maybe it’s the end of your ennui, or the release of Half Life 3. While you wait, why not build a Godot Machine? Then you can diversify your portfolio and wait for two things that could happen today, tomorrow, or at sunrise on the 12th of Never.
The Godot Machine is a functional art piece that uses a solar panel and a joule thief to charge a bank of capacitors up to 5V. Whenever that happens, the Arduino comes online and generates a 20-bit random number, which is displayed on an LED bar. If the generated number matches the super-secret number that was generated at first boot and then stashed away in EEPROM, the Machine emits a victory beep and lights a green LED. Then you can go back to complaining about whatever.
We like that [kajnjaps] made his own chaos-based random number generator instead of just calling random()
. It uses a guitar string to collect ambient electronic noise and an entropy generator to amplify it. Then the four least significant digits are used to seed the logistical map, so the initial value is always different.
You don’t have to create your own entropy for truly random numbers, though it’s probably more fun that way. Did you know that someone wrote an Arduino entropy library?
Reminds me on my old project: https://im-pro.at/index.php/projekte/2007-paranormal-detektor
Hi, can we see that in action? Does it takes samples or it’s just averaging the noise? Neat idea :)
I have heard of using randomness as a measure of paranormal activity – how well did it work?
I guess the machine’s name is a reference to Samuel Beckett’s play… Original project !
Quaquaquaqua!
If it uses 4 bits to seed the random number generator then the results are not always different, there would only be 16 (2^4) different outcomes.
Just as the seed of a plant is not the mature plant, a random seed is not the random number that results.
Just as a mature plant has been “shaped” by the multitude environmental conditions that it grew in (e.g. amount and timing of sunlight, water, carbon dioxide, as well as soil contents and conditions), the random seed only gives the initial conditions for the rest of the number generation process.
That said (written); because the seed is one of sixteen possible, the final output would be considered “pseudo random”
Now, if you excuse me, I must get back to waiting for Godot to arrive.
It says “four least significant digits”, not bits.
It samples the Arduino AD converter 8 times to construct a 32 bit seed. From each AD sample, only the 4 least significant bits are used.
You missed the very next line in that list:
– Shift these 4 bits into a ‘seed’ value, repeat 8 times to get a 32-bit floating point seed.
You can greatly simplify joule thief contstruction with a small pulse-type transformer. The trick is finding them cheaply. I have a rather non-optimal one (mH vs uH) which still manages to output about 26mA when voltage regulated by a small n-FET.
What is the advantage anyway of using joule thief for solar cell instead of simple boost like MCP1640? It starts at 0.65V and can work down through 0.35V, and that sound good to me.
The advantage is that the system is current limited rather than voltage limited. The voltage will drop when a load is applied, but you couldn’t boost it to fix that.
The MCP1640 solution is definitely more efficient. And that’s a way to go if you have an MCP1640 in your junk box.
The Joule thief circuit is rough and ready, works with parts on hand/part substitutions, and is significantly more instructional to build yourself than simply buying a (well-designed) integrated solution and then following the datasheet circuit: https://www.microchip.com/Developmenttools/ProductDetails/MCP1640RD-4ABC
For this project, which is muuuuuch more about a DIY ethic and a circuit-punk design, the well-engineered solution would be entirely out of place. It would have brought the whole “mess of transistors awaiting enlightenment” factor down. I wouldn’t go so far as to say it would have killed the aesthetic, but almost. Certainly not as cute as a JT for the boost.
I don’t think that you’d want to swap out the power regs in your computer for Joule thieves either.
Could have used a feedback on the output of the boost circuit instead of a 5V shunt. It would save a few parts.
I must be missing something.. How do you display a 20 bit number with only a 4 bit display, ie the LEDs?