Planning a Semi-Sealed Night Light Part 3

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am prototyping the shape for this large night light project. Let’s get Started!

I made a lot of progress this week. We ordered a roll of white PLA plastic for this project, and since it worked out well with a free shipping deal, we also got an ABS spool for when I print up another Pi case sometime in the future when I have a setup that can safely handle the toxic fumes.

While the spools were shipping, I got into Blender, and fiddled around with merging two half-cylinders on top of a box. The shape is supposed to look kind of like a house with four windows. Modeling that up took the majority of my time, but that was review. Good thing I remembered enough to recognize or look up the names and shortcuts for each tool I used.

I printed up my first prototype, and it turned out about exactly as I imagined it, only the color was solid white instead of clearish white like the demo filament that came with the printer in the first place. I modeled up an interior, and it turned out exactly how I imagined the first one. When I saw the printer wasn’t doing it correctly, I applied my mirror modifier and tried connecting the inside layer and outside layer, but the same problem must have happened again, because when I opened up the slicer with the allegedly third design, it was the second, sealed design. Good to note it doesn’t just draw the outer most layer.

While the third one was printing, I decided to slip in a few “spare parts” that were otherwise rattling around in my laptop before replacing the power port. I paused the print and noted how I would need access to the back of the printer when I install the electronics for the final light. Another minor mystery I’ve been dealing with was specks of other colors showing up in prints. While shopping for the filament, we actually spotted a spool for cleaning the printer. I don’t know how it works, but I could see the demand for such a product if someone wants to make sure if there isn’t contamination between colors or types of plastic.

I’ve used what I’ve learned to refine my understanding of this project:

Prototype shape
Hollow Prototype (present)
Model up relief pictures on “windows”
Deduce Final size
Electronics to fit final size
Refine model to hold electronics
Final product

In the interest of keeping specks of black or red out of my final print, I think I want to make a print to demonstrate the full print range of the printer. I’m thinking of doing a simple cube with just the edges. It will produce a lot of infill, but I think it will be neat to just have a cube around.

Final Question: What fun shapes would you like to see available for print for tiny computers?

Planning a Semi-Sealed Night Light Part 2

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am covering the repair of my laptop with what I believed (until just minutes ago) was the only full sized SD card reader in the house. Let’s get started.

My overall project will rely on the 3D printer, but the only installation of my printer’s slicer is on my laptop. I’ve had this machine for almost a decade. Even though it’s an old machine, it can still barely keep up with my relatively relaxed demands from it. The slicer is still well within its capabilities relative to my patience.

A few weeks ago, I want to say a month or so, I was setting my laptop up for streaming our church’s service, but it didn’t like its power chord all of a sudden, so I set Blinky Pie (My Raspberry Pi computer) on the case. Meanwhile, after testing and replacing the old power chord, we compared the power port to known good ones, and a central post was missing.

My father and I ordered the part from an official source, and finally got around to changing it out. Note for future operations: When the part you’re replacing is at the bottom of a tightly packed pile of electronics, check the fit with any external connectors before installation. We were okay this time.

The repair took a while. My father did most of the work while I navigated the service manual and kept most of the parts straight as they came off. While it was open, we took the opportunity to extract this impressively rectangular dust bunny from the fan as well as a few rattling pieces, mostly broken bits of plastic, but there was a mysterious screw. During reassembly, I found that three of the screw guides/spacers were broken off from the case. I removed the speaker assemblies from around their spots, and found patterns on the sides to tell which was which. We super glued them in place and finished reassembling. I think at least one of the super glue jobs didn’t hold

We plugged it back in, and… got the same error that started the mess. The brand new power chord isn’t recognized. Some research online suggested it may be the motherboard going bad. That one hurts. I’ve had this machine for a large chunk of my life now, and I still had more plans for it. There may still be a little hope. The internal chord for the replacement power port was a bit longer than the original, so we might have ended up with an imitation or one meant for a different model. Otherwise, it might be a BIOS problem. Time may yet tell.

Final Question: What was the most intense repair you’ve taken part in?

Planning a Semi-Sealed Night Light Part 1

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m starting a new project where I install some electronics while a project is still printing. Let’s get started!

This will be a much larger print than I’ve ever done before. I know that already. I’ll be laying out the pieces of the project and ordering them as I write, just to play with the writing style.

