A.D.D. has kicked in

I have been busy with 4 different projects, one done and the rest coming along. I seem to bounce back and forth as I ponder over some design flaws and possible solutions. Which usually leads to a “hey let’s do this too” moment, I like to call it my Shiny Penny Syndrome. It works for me. 

Click on the project title to to the that projects link if you wish. 

Bluetooth Speaker

We need a bluetooth speaker for the outside by the pool and I have also wanted one to use inside the house as well. This one is 90% complete. I still need to find what I am going to use for front and back grills. I may settle for some black material on a frame for the front and some aluminum grill for the back. In the meantime at least it is ready to go!

 

IMG 9806

Volumio Case

While the Volumio is up and working in the family room downstairs, I am still working on the case for the setup. I have the idea firmly in my head. I have the case hollowed out. I need to find a way to get down to the bottom and clean and smooth the bottom. it is too small to work it with any chisel I have. I was thinking of upping the RPMs on my drill press and using the drill bit to clean it out. We’ll see, I still have a little research to do on this one. 

  

IMG 9863

Arduino CNC experiment

My goal here is to have a larger CNC mill, a real one, that can handle wood and soft metal like Al and brass. While I usually like to jump into a project with both feet, I have learned and bit by over enthusiasm in the past. I have read quite a few builds using old DVD drives, the LM293, and an Arduino to make a simple X / Y potter (the Z axis raises and lowers the pencil). I have the X axis works, the Z axis servo works when it feels like it (so much for the cheap micro servos in the intro kit. Time to scavenge from an old RC car tonight). The Y axis just grinds at me, so I need to dig into it here tonight and get it moving, literally. 

IMG 9871

RetroPie

This is one that was downloaded, installed, configured, setup with 2 controllers, an old LCD monitor, and it has been hard to find to time to play with it myself. That is OK it is being well used. I have an audio DAC for the Pi 3 some old monitor speaks to mate with it. I have been searching for a case idea. The cases one can purchase are well – so so, do in a pinch, rather not spend money on one, will the HAT fit? As I pondered and searched, I stumbled upon an old Game Cube for sale on eBay (9 bucks right now, don’t bid on it please) and it looks like it will do the trick quite nicely. Integrated power supply, spaces for controllers / USB ports, and about the right size. I hesitated when I click on bidding for it, but as time goes and I read some, it should work quite nicely. Stay tuned for where this one ends up. 

Tempest Spinner

Since the RetroPie is up and going, I have been playing some Tempest, my ALL time favorite arcade game; but it just isn’t right playing it with a controller, keyboard, or mouse. One really must have a spinner for the real experience. I have looked for them online, but they are rather pricey (upwards of $70.00) so I have been looking into making my own. I have the box of parts and my notes in line. I will find some time one night when nothing else interests me 😉 I guess you will just have to check back on this one to see how it goes. 

 

 

 

macOS 13 beta and (a couple) maker tools – A quickie review

A proud Old School Apple Mac Fanboy since 1986!

I like to keep up on the new OSes when they are released. For many years I had a developer subscription to make sure I could get a hold of the beta releases for software compatibility testing in our environment. Jobs change, but fortunately so did Apple’s policy to providing public betas. I like to test them out when I can to see what new features abound and how compatible my current tool chains are. 

I had a couple hours of down time at work the other night so I decided my spare MacPro 6,1 (12-core/16GB/1TB) would be my High Sierra (10.13) guinea pig. It used to have 10.12 installed along with my work apps; so it seems like a good baseline. I proceeded to the App Store and downloaded it. 

IMG 9469

IMG 9471

My finger was a bit twitchy as the cursor hung over the Install button. “Go for it” I hear in my head. Click. It was going to take some time so I wandered away to get a couple of actions items done. 

I headed back over about 45 minutes later and it was ready for me. I didn’t have a lot of time so this is the quick review part plus I wanted some time left to install the toolchains and apps I used for my maker/hacker projects. I was surprised at how quick it went considering the new filesystem is being used. 

