A Test in Time – Updated

A Test in Time

My Clock Making Adventure begins. . . 

IMG 2228

Clocks seem to be one of the good-ole-standbye projects. And why not? They are useful and it is easy to get creative with them. In this post I show you how I have started on my journey of time. 

I have looked at my options for keeping time. Micro controller a yes and then a time source. Micro controllers themselves are terrible timekeepers over long periods of time. A popular option is an Arduino Uno (or other such board) and a RTC (Real Time Clock) such as the DS3231 or DS1307. Once it is configured, it does keep time quite well and over a long period of time. It uses a backup battery to keep time if power is lost. There is some drift in the clocks, but over a year it is fairly small. 

I played around with RTC on a Nano, but lately I have been playing with the ESP-01. It is a fun little chip. It is part of the ESP8266 family. I found my controller and way for time, NTP (Network Time Protocol) to keep accurate time. The ESP requires an active internet connection for it to keep time, which is the con(?) of this project, but the time is kept spot on. 

I have used the LED and OLED displays in the past and like using them. In this project I wanted the display to be simple. My main focus is to learn about time. The packet getting the time, picking the packet apart, and displaying the correct time for where I am at. For that purpose I picked a 4-digit, 7-segment display using a TM1637 chip to drive it. And I had one in my displays drawer. 

IMG 2134

 

From the schematic above the pin to pin table is:

      Display -> ESP-01

  • CLK -> IO2
  • DI0  -> IO0
  • Vcc  -> 3.3v
  • Gnd -> Gnd

As a quick test here, you can plug everything into 3.3volt power and the display should read 0123. Now it is time to move on to the code. 

I am not sure where I found the core time code I am using (if anyone recognizes it let me know and I will give due credit), but I started with a code base that would get a NTP UDP packet from a NTP time server. This method does not use one of the NTP libraries, but relies on decoding the packet and calculating the time. One other feature I added was the WiFiManager library. It is a wonderful addition to any wireless project as it makes setting up wireless a breeze and you don’t have to have people edit the sketch. I like to give away some of my projects and this makes it easy for the people I give the to. All they need is a web browser to set it up and get it running. 

IMG 2332

I stared around the workshop for two nights trying to come up with a clever display for the second attempt at dead bug soldering. This time wasn’t as successful. I do admit there wasn’t much planning involved. I started started bending wires and winging it. Next time I will have to do a little more planning as this example is something I am impressed with. 

deadbugheadphone

I finally found something that is half whimsical and half just sad, but it will display my little clock until I can (or a family member) come up with something more suitable. 

IMG 2354

 

My code can be found over at my GitHub

Taking a break. I will be back to update this soon. . . 

New Wireless!!! Linksys Velop Review

Home Wireless Upgrade to the Linksys Velop

A confluence of circumstances recently had me upgrade my home wireless. It has been on my plate the past few months as my connection in the basement is up and down like The Beast, there is no connection at the other end of the house, and standing outside; forget about it!

I have been doing my homework while waiting for the right time. In one of my careers as a Network Engineer, I spent a lot of time supporting wireless; enterprise wireless. 2 controllers and over 900 access points, thousands of devices per day, yet at home it was the dark ages. I tried a couple of remedies such as wireless extenders (worthless) and playing with OpenWRT to see if I could tweak the settings to pull out a little more life from the aged Netgear 600. 

I knew from my quick survey out of iStumbler that the airwaves were getting a little crowded.  

OldNetworkPeek

 

Once iStumbler confirmed what I already knew, I brought out Chanalyzer to take a closer look. Yikes, that is some dirty air out there and 2.4GHz is a wasteland. I already knew from my experience that 5GHz was a necessity!! All of my major devices are Apple and ready for 5GHz. Having AC on board the access point would be a nice addition as it is the up and coming next standard. The 5GHz range is looking quite nice in my area right about now, so it is a great time to move in. 

HomeWiFI Analyzer

Knowing I have to cover my whole house and I also want it to bleed outside by the pool and porch, multiple access points would serve my purpose. Part of the enterprise setup I had my hands in also used a series of access points that didn’t use a main controller per say. There was one that acted as the controller for all the others, creating a MESH network. It was pretty cool and kept the cost down for our remote sites; but the price was still out of range for home. Then last fall I started to read about MESH networks for the home. Now this is something I can get on the band wagon about. 

