Category: Uncategorized

  • Second Steps: 3D Molecular Representations

    Generic picture of a molecular model in CAD software.

    3D Printing

    Hello everyone! Its been a little too long since my first post but I am back and with a lovely mess of problems. Over the last few weeks, I have been looking into how to use a 3D printer. More specifically, I am trying to learn how to use a multi-extruder printer. The two major benefits of a multi extruder printer are utilizing multiple colors for a single print and utilizing soluble supports. The image below shows a 3D print that uses PLA filament as structural support. Specifically in rainbow print of the protein “Seipin” you can see the rough surface where the structural supports were pulled. Let me just say it is not fun trying to pick these models apart without breaking something along with it.

    Sepin Protein 3D Print (rainbow colored)
    tRNA 3D print (red)

    The idea behind using soluble supports is that simply submerging the model in water after printing dissolves supports, leaving just the model behind. The specific filament I am going to be using is Polydissolve S1 from Polymaker which is a PVA filament that is soluble in water and compatible with PLA filament as well.

    The Issue…

    I am currently unable to print using soluble filament at all. This issue has presented itself in many forms. I’ll start with the simplest mistakes and move to the mistakes that are currently unsolved.

    The image below is not a soluble filament print, but it does show THE ISSUE… with non-soluble support prints.

    Image of a non-scientifically accurate Bacteriophage that broke after printing.

    The Simplest: The Wipe Tower

    If you are familiar with multi-extruder 3D printing, there is a function called the “Wipe Tower.” The Wipe Tower is a structure that is printed in association to your model in order to allow for smooth transitions between the different color/type of filament. An example of what I mean is shown in the video below.

    The issue is PrusaSlicer, the software I use, does not “allow” soluble material to be printed with a wipe tower. This is not true and can be bypassed by following these steps:

    Print Settings (Top Tab) –>Support Material (Left Side Tab) –> Top Contact Z Distance set to “0 (soluble)”

    This allows for the wipe tower to be enabled in the “Multiple Extruders” side tab by checking the box. Subsequently the options “support material/raft/skirt extruder” and “support material/raft interface extruder” can be set to the extruder of your choice containing the soluble material (Mine was 2 but it does not matter as long as it is the same as the extruder the material is loaded in).

    Picture showing where to change the Z-distance.
    Picture showing how to assign extruders to supports only.

    The Annoying but Simple: Loading/Unloading Errors

    A very frustrating, but simple, issue I run into is the loading and unloading errors that can sometimes occur multiple times in a single print. My current guess into why this is happening so much is due to PVA material being much softer than PLA and the material does not guide as nicely as the PLA. I think this because I only have consistent errors when trying the PVA material and almost never have the issue using only PLA material. If you are reading and have a better suggestion for a different brand of PVA filament let me know!!

    Also, I am sorry I forgot to take a video of this event but I’m sure it’ll happen again so look forward to that.

    The Most Complex: INFINITE LOADING..

    The biggest, and most frustrating, issue is after everything is set up and the print is started. During this time the MMU (Multi-Material Unit) would endlessly load and unload the filament. Occasionally I would have issue with the 3D printer just going to the corner of the baseplate and unloading filament endlessly which is not good. This leads me to believe this is a program/machine error and not due to the PVA material. There are many different ways to approach this problem and based on my initial research on Reddit, some others found a similar issue and it was a hardware problem. After ensuring there are no clogs or any too loose/tight screws we can ensure sensors are working properly. The filament sensor may be my issue here however I have yet to check.

    Image of a labeled MMU Prusa Printer filament module. Includes filament sensor label.

    Again, I forgot to video this issue but trust me it’ll happen again so stay tuned.

    Moving Forwards: Multi-Color Print

    Instead of never using this multi-extruder 3D printer due to the issues with soluble support I decided to just print with multiple colors of PLA material. To show off the multi-color print best I decided to print a representation of Hemoglobin from the protein database (code: 3PEL). Strangely enough without any troubleshooting this print test started immediately without any issues at all. As much as I wish I could show the final product right away at the time of writing this it has yet to be completed (It takes 13 hours for a 2in x 2in model).

    Image of the Hemoglobin model including structural supports and the wipe tower.
    The hemoglobin model without structural supports or wipe tower. Red and orange highlight different subunits.

    Next Steps: More Work in 3D Printing

    The plan for my next blog post will be to move past the issues I ran into over the last few weeks and actually get even the simplest model printed. If that does not go to plan, then I might start designing a mini-final project. My vision for this includes a model that can be stuck together with pegs that were added using AutoDesk Fusion.

  • Andrew’s Video Essay #2

    Okay, I have to go back in time to talk about this moment.

    It’s April 2024. I am feeling generally horrible. Five months before this, I was told I would never be able to do something I am getting my degree in. Instead of creating art, I start writing a senior proposal with the basic in a published paper titled “Nightmares and Dreams on Progesterone: Trans* Embodiment and Intermedia.” The published paper was essentially an autobiography/instruction guide for art from a creative named Lorelei d’Andriole, and her work in performance art. I fell in love with this particular paper, and emailed the author immediately. Once I figured out that I was heading in this direction with my video essay, I emailed Lorelei again, and we set up a Zoom meeting from her home in Lansing, Michigan.

    Lorelei was an absolute joy to talk with. She gave me honest, thoughtful answers about the work I am going to produce, and she even gave me advice about the future in an interview about her work. We talked about the struggles of practicing art as transsexuals, what the transition period looks like for artists, and some of the topics mentioned in her work. I won’t spoil the whole interview– because some of it is for the video essay– but meeting and talking to Lorelei was the first step I needed in order to take this project from point A to point B.

    This project was stagnant the past few weeks. There is not much to do when you are working with nothing, but I do see the vision of this project getting clearer, which is something I could not say two weeks ago. Now, time for more research and scripting.

  • Evelynestallation Blog Post #4!

    It’s been such a busy few weeks that I haven’t made it into the DKC! However, I do have more fun code! This one is a variation of the code I used in blog post #2, but this time it has sparkles added in. See if you can spot the difference! When I think about coding lights, adding sparkles is both one of my favorite things to do and one of the most difficult because it requires the inclusion of random selection. If I end up hard coding the lights, which I’m leaning towards, I’d definitely include this code!

    Also, depending on the lights you get, this code may make your lights different colors. It’s set for RGB lights, which means that red is the first number in the “pixels.Color(x, 0, y)” command. However, some lights are GRB lights and would interpret the first number, or x, as the color green. If that’s the case, you can switch the x value and the 0!

    If you want to choose your own colors, you can reference the chart on this website!

    Rapid Tables RGB Color Chart

    Happy coding!

    #include <Adafruit_NeoPixel.h>
    #ifdef __AVR__
      #include <avr/power.h>
    #endif
    #define PIN       5
    #define NUMPIXELS 60
    
    Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
    #define DELAYVAL 30
    
    void setup() {
    #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
      clock_prescale_set(clock_div_1);
    #endif
    
      pixels.begin(); 
    
    }
    
    void loop() {
    
     int x=255;
      int y = 0; 
      for (int z = 0; z<255; z++){
       
         for(int i=0; i<NUMPIXELS; i++) {
          
       pixels.setPixelColor(i, pixels.Color(x, 0, y));
       pixels.show(); 
       
       
       }
       long w= random(0,NUMPIXELS);
        pixels.setPixelColor(w, pixels.Color(255, 255, 255));
        pixels.show();
       delay(DELAYVAL);
       x--;
       y++; }
    
       for (int p = 0; p<255; p++){
       
         for(int i=0; i<NUMPIXELS; i++) {
          
       pixels.setPixelColor(i, pixels.Color(x, 0, y));
       pixels.show(); 
       
       
       }
       long w= random(0,NUMPIXELS);
        pixels.setPixelColor(w, pixels.Color(255, 255, 255));
        pixels.show();
       delay(DELAYVAL);
       x++;
       y--; }
       
     } 
  • First Steps: 3D Molecular Representations

    Good morning everyone, this is my first of many posts in which I will be learning how to utilize CAD software in order to edit 3D molecular structures for 3D-printing. My first step was to find a good CAD software that was both cheap (or free) and had enough processing power to edit extremely complex protein structures. After doing some research and speaking with my father I was able to find the software called Autodesk Fusion, which excels in 3D-pritnting related CAD work. Also, Autodesk Fusion is completely free for college students and if it wasn’t it would be like 85$/month which is crazy. Regardless, instead of jumping straight to the end goal I decided it would be good to spend my first couple of hours working with the built in introductory files which help new users to familiarize themselves with the program.

    Also, a quick note, working with complex CAD files requires a pretty substantial computer (a good GPU) and I will be doing most of my work with a desktop gaming PC (GTX 2070).

    After exploring the introductory files, I found that I still had no idea what was going on and decided to consult YouTube where I found a series of videos from a channel called “The Fusion Essentials” (links below). I basically watched each of these videos and made a few designs (shown below). I think this was a perfect practice exercise because creating the dowel of the toolbox is going to be a similar process to making pegs for my models.

    Note: I haven’t made it to part 4 of the video series yet..
    (156) Getting Started with Fusion 360 Part 1 – BEGINNERS START HERE! – YouTube
    Getting Started with Fusion 360 Part 3 – Modeling with SOLID TOOLS! (youtube.com)
    Getting Started with Fusion 360 Part 4 – Modeling Tools, Cutting Holes, and Removing Material! (youtube.com)

    I was a few hours into doing this post and realized that this software needs to support the .STL files created by PDB (Protein Data Base) where I will be obtaining most of the molecular structures. Good thing Autodesk Fusion supports these file types as I would have had to restart and choose another program.

    Well, that’s that for this week. UMW just bought a multi-extruder printer over the summer so next time I hope to include a picture of a test print using soluble support material. Also, should I make a google doc showing off some of the key skills I learn in Autodesk Fusion? Did I blog properly? Also, I’m starting to really get a good idea of what my end project will look like and wow I think it’ll come out good.

  • Andrew’s Video Essay #1

    Hi all. Writing blog posts on the internet is a new experience for me, so I will try my best to make this a cool and casual experience for both the reader and myself.

    First off, my name is Andrew Lee. I am a senior here at UMW studying geography. I know everyone was expecting communications or theatre from my topic, but really, I am just a theory-ridden senior spending most of his time somewhere between the HCC and Jepson (RIP Monroe). I do, however, have my foot in the door in Theatre, as I was a theatre major for most of my time at UMW and I am on Studio 115’s committee. We’re a fun, student run theatre on the first floor of duPont. 

    I am so proud of my accomplishments here at UMW that I wanted to expand my work, and dive into this passion project of mine. All theatre students are required to take Theatre History, and in that class is where I learned my passion was still in research and theory. I was introduced to so many cool artforms that I ended up reading tons of books and articles about avant-garde theatre. This is where the project stems from.

    Another cool thing about me is I am trans. I started my transition at UMW, and during the time I learned about cool theatre history, I was finally wrapping my head around my own gender, and seeing my gender performed live in front of me. I sadly did not see any trans artists performing in front of me, and it felt lonely for a bit. I searched on academic sites and my own personal social media, and I started to surround myself with trans performing artists.

    I am creating and featuring the work of people I adore in the most professional way. In this video essay, with a working title of Funky Men, I tell the story of trans performing artists, how they got to the position they are in, and what their work means to them.

    I hope you all enjoy the more technical posts later on, as I am in the rough draft section of my project now.

  • Evelynestallation Blog Post #3!

    Guess what- the sparkle lights came in this week! I tested the 5 volt LED strip with both the ESP8266 chip and the hard-coded Arduino Uno. The 5 volt strip lit up extremely well. I didn’t see any signs of voltage drop in the 60 light strip. Hopefully that means I can use the light strips instead of the strands for this project. The strips come with an adhesive backing, and as such, they’re far easier to install in any given location.

    However, this week wasn’t perfect. I tried to set up the WiFi connection with the ESP8266 chip and it didn’t work. In fact, I tried on two different days, and I even tried to use the Apogee WiFi system instead of the UMW one. I think that it’s going to be impossible to set up something reliable on UMW WiFi. Too many people log on and off of the system in the HCC every day.

    Here’s a helpful hint if you’re using a WiFi connectable chip: check the IP address on the computer you’re controlling it from and see if the first two sections match. That means you’re on the same network as your chip and you’re able to send data to it! For some versions of the IP address, you might need to check the first three sections. The last section is always specific to your device. It’s like a name for your computer (or chip) that the network can reference!

    I’ve attached yet another set of code, this one for a 60 light strand. I hope you have fun trying this out, because it’s my favorite code yet! It’s called the Rainbow Comet!

    #include <Adafruit_NeoPixel.h>
    #ifdef __AVR__
      #include <avr/power.h>
    #endif
    #define PIN       5
    #define NUMPIXELS 60
    
    Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
    #define DELAYVAL 30
    
    void setup() {
    #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
      clock_prescale_set(clock_div_1);
    #endif
    
      pixels.begin(); 
    
    }
    
    void loop() {
    
      for(int i=0; i<NUMPIXELS; i++) {
    
        pixels.setPixelColor(i, pixels.Color(0, 0, 0));
         pixels.show();
       
        }
       for(int i=0; i<NUMPIXELS; i++) {
     
       pixels.setPixelColor(i, pixels.Color(255, 0, 0));
       pixels.setPixelColor(i-1, pixels.Color(255, 62.5, 0));
       pixels.setPixelColor(i-2, pixels.Color(255, 127.5, 0));
       pixels.setPixelColor(i-3, pixels.Color(0, 255, 0));
       pixels.setPixelColor(i-4, pixels.Color(0, 127.5, 255));
       pixels.setPixelColor(i-5, pixels.Color(0, 0, 255));
       pixels.setPixelColor(i-6, pixels.Color(255, 0, 255));
       pixels.setPixelColor(i-7, pixels.Color(0, 0, 0));
     
        
       
       pixels.show();
       delay(DELAYVAL);
        }
    }
  • Evelynestallation Blog Post #2!

    Hello! Thank you for taking a look at my second blog post!

    For the past 2 weeks, I’ve been planning how to test various types of lights and connectors to see what would work best in the HCC. I put together a purchase list with 2 types of lights (strand lights and strip lights) and 2 types of microcontrollers, or chips. One of them can connect to WiFi! Another thing I added to my purchase list was a power converter that takes power from a wall outlet and dials it down so that I can use my boards without frying them. Typical wall outlets are designed to put out 120 volts of power, which can power a TV. The hard-coded chip I’m going to test runs on 7-12 volts, and the WiFi connectable one runs on 5, so if I fed 120 volts of power into either chip, I’d probably start a fire. When I’m testing, I plan to connect the WiFi connectable chip directly to my computer for power.

    Pro tip: never attach your computer to a system that’s also powered by a battery or a wall outlet. It will probably destroy your computer, and it could also cause a fire. Maybe “things that could cause a fire” should be the title of this blog post!

    Here’s the list of things that I hope to purchase, with links:

    I’ve added more fun sparkle lights code below! Try this code out and see what happens. I hope you enjoyed this post and I look forward to writing all about my adventures testing lights and chips!

    #include <Adafruit_NeoPixel.h>
    
    #ifdef __AVR__
    
    #include <avr/power.h>
    
    #endif
    
    #define PIN 5
    
    #define NUMPIXELS 50
    
    Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
    
    #define DELAYVAL 10
    
    void setup() {
    
    #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
    
    clock_prescale_set(clock_div_1);
    
    #endif
    
    pixels.begin();
    
    for(int i=0; i<NUMPIXELS; i++) {
    
    pixels.setPixelColor(i, pixels.Color(0, 125, 255));
    
    pixels.show();
    
    }
    
    }
    
    void loop() {
    
    int x=255;
    
    int y = 0;
    
    for (int z = 0; z<255; z++){
    
    for(int i=0; i<NUMPIXELS; i++) {
    
    pixels.setPixelColor(i, pixels.Color(0, x, y));
    
    pixels.show();
    
    }
    
    delay(DELAYVAL);
    
    x--;
    
    y++; }
    
    for (int p = 0; p<255; p++){
    
    for(int i=0; i<NUMPIXELS; i++) {
    
    pixels.setPixelColor(i, pixels.Color(0, x, y));
    
    pixels.show();
    
    }
    
    delay(DELAYVAL);
    
    x++;
    
    y--; }
    
    }

  • Evelynestallation Blog Post #1!

    Hello, everyone! My name is Evelyne Breed. I’m a UMW student and sparkly things enthusiast. Thank you so much for taking a look at my very first blog post! I’m so excited to chronicle my adventures in the field of electronics with you. I hope you enjoy this post and follow along with the project! (Read on for a tiny tutorial on how to wire up your own sparkle lights!)

    These past two weeks, I’ve thought a lot about my plan to install a series of panels of LED lights in the HCC that can illuminate in various colors and patterns. In order to communicate my ideas, I created a video that displayed some light effects I could do using hard-coded or WiFi-connected lights and listed the pros and cons for both. For the hard-coded lights, I used the Arduino IDE app, which uses a variant of the C++ coding language. The WiFi-connected lights are far easier to program. I used an app called XLights, which allows me to drag and drop effects as I please! As you’ll see in the video, the lights could look like rainbows of color, subtly fade between hues, or even flicker like fire.

    Of course, I couldn’t just focus on the lights themselves. The lights need to be organized and attached to the HCC in some way. This week, I sketched a potential design for a panel that could be replicated and interlocked to create a long, skinny light matrix. My current idea is to line the upper railings in the HCC with these panels so that the lights run throughout the room. I’ve attached pictures of my initial sketches below.

    Sketch of potential lights panel detailing 3 strands of lights and interlocking edges
    Sketch highlighting the second floor HCC railing to show where lights could go

    Perhaps the most important part of planning a project is figuring out what you actually need to complete said project. My favorite lights to work with are RGB LEDs- that is, they light up in any color- and for this project, I plan to choose 12 volt lights. The reason why I’d choose 12 volt lights over 5 volt lights is that voltage can drop over long stretches of lights. If I use lights with a higher voltage, I can make the strand longer before I have to add in more power. If I decide to hard-code the lights, I would choose an Arduino that works with the IDE app. I’m familiar with the Elegoo Mega chip, so I would probably choose that one. Otherwise, I’ll have to do research into which WiFi-connectable chips are the most reliable for large amounts of lights. I’ve used an ESP8266 chip in the past to connect to WiFi, but it’s a rather finicky little thing and it sometimes fries itself for no apparent reason.

    I’ve attached a list below with all of the components you’d need to create your own version of the hard-coded lights I used in my video. The lights link will take you to a place where you can purchase a 5v strand or a 12v strand of lights. The 5v strand can be powered by your computer, so I’d recommend using that one. I”ll also’ve also added some basic code to make your lights run through the colors of the rainbow, although in order to use it, you need to download the Arduino IDE app and the Adafruit NeoPixel library. In order to connect the chip to the lights, put one connector wire into the ground (GND) pin on the chip and put it in the GND side of the lights connector. Do the same with the voltage out (VOUT) pin on the chip and the voltage side of the connector. Lastly, use your third connector wire to connect pin 5 on the chip to the central port on the lights connector. That’s all there is to it!

    #include <Adafruit_NeoPixel.h>

    #ifdef __AVR__

    #include <avr/power.h>

    #endif

    #define PIN 5

    #define NUMPIXELS 50

    Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

    #define DELAYVAL 10

    void setup() {

    #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)

    clock_prescale_set(clock_div_1);

    #endif

    pixels.begin();

    for(int i=0; i<NUMPIXELS; i++) {

    pixels.setPixelColor(i, pixels.Color(0, 125, 255));

    pixels.show();

    }

    }

    void loop() {

    //

    //delay(DELAYVAL);

    //

    for(int i=0; i<NUMPIXELS; i++) {

    pixels.setPixelColor(i, pixels.Color(0, 255, 0));

    pixels.show();

    delay(DELAYVAL);

    }

    for(int i=0; i<NUMPIXELS; i++) {

    pixels.setPixelColor(i, pixels.Color(125, 255, 0));

    pixels.show();

    delay(DELAYVAL);

    }

    for(int i=0; i<NUMPIXELS; i++) {

    pixels.setPixelColor(i, pixels.Color(255, 255, 0));

    pixels.show();

    delay(DELAYVAL);

    }

    for(int i=0; i<NUMPIXELS; i++) {

    pixels.setPixelColor(i, pixels.Color(255, 0, 0));

    pixels.show();

    delay(DELAYVAL);

    }

    for(int i=0; i<NUMPIXELS; i++) {

    pixels.setPixelColor(i, pixels.Color(0, 0, 255));

    pixels.show();

    delay(DELAYVAL);

    }

    for(int i=0; i<NUMPIXELS; i++) {

    pixels.setPixelColor(i, pixels.Color(0, 125, 255));

    pixels.show();

    delay(DELAYVAL);

    }