Author: ezradharris

  • The Fusion 360 Experience: Turning Ideas into Reality with Printrbot 3D Printer

    The Fusion 360 Experience: Turning Ideas into Reality with Printrbot 3D Printer

    I recently wanted to learn more about Fusion 360 3D designing. To further my 3D modeling experience, I started another project, this time to redesign one of my existing 3D printers from scratch.

    It started with looking at the Prusa Mini+ and how the X gantry worked. The Prusa Mini is an FDM 3D printer by Prusa, a German company. It has a similar style to how my Printrbot Simple Metal is oriented. One significant difference is that the X gantry moves along the rods instead of the rods moving along a centered Z gantry. For example:

    printrbot simple metal and Prusa mini+ comparison (x axis)

    As shown in the figure, the Prusa Mini+ is designed so that only what is needed is moving, the Fans (part cooling, hotend cooling), Extruder, Hotend, and Z sensor. One plus of having the Prusa Mini Design is that there’s very minimal weight and thus less mass movement. I only have to carry the needed weight instead of a significantly heavier X arm on the Printrbot. This isn’t necessarily a downside. 90% of the Printrbot is machined, so it’s highly durable and can “fall off a table and go right back to printing” – Brook Drumm (CEO of Printrbot).

    Another great thing about the Prusa Mini+ is that Prusa manufactures everything in-house and 3D prints most of the parts for their printers. I have found that to be useful as they also release all of their step files which I can use to modify the designs to my liking. Same with the Printrbot, even with it being shut down a couple of years ago. At BrookDrumm.com, there are uploaded .F3D files for every model he’s produced and even some that haven’t been manufactured,

    Prusa factory tour showing off Prusa’s print farm.

    I started by studying both printer designs in Fusion, how they worked, what made them different, and how I could combine both to create the best of both worlds. Next, I began designing my first iteration of my “Printrbot with the Prusa Mini style”PrintrMini.” The first one was very rough. A ton of wasted printed space, an inefficient motor mount with weight not being distributed properly, and a couple of more minor issues: At this point, I’m hoping for one of my last iterations of the design.

    Designing the actual arm that slides. This is version 1 to see what works best @printrbot Its a bit plain but might work pic.twitter.com/Q6k2aI79Xr— Ezra Harris (@Ezradharris) April 7, 2023

    V1 of my design

    After some feedback on a Discord server, I redesigned both the toolhead and the X-Z gantry mount. This time to be as compact as possible with as even weight distribution as I could manage and utilize many of the original parts. This was V2:

    (Above: I figured out how to render in Fusion, so I tried my hand at it. V2 of my design)

    I also bought an E3D V6 Hotend since the original hotend (Ubis 13s) was rather old and had some flaws compared to the newer V6; since the V6 hotend and the Ubis hotend have very similar designs, the original extruder could mount it, which a massive bonus with not having to order another extruder assembly.

    I decided to go for a very similar style in V2 to the original X/Z gantry attachment. I utilized the same motor mount and lead screw to make it more compact and utilize as many original parts as possible.

    At the moment, I’m working on V3; version 3 would be a machined X/Z gantry with an almost identical design to the original Printrbot billet but without the bearings for the X gantry:

    V3 of my printrbot design

    (Above: V3 of my X/Z gantry mount)

    I didn’t change the toolhead mount in V3, as I’m still finishing up some smaller details on the mount. But since it’s 3D printed, I can always print a new design if my current model has flaws. The new X/Z mount would utilize press-fit bearings and press-fit 8mm rods. Using a machined mount would provide several benefits, one being that it’s aluminum and would be super strong compared to my plastic 3D prints; another is that it would still utilize the aesthetics from the original Printrbot with it being machined metal; it is called Printrbot Simple Metal after all.

    I’m still getting a quote from my brother (CovenantMFG) for that at this time, so v3 may or may not happen. If not, ill probably figure out a way to 3D print it, most likely in Carbon Fiber infused filament for strength and temperature resilience.

    So far, this experience of learning fusion and changing my design over and over for more compact and practical parts has been delightful.

    A big plus in this process has Fusion’s student plan. The student plan allows me access to almost every feature for free as long as I’m a student. Previously I had been using the Personal license, which included limited features, such as only up to 10 design files at a time and only being able to import .step files for converting 3D models.

  • Using a DSLR Camera with Octolapse for Stunning 3D Printing Timelapses

    Using a DSLR Camera with Octolapse for Stunning 3D Printing Timelapses

    Recently I bought a used Canon SL1 camera; it’s an old but great camera to use as a webcam or any general-use camera taking. One benefit is that it works with a lot of software using the USB port to capture a live video feed from the camera. When using the USB port it does have a bit of delay between the camera and the live feed, but it isn’t super noticeable in recordings.

    I also discovered it works with Octolapse, a plugin for taking seamless-looking time-lapses of 3D prints. Following a tutorial by the creator of Octolapse (FormerLurker), I started setting up my camera with my Octoprint server.

    The tutorial starts with the initial installation of the main program to interface with the camera. gPhoto. gPhoto supports a wide range of cameras, including my camera, which can File transfer, live view, and capture photos or videos.

    What is gPhoto?

    gPhoto is a set of software applications and libraries for use in digital photography.

    gPhoto Wikipedia

    With the installation, I generally followed the provided steps. Updated any updates that my Ubuntu server needed, updated Octoprint. When installing gPhoto, I had to use the “alternative instructions” since I didn’t run my Octoprint server on a Raspberry Pi, the structure of Linux flavors and different device configurations can make it differentiate the process configuring scripts and general directory locations.

    Next is editing the “sudoers” file. It is similar to the standard setup, but instead of the regular path, I used the provided command to find the install directory where gPhoto was installed. I also used the output inside the line of code I needed to insert into the last line on the file.

    whereis gphoto2
    
    output:
    
    gphoto2: /usr/local/bin/gphoto2

    After that, I can test gPhoto with a snapshot command; surprisingly, it worked! I heard the audible click, and it saved a picture to my server. Once that is set up, the next step is to create a script for the plugin to run in Linux that holds a picture, deletes it from the original SD card, and saves it to where the snapshots need to be stored to later process the whole timelapse video.

    The script included with the tutorial works out of the box for me, thanks to FormerLurker’s documentation.

    After that, I add it to the plugin’s configuration. Which also went well. I continued the guide with “Configuring a DSLR camera,” After which I started a print, and the final result after rendering is below:

    Final result. (Actual quality of the printed cube was terrible due to a lack of tuning at the time)

    One issue after rendering, which I could only fix by uploading it to YouTube, was the encoding and format of the rendered video. VLC media player says its renders at 4K, meaning 4000 pixels across. For some reason, my computer could not play 4K in the regular Windows media player or even my other video players without rendering it at 1/16’s quality. This may be due to the lack of support in my computer’s GPU (Intel Arc A370M Laptop GPU), but I’m unsure. But I can change that in Octolapse’s settings when it renders the final video. The F-stop was also not set correctly, which I can adjust in the camera’s menu.

  • Optimize Invoice Management with Google Sheets, Make.com, and Monday.com

    Optimize Invoice Management with Google Sheets, Make.com, and Monday.com

    Last week I went down a slight rabbit hole while trying to figure out if it’s possible to create an automated invoice generator using Monday.com with Google sheets. Which was surprisingly more difficult than I thought.

    Originally this whole tangent started with following my brother Gideon’s tutorial on how to create automated invoices using Monday.com, the primary function was the following:

    Make.com integration with Monday scenario

    When a button is pressed inside monday.com, the invoice generation process starts:

    • First, it pulls information on the invoice, including the Name of the invoice, invoice number, etc.
    • Second, it gets the customer info, such as Name, address, email, and phone number. (Which pulls from a separate list on Monday)
    • Next, it grabs the list of subitems; in this case, subitems on Monday will be the items ordered on the invoice and renaming all of the information into variable names, making it easier to pull from later.
    • It uses the “{{VARIABLE}}” tag, which registers inside of make.com. Then it creates a Google doc from a template I started at once. It uses Google Documents and downloads a copy as a pdf. Then it inserts it into monday.com onto a predetermined column.
    • Once all of that is done, it updates the status in monday.com to indicate it ran successfully, then deletes the original Google doc so as not to take up space inside your Google storage.

    This is all done within 10 seconds, excellent, and well organized. Most of it runs pretty well. The setup process is pretty self-explanatory when creating it and relatively efficient.

    invoice output
    invoice input template

    The only downside is that admittingly isn’t even that bad. If any items are not filled in, the slots will be blank. If you had two things and there were six slots, there would be four extra empty rows, which can be annoying but isn’t detrimental to the functionality of this invoice.

    A reason why you can’t have make.com automatically delete extra rows is because of the Google API for Google Documents. Currently, you cannot add HTML straight through Make. But a platform that you can edit easily through Make is Google sheets. Google sheets work on a row-by-row basis, as you can delete whatever row you want specifically. Since naturally, it isn’t in.pdf format.

    An issue with using Google sheets is the formatting. Naturally, Google sheets don’t have its file type, nor does it default to pdf when you export (although you can choose to export to pdf.) This wasn’t easy to figure out. For one, I got a download link to my spreadsheet, and when you went to it, it started a download. But two issues; Monday’s “upload a file” module did not support using links to insert files into their columns, the second issue is that the file was only downloadable to those who had permission to download it; I could set it as “public” manually but not automatically. So if Make tried downloading it, it would deny its request due to invalid authentication.

    It took a lot of time to Google and research different ways to save a file automatically. I ended up asking in the make.com forum. I then got a response a couple of hours later.

    You should use the “download file” module of the Google Drive application and toggle ON the advanced settings and select convert file to pdf. This way you can use your PDF downstream in your scenario without making your document public.

    In this case, I would need to use the “Google drive” module, which takes more work to set up when using personal accounts (as listed in the documentation.) But once it is set up, it works amazingly well. Very simple when uploading to monday.com from there.

    Next was figuring out how to delete the rows and how many to delete. This was a more straightforward task. I used two math modules, one with the following formula:

    The formula for the first math module

    This calculates what row to start deleting by using the number 11, the row at which the spreadsheet item list starts. “___IMTAGGLENGTH___” is a value that contains how many subitems there are (or, in this case, items for the invoice.) If there were two subitems, it would output the number “13” I then use this with a “delete a row” spreadsheets module, which deletes the row “13” (or whatever the math output is.)

    Next is another math module that uses 23 (the ending row number of the spreadsheet’s item list) and subtracts it from the previous math output. Using the last number example, this calculation would be 10, indicating to delete ten rows (there are 12 rows total in the spreadsheet)

    second math formula module

    and finally, the actual deleting module setup. Which consists of a “repeater” module that will repeat any action after as many times as you want, in this case, 10. Which I set to be the output of the second math module. After the repeat module is a “delete a row” module that deletes the row that the first math problem generates, it would delete row “13”, but since it is inside of a repeating function. It deletes rows 13 and 10 times. Since Google sheets work in a way when you delete row 13, the row after becomes row 13, thus when deleting row 13, 10 times. This I found to be the most efficient way, as there is no way to delete multiple rows in the “delete a row” module.

    Final module setup

    You can see the final result in the video below:

  • Spotting Fake Phishing Emails

    Spotting Fake Phishing Emails

    Yesterday I checked my Gmail spam folder, and I saw this email:

    Screenshot of the email header

    The contents of the email are a general threat of a typical phishing email with the following:

    It threatened to lock your various email accounts and asked for $950 sent to a BTC wallet. This is a pretty obvious scam in many ways, including that I have no actual email client setup, just a forwarding address. One interesting thing is that Gmail showed that it came from my email address.

    (in this case, [email protected]). I wanted to see if it’s easy enough to tell how it was spoofed. One way of doing this is viewing the original message, an unprocessed backend version of the email, including the email server logs, when Gmail receives it.

    Using that, you can check whether or not the email was spoofed, aka an email coming from an email address but making it look like it’s from your email. You can find out if it’s spoofed or not usually by checking this line in the original message; you can see mine here:

    Showing that the original IP does not certify the email because it isn’t allowed. I’m pretty sure Gmail checks for that line and sees if it’s a legitimate email, then throws it into spam if it gives a soft fail. And if you grab the IP location, its somewhere in India:

    IP details of email

    In general, you never want to click on any links or follow any instructions given by an email that looks suspicious; make sure you check the message by googling it first; I found many forum posts saying they got the same copy-paste email as I got, just a different email.

    And also, check that it’s not spoofed, as I mentioned before, or a lookalike email, for example:

    From: [email protected]

    faking the email with minor changes, it seems like it’s from [email protected].

    One more thing I found interesting is that in the original message, the email said it was from [email protected] but right after said: “Using Preegsr tmraipj” not sure what that means, and I can’t find any client called that; I’m guessing its a name, but it’s clumsy for someone to leave that in the “from” section.

    Informative posts I found while researching this:

    Explanation of each line on an email message

    How to check if an email is spoofed (in Gmail)