Reading over the specs for all of them I believe that the Linksys Velop it on top of the stack right now. At least for my wireless upgrade it does. It has 2.4/5GHz (some other brands only work with 2.4, yikes) b/g/n/ac. The setup really is, almost as easy as they claim. 

I am still reading up on how the do their backhaul between the APs. My understanding so far is that 2 of the channels are bonded for speeds to the clients and there is a single 5GHz channel for talking between the two. And after seeing my iStumbler chart from above, I have some other questions as well. 

After unboxing them, I placed the new one, right where the old one sat; right next to the cable modem. I wiped out my phone. side note. at work i actually bothered to download the manual and read it. yes it was the simple users guide, but i was able to make sure i was doing everything right to get it working, i can dink later. oh and i also installed the app so i was ready to go. I fired up the Velop app and just like the screen said it took a couple of minutes for it to find the access point and link up. Once I had the first one up I wandered around the house to see how it was. WOW, I was impressed already and there was only one AP up. I had signal in the kitchen and some outside! A small victory. 

Now to place the second one. I already had a place in mind for it. Velop has other plans and they are kind of hit and miss in my opinion. I first started with the AP in one room over, up on a shelf. So it was going through 2 2×4 drywalled walls, about 40-45 feet away. Nope it complain that I need to try closer. It was during this time, setting up the second one that was most frustrating. The progress bar is honest when it says it will be a few minutes. And it also took out my iPhone a couple of times. By 1:30am I gave up on the second one. It was late and I was frustrated. 

The next day I gave it another try after and fresh cup of joe. This time, the last time, I place it with one wall and about 30 feet between the two. Shazam! The two started talking and doing their thing. 

IMG 2053

Wireless, I am now King of the Hill on my end of the street. The drops in the basement are gone. I can surf from the car, through the house, and out to the pool. The speeds are very nice between devices, especially for backups. After having it up and working now for a little over a week, the whole family is very pleased with the results. 

HomeWiFiPeek

My Valentine’s Dead Bug

*** This was a quick copy and paste. I will be back to edit it soon!

 

This was one of those projects were I had a good idea in hand, but by the end it turned out quite different; and I am quite pleased how it turned out.

I wanted to make my Wife something nice this year for putting up with my various projects. Those on the “list”, those in planning, those in progress, those finished, and some abandon.

My original idea was to cut a heart out of wood, mount the 8×8 matrix in a hole in the middle, and mount the ATTiny on a PCB somewhere. I couldn’t make up my mind in front or back. While those ideas where being pondering and experimented with, I started on the hard part of the project.

I looked in my stock as I had both the ATTiny85 and 8×8 matrix handy. Wow, that seemed like a first, I didn’t have to order anything. I hadn’t really used the matrix before so I downloaded the Adafruit libraries and hooked it up to my Uno clone and started to play around. I used both the Adafruit_LEDbackpack and Adafruit_GFX. The animations are pretty straight forward. You have to create your image with 0 & 1’s, then call each of them as you need them. 

Here is an example from my code that shows part of the heart being drawn, it is the center square.

<span style="box-sizing: border-box;"> heart2_bmp[] = </span><span style="box-sizing: border-box;"> { </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00011000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00011000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span></span>
<span style="box-sizing: border-box; margin-bottom: 0px;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">B00000000, </span>}, </span>

Text scrolling is straightforward, but for those who are new, lets pick it apart a little bit and see what is going on.

