

Aviso de fim do suporte: em 7 de outubro de 2026, AWS o suporte para o. AWS IoT Greengrass Version 1 Depois de 7 de outubro de 2026, você não poderá mais acessar os AWS IoT Greengrass V1 recursos. Para obter mais informações, visite [Migrar de AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conector Raspberry Pi GPIO
<a name="raspberrypi-gpio-connector"></a>

**Atenção**  <a name="connectors-extended-life-phase-warning"></a>
Esse conector passou para a * fase de vida útil estendida* e AWS IoT Greengrass não lançará atualizações que forneçam atributos, aprimoramentos para atributos existentes, patches de segurança ou correções de erros. Para obter mais informações, consulte [AWS IoT Greengrass Version 1 política de manutenção](maintenance-policy.md).

O [conector](connectors.md) Raspberry Pi GPIO controla os pinos de uso geral input/output (GPIO) em um dispositivo principal Raspberry Pi.

Esse conector consulta pins de entrada em um intervalo especificado e publica alterações de estado em tópicos MQTT. Ele também aceita solicitações de leitura e gravação como mensagens MQTT de funções do Lambda definidas pelo usuário. As solicitações de gravação são usadas para definir o pin de alta ou baixa tensão.

O conector fornece parâmetros que você usa para designar pins de entrada e saída. Esse comportamento é configurado antes da implantação do grupo. Ele não pode ser alterado em tempo de execução.
+ Pins de entrada podem ser usados para receber dados de dispositivos periféricos.
+ Pins de entrada podem ser usados para controlar periféricos ou enviar dados para periféricos.

Você pode usar esse conector em muitos cenários, como:
+ Controlar luzes LED verde, amarela e vermelha para um semáforo.
+ Controlar um ventilador (anexado a uma retransmissão elétrica) com base nos dados de um sensor de umidade.
+ Avisar funcionários de uma loja quando os clientes pressionarem um botão.
+ Usar um interruptor inteligente para controlar outros dispositivos da IoT.

**nota**  
Esse conector não é adequado para aplicativos que têm requisitos em tempo real. Eventos de curta duração podem ser perdidos.

Esse conector tem as seguintes versões.


| Versão | ARN | 
| --- | --- | 
| 3 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/3` | 
| 2 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/2` | 
| 1 | `arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/1` | 

Para obter informações sobre alterações de versão, consulte o [Changelog](#raspberrypi-gpio-connector-changelog).

## Requisitos
<a name="raspberrypi-gpio-connector-req"></a>

Esse conector tem os seguintes requisitos:

------
#### [ Version 3 ]
+ <a name="conn-req-ggc-v1.9.3"></a>AWS IoT Greengrass Software principal v1.9.3 ou posterior.
+ [Python](https://www.python.org/) versão 3.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 Modelo B ou Raspberry Pi 3 Modelo B/B\$1. Você deve saber a sequência de pin do seu Raspberry Pi. Para obter mais informações, consulte [Sequência de pin GPIO](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Um [recurso do dispositivo local](access-local-resources.md) no grupo do Greengrass que aponta para `/dev/gpiomem` no Raspberry Pi. Se você criar o recurso no console, deverá selecionar a opção **Adicionar automaticamente permissões de grupo de SO do grupo Linux que possui o recurso**. Na API, defina a propriedade `GroupOwnerSetting.AutoAddGroupOwner` como `true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>O módulo [RPi.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/) instalado no Raspberry Pi. No Raspbian, esse módulo é instalado por padrão. Você pode usar o comando a seguir para instalá-lo novamente:

  ```
  sudo pip install RPi.GPIO
  ```

------
#### [ Versions 1 - 2 ]
+ <a name="conn-req-ggc-v1.7.0"></a>AWS IoT Greengrass Software principal v1.7 ou posterior.
+ [Python](https://www.python.org/) versão 2.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
+ <a name="conn-gpio-req-pin-seq"></a>Raspberry Pi 4 Modelo B ou Raspberry Pi 3 Modelo B/B\$1. Você deve saber a sequência de pin do seu Raspberry Pi. Para obter mais informações, consulte [Sequência de pin GPIO](#raspberrypi-gpio-connector-req-pins).
+ <a name="conn-gpio-req-dev-gpiomem-resource"></a>Um [recurso do dispositivo local](access-local-resources.md) no grupo do Greengrass que aponta para `/dev/gpiomem` no Raspberry Pi. Se você criar o recurso no console, deverá selecionar a opção **Adicionar automaticamente permissões de grupo de SO do grupo Linux que possui o recurso**. Na API, defina a propriedade `GroupOwnerSetting.AutoAddGroupOwner` como `true`.
+ <a name="conn-gpio-req-rpi-gpio"></a>O módulo [RPi.GPIO](https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/) instalado no Raspberry Pi. No Raspbian, esse módulo é instalado por padrão. Você pode usar o comando a seguir para instalá-lo novamente:

  ```
  sudo pip install RPi.GPIO
  ```

------

### Sequência de pin GPIO
<a name="raspberrypi-gpio-connector-req-pins"></a>

O conector GPIO do Raspberry Pi faz referência aos pins GPIO pelo esquema de numeração do System on Chip (SoC) subjacente, não pelo layout físico dos pins GPIO. A ordem física dos pins pode variar nas versões do Raspberry Pi. Para obter mais informações, consulte [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) na documentação do Raspberry Pi.

O conector não pode validar que os pins de entrada e saída que você configura mapeiem corretamente ao hardware subjacente do seu Raspberry Pi. Se a configuração do pin for inválida, o conector retornará um erro de tempo de execução ao tentar iniciar no dispositivo. Para resolver esse problema, reconfigure o conector e reimplante.

**nota**  
Certifique-se de que periféricos para pins GPIO estejam corretamente cabeados para evitar danos de componente.

## Parâmetros do conector
<a name="raspberrypi-gpio-connector-param"></a>

Esse conector oferece os seguintes parâmetros:

`InputGpios`  
Uma lista separada por vírgulas de números de pins GPIO para configurar como entradas. Opcionalmente, acrescente `U` para definir um resistor de pin ou `D` para definir a resistência suspensa. Exemplo: `"5,6U,7D"`.  
Nome de exibição no AWS IoT console: pinos **GPIO de entrada**  
Obrigatório:`false`. Você deve especificar pins de entrada, de saída ou ambos.  
Digite: `string`  
Padrão válido: `^$|^[0-9]+[UD]?(,[0-9]+[UD]?)*$`

`InputPollPeriod`  
O intervalo (em milissegundos) entre cada operação de sondagem, que verifica pins GPIO de entrada para alterações de estado. O valor mínimo é 1.  
Esse valor depende do cenário e do tipo de dispositivos consultados. Por exemplo, o valor `50` deve ser suficientemente rápido para detectar o ato de pressionar um botão.  
Nome de exibição no AWS IoT console: **Insira o período de pesquisa do GPIO**  
Obrigatório: `false`  
Digite: `string`  
Padrão válido: `^$|^[1-9][0-9]*$`

`OutputGpios`  
Uma lista separada por vírgulas de números de pins GPIO para configurar como saídas. Opcionalmente, anexe `H` para definir um estado superior (1), ou `L` para definir um estado inferior (0). Exemplo: `"8H,9,27L"`.  
Nome de exibição no AWS IoT console: pinos **GPIO de saída**  
Obrigatório:`false`. Você deve especificar pins de entrada, de saída ou ambos.  
Digite: `string`  
Padrão válido: `^$|^[0-9]+[HL]?(,[0-9]+[HL]?)*$`

`GpioMem-ResourceId`  
O ID do recurso do dispositivo local que representa `/dev/gpiomem`.  
Esse conector recebe acesso de leitura e gravação ao recurso.
Nome de exibição no AWS IoT console: **Recurso para o dispositivo /dev/gpiomem**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `.+`

### Exemplo de criação de conector (AWS CLI)
<a name="raspberrypi-gpio-connector-create"></a>

O seguinte comando da CLI cria um `ConnectorDefinition` com uma versão inicial que contém o conector GPIO do Raspberry Pi.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyRaspberryPiGPIOConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/RaspberryPiGPIO/versions/3",
            "Parameters": {
                "GpioMem-ResourceId": "my-gpio-resource",
                "InputGpios": "5,6U,7D",
                "InputPollPeriod": 50,
                "OutputGpios": "8H,9,27L"
            }
        }
    ]
}'
```

**nota**  
A função do Lambda nesse conector tem um ciclo de vida [longo](lambda-functions.md#lambda-lifecycle).

No AWS IoT Greengrass console, você pode adicionar um conector na página **Conectores** do grupo. Para obter mais informações, consulte [Conceitos básicos de conectores do Greengrass (console)](connectors-console.md).

## Dados de entrada
<a name="raspberrypi-gpio-connector-data-input"></a>

Esse conector aceita solicitações de leitura ou gravação para pins GPIO em dois tópicos MQTT.
+ Solicitações de leitura no tópico `gpio/+/+/read`.
+ Solicitações de gravação no tópico `gpio/+/+/write`.

Para publicar esses tópicos, substitua os curingas `+` pelo nome da coisa principal e pelo número do pin de destino, respectivamente. Por exemplo:

```
gpio/core-thing-name/gpio-number/read
```

**nota**  
Atualmente, quando você cria uma assinatura que usa o conector GPIO do Raspberry Pi, deve especificar um valor para pelo menos um dos curingas \$1 no tópico.

**Filtro de tópico:** `gpio/+/+/read`  
Use esse tópico para orientar o conector para ler o estado do pin GPIO que é especificado no tópico.  
O conector publica a resposta no tópico de saída correspondente (por exemplo, `gpio/core-thing-name/gpio-number/state`).    
**Propriedades de mensagens**  
Nenhum. As mensagens enviadas a esse tópico são ignoradas.

**Filtro de tópico:** `gpio/+/+/write`  
Use esse tópico para enviar solicitações de gravação para um pin GPIO. Isso orienta o conector a definir o pin GPIO que é especificado no tópico como de baixa ou alta tensão.  
+ `0` define o pin como baixa tensão.
+ `1` define o pin como de alta tensão.
O conector publica a resposta no tópico `/state` de saída correspondente (por exemplo, `gpio/core-thing-name/gpio-number/state`).    
**Propriedades de mensagens**  
O valor `0` ou `1`, como número inteiro ou string.  
**Exemplo de entrada**  

```
0
```

## Dados de saída
<a name="raspberrypi-gpio-connector-data-output"></a>

Esse conector publica dados em dois tópicos:
+ O estado superior ou inferior é alterado no tópico `gpio/+/+/state`.
+ Erros no tópico `gpio/+/error`.

**Filtro de tópico:** `gpio/+/+/state`  
Use esse tópico para ouvir alterações de estado nos pins de entrada e nas respostas às solicitações de leitura. O conector retornará a string `"0"` se o pin estiver em estado inferior ou `"1"` se estiver em estado superior.  
Ao publicar nesse tópico, o conector substitui os curingas `+` pelo nome da coisa principal e pelo pin de destino, respectivamente. Por exemplo:  

```
gpio/core-thing-name/gpio-number/state
```
Atualmente, quando você cria uma assinatura que usa o conector GPIO do Raspberry Pi, deve especificar um valor para pelo menos um dos curingas \$1 no tópico.  
**Exemplo de saída**  

```
0
```

**Filtro de tópico:** `gpio/+/error`  
Use esse tópico para ouvir erros. O conector publica nesse tópico como resultado de uma solicitação inválida (por exemplo, quando uma alteração de estado é solicitada em um pin de entrada).  
Ao publicar nesse tópico, o conector substitui o curinga `+` pelo nome da coisa principal.    
**Exemplo de saída**  

```
{
   "topic": "gpio/my-core-thing/22/write",
   "error": "Invalid GPIO operation",
   "long_description": "GPIO 22 is configured as an INPUT GPIO. Write operations are not permitted."
 }
```

## Exemplo de uso
<a name="raspberrypi-gpio-connector-usage"></a>

<a name="connectors-setup-intro"></a>Use as seguintes etapas de alto nível para configurar um exemplo de função do Lambda Python 3.7 que pode ser usado para testar o conector.

**nota**  <a name="connectors-setup-get-started-topics"></a>
Se você usar outros runtimes do Python, poderá criar um symblink do Python3.x para o Python 3.7.
Os tópicos [Conceitos básicos de conectores (console)](connectors-console.md) e [Conceitos básicos de conectores (CLI)](connectors-cli.md) contêm etapas detalhadas que mostram como configurar e implantar um exemplo do conector de notificações do Twilio.

1. Certifique-se de cumprir os [requisitos](#raspberrypi-gpio-connector-req) para o conector.

1. <a name="connectors-setup-function"></a>Crie e publique uma função do Lambda que envie dados de entrada para o conector.

   Salve o [código de exemplo](#raspberrypi-gpio-connector-usage-example) como arquivo PY. <a name="connectors-setup-function-sdk"></a>Baixe e descompacte o [SDK do AWS IoT Greengrass Core para Python](lambda-functions.md#lambda-sdks-core). Crie então um pacote zip que contenha o arquivo PY e a pasta `greengrasssdk` no nível raiz. Este pacote zip é o pacote de implantação que você transfere por upload para o AWS Lambda.

   <a name="connectors-setup-function-publish"></a>Depois de criar a função do Lambda Python 3.7, publique uma versão de função e crie um alias.

1. Configure o grupo do Greengrass.

   1. <a name="connectors-setup-gg-function"></a>Adicione a função do Lambda pelo seu alias (recomendado). Configure o ciclo de vida do Lambda como de longa duração (ou `"Pinned": true` na CLI).

   1. <a name="connectors-setup-device-resource"></a>Adicione o recurso de dispositivo local necessário e conceda read/write acesso à função Lambda.

   1. Adicione o conector e configure seus [parâmetros](#raspberrypi-gpio-connector-param).

   1. Adicione assinaturas que permitam que o conector receba [dados de entrada](#raspberrypi-gpio-connector-data-input) e envie [dados de saída](#raspberrypi-gpio-connector-data-output) em filtros de tópico compatíveis.
      + <a name="connectors-setup-subscription-input-data"></a>Defina a função do Lambda como origem, o conector como destino e use um filtro de tópico de entrada compatível.
      + <a name="connectors-setup-subscription-output-data"></a>Defina o conector como origem, o AWS IoT Core como destino, e use um filtro de tópico de saída compatível. Você usa essa assinatura para visualizar mensagens de status no AWS IoT console.

1. <a name="connectors-setup-deploy-group"></a>Implante o grupo.

1. <a name="connectors-setup-test-sub"></a>No AWS IoT console, na página **Teste**, inscreva-se no tópico de dados de saída para ver as mensagens de status do conector. A função de exemplo do Lambda é de longa duração e começa a enviar mensagens imediatamente após o grupo ser implantado.

   Ao finalizar o teste, você pode definir o ciclo de vida do Lambda como sob demanda (ou `"Pinned": false` na CLI) e implantar o grupo. Isso impede o envio de mensagens pela função.

### Exemplo
<a name="raspberrypi-gpio-connector-usage-example"></a>

O exemplo a seguir da função do Lambda envia uma mensagem de entrada para o conector. Este exemplo envia solicitações de leitura para um conjunto de pins GPIO de entrada. Ele mostra como construir tópicos usando o nome e o número do pin da coisa principal.

```
import greengrasssdk
import json
import os

iot_client = greengrasssdk.client('iot-data')
INPUT_GPIOS = [6, 17, 22]

thingName = os.environ['AWS_IOT_THING_NAME']

def get_read_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'read'])

