While I don't intend to use these for the "fancy" projects, I got a few and it turns out they'll be just fine for a few of the "dumber" things I want to do, like a bunch of the "smart homestead" stuff, which isn't really rocket science - mostly acquiring some data, or switching some relay. The "big thinking" can be done anywhere on the network that is handy...but with "things" all over the place, some simple wifi is kind of nice, and that many fewer wires or ethernet switch ports.
The particular -01 modules I got were these: https://www.amazon.com/Makerfire-ESP826 ... op?ie=UTF8
While I'm sure you can find them cheaper elsewhere (after a looong boat ride), these are fine and already cost the least of any part of a project using them...or nearly enough.
These have 1 megabyte flash, unlike the newer modules that have 4. No biggie. The wireless stuff eats about a quarter meg, and you'd be hard pressed to add more then 16 or 32k more for a reasonable use of these. So, plenty. I'm using a 1 meg, using the arduino ide and the adaruit github library add on, with "generic module" type and it works fine.
I built a programmerloosely based on this guy's post - which turns out to work nicely, though I added a couple features to make it more like Adafruit's Huzzah - the two button thing is nicer than moving parts on and off a proto board (I despise those anyway and use them up so I won't have them in the way when I want to do something actually-serious, weird, I know). To make my programmer work with one of these perma-proto boards that are like the push-in type but with solder, I used my bandsaw to cut the end off an old raspi stacking header (extra long leads) and bent them to go onto opposite sides of the strip board.
I wired up 6 pins worth of stakes to accept either an FTDI cable or a console cable (either one is 3.3v compatible).
If you're getting medium tricky, this link is helpful. You can change the uart pins to gpio's when your sketch is running, and still be able to reprogram the thing when it's in upload mode. 4 IOs instead of the usual two. http://www.esp8266.com/wiki/doku.php?id ... llocations
The only thing that could be called a "trick" here is how I did the button for gpio-0. It is a button to ground. The other pin of the button goes through a 330 ohm resistor to the actual gpio pin, just in case you have a sketch in there that was forcing that pin high and you forgot to hit the reset button first. I didn't really want to use two red leds - I wanted different colors, but I always use red for reset (a mnemonic thing), and the gpio-0 pin has an interesting property - when things are "Ready for upload" it pulses that pin low at a low duty cycle. For the life of me I couldn't get a yellow or green LED to light up enough with that 330 ohm (and another one in series with V+ because the button DOES short to ground) to see in that mode.
To add support for these to the arduino ide, you basically:
Enter http://arduino.esp8266.com/stable/packa ... index.json into Additional Board Manager URLs field in the Arduino v1.6.4+ preferences.
I am using the "generic" for these and the 1MB settings, and they work fine.
Basically, you hit the reset button, then the gpio-0 button, release the reset one, then the gpio one. If the device sees gpio-0 low coming out of reset it goes into "load me" mode, regardless of what was in there already - your last sketch or, ugh, AT or Lua. Either of which you can flash back in there if you're into auto-flagellation.
I intend to use Adafruit's Huzzah for anything more complex than switching power or looking at a sensor or two here and there. I'm using Adafruit's Feather Huzzah for development, since it's so simple and no button pressing at all to try a new sketch. While compilatoin is a little slow on the raspi-3 I'm using for this, backing its world up is tons simpler and faster than most other things.
I tend to buy at least the first few of any of this class of stuff from Adafruit and I believe for good reasons.
1. It works almost 100% of the time
2. They spend time and money writing code to make it all as easy as possible. While I'm not one of the kewl kids with the new languages, c(++) works fine for me, as does perl.
3. In the event #1 isn't true, they have actual customer service. Like all places, their first assumption has to be that you're an idiot, as 99,9xxx% of their requests are from...well, people who didn't RFTA or check. But once they find out you're OK - very nice and helpful. And when I find a bug in their code and inform them - it gets implemented right now on their github.
OK, if you're going to use a metric cubic gazillion of something, there are other options (but I might call Ada too). But isn't your time worth something? And theirs?
One of the reasons I bother posting on what is my own board, when a local pi or something could (and does, using PHPBB too) take notes for me is that my time is worth something. This is an offsite backup...as well as its other functions.
So, out of all those hours of searching and finding what works, I now have one simple post that "does it all" for this module type. One probablem with searching (especially linux stuff) is you might spend hours getting the wrong answer, or what would have been the right one but for some other version and things have changed - and that right answer was so simple it doesn't stick in the mind much better than the 1000 wrong ones. Then a year later you need to know it again....so adding "metadata" like this is actually reducing the entropy of my life, and I hope the reader's too.