The new filesystem, AFS, conversion went just fine and to date I have not noticed any missing or corrupt files. It is wicked fast compared to the HFS+ it replaces. This alone gives this aging machine a nice boost. It is good to see Apple finally addressing this issue. I was a little jealous of the linux systems running ext4 and ZFS. The new Safari seems nice. I have not played with the Technology Previews that Apple has posted. The block autoplay is a nice feature and one that seems like it should have been there before now. I will keep poking around and post new tidbits as I find them. 

As for the maker tools I wanted to see how the Arduino IDE, esptool.py, and KiCAD would fare. I took things one by one. I grabbed a copy of the Arduino IDE and it fired right up without argument. I had my traveling Arduino Mini clone with me, so I opened one of the example scripts and uploaded it with no problems. Alright, step two. I get esptool.py and install it. As of this post, 10.13 has Python 2.7.1 installed. Again I was able to install it without issue. Since I was working on my ESP8266 + OLED + NTP clock (and had it with me) I brought it out and hooked it up. After updating the Arduino IDE preferences and boards and was able to successfully upload the code to the ESP8266 NodeMCU clone. 

 

IMG 9477

Lastly with time running out, I launched KiCAD (I already had it installed). With just a quick look I was able to open my current project and make a couple of quick edits and save the project. 

I have not stirred the puddin’ with the above apps, but on first run there seems to be great promise for an easy transition to High Sierra this fall. I will keep on adding more tools and beating up on ones I already have installed and then reporting back here. 

ESP8266 + OLED + graphics = frustration

I have decided to make a clock; a simple one to begin with. I started with an ESP-01, an OLED, and some base code. It was fairly easy but did the job quite well. It would go out and fetch the time from a NTP (Network Time Protocol) server and display it on an OLED screen 128×64. These screens are cheap on the market and serve well for displaying a few lines of text, sensor readings, and/or graphics. One has to enter in a username and password for the wireless and the display text for the time was static on the screen, something these little displays don’t like. After a few days or couple of weeks there is bound to the burn in on the screen. I thought a poor man’s screen saver is in order.

I don’t have a picture of the ESP-01 all wired up and working, my apologies. It was getting to be a pain programming it overtime I made changes. So for development purposes I moved over to an Aamica NodeMCU dev board. This makes debugging and programming changes much easier (IMHO). And when the project is done I am able to move it over to the ESP-01. The ESP8266 is such a wonderful family of chips to work with.

To deal with wireless I downloaded and added WiFiManager to the sketch. This allows me to bring a wireless device, in this case my clock, to any wireless network and set it up for it. For example, if I bring my clock into work it won’t know which or how to access the network. Not a problem, power up the device, connect to its own AP, open a browser and give it the proper credentials. It is a very nice library to use! I thought when/if I give away a clock it will be easy for the recipient to setup and use in their own space without having to dink with changing code and uploading it.

Now the screen saver. This is straight forward (FAMOUS last words) or at least I thought it would be. After a set amount of time, blank the screen, and draw a graphic, blank the screen and bring up the time. In theory I have it working. My problem is with the graphics. I do know that graphics work and display as seen with my known eyes in the demo, but I wanted something different than a WiFi logo. I thought the Hackaday logo would do nicely.

hackaday logo 128×64

The story on the web is to head over and use either LCD Assistant or BMC-LCD to convert an image into the HEX code that is required. I kid you not when I tell you that I have tried over 26 iterations of file types, sizes, bits, etc. and all of them come up bubkiss.

The best I have been able to achieve is with a crossed line, which still shows some defects.

SIGH – I will not be deterred. Tonight I am off to the forums to see if I can scare up and help from there. I will be sure and update the site if I find out what the magic incantation is or what silly mistake I made.

Flying Weather bits – the ESP-01 and sensors

The last few years I have been helping support an enterprise wireless network of 2,000+ access points. It is an interesting, challenging, nightmarish world wireless/RF is. When I started my Arduino adventure it was nice to be grounded in what I was working on. The wires carried all of the data I needed. I just need to make sure the wire was connected, not like those nasty RF signals that bump into other signals that might mess with this or that.

Alas, during my 1st weather project, while I was running back and forth with my data written to a SD card, I thought how much easier this would be if only I could do this with wireless.

In my research, I found information scattered hither and yon, each yielding news clues. I will try and link to those sites (I have remembered and bookmarked) throughout. I will post, what I thought, are the more important bits and pieces.

Project Goal