Different parts include: Blender modeling, Laptop repair, White filament, and Assembling a circuit. If I think of more, I’ll insert them where appropriate.

Project Concept: the final product will be a gift for a friend I’ve known for a long time. It will be roughly cube shaped light printed from white PLA with relief pictures of either Angels or Cats on the sides. For extra style and practicality, I want the top sculpted to look sort of like a curved roof. A long lasting light bulb will illuminate the whole thing from the inside from atop a custom circuit board, but anything inside won’t be accessible after the print is finished.

Laptop Repair: the other week, my laptop refused to accept my power chord. It looked like a bent power pin, but it was a large piece of plastic from the port missing. That will easily take up a post when the part comes in and I cover its repair.

White Filament: I have two colors of plastic right now, black and red, neither of which would look good for a light. The plastic needs to let light through, but also go with pretty much anything.

Assembling a Circuit: this is a topic that could easily take two or three weeks and will challenge and grow my abilities the most. Simply put, I have no idea what I’m doing here, except that I need it to move power from the power chord to the light bulb, and maybe some colored LED’s around the outside. I’ll want to thoroughly test it before final installation.

Blender Modeling: this one will happen in tandem with the previous one. I’ll need to establish a maximum size for the circuit board based on how big I can make the case with the printer. But I’ll need the final measurements of the final board before I start the final print. Unless I want to toy around with an induction based power chord, I’ll need a place to plug in a power chord. It might also help if I was able to screw down the board itself.

So far, I have a fairly good idea for the overall shape modeled in Blender; I don’t think I have a good mesh yet, the boolean operator didn’t exactly like two half-cylinders intersecting like I had them doing.

Final Question: How have you aimed for something out of reach, but not so far as to (hopefully) be unobtainable?

Ice Boat Challenge Port Revamp Part 2

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am covering the finer details of my port of one of my favorite minigames in Minecraft. Let’s get started.

Many times over this project, I’ve tun into bugs. There is no way I’d remember them all, but I did pick up a few tips along the way, mostly from Grifter. If things are going wrong with relative coordinates, try aligning yourself with the source block and teleporting to the relative coordinates. Another approach is to set a particle in a repeat command block or a chain command block downstream of one. More often than not, one of these will literally get you where you want to go. I recommend the barrier particle for its lack of movement and occupation of a full block space.

Another bug I had to deal with a lot early on was invalid functions. If you try loading a datapack with an invalid function, Minecraft just throws a compilation-time-like error in the console then ignores it. Fortunately, the error report, once I read it under Grifter’s instruction, told me where the function, line, and column of each error was. It also didn’t help that Minecraft functions can’t have a comment start part way through a line.

The most recent bug I had to deal with was one that royally goofed it during some stress testing my parents, Annie_8472 and Leo_8472, kindly provided. Sometimes, a level wouldn’t load if you didn’t make it onto the pressure plates far enough. I tried fixing that by using align xyz command segments, but I only made it worse. I never did figure it out because I reverted the change and extended the search range to include a bit more of the alcove. For those keeping score, the bug was with the IBC game and not the MGC core.

At present, the project is almost done; I don’t think I’ll have enough for a whole new post next week, but I still need to debug the Lost & Found. Jamcdonald, the one who showed me the super hoppers last time, did a quick test for me and made note of the bug. He also pointed me in the direction of a place to get signs to do some fancy stuff the original credits signs do.

Final Question: I’m open to further development after things launch. What kind of levels do you want to see in this datapack?

Ice Boat Challenge Port Re-revamp

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am going over the “boat race” I ported to Minecraft 1.13 vanilla. Let’s get started.

At the beginning of the week, GrifterMage, an admin on the Minecraft server I play on, showed interest in getting the boat race up and running again sometime soon. I had already changed its host server over to a “Paper” server, like the server the project is being built for. Everything worked for a little while, but one day, the datapacks I tried sending weren’t working. I restarted my server, and my “original” copy was broken.

I decided to rebuild the backbone of the project from the ground up. While Grifter recommended I reuse as much as possible, I knew there was a certain amount of spaghetti logic at the end. I figured it would take less time to take the lessons I learned last time and make a version 2.1.

