Update July 15, 2018
It has been said before and will be said again that I often refer to the Arduino Nano when I mean a copycat Nano board OR copycat Mini Pro. Let’s complicate this a little and add in variations using the 168 and 328 chips.
To clarify, I would not knowingly buy boards using the 168 chip – so that is out of the picture – and the main difference between the Nano and Mini Pro is that the former (usually) has a micro-USB connection whereas the Mini Pro has 5v TTL serial on a 0.1” connector , requiring an FTDI to program the board. The latter board is better if you are desperate to save power.
We should clarify this further: any boards that use the non-surface-mount 328 chip should be avoided as they only have 6 analog inputs. SMT variants have 8 analog inputs (A0-A7) and in any case are usually the least expensive (see AliExpress). I use two of those pins (A4, A5) as i2c pins (slave).
We’ve also discussed the SSSTM “Blue Pill” board (not Arduino”) but this continues to be unsuitable as an I2c slave peripheral at the time of writing..
See above, at the top is a typical Wemos D1-type ESP8266 board. Below are the Arduino Pro Mini and Nano variants I use.
And the point of these Arduino-type boards? The ESP8266 is a fantastic chip on it’s own, marvellous for WIFI and in my case for MQTT-protocol communications with a main controller such as a Raspberry Pi, FriendlyArm, Orange Pi or similar. My own software for the ESP8266 (ESP-GO) can run both PWM and RGB serial LEDs however, the PWM does not ideally co-exist with I2c and RGB if you need them all at once.
Enter the “Nano peripheral” which offers up to 6 (soft fade) PWM channels while talking I2c to the main board. Suitable pins for PWM (0-255) are 3, 5, 6, 9, 10 and 11. That AND up to 6 A/D channels (as I’m using potential 2 analog pins as i2c) whereas the ESP8266 has only 1 A/D. Add to that, more general I/O pins and more, all can be controlled from Node-Red on the main controller without customising the peripheral… i.e. out of the box.
Getting the Wemos and Nano working together is easy… a pair of 1k pull-up resistors for i2c to 3v3, a common 5v supply and you are done. It is not unusual for me to add in an ssd1306 OLED display to the i2c bus (no extra components needed). Right now on my bench is exactly that with the addition of a BME280+light sensor “weather board” on the ESP8266 side.
With these two puzzle-pieces pretty much standardised I can concentrate on the main control board and mobile software to make this all DO something.
Right now for the purpose of experimenting I have two RGB LEDs with common anode so I’m reversing values – 255 is off.