Computer software is great! Much can be done in software that provides interesting and fun results. But when you want to touch and control the real world, then it is time to delve into hardware. Long ago, I tried my hand at hardware using Metrowerks' CodeWarrior C IDE for the Freescale (now NXP) MC68 series microprocessors. But it was tough going back then for the hobbyist. Eventually, dissatisfied with the results, I shelved the projects I was attempting.
This time, I started with Arduino for its well founded collection of libraries, its excellent IDE, and the wealth of support for hobbyists. As a learning experience, I built an Espressif ESP32-S2 controlled Advent Wreath for our front lawn. It automatically searches out a WiFi connection, sets its clock via NTP, and then lights the appropriate number of candles depending which week it is before Christmas. Since it's on WiFi, I baked in a little web site that displays the status of the wreath and allows me to override the automatic sequencing from a web browser.

Recently, a new problem presented itself. We installed a new A/C unit in the boat, but the control panel and the flexibility of its programming is not as good as the original unit's capabilities. I decided again to roll my own.
I built a desktop thermometer as an exercise. Since I am building all C++ classes, I can reuse the classes from the thermometer project for the thermostat one. Then, I kept adding features to the project. Currently, it displays a bit more information than just temperature. It is based on an Espressif ESP32-S2, which has built-in WiFi, which it uses to automatically set and update the clock via NTP. It also stores the data to a micro SD card. It will plot the stored temperature, humidity, and barometric pressure to the display, when one of those values is touched. Using the web server I coded into the device, it is easy to download the stored data to a desktop computer or to change the display units for temperature and barometric pressure.

There is also a LoRa radio link using RadioHead libraries that transmits the outside temperature and humidity to the desktop unit. The outdoor unit will be lipo battery powered with solar recharging. A Sensiron SHT-C3 measures the temperature and humidity. While the C3 isn't quite as good as the SHT-45 used for the indoor module, it's still quite good.

Should be easy to take the C++ classes from the desktop thermometer to create the boat's thermostat. It's coming along, but we need to take some measurements from the air conditioning unit while it is running. For example, we don't know if the reversing valve that switches it from cooling to heating is 12 volt, 24 volt, or 120 VAC. All are in common usage from what we see on the 'net.
Of course, just as with software, sometimes hardware needs to be debugged. Fortunately, dad taught me a good bit of electronics as a child. He would have me help him while he was repairing television sets. "Here, hold this on that while I do this," type of thing. I would always ask what and why he was doing each thing and it stuck well enough that I did take some formal electronics classes, which were fun.
One easy way of troubleshooting electronics is to measure voltages. With digital systems, it's also helpful to see the data. An oscilloscope makes this easy, especially a digital scope that can not only display the waveforms, but also voltage, frequency, duty cycle, and other parameters.