Grifter said he was okay with work-in-progress “untested” datapacks, so I made provisions as I set up my workspace. With Derpy set up as a VNC machine, I experimented with different arrangements of windows on both Derpy and my home Windows machine until I ended up with something that works.

My creative server with the secret boat race development laboratory in an Ice Spikes biome served to manufacture the structure files. From there, I would switch over to Derpy, where I would copy them into the “original” datapack along with the “originals” of the functions to run the whole setup. The datapack was stored in a special file on the desktop beside another file called Nightly Backups. This file did not live up to its name. I saved between two to four zip files per day there; whenever I felt I needed to make a progress report to Grifter I would open a terminal and run a command to zip the datapack for both storage and transmission.

The greatest flaw I perceived in my design last time was my inability to be sure someone else could set the game up on another server, so I created a “Clean Paper Server” to test my datapacks myself where I wouldn’t need to worry about anything accidentally relying on some scoreboard objective I forgot to make sure was created. Once I was done, all I had to do was delete the old server, copy the Clean Paper Server beside itself on Derpy’s desktop, copy the datapack into Clean Paper Server (copy 1), launch the server, hop in with my client on Windows, load both halves of the arena, and install the Ice Boat Challenge game. If this were something I was planning on needing to do over the course of a month or more, I would have looked into writing a script to automate what I could on Derpy.

The design objectives of this version remain almost the same as my first attempt at porting the boat race. I want to minimize the load on the server, while making it as easy as possible to develop other games for the system. I ended up coming up with a number of standards, like a “home” block for most command blocks in the Level Slots (floors a level can be loaded into) to run their commands from, forming a sort of two-way vector between the homes of each Alcove and Level Slot.

One improvement I noted in my notes for future development was to set up something similar for navigating the alcove. When Grifter introduced the /data merge command to me so I could use the same structure block for basically anything I wanted, he hinted that Minecraft 1.14 might actually let commands pipe information stored in such structures as input to other commands. I made sure to note that in many places within the comments of my functions. /data merge also opens up the possibility of multiplayer games that hijack functionality from the alcoves, so I made provisions for that functionality in the future.

This time around, the game starts when a player steps in an alcove. The Game Center operating system checks the player’s score for what game they want to play, and loads that game’s loader into the Level Slot for that alcove using a structure block in the home coordinates. The loader checks what slot it’s in, then checks what level to load for the player in the Level Slot’s alcove. It tries to load in the first half of the level, but if it fails for any reason, it has a carefully staged self-destruct to reset the Level Slot while making sure the redstone bits don’t accidentally pop off while multiple blocks are being changed (I’m pretty sure Minecraft likes to work from low y values on up based on an experiment I did with End Gateways, and my observations here back up this hypothesis).

After the loader, a series of command blocks embedded into each level takes over. These blocks handle spawning in the boat, teleporting the player, animating the boat so it does its cool spin, and checking for if the player has won or left their boat. It is here that I fixed a bug where the last version would smash players’ faces every once in a while. I used some redstone to space out commands. One of the last major bugs I faced before I got the main show working was dealing with how I hooked up the win detector. I had two blocks on repeat calling the same function and feeding into the same conditional chain command block. I ended up moving the win condition and giving it its own, dedicated command block.

A very big thanks to Grifter for all the help he’s given me this week. He got me started and helped me build inertia until I understood things well enough to continue mostly on my own. He also provided a friendly Discord avatar for me to explain the problem to in the hopes he would have time to help fix my current bug, only for me to keep working on it and often find it on my own.

A final word: documentation. Documentation is the link between you programming now and whoever is working on your project in the future. I have a whole folder in the root directory of the datapack with what the logic behind the Game Center and the Boat Challenge game is supposed to be. It also has a list of known bugs, a list of naming conventions I found helpful, credits, and even some general notes for what to do for if someone ever rewrites the project again

Final Question: Have you ever gone back to redo a project, only to find you’ve sped up by a fairly large margin


An Experiment Rerun

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am rerunning the experiment from a few months ago to see if my Raspberry Pi is likely to melt through its PLA casing. Let’s get started!

Last time, my apparatus failed miserably. The painter’s tape holding the thermal probe in place slipped just enough to let the probe get away from the point it was supposed to be measuring. This time, I used Scotch tape, and it held. Another improvement was a custom program that ran all the CPU’s cores at 100%, compliments of the workshop I’ve been going to. I recorded temperatures to the nearest tenth of a degree instead of rounding to the nearest whole.