My requirements are simple. Use a DHT22 to take temp and humidity readings every 5 minutes. Take that data to a central point and log it with the ability to graph and compare it. Initially using USB and a converter for power, moving to own power supply.

** NOTE: I am going to be also working with a BME/P280 to see how to setup and work with I2C on the ESP-01. There are a couple of methods I will point out later on. 

I have seen where people use cloud services to keep their data. I have taken this into serious consideration, but am leaning towards a local solution. I have seen one that look promising, Domoticz. It is open source and can be run off of multiple platforms. I have recently received my Raspberry Pi 3 so I am going to try and it get it working there, but that is another day and another post.

Down to business

I crawled down into my abyss of a workbench and dug around. I knew that there was this 8266 thing what was supposed to do wireless and that I could hook it up to my Arduino. And in one of my orders I had tossed on a couple of different ESP8266 modules. There are plenty to choose from. I chose these 2 because they seemed pretty popular and I couldn’t beat the price. I have the ESP-01 and ESP-12E. The later is in the form of the NodeMCU v1.0 board with plenty of pins to work with. The ESP-01 is a simple, 8-pin module, yet with all the power of the 12E. After about 20 minutes of digging how to get the Arduino to talk to the EPS, I found out I could just write my code to the ESP and use it as both the processor and wireless device. Jack Pot! A temp sensor is always seems to be laying around somewhere and a DHT22 will work prefect.

A Quick BOM

  • 1 x ESP-01S
  • 1 X DHT22 (or whatever temp sensor you have around – be sure and sure the correct libraries.)
  • 1 x USB – UART convertor

 

The ESP-01

The ESP-01, as I have stated is the lowest, if you will, of the ESP8266 family. There is still plenty that can be done with it. Below is a diagram I found on deviantart of the pinouts.

For programming reference, pins TX and RX are GPIO 1 and 3. I found this useful when trying to get my I2C setup working. See my link at the end.

Also, the ESP-01 is pretty picky about its’ 3.3v limitation on pins. One of my first times working with it went up in the puff of magic smoke. Good thing I always oder at least 2.

Here is one of the sources I found for pin information. It is a very useful Instructable on the ESP-01.

The Plan

Here is a schematic of it from my notes. I was at work and the pencil and paper were quicker. I haven’t had the time to whip it up in Fritz’ yet.

I took to the internet and dug up a wiring diagram for the ESP for programming it. I like to take multiple approaches to this part of the process. There is the quick and dirty, plug it in and get it going and then the old school way I will call it. I did old school first.

** an error was pointed out to me during this project. The CH_PD pin should be pulled high during operation and low for programming. Currently I have mine floating, but will fix it in the next revision. It does work, but I am not sure what impact it may have in extended operation. I will update my documentation when I get it in Fritzing. 

In this example, the ESP is wired to an Arduino Uno. The two buttons are for Reset and Flash. Don’t mind the second ESP in the background, it was for another experiment.

Here is one of the sites I found useful in my quest for an ESP programmer.

*schematic from allaboutcircuits.com Next was the quick and dirty way, which wasn’t so quick an dirty in the end. Even it took some work. The board I got doesn’t have the CH_PD pin set to ground, which is required for programming. No problem since I have two of them, I took one of them and soldered a short wire connecting CH_PD pin to the Ground pin. I have it labeled for quick ID and use it for programming and the other for quick testing.

Coding

Next was how to make this little devil do something. Through my research much of the code can work, along with some of the Arduino libraries. Work has been done so that one can write a sketch and upload it through the Arduino IDE. There are other toolchains one can use as and they work quite well.

I found a couple of quick sketches where I poked around the code, uploaded them to see what and how they worked. I find that between reading the .h file of the library and an short example is the best way to learn what one can get done. I started to work on a sketch that would take a reading every minute and post it to a web page. Pretty simple and straight forward, but that is all I need right now. I only have a temp sensor and ESP.

On one of the forums I found a link to ESP Easy and it aims to be what the name claims. Essentially it is a sketch that one uploads to a ESP module. From there connect to it via wireless to initially set it up for the local wireless and then reconnect to it to control the configuration of devices and the such. Really quite fun to play around with. I need up using this for the time being. I was able to put something together over a couple hours in the lab.

