I got some arduino nano replicas on aliexpress a couple of months ago for an incredibly low price. Not surprisingly, there was a reason for the discount. The pin assignments as they’d be programmed in the IDE did not match the pins as they were silkscreened on the board. The analog pins were silkscreened in reverse order to their actual hardwired positions.
Thus, among the plethora of reasons that a device might end up super cheap on ali-x are manufacturing defects. This problem happenned to just be with the silkscreen, but the silkscreen is a very important time saver for circuit assembly.
Nevertheless, the board I used still helped me blast together a device to run an experiment and log data. The physical chemistry involved has been more problematic than anything else for that experiment, but a change in approach will eliminate all such problems.
For the past several weekends I’ve been hiking up this canyon. It’s a little over 3.5 miles with 2.5 miles of gentle slope and one grueling high slope mile. It’s had some pleasing health benefits, and the view’s not so bad.
I spent the day researching and evaluating open source database solutions, and decided to upgrade from debian 9 to 10 again.
The biggest ooen source database communities are mysql and postgresql. I started out with mysql, and I chose the guaranteed free and open source mariadb variant. Mysql has a few good looking php generator tools to generate interfaces to gather and show the data to the users and has an admin tool called mysql workbench. I verified from the mariadb documentation that mariadb databases can be administered with mysql workbench and proceeded to install a mariadb server and mysql workbench. I set up a test database and got mysql workbench to connect to it, but there were many warnings. I went to set up a table in the database with mysql workbench and it kept throwing syntax errors in the autogenerated sql code. I couldn’t get it to stop without going in and editing the autogenerated code. That’s not what I’m looking for in a good database tool, and after I imagined having to do the same editing with every auto generated php interface file, I decided to give postgre a try. I suspect the issue has to do with mariadb and mysql compatibility, but I’d want to use mariadb rather than straight mysql.
Postgre is free and open source, and there is a free and opensource admin program called pgadmin. There are also php generator tools on the market to build interfaces, just as with mysql. So I purged all traces of mysql from my system and set up postgresql and pgadmin4. There was a problem with setting up the postgresql server, though an understandable one. Postgre doesn’t allow a user named “user.” I, of course, happened to be running a system in which the only non-root user is named “user.” And it happens that pgadmin has to be run in a browser, and for security reasons, firefox doesn’t permit being run as root. So I set up a new user with an actual name, migrated everything over, and finally deleted “user.” After setting up the new user, I get postgresql working and pgadmin4 working as well. I set up a test database, and used the admin tool to create test tables and there were no syntax problems. Easy. At least, it would have been if not for my ironic choice of user names.
Having replaced my user profile, and having noticed during software research that debian buster had been released as stable, I decided to go ahead and run the dist-upgrade. I’d actually had buster installed earlier in the year but I had reverted to stretch in an ultimately futile attempt to get monodevelop installed (a problem eventually solved with a windows virtual machine). It was a smooth upgrade with minimal complications. I mostly just had to go through the apt sources.list and sources.list.d and replace stretch with buster and 9 with 10, the one complication was having to replace a 9.0 with just a 10 rather than a 10.0.
I’ve been planning on making a custom arduino based industrial I/O module for a while. Something that, with the arduino IDE, would in effect be a structured text PLC. However, an arduino uno or nano would make for a limited system in terms of program size and built-in functionality. An alternative would be to make a custom chipset that programs like an arduino, but, chipsets like that have already been developed. One such chipset module is the esp32 wrover-b. I’ve wanted to begin developing with the esp32, and this project to make a PLC seems to me a perfect place to start.
My tentative specifications are:
1. Exploit all available wrover-b I/O pins to have industrially hardy, 24VDC, opto-isolated programmable DI/DO and AI/AO where feasible.
2. Wire esp32 wrover-b communication pins to expansion ports to connect with I/O expandion boards. It is acceptable to use an interposing uC as necessary to support addition communication protocols. Optoisolate or otherwise protect all communications ports as much as can be done without harming speed or signal strength.
3. Include a programming port for the wrover-b, preferably supporting micro usb.
4. Program the esp32 to accept wifi connections for output overrides or reading of inputs, serving an html page to facillitate this and also responding to certain get requests with just the requested data for data polling. All with as much security as I can give it.
I’ve been introduced to a painting process called Lumilor that can make any surface emit light. There are a lot of cool things that can be done with controllable glowing paint. The christmas lights applications alone are mind boggling.