Brad10

Member Since: December 29, 2010

Country: United States

  • When the sensor is a meter or more away from the Arduino, I prefer the MAX31820 because it’s digital. I don’t have to worry about line voltage drop or noise. Sparkfun sells the MAX31820 for just a little more than the TMP36.

  • I’ve successfully read 12 of these on a single 1-wire bus, using an ESP8266 Thing Dev board, Arduino IDE, OneWire library from https://github.com/PaulStoffregen/OneWire and Temperature Sensors library from https://github.com/milesburton/Arduino-Temperature-Control-Library. My Open Source code, using those libraries, is at https://github.com/bneedhamia/WellDepthTemperature

  • A useful tip about I/O pins: 0 is connected to an on-board 10K ohm pull-up resistor; 2 is connected to an on-board 10K ohm pull-up resistor; 5 is connected to an on-board LED ohm and 220 ohm resistor to Vcc; 15 is connected to an on-board 10K pull-down resistor; 16 is not (currently) supported by PaulStoffregen’s OneWire library, because that pin requires special treatment in the low-level I/O code.

  • If you want to confirm that number for yourself, you can find that spec in the ESP8266EX chip datasheet. The ESP8266EX is the chip on the Thing Dev board. You can find its Datasheet under its product resources page, at http://espressif.com/en/products/hardware/esp8266ex/resources under the section labeled Documentation.

  • And no analog I/O in the Arduino support yet? Ouch. I think I may put this board back in the “to give away” box until the Arduino IDE support is closer to ready. To reiterate: If a feature isn’t supported in the Arduino IDE, it essentially doesn’t exist for me.

  • Looking at the schematic of the Thing Dev board, the on-board LED (pin 5) is Active Low (that is, ‘reversed’). I also discovered this when I wired an external, ‘normal’ Active High LED to that pin: my external LED would light only when the on-board LED was dark, and vice-versa.

    To note this fact in Thing Arduino Sketches, I’ve named the LED pin “PIN_LED_L”, with the _L suffix indicating that it lights when LOW rather than the more common HIGH.

  • A little more documentation on the I/O pins would be helpful. I’m not sure what I need to do to use Pin 2 (vs. other pins) as an input pin: when I connected an input to it, the ESP8266 repeatedly reset until I disconnected it. Luckily it worked when I used Pin 15 instead of Pin 2.

  • I had trouble getting the WiFi to connect to a router until I re-read the ESP8266 library documentation that said the background code must be called frequently. I found the problem was a delay(5000); that was in my Sketch’s setup(). Removing that delay() call made everything work great. So note: you must not have delay() values over (about) 1 second - even before you make any calls to the ESP8266 library.

    So far, I’m delighted with this board.

  • FYI: the on-board LED, connected to pin 5, is Active Low rather than the usual Arduino Active High on-board LED. That is, when you digitalWrite(5, LOW) the on-board LED turns ON rather than off.

    Looking at the schematic confirms that the on-board LED is connected between Vcc and the I/O pin rather than Gnd and the I/O pin. Keep that in mind if you want to connect anything to ESP8266 pin 5.

  • I love hysteresis for detecting changes! It has made my life so easy so many times.

    A great companion post to this one would be: how to measure how much noise your knob reading has. I’ve seen too many programs where the knob (or other device) just can’t provide the accuracy the maker is trying to get, because there is too much noise in the reading. Noise measurement and statistics can remove a lot of frustration.

    My favorite technique of measuring noise is to log the raw readings when I’m not moving the knob, then perform some basic statistics on those readings. One simple statistic is the minimum and maximum value read during the test period. (maximum - minimum) / 2 gives a quick and simple (and probably over-conservative) measure of the noise threshold. Statistics folks prefer calculating Standard Deviation, because you can use that measurement to design how reliable you want your change detection to be. See https://www.mathsisfun.com/data/standard-deviation-formulas.html for how to calculate Standard Deviation.

No public wish lists :(