<span style="box-sizing: border-box;"> <span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">matrix</span>.setTextWrap(false); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.<span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">clear</span>(); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">for</span> (int8_t x=<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff;">8</span>; x>=<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff; margin-bottom: 0px;">-100</span>; x--){ </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.<span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">clear</span>(); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.setCursor(x - <span class="hljs-number" style="box-sizing: border-box; color: #ae81ff;">8</span>, <span class="hljs-number" style="box-sizing: border-box; color: #ae81ff; margin-bottom: 0px;">0</span>); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">matrix</span>.<span class="hljs-keyword" style="box-sizing: border-box; color: #f92672;">print</span>(<span class="hljs-string" style="box-sizing: border-box; color: #e6db74; margin-bottom: 0px;">"1 short text"</span>); </span>
<span style="box-sizing: border-box;"><span class="hljs-keyword" style="box-sizing: border-box; color: #f92672; margin-bottom: 0px;">matrix</span>.writeDisplay(); </span><span style="box-sizing: border-box; margin-bottom: 0px;"> delay(<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff; margin-bottom: 0px;">100</span>); </span>

To start, the text shouldn’t wrap as a message will be scrolling across the matrix. The first variable, x=8 is where the text will start to scroll across. This example starts on the right and moves towards the left. x>=-100 is allowing room for the characters. I took the total number of characters in my text message and multiple it by 9 and the text displayed correctly. If you miscalculate you might not see the whole message. This happened to me as the original message was about 4 characters and the value was 96. My message was much longer, but I hadn’t changed the 96. Once it was bumped higher all worked out well.

I was using my Uno clone to do the testing. It is just much quicker to make a change and upload it quickly. Everything was moving along great, but I noticed one thing, the message wasn’t oriented right, it was a bit upside down.

There is another command that comes in useful.

matrix.setRotation(<span class="hljs-number" style="box-sizing: border-box; color: #ae81ff;">1</span>)<span class="hljs-comment" style="box-sizing: border-box; color: #75715e; margin-bottom: 0px;">;</span> 

With it you can rotate the screen in any of the four directions depending on where you need/want the pins to orient. Setting it to one put 0,0 in the upper, left-hand corner, with the pins pointing downward. Or as in one part of my code I use the rotation to spin the heart.

Now is was time to program the ATTiny. I do like working with these little guys. They work quite well in a lot of my projects and can take up a lot less space than an Uno. There are some great guides out on the net on programming the ATTiny family of processors. The only hiccup I had was dealing with the Wire library.

While libraries might be compatible within the ATMel family of chips, there is the space consideration. And the ATTiny85 doesn’t have the room of its big brother. There is a Wire library that was made just for the ATTinys, it is also from Adafruit. WireTinyM. Once I updated that it worked much better. I left in both for when making changes and updates. Depending on which one I am using I can just comment out the other. 

During all of this I am still pondering how to make the mount for all of my little bits. I start to look at the 8×8 and the Tiny and figure what the hay. There are only 4 pins that need hooked up. And this would probably look way cooler than protoboard as there is no time to get a PCB fabricated and delivered. It seemed to so simple, 4 pins to 4 pins. It took a couple of tries in trying to find what might look best and also work the best.

Well, it struck me. It had earlier, but wasn’t too hip on the idea at first and then it just started to grow on me the more I thought about it. I got myself a length of electrical wiring. I had a length of 3-wire left over from a kitchen project. I pulled out the ground wire and bent it in the shape of a heart. I would then just be able to hang the matrix and Tiny from the top of it. Shazaam!

After that it was a matter of finding a base (a birch log part that was from a wedding center piece and some Lake Superior lake shore rocks).

Oh last but not least, I had to power it. I was going to use USB cable, but no, that would be just too much hassle. AA?? Naw, too many and won’t last too long. Hey, I have one of those lipos at 3.7, I wonder if it would work? I know the ATTiny will work at 3.3V and that data sheet states the lowest power the for the matrix is 2.7. What the heck. I wired up a JST battery connector and plugged it it – DONE!

SCHEMATICS 

Img 1853 3hpmbc0wrk

Vintage computing strikes again

I was talking with my parents a while back and my mom mentioned my old Atari 400 (http://www.oldcomputers.net/atari400.html for the low down on the specs). That 6502 at 1.8Mhz, geeeeeeshe Louise! And 16k of RAM to boot!

Atari400

We both wondered if it was still around Or had gone by the way side. Guess what? The computer that started my computing journey!!!

IMG 9576

Well, heavens to Betsy if a package didn’t arrive yesterday. And yes, that is the way the box was found, open and the lid wouldn’t close, but I was surprised at that it all survived. It even had the fancy keyboard, not the that awful plastic sheet of plastic with bubble switch keys. My friend Phil had the Atari 800 with floppy drives. Well, la’ dee da’! Another friend Nick had an 800 with all the bells and whistles and ran a local BBS from his. Every Saturday morning there was a group that hung out at the local computer shop trading tips, tricks, and software. 

And with most people from this era, we could send hours busily typing in programs from whatever magazine you could buy, find, trade, or borrow. And the magic of trying to save it and retrieve it from tape. I think I lost as much as was saved in the end. 

I remember when I got it, it was for Christmas. Of course being the young, excited lad I was, one afternoon when my parents were out, I pulled it from the closet, ever so carefully pealed back the tape, unboxed it, set it up, and had fun for a couple of hours. They were surprised at how quick I had it setup. I didn’t let them in on the secret until on so many, many moons later. 

I am playing around with a new gallery plugin, so check out the pictures of the unveiling. Much like the NeXT Cube, I am going to see if I can get this one up and running as well. I was really hoping that Xaxon was going to be in the cassette player, but I wasn’t lucky on that note. I am going to have to track down some pieces and parts to get it displaying something once I get it put back together again. Westley was poking around the box and getting curious, so maybe I can get him to help me with this let-me-put-it-in-the-queue project list – LOL. 

IMG 9577

And there was a bonus!! All of the screws for the case were still in the box. They are laying inside the bottom of the case. 

IMG 9578

IMG 9580IMG 9579

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. 

NeXTStep VM

In light of my issues with my real NeXT hardware, I decided to try and get NeXTStep installed on a VM. We use Parallels for the Mac OS X platform here at work, so that is where I started. 

I was able to find some useful information over at the nextcomputer.org site. It was a little old, but much of it still very pertinent to this install. 

It kept on coming up with errors on the install. It would hang when trying to boot from the CD image. After various combinations suggested from the web and then a few I made up on my own, I will still left with a broken install process. 

Nuts! but I didn’t give up. The windows people use VMware for their VM pleasures. A while back I had received a copy to test and try and make a Mac OS image. I dusted it off, gave it a quick update and tried it with VMware. I am not sure if it is better software (Parallels has never let me down before) or a little luck tossed in, but it worked well installing on Fusion. 

NS33 Installing

There are still some drivers I need to track down and get installed. From my reading they are needed to get some better video and networking up and going. I am kind of looking forward to pulling out OminWeb from the OmniGroup, and seeing how it looks compared to now. It was (and still is) a wonderful web browser. I don’t use it as much as I used to as they don’t update it very often anymore. There tabs and workspace features are ones I wish I would see elsewhere. 

It was welcoming after the past hours of frustration trying to get this up and working to finally see that wonderful Welcome screen. 

NS33 Welcome

From here on out it was a few clicks before I reach the desktop. What a site for sore eyes. 

NS33 Desktop jpg

The desktop is a little tight don’t you think? I know I do. I am going to go on the hunt for the drivers tonight and see what I can scare up. 

I will also post my notes out on the NeXT site in case there are a couple of other crazies out there. 

Side Project – MacPi Plus

Raspberry Pi Model 3 into a Mac Plus case 

My Raspberry Pi has been sitting on my bench in a little plastic box. It seems so naked and bare; it needed something to spice things up. And I needed another project on my list, like I am not sure what, but it has ended up on my list.

I have had an old Mac Plus case laying around for years. It has served as a desktop bookcase to recently a collecting bin for cables. The face plate was made into a cheesy, but geeky picture frame. It took some time to clean it up a bit. I didn’t go through all of the trouble to really scrub it down. I like a little of the aged, plastic, patina, look to it, but it does look scads better than it did.

My first goal for this project is to see how much I can use that I have laying around. I have rounded up most of the parts I need.

  • Mac Plus Case
  • Raspberry Pi – bought
  • SainSmart 7″ TFT LCD – bought
  • USB hub, powered
  • SD card slot extender
  • Ethernet cable extender

I am sure I will need some more bits and parts as time wears on, but for now this will get me started.

While working on getting the screen working with the Pi (what a pain, but this will be another post later) I have been laying to how to put things together. The first order of business was the screen. I was trying to find a 4:3 aspect monitor, but didn’t like what I found. I started looking at the Raspberry Pi “compatible” screens. I originally wanted to get the larger 8″ screen, but after measuring a couple of times, I was sure it wouldn’t fit. So I decided on the 7″ screen.

I need a way to mount the screen to the inside of the face plate. What to use? It took me a day or so of rummaging around to find something that seemed appropriate to use. Somewhere in my travels I had a rather large pass-through card, but the right size for holding the screen and with a little Dremel work on the connectors it fits in the face plate.

I took a piece of cardboard and traced the outline of the screen opening on the faceplate. I then added another piece of paper representing the screen to help figure out the placement of it and the screws.

I have to drill the holes in the plate to attach it to the face plate as well as 4 more holes to mount the screen.

 

Well, that is it for now. Check back as I will be updating as I keeping plugging along on this one. Like I said it is a side-project. While not pretty, the bare Pi and VNC work fairly well for the work it currently does, but it deserves a nice Macinficantion.

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.

ATTiny Dice

Early on in my adventures in the micro controller world, one of my goals has been to usher an idea from paper, to breadboard, to protoboard, to real PCB board. After a long night of soldering, I decided to take a break and start the post about it all.

I learned early in life, start simple and build on what you know. In that vein I took the idea of making digital dice. To date I am up to the photo-board phase. I am making an actual die I can give as presents for this Christmas season.

I had an idea how to start the project. I grabbed my Arduino Uno, 7 LEDs, and my breadboard. 7 lights, 7 pins, and away I went. After a giggle of joy over seeing it work, I stared at it wondering how I was going to make a box that looked reasonable to fit the Uno as a die.

That idea was quickly nixed. In my readings and forum lurkings I had heard of the different chips in the ATmel family of microprocessors. With a little digging I soon found the ATtiny85 which seemed like it would fit the bill I was looking for. Small footprint, just a few pins, and it works with my Arduino Uno knowledge. Dang, I have 7 LEDs with 7 pins and this little guy sure doesn’t have enough, or does it.

While awaiting my ATtiny order, I used the time to research a little more about this new turn I took (with little foreknowledge it should work). I also waded through the data sheets for the ATTiny family to find out more of their capabilities. You can find the information here. There is a method to control more than 1 LED pre pin. The method is known as Charliplexing. Here is an example to get you going.

With a little more knowledge in hand it is time to draw out how one might control the LEDs. Knowing how a die is made with the numbering scheme as dots we need a total of 7 to replicate what an actual one looks like and how they will light up in turn.

Now that I had my little 85’s in hand I took to the breadboard to see what I could come up with. It took a couple of tries to a) double and triple check my wiring (make sure ground is going to ground!) b) at the same time learning how to program the ATTiny.

