November 2024
Use this batch file to backup your essential personal files on your Windows PC to an external flash drive. See the details to get you up and running instantly by viewing this public and free article: Batch File To Backup Your Windows PC Personal Files
November 2024
This free and high performance system allows you to store any type of data locally, and work with it efficiently. See the full Python based example to get you up and running instantly by viewing this public and free article: A Local Data Storage System For All Of Your Data Needs
November 2024
A good friend asked for my assistance with reducing the time he must spend identifying and analyzing stocks. I gave him two Windows OS executable files built from Python scripts that he could run on his PC at will. The first script acquires the 10 year closing price for a specified stock and then a custom time history plot is generated along with the volatility (rolling standard deviation) and the 12 and 26 period Moving Average Convergence Divergence (MACD). The second script finds all stocks based on a specified industry and sector, analyzes them for volatility and trend, and then plots them sequentially based on long term low volatility and a positive trend.
November 2024
I was contracted by CNH Industrial to create a VBScript for NI DIAdem to extract a subset of channels from a set of files. The channels to be extracted are identified by the user by pinning them in the Data Portal.
Another VBScript for NI DIAdem was created to concatenate a set of files together into a single TDM/TDMS file.
November 2024
I wrote and published to Medium.com the article "A Beginner guide to Shopify GraphQL" based on my painful learning experience as a result of the poor documentation. Once I got connected, I was able to productively use GraphQL to access my client's Shopify store.
Wrote and published to Medium.com the article Shopify GraphQL Bulk Query on how to execute a GraphQL bulk query to obtain information about all product variants from a Shopify store, and how to execute another GraphQL bulk query to update the product variant prices.
Applied my Shopify GraphQL knowledge to creating a Python script that updates the prices for 209 product variants in the Shopify store marando-ind.store/. The script gets the maximum EUR to USD exchange rate over the past seven days, calculates the selling price in USD from the EUR book price, and then updates the product variant prices. A Docker image holds the script and it is executed daily by a Google Cloud Run Jobs triggered by a Google Schedule Jobs.
October 2024
I wrote and published to Medium.com a seven article series on how to build a modern data platform with high availability, low latency, and scalability on the free tier of Google Cloud Platform.
Articles part one to six utilize batch files that automate all of the CLI steps discussed in each article, and allowed them to be versioned (EAC - everything as code).
July 2024
Working with the author of the Python library pypetb, the capability to perform a Gage Repeatability and Reproducibility (Gage R&R) analysis on a fully automated process has been developed. Prior to this, I could not find any online support for execution of a measurement system analysis (MSA) on a process that didn't involve multiple operators / accessors. See article published on Medium: Gage R&R Of An Automated Measurement Process.
June-July 2024
Assisted a German graduate student with writing a NI DIAdem script to evaluate the emissions measured on a chassis dynamometer. I also identified an issue unknown to the University with their sensors that was the root cause of them not being able to accurately calculate exhaust mass flow from the raw sensor data.
May-June 2024
Assisting Marando Industries, Inc with the build of a production cell for the dimensional inspection of components. I also conducted a Gage R&R to validate the performance of the cell.
May 2024
Complete and detailed examples on how to perform all of the primary tasks of interacting with a MySQL database. Visit github.com/markwkiehl/python_db
May 2024
Created a Python script to extract supplier information from Thomasnet.com. The supplier information includes the company name, address, and a description of the product and services provided. Thomasnet.com is designed to be difficult to web scrape. I used tools from Selenium to extract the data. The project was inspired from helping Open Oceans find potential buyers for their product.
March 2024
Darts Time Series TFM Forecasting A complete set of Python solutions for the optimization of Torch Forecasting Model (TFM) parameters for time series forecasting with Darts.
February 2024
Find The Best Darts Local Forecasting Model A single Python script executes 26 of the Darts Local Forecasting Models and compares their accuracy. The seasonal and trend arguments required by the models are automatically derived and applied to each model.
February 2024
Wrote article RGB Light Control for Mobile: Widget Functionality and Code Examples for Blynk. Mobile app widget controls RGB. The code for the microcontroller that controls the RGB includes gamma correction of the RGB color, functions for conversion between the RGB and HSL (hue, saturation, luminance) color models, and it demonstrates the full range of the animation mode options. Article was actually written in 2023 and then published by Blynk in February 2024.
January - December 2023
Under contract with Blynk to update their online documentation: Custom Sounds and Critical Notifications | Blynk vs Particle | Organizations | Alarm and Sound web dashboard widget | Update Widget/Datastream Property | Video widget | Connect Particle Device to Blynk | How to Control a Particle Device with Blynk | Mobile app widgets | Blueprint 'Asset Tracking with Particle Boron'
April 2023
Created a circuit and wrote the code for a BSA Pinewood Derby Race electronics system. An IR emitter and detector are used to detect the cars at the finish and then the results are displayed on individual 1.2" 7-segment numerical displays. See the project details at Savvy Microcontroller Solutions.
May 2023
Exploring data science using Python and mostly Pandas. See my journey working on the Titanic dataset at my website: Savvy Code Solutions.
June 2023
Developed a boat monitor for my boat that publishes to an app on my phone when any bilge pumps are activated, or if the anchor is dragging. Full details available at my website: Savvy Microcontroller Solutions
June 2023
Air restriction caused by a dirty diesel engine aftercooler (charge air cooler, CAC) adversely affects engine performance. Pressure sensors are connected to the air intake and exhaust sides of the engine aftercooler and then the measurements are transmitted over CAN bus to a monitor at the helm. Full details available at my website: Savvy Microcontroller Solutions
June 2023
Blynk blueprints are a new feature that allow you to quickly deploy an application that includes everything configured to connect and interact with a device via Blynk. This blueprint is based on pushing GPS data from a Particle device (Boron) with an Adafruit FeatherWing GPS to Blynk. Full details available on GitHub at: blynk_blueprint_asset_tracking
June 2023
Reads 6x K type thermocouples and displays the temperature readings on a daylight readable eInk display. Over or under temperature is flagged with an asterisk *. 12 VDC input converted to power appropriate for the microcontroller. Full project details at my website Savvy Microcontroller Solutions.
June 2023
No sensor exists that is robust and has a long life. I re-engineered a fuel sender to out perform any other sensor commercially available. Full project details at my website Savvy Microcontroller Solutions.
July & September 2023
In June I researched 18 API services to find one suitable for providing monthly historical weather data. The results of that search were published in a Medium article titled 'API Services for Historical Weather'. Later I applied what I learned and used the new NOAA Climate API to acquire the historical weather data I needed for my project. The NOAA API was difficult to work with due to poor documentation, so I published an article in Medium titled 'NOAA Climate API' on how to use the API, and I included complete Python code solutions.
August 2023
Programmed a microcontroller with GPS to stop a RC Car (Hot Wheels) before it reached the end of a driveway (driven by a child). I did this by configuring a geofence. Full project details include code at my website Savvy Microcontroller Solutions.
July to August 2023
Created several FeatherWing solutions I needed and could not find anywhere. Adafruit PN 4778 2.9" Tri-Color eInk FeatherWing IL0373 | 0.5 to 4.5V out to 0.2 to 3.3V FeatherWing | 24VDC Detect & Measure FeatherWing | AC Voltage Measurement
December 2022
Created a cellular IoT device to monitor the 3x bilge pumps on my boat, and to report to an iOS or Android app when the position of the boat changes by more than 122 m / 400 ft (boat anchor dragging or boat stolen). The cellular microcontroller used was a Particle Boron LTE M1 (B404). The iOS or Android app was created using the Blynk IoT platform.
November 2022
Revised a 2021 version of my RV monitor that used a PIR sensor to detect the presence of a human or mammel, and then play the sound of a barking dog inside the RV to deter any human, or alert us when a animal approaches at night. Used a OpenPIR sensor to achieve more robust detection. LoRa was used to communicate between the PIR sensor mounted outside, and the receiving device with the Adafruit MusicMaker FeatherWing. LoRa messages were encrypted and transmission and receipt of each trigger event was configured to be very robust so that a trigger would not be missed. Full project details.
November 2022
Re-designed paramotor strobe PCB for Hunter Hobbies LLC The components are surface mounted. Achieved the goal of eliminating manual assembly and soldering of components. The custom PCB is purchased and all components assembled by a supplier, allowing Hunter Hobbies LLC to focus on design improvements and other products.
September 2022
Designed and then had fabricated brackets for a boat davit system to allow a Polycraft 300 polyethylene tender to rotatate 90° using the 1 inch stainless handles built into the top corners of the sides. The brackets were 0.5 inch 304 stainless material that were laser cut by OSH Cut.
August 2022
Developed under contract a device to interface with a pressure sensor through it's RS-232 connection to acquire and display the last calibration date, the serial number, and the current pressure readings. The device also allows the user to re-zero the pressure sensor by exposing the pressure sensor to a "zero" pressure condition and then pressing a pushbutton on the device.
July 2022
Contracted to perform gas intrusion testing to measure the potential for gas to migrate from one fabricated metal compartment to another. Utilized a safe gas with similar properties to the gas used in the application. Created my own datalogger to assist with testing, but used a calibrated measurement device for the primary data recording.
May to December 2022
Under contract with Blynk to update their online documentation: Heat map chart widget | Image button web dashboard widget | Terminal web dashboard widget | Simple Chart app widget } Image web dashboard button widget | Automations | Migrating to the new Blynk | Web Dashboard | Mobile app tile design
June 2022
Created online NI DIAdem training in the form of HTML pages and 39 videos for a major agriculture equipment OEM. A subset of that training may be viewed by following these links: web pages and YouTube Videos.
April 2022
Released 'Base' edition of a software application powered by NI DIAdem that dramatically simplifies the management, analysis, and visualization of time series data. It is optimized to ingest, search, analyze, and visualize big data in bulk from nearly any file format and data structure. www.time-series-data-management-system.com/
September 2021
Designed and assembled a portable datalogger that records any analog signal(s) to an SD card at 1 kHz and then displays that signal to a X-Y chart on a graphic display. The display touchscreen provides a user interface to start and stop data recording. Project details posted on my website at Savvy Microcontroller Solutions.
September 2021
A timer based on a real time clock (RTC) automatically turns on the anchor light before the earliest sunset and off after the latest sunrise. I developed a custom FeatherWing printed circuit board for a P-Channel MOSFET with it's gate controlled by an N-Channel MOSFET to perform the high side switching. Project details posted on my website at Savvy Microcontroller Solutions.
August 2021
Developed a system to restrict boat holding tank gasses from escaping back out through the toilet. A microcontroller senses an electronic flush event at the toilet macerator switch and activates a normally closed electromagnetic valve to permit the waste to pass. Full project details available on my website at Savvy Microcontroller Solutions.
August 2021
I designed and fabricated a vibration measurement system for a client of SmartCost Inc so they could study the vibration characteristics of a large structure. A vibration generator was provided to create consistent vibration inputs over a variable frequency range. The vibration was measured with an accelerometer mounted in an enclosure with a display that showed the maximum Z acceleration every 1 second. The maximum acceleration measured was also optionally pushed out to a cloud service over WiFi and then it would be viewed in a custom mobile app as both a displayed value, and a chart. Full project details available on my website at Savvy Microcontroller Solutions.
January 2021
I developed several custom FeatherWings for the IoT projects I have been working on. They include: PIR Motion Sensor, DC Power Input, Analog Input, Analog Output, AC voltage detection, DC voltage detection, and Thermocouple. The end product is a printed circuit board (PCB). Full project details available on my website at Savvy Microcontroller Solutions.
January 2021
Designed and fabricated a monitor / theft deterrent that used a PIR sensor to detect when someone approached our RV, and then trigger a digital audio file player to output the sound of a large dog growling and then barking. Full project details available on my website at Savvy Microcontroller Solutions.
February 2021
Designed and built a paramotor winch hand remote control for a paramotor pilot. LoRa wireless radio was used to transmit the hand remote variable finger trigger position to the winch. The receiving module output a variable DC voltage suitable as input to the winch controller. Full project details available on my website at Savvy Microcontroller Solutions.
July 2020
I leveraged the power of DIAdem to create a custom software application to analyze measured electrical signal results and automatically generate a custom report of the results. Previously it took three engineers an entire month to perform a custom set of calculations and assessments. Now all of that work is accomplished automatically in less than 30 minutes, including the generation of a 100+ page MS Word report.
November 2020
Developed a DIAdem application that dramatically simplifies the import of bus log (CAN,LIN,..) data. The user identifies the data files and bus log data base files to import, and then the application automatically discovers the bus number (between 0 and 255) and bus ID Mode that provides the best conversion result. Full details at #SavvyDIAdemSolutions
April 2020
This project shows you how to program your ESP8266 based Feather or FeatherWing to present a local WiFi access point to the user, from which they can connect to with a smartphone / PC, and then submit new WiFi credentials for a new WiFi connection through an internet browser. Full project details at #SavvyMicrocontrollerSolutions
March 2020
Created under contract a Shopify store with over 150 products associated with modular assembly & welding tables and accessories. The products from China will be drop shipped to USA customers. Each product price and weight can be updated programmatically by a php script that connects to the store via an API.
February 2020
Developed a replacement controller for my propane stove. The "sender" unit displays ambient temperature, setpoint temperature, and count down for the timeout function. An on/off signal is sent by radio (XBee) to a "receiver" to digitally turn the stove on / off to manage the room temperature. The virtual line passing mode was used for the XBees in the "sender" and the "receiver". I designed printed circuit boards (PCB) for both the "sender" and "receiver" and had them fabricated inexpensively from a company in China.
January 2020
Identified the source of a whistle noise on a new vehicular product that was recently released for production. Utilized a sound meter to characterize the frequency of the noise that became audible in every vehicle at about 55 mph. A complete test report was provided to the customer.
January 2020
[project description]
Deveoped and prototyped a FeatherWing compatible device to detect when a 120 VAC circuit is "hot". The 120 VAC side is optically isolated from the IoT DC side. Designed the printed circuit board myself.
December 2019
Leveraged my 30+ years of experience to assist a local company execute durability testing of an automotive structure for another local company. I ran the test, documented the results, and provided a test report along with a proposed product change options to resolve the issue.
December 2019
Add-on boards (FeatherWings) exist to allow you to add some sensors to the Particle IoT wireless devices. However, none exist that allow a DC circuit to be monitored to determine if it is on or off. I created a FeatherWing compatible board that can detect if a 5 to 24 VDC circuit is on, or off, without affecting the circuit monitored. Applications include manufacturing ANDON or other signals.
November 2019
Developed Shopify store to sell paramotor strobe lights. https://hunterstrobes.com/
June to August 2019
Created a series of custom scripts and dialogs to assist in the analysis of agriculture field test data. The basic functional requirements were:
April 2019
A watermaker membrane must be fresh water flushed every seven days in order to preserve the membrane. The A/C power supplied watermaker required the fresh water system to be actively pressurized in order to automatically flush the membrane. A powered fresh water pump is a hazard on a unattended boat because a leak could cause it to pump all 125 gallons of fresh water from the tank. The system integrates a solenoid to turn the water on/off to the watermaker fresh water flush circuit,
I created a new D/C power based timer that kept the fresh water pump turned off when the system was not fresh water flushing, and automatically performed the flush every seven days. Sometimes the boat is moored, and it doesn't have access to shore power, making the 12 VDC operation important.
October 2018 to March 2019
Created custom applications within DIAdem to import Electronic Control Unit (ECU) log data files, and analyze them for adverse operating conditions. Reading many large text files (frequently the size of 271 MB) can be slow, but using custom DIAdem DataPlugin, I was able to expedite the conversion. Metadata for the date recorded, serial number, model number, and operating condition was parsed from the filename and automatically added to each TDMS file as file properties. A hash/checksum for each raw data file is calculated and compared to the existing converted data files to insure duplicate data files are not contributed by accident. The reading and analysis of these data files were previously managed manually within Excel. Now the process is fast, semi-automatic, and robust.
December 2018
Developed a framework that runs within DIAdem to make it easy to install and deploy custom DIAdem applications. The framework includes a user customization dialog that allows switching between working standalone with My DataFinder, and "Remote" mode where the source data and optionally scripts may be accessed from a server based DataFinder.
September 2018
Developed a VBS class that runs within DIAdem to generate Powerpoint slides from DIAdem Report sheets without the use of ActiveX or the need for the user to have MS Office installed. A client needed over 400 DIAdem Report sheets exported to a PowerPoint file. The time required to do this export through ActiveX was excessive. A Python module along with a custom Python script was used to generate the PowerPoint slides from a DIAdem VBScript. The time to generate 200 PowerPoint slides was reduced from 300 seconds to 20 seconds using python-pptx.
June 2018 to April 2019
Created a complete e-commerce store in Shopify to sell portable, bench, and automatic feed plate beveling machines. All images and other media were optimized for search engine ranking. A SKU system was created to manage the many purchase options that vary by machine model. https://platebeveling.com/
The machines are sourced from Italy, and in order to minimize the influence of EUR/USD currency fluctuation, I created a script that runs daily and calculates the maximum EUR/USD exchange rate (using a free online API) for the past nine days, and then updates the price of each product in the store automatically.
June 2018
The 330 Hp Cummins engine in my boat mates to a ZF transmission. I wanted to monitor the transmission lubrication pressure, so I installed a VDO pressure sender P/N 360-406. The pressure sender has an output of 10 to 240 ohms. The problem is, most standard pressure gauges for marine applications (or other) don't expect to display pressures as high as 435 psi. So I made my own pressure display using the Adafruit Feather M0 Basic Proto and a Adafruit 128x32 mono OLED FeatherWing to display the pressure. I used the Feather, because I didn't have a lot of room on my console for the display.
August 2017
Created a better holding tank monitor than currently available in the industry for my boat. The Arduino based microcontroller presents the output from the holding tank sensor to a LED based bar graph, providing live and accurate information about the tank level. link to image of display
October 2017
Created a custom RS232 device that adjusts the zero calibration for a pressure sensor via the RS232 connection. The serial number and calibration information for the connected pressure sensor was shown on an LCD display. Pressing the re-zero button sends the commands to the pressure sensor over the RS-232 connection to adjust the zero calibration.
Do you need help with your project? Send me an email using this form or to requesting a free phone / web share consultation.
Copyright © 2018-2024 Mechatronic Solutions LLC, All Rights Reserved