Results for today’s experiment. All measurements are in Fahrenheit.

I ran the experiment for an hour, taking measurements on a white envelope on my desk, a chip on the upward facing bottom of the Pi, and the probe measuring the target spot on the case. Measurements were taken while it was off, after the Pi had been running long enough to level off the critical spot’s temperature, and every five minutes after the test started, with extra data points at 1, 2, and 3 minutes.

I changed procedure at the 15 minute measurement, as the temperature from the chip was highly unstable, likely due to temporarily improved ventilation by removing the case’s head. After dropping this measurement, I noticed the probe temperature climb from slightly faster before stabilizing to within a degree of 102 F for the second half hour of the test, well below the glassing temperature of PLA.

Conclusion: While this case should be fine with whatever load I put on it, PLA is not the material to be making computer cases out of.

Final Question: Have you ever changed an experiment mid-procedure because you suspected your measurements were affecting your results?

A Series of Limitations

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am laying a project to rest. Let’s get started.

The past couple weeks, I’ve been working to make a video call from my Raspberry Pi using the PiCamera taped into the case. Only this week did I learn it was too ambitious when I stopped by the workshop and actually started testing what worked. I managed to get a inbound stream, and presumably good audio (there weren’t any speakers connected at the time), but the video stream coming from the Discord webapp in Chromium came through way too slowly to be of any use but for a good laugh.

My time on this project was not wasted, though. I learned a lot about both how the PiCamera works and what it can do and what the Pi itself cannot do. It turns out the Raspberry Pi has all its graphics on the CPU, meaning no specialized circuitry for videos to begin with. That isn’t to say it cannot handle ANY streaming. It did manage to pull off viewing the live broadcast of my church’s services for the last couple Sabbaths with only a few problems. It’s likely something to do with the resolution and frame rate it’s trying to work through. That or trying to send non-existent audio while streaming video is a little much for the little computer.

This project was fun, but I simply don’t have the skills to pull it off at this time. If I ever do get it working, I expect it to be on a tiny, 64 bit OS for the Pi written just for video chat and nothing else.

On an unrelated note, I plan on separating the Pi itself from the cat deterrent(s). It will hopefully solve the power problems if I set up a little, offline network connected by radio or WiFi. Maybe I’ll take apart an old wireless mouse and see if I can use that.

Final Question: If you want to stretch your abilities, you should pick goals just outside of your abilities. What was the last project you tried, but found was just a little bit too far out of your reach?

A Series of Reluctant Leads

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am bringing you another fragment on my journey to get my PiCamera working in a video call. Let’s get Started.

This week had a lot of progress, but no workable results. I did a lot of research on the problem, refining my understanding of the situation, but the solution always feels an hour or two away.

To recap, work last week finished with the Discord webapp playing nicely with my Blue Yeti microphone, but it wouldn’t even acknowledge my PiCamera, even when getting into the sound and video test page.

This week, one of my early findings was a driver, Video 4 Linux 2 (v4l2). I spent half a day believing something wrong with it, because v4l2 looked a lot like v412 because of the numbers before and after a lower case L. Long story short, after running a command:

sudo modprobe bcm2835-v4l2

The camera still didn’t work, but at least Discord tried to load an image from “Default” instead of insisting there wasn’t anything resembling a camera it could use

Fortunately, while researching why the camera still isn’t working, I noticed a forum where someone pointed out the command needed to be run after each reboot for the V4l2 driver to work. Other background information I picked up was that the problem might be something requesting a 0x0 feed to display.

I also noticed for the first time that the “raspistill” program’s output covered parts of the black boarder Raspbian leaves. It’s as if it’s on a separate layer in front of the OS’s video output. One of the options included making the camera output transparent, so I used that freedom of vision to try and share screens, but any screen sharing was from the desktop layer only.

I had a bunch of redundant/unfruitful research for a couple days, and I eventually ended up in the workshop again. I want to say I had about half my progress this week right there. It took a little while to review my progress so far, but after everyone understood things, we started playing around with narrowing the source of the problem farther. Many of my hunches about where the problem wasn’t were confirmed, though I did learn a bit about the Chromium hardware permission system and how some software repositories are left in a power saving state while not actively being used.