So, here is where there is a branch (one I kinda of started already). I am going to take a quick detour on the ATtiny85. I know that the ATT85 is part of the Atmel family of microprocessors. The ATT85 has fewer pins, less memory, less power, and slower. None of these are an issue for this project and in all ways a big plus as I want this project to be small in size. There are breakout boards and programming boards one can use to program the ATtiny85 such as the Digispark, and there is the use what you have it works pretty darn well method too. I went with the later of them. Here is one of the sites I researched when planning on how to get my code on the ATTiny85.

With the Uno it is as straight forward as connecting it to my Mac with a USB cable and upload the sketch. With the ATtiny85, I used the Uno as the ISP

The wiring is pretty straight forward, just follow the diagram. If it is your fist time trying this out, the blinking LED exercise if a good one; if for nothing else getting you used to setting up and uploading code to it.

 

On the right hand side of my breadboard you can see the ATTiny85, wire up and running the die code. In this version I am using a button switch instead of the motion switch.

It works. I have my ATtiny85 programmed with my die code, wired up to the LEDs, and it is working! I have that giddy feeling all over again, but than the sigh. Even if I get a small breadboard it still won’t look quite right. I guess it is time for another plunge and learning experience. That is a good deal of why I started tinkering in this digital world.

I knew what was next, I had to solder it all on some protoboard. You know those green or tan sheets with holes (well some have holes predrilled) that you can solder little parts onto. I made out my list of parts and pulled them all before I began. This hasn’t been your weekend type project. Between family, work, and other of life’s bits it has taken me a few weeks by now. And those boats from China really are slow!).

BOM (Bill of Materials)

1     Protoboard

1     ATTiny85 (read a little lower for more on this choice)

7     LED, 5mm

1     Motion switch

1     Various 24AWG solid core or stranded wire

This is my first try at a full-on, solder it up type project. I didn’t think I would get it right on the first try, but Oye Vey! It almost worked, but my voltage readings were waaaaaay low by time I measure at the LED pins. Oh well, I will not be deterred and try again.