Here is the link to the github for setting up the Arduino IDE for use the the ESP8266 family. The quick and dirty to setting it up is as follows.

  1. Quit the IDE or install the Arduino IDE from the Arduino website.
  2. Launch the Terminal.app.
  3. Enter in the command sudo pip install pyserial and hit return.
  4. Enter in the command sudo pip install esptool and hit return.
  5. Start Arduino and open Preferences window.
  6. Enter http://arduino.esp8266.com/stable/package_esp8266com_index.json into Additional Board Manager URLs field. You can add multiple URLs by separating them with commas.
  7. Open Boards Manager from Tools > Board menu and install esp8266 platform (and don’t forget to select your specific ESP8266 board from Tools > Board menu after installation).

The ESP is wired on the breadboard by the following. This will be the same wiring used on the protoboard final.

ESP

  •         Gnd -> Gnd
  •         Vcc -> 3.3v (from USB converter)
  •        Pin GPIO2 -> Signal from DHT22

DHT22

  •        Gnd -> Gnd
  •        Vcc -> 3.3V
  •        Signal -> GPIO2

Well, it is working on the breadboard and pretty cool for a first time ESP project. It would look pretty silly in it current state hanging from the wall. Time to go digging around in my Sanford and Son section of the lab. I dug up one of the covers that was used in an original Apple Airport. Seems like it will fit the bill. With two brass standoffs and some hot glue I mounted everything neat and orderly.

For this first station I have it mounted outside the door of my lab in the basement. It fires right up and works like a charm.

Here I took a brief fork in my academic travels. I took a day off from the above project. I did a little writing, working with the Nodemcu (but that is another post altogether), and thinking about the next sensor module I wanted to put together. I have it breadboarded and it works, it should be easy enough to put it on a protoboard; so he says.

I start with the basic layout. I think it is nice during this stage to start to think about how one would layout the traces for a PCB. My mind is already thinking that I might get 3-5 made as I need a few more for my project. The connections are as follows:

 

I layout and dry fit all of the components. For this version I didn’t have any female headers laying around so I solder the ESP-01 module directly to the board. I layed out the wire for the programming pins so I can make any changes I might want to it.

I used 24awg solid core wire for the wired connections.

My original plan has my own power supply. It is mostly working, but I have a leak somewhere. The power supply is straight forward. I use a LD1117 to convert 5v down to 3.3v. The capacitors are added to help smooth the power line. And of all times my Fluke is down, so this is on the sidelines right now. In the mean time, I am using the USB-Serial converter for my power supply. It provides an nice, steady 3.3v.

Here is the final product. The ESP comes up and I can connect to it via the web, but the sensor is not providing data. I have check my connections and voltages and the are working, but now it is time to dive deeper into hardware troubleshooting when it is all soldered together.

Well, after a pat on my back when it all powered up and the blue light started to blink, my smile quickly left. I launched the browser and went to the IP address and got nothing from the sensor. I know that it worked on the breadboard, what it up here? It was too late, time to head to slumber and figure it out tomorrow. A second look the next day and it popped out at me pretty quick. I soldered the signal wire at the wrong end of the resistor. Instead of pulling a little power from the Vcc line, it was getting flooded. 

Once I made the change, things are up and going. In the mail today, the charger/battery boards showed up. The last thing is to solder it up and connect the battery. I will be leaving in indoors for a couple of days while I work on a case for it for outside. I am not yet lucky enough for a 3D printer, but plenty creative with what I have buried away.

I also got some feedback on my power supply. There seems to be an issue with one of the caps I am using. Tonight I will replace it and see if that fixes it. I will be sure and update this and let you know.

I2C and the ISP-01

And on an ending note (???) one of my next remote sensors will include an I2C sensor, the BME280. It adds the feature of barometric pressure as well as the temperature and humidity. It is pretty straight forward. I have used it on the Arduino Uno. It was figuring out how to implement I2C on the ESP-01 that had me scratching my head for a spell.

Then I stumbled upon the magic pins web site. This is a great site on using the available pins on the ESP-01. With some creativity there is quite a bit one can pull out of the small module.

My current attempt at getting this to work is using the TX and RX pins for the I2C. I have it drawn up and ready to try. I will be back with more when I have it working.