mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-09-12 01:24:04 +00:00
174 lines
4.9 KiB
ReStructuredText
174 lines
4.9 KiB
ReStructuredText
.. include:: ../Plugin/_plugin_substitutions_p06x.repl
|
|
.. _P061_page:
|
|
|
|
|P061_typename|
|
|
==================================================
|
|
|
|
|P061_shortinfo|
|
|
|
|
Plugin details
|
|
--------------
|
|
|
|
Type: |P061_type|
|
|
|
|
Name: |P061_name|
|
|
|
|
Status: |P061_status|
|
|
|
|
GitHub: |P061_github|_
|
|
|
|
Maintainer: |P061_maintainer|
|
|
|
|
Used libraries: |P061_usedlibraries|
|
|
|
|
Supported hardware
|
|
------------------
|
|
|
|
|P061_usedby|
|
|
|
|
This plugin is used to get input from buttons/keys or a keypad transformed to a ScanCode, that can be handled in rules. The keys are connected directly or in a matrix to an 8 or 16 port I2C I/O chip. Currently supported chips are PCA8574/PCA8574A (8 I/O ports), MCP23017 and PCA8575 (16 I/O ports). Depending on the configuration, this allows to connect up to 72 keys to a single I/O chip (9*8 matrix). The PCA8575 chip doesn't have internal pull-up resistors, so these must be added externally.
|
|
|
|
Direct chip mode means that each I/O port is connected to a key, and connects to GND when pressed.
|
|
|
|
Matrix chip mode means that a matrix is created with half of the I/O ports as row and the other half as columns. At every crossing of the matrix, a key can be connected, connecting the row and column wires when pressed. The extra, 9th, row is formed by GND.
|
|
|
|
The plugin generates a ScanCode, depending on either the button-order in 'direct' mode, or the row/column position in the 'matrix' mode.
|
|
|
|
When pressing multiple keys at the same time, the lowest ScanCode value is returned, any other key(s) are ignored.
|
|
|
|
From the source-code:
|
|
|
|
.. code-block:: text
|
|
|
|
Connecting KeyPad matrix to MCP23017 / PCF8575 chip:
|
|
row 0 = GND (optional if 9 rows needed)
|
|
row 1 = GPA0 / P00
|
|
row 2 = GPA1 / P01
|
|
...
|
|
row 8 = GPA7 / P07
|
|
|
|
column 1 = GPB0 / P10
|
|
column 2 = GPB1 / P11
|
|
...
|
|
column 8 = GPB7 / P17
|
|
|
|
Typical Key Pad:
|
|
C1 C2 C3
|
|
R1 [1] [2] [3]
|
|
R2 [4] [5] [6]
|
|
R3 [7] [8] [9]
|
|
R4 [*] [0] [#]
|
|
|
|
Connecting KeyPad matrix to PCF8574 chip:
|
|
row 0 = GND (optional if 5 rows needed)
|
|
row 1 = P0
|
|
row 2 = P1
|
|
row 3 = P2
|
|
row 4 = P3
|
|
|
|
column 1 = P4
|
|
column 2 = P5
|
|
column 3 = P6
|
|
column 4 = P7
|
|
|
|
Connecting KeyPad direct to PCF8574 / MCP23017 / PCF8575 chip:
|
|
common = GND
|
|
key 1 = P0 / GPA0 / P00
|
|
key 2 = P1 / GPA1 / P01
|
|
...
|
|
key 8 = P7 / GPA7 / P07
|
|
For 16 bit I/O expanders
|
|
key 9 = -- / GPB0 / P10
|
|
key 10 = -- / GPB1 / P11
|
|
...
|
|
key 16 = -- / GPB7 / P17
|
|
NB: PCF8575 needs pull-up resistors on all 16 ports to work as intended, as the chip doesn't have internal pull-ups
|
|
|
|
Often used matrix keypads, in 16 and 12 key configuration:
|
|
|
|
.. image:: P061_Keypads16_12keys.png
|
|
:alt: Keypads with 16 and 12 keys
|
|
|
|
(Image sourced from Aliexpress)
|
|
|
|
.. include:: MCP23017_rev_d.repl
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
.. image:: P061_DeviceConfiguration.png
|
|
:alt: Device configuration
|
|
|
|
* **Name** A unique name should be entered here.
|
|
|
|
* **Enabled** The device can be disabled or enabled. When not enabled the device should not use any resources.
|
|
|
|
I2C Options
|
|
^^^^^^^^^^^^
|
|
|
|
The available settings here depend on the build used. At least the **Force Slow I2C speed** option is available, but selections for the I2C Multiplexer can also be shown. For details see the :ref:`Hardware_page`
|
|
|
|
**I2C Address**: The address the device is using. Usually, for this type of I/O boards, the I2C address can be configured by connecting ``A0``/``A1``/``A2`` to either GND or VCC.
|
|
|
|
Depending on the chip used, different sets of I2C addresses are available to select from.
|
|
|
|
For MCP23017 and PCA8575, these are the available addresses:
|
|
|
|
.. image:: P061_I2CAddressOptions16bitIO.png
|
|
:alt: I2C addresses for MCP23017 and PCF8575
|
|
|
|
For PCA8574 and PCA8574A, these are the available addresses:
|
|
|
|
.. image:: P061_I2CAddressOptionsPCF8574.png
|
|
:alt: I2C addresses for PCF8574 and PCF8574A
|
|
|
|
If a **Chip (Mode)** for PCA8574 is selected, an extra message is shown, as the A version of that chip uses a different address-range:
|
|
|
|
.. image:: P061_I2CAddressPCF8574.png
|
|
:alt: Extra info on difference PCA8574 and PCA8574A
|
|
|
|
Device Settings
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
* **Chip (Mode)**: Select the configuration needed.
|
|
|
|
Available options:
|
|
|
|
.. image:: P061_ChipModeOptions.png
|
|
:alt: Chip mode options
|
|
|
|
Data Acquisition
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
The Data Acquisition, Send to Controller and Interval settings are standard available configuration items. Send to Controller is only visible when one or more Controllers are configured.
|
|
|
|
* **Interval** By default, Interval will be set to 0 sec.
|
|
|
|
Values
|
|
^^^^^^
|
|
|
|
The key scan code is available in ``ScanCode``. After releasing the key, the ScanCode is reset to 0.
|
|
|
|
Change log
|
|
----------
|
|
|
|
.. versionchanged:: 2.0
|
|
...
|
|
|
|
|added|
|
|
2022-01-23 Add support for PCA8575 chip, and multi-instance use of the plugin.
|
|
|
|
|added|
|
|
Major overhaul for 2.0 release.
|
|
|
|
.. versionadded:: 1.0
|
|
...
|
|
|
|
|added|
|
|
Initial release version.
|
|
|
|
|
|
|
|
|
|
|