Starting the 250ASX-int…

For a while I have been thinking about doing an “all-in-one” integrated amplifier and therefore I’ve been looking for a suitable class D amplifier module as the “centrepiece”. A few weeks ago the perfect candidate showed up in a local classifieds ad and so I picked up a single unused ICEpower250ASX2 module at a fair price. Conceptually this build is quite simple – two switched single-ended inputs and a buffered ICEpower module with a volume control inside. However, just doing that would have been a little bit boring, so I added a some complexity to make it interesting 🙂

Part of my reasoning to build this at all was that I wanted try out an ESP8266-based amplifier monitoring & control board I developed based on my IoT-T design. This control board was actually intended for ICEpower-modules so that I was lucky enough to pick up a 250ASX was really good. The original inspiration for the control board wasn’t even the ASX-modules but rather the Pascal-module which has the ability to output quite a lot of monitoring and diagnostics signals. However, as I only have one Pascal module and no reliable way to get more I decided to build a first version to suit the ICEpower ASX modules instead.

I don’t really have working software yet, but when completed the finished amplifier should have the option of basic web control and monitoring via the ESP’s Wifi connection as well as driving a “local” front panel LCD display via I2C. I haven’t fully decided if I want to use this feature for this particular build, but at least the option is there. A potential problem is that the ESP8266 is going to be enclosed in a aluminium and steel box and the Wifi-connction might not like that. Obvious solution #1 is to use a ESP pro module that can be fitted with an external antenna on the back but my mechanical layout is suboptimal for this purpose to say the least. Obvious solution #2 is to ditch the steel lid in favour of acrylic or something else – we’ll see where I end up with that.

Another goal of this design was to try using a discrete buffer such as the JISBOS/Alpha20 with the ICEpower amp as I’ve never really done that. However, once I started looking at the A20 boards from AMB that I already have I decided I preferred to do my own version instead. Normally my goal with clones is to make stuff smaller but in this case I ended up making it about twice as large as the original… Still, I think it was worthwhile to do and I’ll probably do a separate writeup on this design later. For input selection I have a basic design that works (I only need two inputs), but once I got the boards I have out of storage I couldn’t resist messing with them a little, so I can’t finalise this until the new boards show up (which may take a while if all the factories in China stay closed due to Corona-virus…)

For volume control I ended up with a very difficult requirement, namely that it had to be controllable by I2C from the control board. That’s a surprisingly difficult one since the “usual suspects” for high-quality audio (e.g. a PGA23xx or similar chip) requires SPI, so my solution ended up being something else – we’ll see if that works 🙂

ESP/Arduino accessories…

As I’ve spent more time working on my “IoT-T” design – I really should publish the files for that soon – I’ve found myself making a few additions to the main board. They are small extension boards that add functionality without cluttering up the mainboard – in no particular order:

– Different breakout boards to convert the I/O pins on the board to screw clamps for prototyping use or for easier connections.
– Board to add opto-isolation to a pair of digital out pins.
– A smaller watchdog timer to reset an IoT-device that is located remotely in case it freezes up for some reason.
– A breakout board for DS18B20 “One-Wire” temperature sensors.

Alone these boards are not really very impressive, but as extensions they really add to the versatility of the IoT-T main boards and they allow the mainboards to stay simple and universal. Of course these add-on boards can also be used for straightforward experimentation and prototyping, so I’ll be building a few extras to keep on my desk as well.

Experimenting with ESPs… (part 2)

One of the few projects that has moved a little lately is my ESP-based IoT-experiments (which started here). As mentioned then, I had just managed to crack how to do the mains-powered PCB layout I originally wanted to make so that’s what I have been spending time on building and refining since. Having a mains-powered board makes more sense when you need mains power for a relay anyway, otherwise a plug-in USB supply is just as good (or actually better/safer). The board is shown here in full prototyping mode, it is going into a case – of some sort – very soon.

Apart from adding mains power to the board I also removed the original DHT22 sensor and replaced it with an off-board BME280 instead. That was super smooth and it works even better than the DHT, not to mention that it also measures barometric pressure. I’ve been looking at other sensors as well (UV, air quality, light intensity etc.) but they don’t really make a lot of sense for my immediate application (which is remote monitoring of temperature and humidity in my basement).

Since I finished my original version I’ve made a few enhancements to the software and so now I’ve got the code for both LCD and web-UI mostly finished and especially the web part was a great learning experience. As mentioned in the previous post, it’s also a learning experience I am not sure I would have been able to complete without the help of the excellent ESP- and Arduino tutorials by Rui and Sara at Randomnerdtutorials.com, so obviously very grateful for those.

Now I can still do more improvements to the software but instead of picking at it for another six months I think I’ll try and package it up shortly and then publish it here so that someone else can hopefully have a go at it as well. Stay tuned! (but as usual, don’t hold your breath while you wait…)

Experimenting with ESPs… (part 1)

…ESP8266’s that is (if you hadn’t guessed that 🙂 ).

Although I am not directly involved with it, I have several colleagues at work that are looking at Industrial IoT applications for various use-cases. Quite a few of them have built personal home-automation systems of one sort or another, and as I would actually like to do a ittle bit of monitoring/control around my house as well I started looking at options a while back.

My old Ampduino project was of course a big inspiration, but the Arduino lacks onboard wifi which is a big drawback, even for “IoT” at home, and so the ESP8266 was a very logical step up. The original plan was to build from scratch using “raw” ESP-12 modules, but after a bit more research I stumbled upon the Wemos D1 mini. I then decided to go back to the original “Ampduino” approach of building a baseboard for a ready-made module instead. This gives a good amount of flexibility while at the same time ensuring that USB, programming and all other standard functions work as they should.

For once, I decided that I was going to get started on the software-part of this immediately (that’s usually my weak spot) and since I have had to wait three weeks for the fist PCBs to arrive I’ve made very good progress. Two things helped me along though: Firstly that I found a basic sketch at RNT that did a rudimentary version of exactly what I wanted, namely control via a web-UI. Secondly, I had a standard NodeMCU-board which I could pop in a protoboard immediately. That made it feasible to start getting individual pieces of the code together as soon as the PCB-order was submitted and then subsequently assembling the pieces of code into the “real” thing later on. My prototyping efforts while the v1.0 boards were in the mail also gave me input to v1.1 boards, so I can actually start placing those orders in a couple of weeks (no point doing it now because all the PCB factories are closed for Chinese New Year).

As usual for this type of project I’ve ended up making several versions of the board. The “original” version is USB- or DC-powered and has an onboard relay and an onboard DHT22 temperature/humidity sensor in addition to a couple of spare in/outs (analog/digital). The smaller version shown here ditches the onboard relay and instead breaks out a full set of SPI-pins. This allows connecting an SD-card adapter so that data from either the onboard DHT22 sensor or any of the other inputs is saved to a local card as well as being displayed on a web interface and a local LCD/OLED display (via I2C).

The original plan was to do a mains-powered version but I couldn’t get a good design together at the time and so I went DC-powered instead. However, I think I’ve cracked it now so the next run is going to include a mains-powered version as well. Other changes for v1.1 will be some routing improvements and (most likely) doing away with the onboard DHT22-sensor and replacing it with the option of one or more offboard sensors based on the BME280 and/or the DS18B20 sensors.

Board sizes are from app. 50-75mm squared, so these are quite compact and versatile. More updates and also some code samples later on 🙂