ESPCLOCK3, Runtime Upate #2

There is something magical about waking up the morning after daylight saving and finding your analog ESPCLOCK at the exact right time without requiring any adjustment! The clock started with a fresh set of rechargeables on 22 Aug, and has been running since then, just in time for the October daylight saving change, which sets the clock one hour ahead at 2am.I am glad now there is one fewer clock around the house that requires adjustment after daylight saving!

Windows 10: Remove execution permission from all files created in user "Downloads" folder

From Administrative command prompt:cd \Users\<User>icacls Downloads /deny <User>:(CI)(OI)(X) /t User will no longer be able to run any EXE in his "Downloads" folder.To revert:cd \Users\<User>icacls Downloads /remove <User> /t

Compiling Marlin 2.x for the Creality Ender 3 using PlatformIO

I had previously modded my Ender 3 to use the FreeABL for auto bed-leveling.
This requires compiling and uploading a custom version of Marlin firmware with AUTO_BED_LEVELING_BILINEAR enabled. Since this takes quite a quite of extra storage, it requires SLIM_LCD_MENUS to be enabled. This removes the function to configure E-steps from the control panel. 
As mentioned in my previous post, setting the right E-steps value is one of the most important operation to perform when changing filament or print nozzle. As a result of enabling SLIM_LCD_MENUS, I can only configure E-steps by hooking up the Ender 3 to my laptop and issuing raw G-codes. This was getting old pretty fast.So the other day, I started poking around to see if there is a way to fit both AUTO_BED_LEVELING_BILINEAR and SLIM_LCD_MENUS in the limited storage on the plain-vanilla Ender 3. After much research and tinkering, I am glad to report this is indeed possible. Here are 2 links I found most useful in helping me achieve this o…

PC Logger: AutoIt3 script for PC activity monitoring

Due to COVID-19, the kids had to do online learning for a couple of months. Unfortunately, they were constantly tempted to play games or watch YouTube during class time. Sometimes they became so immersed that they missed lessons, or forget to complete assigned tasks.I tried various solutions, such as parental control software, or lock down the router. None of them worked for me. There were just too many things to configure. Furthermore, some potential avenues for distraction (eg. YouTube) might sometimes be necessary for schoolwork (eg. YouTube being used for information or research by the teacher).The solution I eventually settled upon turned out to be quite simple. I hacked together an AutoIt script that logs details about the active window (title and executable) to a Google form periodically. By looking at the logs from time-to-time, it gives me a pretty good picture of what they have been doing on their computers, and have a chat with them when things get out-of-hand.Github reposi…

ESPCLOCK3, Runtime Upate

I started running the final version of ESPCLOCK3 on 22 May at 11:10pm on 4 x Ikea's LADDA AA 2450mAH rechargeables.  The clock ran flawlessly until 19 Aug 9:10am. So total runtime was just a few days shy of the calculated 4-month duration. The batteries were all depleted and measuring ~1V each.The clock was mounted in front of my desk, and it stayed accurate to the second throughout the entire time.The voltage level during the end of battery life seems to bounce around the 2.8V threshold level. So I will make some minor code change to stop the clock until input voltage level rises above some upper threshold level eg. 3.0V.I plan to run it for another test cycle. This test cycle should allow me to test clock adjustment for daylight saving.

DIY Roomba Virtual Wall, Part 5

After using the DIY Roomba Virtual Walls for a week now, I found something interesting that is rarely mentioned by the folks who have made this. The only mention I could find is from this blog post:"After examining the original virtual wall, with a webcam, I was able to see that it emits infrared light from its top round transparent ring and from a small hole above the switches. The light coming from the top ring prevents the robot from colliding with the virtual wall, if it comes from its sides or from behind. The front hole emits light as a beam. This beam of light is directional and stops at the nearest obstacle, probably a real wall, preventing the robot from crossing it to the other side."Indeed, when using the DIY version, the first thing I noticed is that the unit has to be strategically placed because the Roomba will knock into it more often than expected. So a more robust DIY version will need to have another IR LED pointing at some kind of conical reflector mounted…

DIY Roomba Virtual Wall, Part 4

So I went ahead and made another Roomba Virtual Wall. Everything else is pretty much the same as before, except I made each mounting layer one single ring, instead of 2 separate pieces. The single-piece design makes them easier to align and attach, at the expense of slightly longer print time and more filament used. When soldering the proto-board, I tried moving the 3 resistors to the bottom of the board. Bad move. It was too crowded. In the end, I moved 2 of them back to the top. I found that the IR LED that I used for this unit is actually the one I salvaged from the broken Roomba Virtual Wall because it has a very narrow degree of projection (2 ~ 3° at most). I thought the first unit had it.What happened was, I was testing out the IR LED from the virtual wall and the old TV remote on the breadboard, and somehow got them mixed up. So I thought the first unit was using the IR LED from the broken virtual wall, but actually it had the TV remote IR LED, which makes sense now, because it h…