ESP8266 Projects Blog
Home of CBDB / MPDMv4 /SmartMon Development boards (ESP-12/ESP-07).
Guidelines and ESP8266 programming examples using LUA, Eclipse and Arduino IDE, ESP Basic and many more!
Part 4 of the MPRSx8 + ESPEasy Tutorial - After having all the bits & pieces in place, ESPEasy Formware properly uploaded and configured, now is time for the Domoticz setup and testing the Control interface!
Part 3 of the MPRSx8 + ESPEasy Tutorial - This time we will take a deeper look on the ESPEasy Firmware configuration and preparing the MPRSx8 Board for Domoticz integration:
Part 2 of the series, ESPEasy Firmware Upload tutorial using a simple standard USB-to-Serial Adapter:
The story behind: Somebody was asking if is really possible to upload firmware with a simple USB to serial adapter, as the ones that are available all over the place. As you can see from the above step-by-step tutorial it is possible and is working very smooth. You are loosing the autoreset and autoupload capabilities of the USBProg board, but as long as you are doing rarely the firmware upload is not so bad. On the other hand, if you want to use it with Arduino IDE or anything else that means frequent upload then I think you will start looking after that functions sooner or later, I think more sooner than later :)
For programming and uploading the driver and the software we will use ESP8266 Basic .
This is how is looking the setup on a breadboard, for a better visibility:
Software implementation:
Something to remember:
PCF8574 can SINK but NOT SOURCE much current - 100uA only (it cannot
output high, if you want). Look at the above example how is connected
the LED for SINKING current.
Each of the 8 GPIOs have a minimum guaranteed sinking current of 10 mA per bit at 5 V.
Each pin needs its own limiting resistor to prevent damage to the device!! keep under 25mA/pin.
Maximum device limit sink current in about 80mA. If you need more, look after PCA8574 (200mA max sink current!)
Now is time to put it at work also in ESP8266 Basic and see how is working.
The example for today is a implementation of a mutually-exclusive switch that can be handy for many, many things as for example for doing the selection of a source in a Audio mixer or a any other analog path. Or driving Power relays.
Mutually exclusive switch means that when the corresponding switch button is pressed ON must also automatically turn the other sources OFF.
For programming and uploading the driver and the software we will use ESP8266 Basic .
This is how is looking the setup on a breadboard, for a better visibility:
Software implementation:
Something to remember:
PCF8574 can SINK but NOT SOURCE much current - 100uA only (it cannot
output high, if you want). Look at the above example how is connected
the LED for SINKING current.
Each of the 8 GPIOs have a minimum guaranteed sinking current of 10 mA per bit at 5 V.
Each pin needs its own limiting resistor to prevent damage to the device!! keep under 25mA/pin.
Maximum device limit sink current in about 80mA. If you need more, look after PCA8574 (200mA max sink current!)
button "1", [1] 'Define push buttons for each I/O pin button "2", [2] button "3", [3] button "4", [4] button "5", [5] button "6", [6] button "7", [7] button "8", [8] button "OFF", [9] 'Button for turning OFF all wait
[9] i2c.begin(address) 'Start I2C communication with device at 'address' i2c.write(255) 'write the corresponding I/O pin value to register i2c.end() 'end I2C communication wait
From today I will start a new Series related with ESP Basic (www.esp8266basic.com)
When working with a lot of I2C devices one of the first thing that you need is a simple I2C scanner that can help you to identify the IC's and do some very basic troubleshooting.
For programming and uploading the driver and the software we will use ESP8266 Basic .
nEXT EVO + AN-1 extension board
I2C Scanner Software: UPDATE !! UPDATE !!UPDATE !!UPDATE !!
From ESPBasic Version 3.0 Alpha 43 you have also the i2c.setup function available!!
i2c.setup():
Will change the default pins for the i2c interface.
i2c.setup({SDA}, {SCL})
i2c.setup(4,5)
for address = 1 to 127 i2c.begin(address) stat = i2c.end()
if stat < 1 then ' print stat wprint "Found I2C device at address: 0x" & hex(address) wprint " - > " & address wprint " <br>" endif
next wait
And the scanning result in browser :
As you can see, has properly detected the I2C devices that are on the AN-1 Extension board:
- PCF8574 - 8Bit I/O EXT port - found at address 0x20 -> 32 - LM75 - Temperature sensor - found at address 0x48 -> 72 - MCP4728 - 4x12Bit DAC - found at address 0x60 -> 96 - MCP3421 - 18Bit ADC - found at address 0x68 -> 10
Please keep in mind that in ESP Basic you have hardcoded I2C pins yet, SDA -> GPIO0 and SCL -> GPIO2.
Don't forget to add if needed pullup resistors on both lines, 4K7 should be OK. In case of AN-1 they are NOT needed.