In preparation for the Sola(r)Dex I needed to find a circuit that would charge a capacitor with a solar cell and when the charge reached a threshold turn on an output. I went through a number of different circuits including the Schmidtt circuit and the MOSFET switch but ultimately decided that the astable multivibrator would work best. It allows the oscillation between two outputs. I started with two LEDs to understand how it worked.
Astable Multivibrator circuit. The resistor connected to the positive of the capacitor supplies the output with power from Vin. The resistor connected to the negative side of the capacitor is attached to the base of the opposite side transistor.
Phase one, left side capacitor is discharging, transistor on, LED on. Right side capacitor is charging.
Phase two once the right side capacitor charges to sufficient voltage the transistor turns on. Right side capacitor is discharging, transistor on, LED on. left side capacitor is charging.
I took that what I learned about this circuit and applied it to the Sola(r)Dex. I also wanted to see if I could build a complex Beam-Bot. Well I built one, aw heck I built two the only issue is neither work. I’ve been troubleshooting it for a few weeks now and at this point I think a full rework is in order. It looks like there is continuity on one side but not the other but all of the connections look good.
What’s the plan Stan (phil)? Well I would say the plan is to always remember that I am going to die, this way life’s little troubles are put into perspective. Let’s being with a quote,
“Why are there beings at all instead of nothing? That is the question. Presumably it is not arbitrary question, “Why are there beings at all instead of nothing”- this is obviously the first of all questions. Of course it is not the first question in the chronological sense […] And yet, we are each touched once, maybe even every now and then, by the concealed power of this question, without properly grasping what is happening to us. In great despair, for example, when all weight tends to dwindle away from things and the sense of things grows dark, the question looms.” ― Martin Heidegger, Being and Time
Ours is to question, question everything and often, for to stop questioning is death come early. Take time, stop, and breath into your darkness. Acknowledge it, but do not let it consume you. Remember time is not linear, no matter how hard you try and make it linear, it is cyclical bound to repeat.
The above thoughts invite me to be more aware of the ebb and flow of time so as to bring new perspective to my process. They bestow upon me the freedom to relax, to remember that death comes for us all, and with that clarity small stress melts. That is my biggest take away, when life is put into perspective, small things become less important.
Moving on from here I think I will continue to remind myself that small things may feel big at the time but will fade away as fast as they came about and in the end it doesn’t really matter. I generally don’t like notifications however, in this case I rather enjoy being reminded that I will die. I may keep using both digital and physical notifications for at least the foreseeable future.
Here it is the final of the final of the final for Considering Religious Robots, and while we are at it let’s consider what a robot priest/overlord/demon might watch for Saturday morning cartoons.
Picking up where I left off, I had a list of audio files to be cut into segments that when stitched together might resemble what you might hear during a viewing session of “Saturday Morning Cartoons”. The audio sources I ended up using are as follows:
80s 90s Vintage Toy Commercials! Nostalgic TV ads with RAD Action Figures Retro Advert Compilation
2001 A Space Odyssey (1968)
Ferris Bueller’s Day Off (1986)
Hackers (1995)
Saturday Morning Commercials from 1980-1989
The Last Temptation Of Christ (1988)
The Matrix
The Rocky Horror Picture Show (1975)
The Cook the Thief His Wife and Her Lover
I edited these into a single track with commercials interspersed in the audio. Sudden changes in sound result from would be channel changes, some form boredom others from a commercial starting. The end result was a track that was 1:53:44:.908 in length. Great. Perfect. Next step.
Screenshot in Audition of the audio mix.
So now its time to upload the audio file to the Google Colab machine learning environment. Ready 3, 2, 1 GO! NOW wait 12 hours….
12 hours later…
WHAT!?!?!?!?!?!?!?! Timed out!!! 12hours of waiting for nothing!! OK lets do some more research.
Well cool wish I had done that research before, although there was no way for me to know how long a 2 hour audio file would take to process. So now I know, and just as GI Joe say “Knowing is half the battle!”
So let’s re-edit the audio, this time lets make it 29:00.074, lets hope this works!
It worked!!! 8:29.18 hours later a video was born. Now I just needed to find a place to host this copywrite-infringement-waiting-happen of a video. It’s ok though cause this is for education purposes.
I did Two version of the video one using a model weight generated from the previously mentioned data set and birds the other used the same data set and landscape. I wanted to have a stark contrast between the dataset which was very surreal and other-worldly and the natural environment in which we live.
I adjusted the parameters inside of Google Colab for each attempt to see if there is a noticeable difference between the output of each, you be the judge.
Parameter settings
Resulting video from the audio mix and a model weight form styleGAN, my dataset, and birds.
Resulting video from the audio mix and a model weight form styleGAN, my dataset, and landscapes.
In the end I think it came out pretty good, I would like to push this further. I want to better understand the relationship between the parameters and the audio input. There are some parts of the video where the link between the audio and the visual is very apparent however, there are parts that have a very strong link. It seems that rhythm to the audio does play a big part, I want to work with the code and see if there is a way to make it work better with spoken word.
For my final project I chose to think about what clergy, holy people, and the like do in their spare time. WATCH TV! Would our robot overloads do the same thing? I venture to guess the would. But what would it look like? Hopefully the end result of this project will represents what the AI might see in it’s mind eye, kind of parallel to how we process and establish neural connections during our sleep – dreams.
I used a base google colab notebook, VisionaryArtGenerator, altered it and then generated 7000 images from the input. Using those images as a dataset, I used a style GAN to create a .pkl file to input into another google colab notebook called Lucid Sonic Dreams.
Keyswitches are at the heart of one of the most used human input devices, the keyboard. They are produced in a number of different form factors and styles.
The mechanical keyboard Switch: when the keycap is depressed the the plates inside the keyboard Switch make contact, the keyboard Switch is connected to a PCB located below it, which in turn completes a circuit sending an electrical signal to the device resulting in a predetermined action. These keyboard Switches preform the same type of action that a momentary, non-latching, switch preforms. The result is a temporary state change.
The rubber dome switch: when the keycap is depressed the living hinge collapses allowing the conductive pad to make contact with the PCB, completes the circuit and sends an electrical signal to the device resulting in a predetermined action. These keyboard Switches also preform the same type of action that a momentary, non-latching, switch preforms. The result is a temporary state change.
Definitions
Terms frequently used when referring to keyboard Switches.
Clicky: refers to the sound made when the swatch is pressed
Tactile: refers to a noticeable bump or shift when pressing the switch
Quiet: low noise but still precipitable
Linear: no bump or shift, but has noticeable resistance
Silent: no precipitable sound, usually only membrane or rubber dome
Centinewton: the force measurement for actuation
Actuation Force: the amount of pressure need to move depress the switch
Actuation Distance: amount of movement before contact is made
Typical Applications
The keyboard Switch is first and foremost designed to be use in keyboards. Most have a fast response time and because of the PCB and firmware used often times multiple keypresses from different keys at the same time still register. Although keyboard Switches are predominantly found in keyboards the possibilities for use in other areas is quite broad. There are some mice on the market that use these type of switches under the two main left and right buttons. Furthermore there are many different types of keyboard Switches in terms of feel clicky, quiet, tactile, and are also available with different actuation force.
Basic information from compiled datasheets, there are many different keyboard Switches but they all have the same basic electrical specifications. The points below have been aggregated from more than 20 datasheets.
Switching Voltage 12V AC/DC max – 2V AC/DC min
Switching Current 10mA AC/DC max – 10µA min
Insulation Resistance 100MΩ/DC 500V
Withstand Voltage 100V AC 1 minute
Dielectric Strength 500V 50Hz
Actuation Force 45cN-95cN
Physical Characteristics
Vendor and Module Info
Each keyboard Switch has a specific way to interface with a PCB, however no keyboard Switch is packaged with a PCB. It is the responsibility of the designer to create or acquire a PCB with the appropriate interface for the chosen keyboard Switch. A few common manufactures include Cherry, Kailh, Matias, Torpe, Gateron, and Outemu. By for the most used standard is MX, developed by Cherry but adopted by many of the aforementioned manufactures.
There are many factors regarding the use of keyboard Switches, switch feel is the most important characteristic. Almost every keyboard Switch produced will have a written description of how the switch feels when being used. The terms that are most commonly used are as follows, these can also be found in the section above titled “Definitions”; clicky, tactile, linear, and silent. These terms can be used in conjunction with each other i.e. clicky + tactile. The second factor to consider is actuation force usably given in centinewton(cN) which is a decimal fraction of the SI unit for force KgF.
Custom housing is always almost necessary, utilizing the datasheets for dimensions and interface points is crucial for proper functionality. Prototyping can be difficult, keep in mind that this switch functions the same as a push-button momentary switch allowing the use of a breadboard to test the circuit before committing to a permanent solution.
Strengths and Weaknesses
The major weakness of all keyboard Switches on the market today is the need for a specific PCB layout and the need for an appropriate housing. The size of most keyboard Switches has been somewhat standardized over the past few years however, the PCB layout and interface have not. That being said, again, by for the most used standard is MX, developed by Cherry but adopted by many of the aforementioned manufactures.
Since these switches are mechanical there are moving parts, this means they will eventually wear out. Although most mechanical keyboard switches claim to have 50-100 million actuations.
Example Circuit Schematic
keyboard Switches are almost always used in multiples the circuit schematic below has 3 x 3 matrix resulting nine switch positions. To read all the switches row/column scanning is used, see “Example Microcontroller Code” for code example. Note the inclusion of a diode at each switch, this is needed to reduce the likelihood of ghosting where a key that hasn’t been pressed is recorded or a missed key press. The diode stops the signal from traveling “backwards” and giving a false reading.
Example Microcontroller Code
For this example there are nine switches, normally this would take nine input pins to control, for this reason row-column scanning is used. This allows nine switches to take only six pins, three rows and three columns. This becomes even more important when adding more keys, for instance a standard full-size keyboard has 104 keys, the input can be accomplished with the use of just 22 pins, 11 for the rows and 11 for the columns.
Here are two examples of code for row-column scanning, it’s also know as a matrix. The fist example makes use of the Keypad.h library which can be found here https://github.com/Chris–A/Keypad/tree/master/src. In current versions of the Arduino IDE you can search of “Keypad.h” in the library manager and install it directly from there.
What do you do with all those trading cards you have lying around your house? I put them in boxes and forget about them. But the artwork is cool, I wish there was a away to display them… Enter the Sola(r)Dex, a fun, solar powered device that flips through a number of cards and randomly stops at one. What kind of magic is this you might ask, well its totally light magic! hahah! The suns radiation powers an analog circuit that alternates between illuminating a light bar and turning a geared motor.
I started by researching different circuits that could trigger an action without any user input. I cam across a few different circuits that would work in the fashion I wanted. The Schmidtt trigger, a MOSFET switch, a SIDAC, or an astable multivibrator. I settled on using the astable multivibrator, an in depth look at my research regarding that circuit can be found here. The basic Idea behind the circuit is to allow power to flow through on capacitor and output while another capacitor charges, the use of two 2n3904 NpN transistors are what allows this to function. The power input for the system in this case are four 8.5v 100mA solar panels. They are wired in a hybrid system two sets of two series panels wired in parallel. This allows for a 17v 200mA power setup.
This circuit oscillates between outputs, in this case an LED bar of ten individual diodes and a motor. While the motor is stopped the LEDs light to show the state of the circuit, when the capacitor for the motor is charged the motor turns while the LEDs are off. This cycle repeats in perpetuity as long as there is power to the system via the solar panels.
Circuit diagram for the Sola(r)Dex, astable multivibrator.
MOSFET switch, ultimately did not use this circuit.
Schmidtt Trigger, this circuit was not used in the final.
First working astable multivibrator circuit.
Same astable multivibrator circuit, adjustments made to the capacitors, resistors, added 10 LED light bar (to both sides first for testing), and finally added the motor.
Video showing the circuit cycling under the floor lights at ITP.
Video of the circuit under the solar cart. The video to the left and this video show the same circuit under two different lighting conditions. The interesting phenomenon between the two is that the high powered light source shows a much slower cycle time. I still have out to figure out why this occurs.
Circuit with two 10 LED bars powered via 9v battery.
Finally we see the circuit working with the motor and the 10 LED bar powered by the solar array.
After the circuit was finalized and working I turned my attention to the design of the Sola(r)Dex itself, I iterated on a few different designs from pulley driven, a horizontal layout, and finally arriving on a vertical direct drive mechanism. The solar array is a remote unit so it can be placed in an area with sun exposure and the Sola(r)Dex placed in another location. I 3D modeled a few parts to mount the motor, the panels, and the carriage for the cards. These were then printed and cured. I decide to use cast concrete for the bases of both the Sola(r)Dex and the Panel unit for stability and I think it looks good hahaha. Other parts include a protoboard, aluminum tubing, and some hardware. A full BOM is provided at the end of this post.
CAD view of the motor mount.
CAD view of the card carriage.
CAD view of the panel mount.
Rendering of the three printed parts.
Rendering of the card carriage.
Rendering of the motor mount.
Rendering of the panel mount.
Protoboard assembly.
More protoboard assembly, not the last step, but the last picture I took for this part.
Solar array assembly.
Concrete molds, also known as plastic food containers. Often times I use found containers for my molds unless a very specific form is desired. Since I wanted the bases to functional, very minimal, and clean but didn’t necessarily need a something showing, I used the food containers in this case.
By far the most tedious part of the fabrication was building the card holders.
I used flexible card sleeves as the bas for the card holders.
Clear heavy duty packing tape was used to create hinge to be inserted in the card carriage.
Small brass rod was used to create an anchor point for the card holder. Three layers of tape were needed to increase the thickness of the anchor point, this was needed because I forgot to change the hold diameters in the card carriage after ordering the next smaller size due to availability issues.
Last I used WeCroak to gain perspective on stress in my life. The app gives a notification fives times a day reminding you that “Remember You Will Die.” The automation was was a good way to be random about the when the notification would happen, this intern meant the thoughts or activity I was doing was also random. I wanted to see what would happen if I was more deliberate in when I received the notifications.
So I went back to a very old school very analog way of sending notifications, the sticky note. I wrote “Remember You Will Die” on a number of sticky notes and placed them in locations I visited frequently. I chose the locations based on behaviors I wanted to be more conscious around. Below are the locations.
Material closet– I have a tendency to forego PPE when using tools or chemicals, I know this is not a good habit.
Shoe/jacket closet– I look at my running shoes everyday and don’t pick them up even though I know running (or exercising) is good for me and gives me more energy.
Leaving Bathroom– A lot of accidents happen in the bathroom, be aware…
Bathroom mirror– Written backwards to do it can be read in the mirror, this is more about being true to myself.
Dry food pantry– I have an odd relationship with food and I have tried many times to change my behaviors around food, maybe this will help.
The refrigerator– Ditto form above.
Top shit drawer– I get dressed everyday, why not have some contemplative thoughts every morning.
Laptop– I don’t use my laptop daily, when at home I use my desktop. Sometimes work can stress me out, having this reminder on my laptop is a good way de-stress as I start working.
Front door– The outside world is a dangerous place, take heed.
Material closet
Shoe/jacket closet
Leaving Bathroom
Bathroom mirror
Dry food pantry
The refrigerator
Top shit drawer
Laptop
Front door
At this point I can’t say how effective it is at changing my behaviors, I need to sit with this for much longer. I will say that when I encounter these notes I do stop to think about my actions associated with those specific places. It could be interesting to adapt this into a location based service using either location data or for small spaces NFC. I could envision a a series of small NFT tokens associated with goals or behaviors and places in your house. When you come into range a notification would be sent with specific information about how to think in relation to the set goal or behavior.
I would like to push this a bit further and refine the actions and wireframe an app. Overall I think the idea of notifications that helps to put things into perspective is something I will continue to use and ideate on.
For my final project I chose to think about what clergy, holy people, and the like do in their spare time. WATCH TV! Would our robot overloads do the same thing? I venture to guess the would. But what would it look like? Hopefully the end result of this project will represents what the AI might see in it’s mind eye, kind of parallel to how we process and establish neural connections during our sleep – dreams.
I used a base google colab notebook, VisionaryArtGenerator, altered it and then generated 7000 images from the input. Using those images as a dataset, I used a style GAN to create a .pkl file to input into another google colab notebook called Lucid Sonic Dreams.
Are human’s hackable? Are machines hackable? The answer to both of these questions is yes. There is really no difference between the matter we as humans are made of and the atoms that computers are made from, after all..
“Today a young man on acid realized that all matter is merely energy condensed to a slow vibration, that we are all one consciousness experiencing itself subjectively, there is no such thing as death, life is only a dream, and we are the imagination of ourselves. Here’s Tom with the weather.” -Bill Hicks
Reprogramming the mind and body is about repetition, I’ve had plenty of physical reprogramming in my life. Years of extreme sports has left me in a bit of misalignment to say the least haha. A small metal change holds a number of vertebrae in place. Retraining that injury can’t hold a candle to retraining the mind.
I have been practicing cognitive brain therapy (CBT) for at least a decade. Belief in the positive energy and frequencies of the universe, along with trying to keep a positive mental attitude (PMA -thanks Bad Brains) has helped me re-wire my thoughts.
After a while the behavior becomes second nature and allows the practitioner to engage in the behavior subconsciously. Last week when Dano talked about the app WeCroak I thought it was morbid and kind of odd. But I sat with the idea of using to try and re-wire some stress related thinking. Five times a day a notification reminds me that “You Will Die”, this forces me to stop and rethink if the stress I’m feeling at that specific time is worth the energy used to continue those thoughts. I’ve been using it for five days at this point and it actually work pretty good. The momentary reminder and then mental reflection really allows me to re-center myself.
I think I will continue this for at least a month to see what kind of changes I can see. Its actually a pretty interesting idea, it serves to remind you that perception is reality especially when it is in your head about yourself, and it also helps to normalize death which is not something western culture deals with particularly well.
A return to some hard surface 3D modeling. A spider can feel cursed at times and mechs if you think about how they could evolve into an all powerful sentient being could also be cursed, so why not make a sentient-surveilling-spider-mech? That’s what I did, just a little fun in Rhino and Keyshot.
I was finally able to get my Spotify data for the first part of the year. This comes is in the form of a JSON file.
[
{
"endTime" : "2020-04-13 15:16",
"artistName" : "Doom Side of the Moon",
"trackName" : "Time",
"msPlayed" : 7810
},...
I only needed the "artistName" and the number of times each artisitName appears in the file for the visualization I wanted to produce. To do this I fist converted the JSON into a CSV file and removed all the extra data, then I converted it back into a JSON file to use a p5 word counting sketch to determine how many times each artistName was in the file. Then exported a CSV from p5 of the atristName counts, I could then use this CSV file to generate a visualization for my streaming history since January first 2021.
The code The code randomizes the color and placement of each data point.
I also used this opportunity to setup and use Visual Studio Code. I enjoy the interface and the ease of use for larger supplemental files. One thing of note. In the p5 web editor the data points(circles) would always overlap and when using Visual Studio Code the overlap worked as expected and kept the data points(circles). There is no difference in the code running in the p5 web-editor and the code running in Visual Studio Code.
Visualization using Visual Studio Code and Live Server. Note the circles do not overlap.
Visualization through p5 web-editor. Notice the circles overlap in this case.