We managed to confirm the driver was working after arguing with a python prompt. It still requires adjustment, as in it threw up what looked like a blotchy, pixel for pixel view of the camera, and it was zoomed in. It covered up the black boarder entirely, so I’m hoping this isn’t just an educational dead end.

Final Question: most of my unfruitful research is quite unmemorable. This was just one of those weeks where my early work was mentally lumped in with last week’s work until I reviewed the actual blog post I made not covering it. When was the last time you forgot how recent your recent progress was?

A Series of Dead Ends

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I don’t have much, but I’ll try to put something down. Let’s get started!

I went to the workshop again this week with a list of things I wanted to figure out how to do, starting with getting TightVNC to switch users. Nope. TightVNC servers are tied to a single log-in session. Without good communication, that piece of information took between thirty and sixty minutes to figure out. We did get a copy of the heater program working the Pi at 100%. Before I re-run the temperature experiment and risk damaging the case, I have another side project I want to try figuring out.

I have a friend I haven’t seen in a while and he lives in another State. I want to show off my ghost case (Now pictured), but I want to call on the Pi and hold up a mirror so he can see it with its own ‘eye.’

My first thought was to just download Discord and call it good. Oops. The Raspberry Pi may be 64 bits, and Discord want to run on 64 bits, but Raspbian doesn’t exist on 64 bits. I found a decent-looking forum post [LINK] that discusses 64 bit computation on the Pi 3 series. Long story short: 32 bit Pi computing has inertia. They don’t make 64 bit Raspbian because it would cost more utility than the few who seek it out would gain from it; it simply isn’t worth it for an official, 64 bit Raspbian to exist.

Jumping back in time to before I found the article, and I had just given up in the short term, I looked around to find that there are operating systems that can run on the Pi that use all 64 bits, but several comments seem to describe the wanting nature of either the setup process or trying to squeeze any additional performance. My thought is that such operating systems are often not optimized specifically for the Pi and take up what benefit they otherwise would have had with additional overhead. The extra bits are there if you need them and know how to use them.

At this point, a Discord client is looking like a no-go, but I did try to get a call set up in the browser. I haven’t gotten it to work yet, as I need to figure out how to get my Pi Camera and Blue Yeti to play nicely with the Discord site in the Chromium browser. It’s just something with the permissions, I hope. I remember seeing something about the Yeti not giving Linux a single thought in its advertising, but I think I remember seeing it show up in the Discord web page.

Final Question: Does anyone actually know if the Raspberry Pi will melt through a PLA case?

Review and planning session

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am laying out my plans for the near future. Let’s get started!

I’m still figuring out the new setup with Derpy. The VNC client I set up on my main desktop isn’t sending keyboard shortcuts when remoting into Derpy, but my laptop does and I cannot find the setting to change it. It also seemed to prefer opening up programs for a local login (if present) if the remote server requested anything be open. I upgraded it to Ubuntu 18.04.1 LTS after trying to get some tech support over Discord.

In my last post, I believe I said I was now using GNOME 3. That was wrong. I’m on the Xfce desktop environment and I couldn’t tell the difference, especially while trying to elicit help. I’m willing to work with this desktop environment, as I hear it is supposed to be pretty stable, and it’s the only one I have to work with at the moment. Yes, I don’t have a way to switch desktop environments remotely. I tried logging out remotely, and the VNC session became unusable with that complex black and white “gray” pattern, replacing the desktop picture as I dragged lingering windows around. A reboot fixed the symptoms, but I still want to see about getting the root cause addressed sometime.

I have a few things I want to finish before going on with programming the Pi to detect and deter cats. Mostly the more intermediate Linux literacy skills, like getting WINE to run things reliably, or forcing a piece of hardware to work when it shouldn’t.

During my miscellaneous research this week, I found Rasbian is only a 32 bit operating system and the Raspberry Pi 3 family is all 64 bit based. I would like to explore benefits and drawbacks to finding a lightweight version of Linux to run on the Pi and running that for my cat program instead of just programming it for the board’s default OS.

Final Question: It’s hard to know what version of an otherwise identical product to go with, especially if you’ve never needed it before, especially software. I find a good word from someone I know goes a long way. How do you decide what version to use?