Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:esp [2015/02/04 18:22] – [I2C bus] darronprojects:esp [2017/01/12 22:44] (current) – external edit 127.0.0.1
Line 10: Line 10:
 The three devices are a Microchip MCP23016 digital I/O expander, NXP PCF8591 ADC/DAC and Microchip 24LC512 EEPROM. The three devices are a Microchip MCP23016 digital I/O expander, NXP PCF8591 ADC/DAC and Microchip 24LC512 EEPROM.
  
-These were chosen because they add useful capabilities to the ESP-01 or RPi and all three are available in DIP format from CPC in the United Kingdom.+These were chosen because they add useful interfacing and logging capabilities to the ESP-01 or RPi and all three are available in DIP format from CPC in the United Kingdom.
  
 +You may also consider adding an I2C RTC to this project and perhaps it shall be updated to include one at a later time.
 === Schematic === === Schematic ===
  
-The circuit is expected to be used with either an ESP-01 attached and with it'UART connected to a computer to load in scripts, else without an ESP-01 and with the I2C lines connected to an Raspberry Pi.+The circuit is expected to be used with either an ESP-01 attached and with its UART connected to a computer to load in scripts, else without an ESP-01 and with the I2C lines connected to Raspberry Pi.
  
 {{:projects:esp.png?200}} {{:projects:esp.png?200}}
Line 21: Line 22:
 === I2C bus === === I2C bus ===
  
-The I2C bus is simple affair with only two lines required for it'operation. This is perfect for the ESP-01 module which only has two GPIOs exposed on it'header pins. For the Raspberry Pi, there are two I2C buses, but only one is normally available.+The I2C bus is simple affair with only two lines required for its operation. This is perfect for the ESP-01 module which only has two GPIOs exposed on its header pins. For the Raspberry Pi, there are two I2C buses, but only one is normally available.
  
 ^Address ^Device | ^Address ^Device |
Line 44: Line 45:
 </code> </code>
 === MCP23016 === === MCP23016 ===
 +
 +The MCP23016 is general purpose digital I/O expander. There are more modern and faster varieties of this device but as yet they are not available at CPC.
  
 ^Control ^Register ^Function | ^Control ^Register ^Function |
Line 57: Line 60:
 == ESP-01 NodeMcu == == ESP-01 NodeMcu ==
  
-First we need eSPY, fetch and build it. The examples below come with the source.+The NodeMcu firmware can be controlled via a serial console. This can be a manual operation else with a specially written tool for the job: eSPY. 
 + 
 +First we need to fetch eSPY, and then build it. The examples for eSPY on this page come with the eSPY source.
 <code> <code>
 hg clone http://hg.kewl.org/pub/espy hg clone http://hg.kewl.org/pub/espy
Line 101: Line 106:
 </code> </code>
  
-The script comes with the eSPY application and can be demomstrated thus.+The script comes with the eSPY application and can be demomstrated like this.
 <code> <code>
 ./mcp.esp ./mcp.esp
Line 135: Line 140:
  
 === PCF8591 === === PCF8591 ===
 +
 +The PCF8591 combines 4 analogue inputs and a single analogue output. The inputs can be more than simple input channels but this isn't looked at here.
 +
 ^Control ^Register   ^Function | ^Control ^Register   ^Function |
 |0        | channel 0 |Read ADC 0| |0        | channel 0 |Read ADC 0|
Line 180: Line 188:
 </code> </code>
  
-When the script is run with eSPY we can see the DAC output ramp up and a running commentary.+When the script is run with eSPY we can see the DAC output ramp up with a running status.
 <code> <code>
 0 0
Line 215: Line 223:
 I2C EEPROMs have varied addressing schemes. The simplest is a 8-bit address offset, another one where a block selection is made with an I2C address and a byte selection is made with an 8-bit address offset. Yet another, where the I2C address is fixed but it now has a 16-bit address offset and lastly one with both of the last methods combined. I2C EEPROMs have varied addressing schemes. The simplest is a 8-bit address offset, another one where a block selection is made with an I2C address and a byte selection is made with an 8-bit address offset. Yet another, where the I2C address is fixed but it now has a 16-bit address offset and lastly one with both of the last methods combined.
  
-The 24LC512 which uses 16-bit addressing. The addressing byte order is high byte, low byte.+The 24LC512 looked at here uses a fixed I2C address and 16-bit addressing. The addressing byte order is high byte, low byte.
  
 == ESP-01 NodeMcu == == ESP-01 NodeMcu ==
Line 259: Line 267:
 238 238
 </code> </code>
- 
-eSPY is still being developed and as yet doesn't filter the LUA prompts from the output. 
  
 == RPi == == RPi ==
Line 292: Line 298:
 [[http://www.nxp.com/documents/data_sheet/PCF8591.pdf|PCF8591 data-sheet]]\\ [[http://www.nxp.com/documents/data_sheet/PCF8591.pdf|PCF8591 data-sheet]]\\
 [[http://ww1.microchip.com/downloads/en/DeviceDoc/21754M.pdf|24LC512 data-sheet]]\\ [[http://ww1.microchip.com/downloads/en/DeviceDoc/21754M.pdf|24LC512 data-sheet]]\\
 +