def get_write_topic(gpio_num):
    return '/'.join(['gpio', thingName, str(gpio_num), 'write'])

def send_message_to_connector(topic, message=''):
    iot_client.publish(topic=topic, payload=str(message))

def set_gpio_state(gpio, state):
    send_message_to_connector(get_write_topic(gpio), str(state))

def read_gpio_state(gpio):
    send_message_to_connector(get_read_topic(gpio))

def publish_basic_message():
    for i in INPUT_GPIOS:
    	read_gpio_state(i)

publish_basic_message()

def lambda_handler(event, context):
    return
```

## Licenças
<a name="raspberrypi-gpio-connector-license"></a>

O conector GPIO do Raspberry Pi inclui o seguinte licenciamento/software de terceiros:
+ [RPi.GPIO /MIT](https://pypi.org/project/RPi.GPIO/)

Esse conector é liberado de acordo com o [Contrato de licença de software do Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="raspberrypi-gpio-connector-changelog"></a>

A tabela a seguir descreve as alterações em cada versão do conector.


| Versão | Alterações | 
| --- | --- | 
| 3 | <a name="upgrade-runtime-py3.7"></a>Atualização do runtime do Lambda para Python 3.7, o que altera o requisito de runtime. | 
| 2 | ARN do conector atualizado para Região da AWS suporte. | 
| 1 | Versão inicial.  | 

<a name="one-conn-version"></a>Um grupo do Greengrass só pode conter uma versão do conector por vez. Para obter informações sobre como fazer upgrade de uma versão do conector, consulte [Atualizar a versões do conector](connectors.md#upgrade-connector-versions).

## Consulte também
<a name="raspberrypi-gpio-connector-see-also"></a>
+ [Integrar a serviços e protocolos usando conectores do Greengrass](connectors.md)
+ [Conceitos básicos de conectores do Greengrass (console)](connectors-console.md)
+ [Conceitos básicos de conectores do Greengrass (CLI)](connectors-cli.md)
+ [GPIO](https://www.raspberrypi.org/documentation/usage/gpio/) na documentação do Raspberry Pi