Adição de um relé e um transformador de corrente a uma tomada
A uma tomada tripla foi adicionado um relé Grove 3v3 (para controlo ON/OFF da tomada) e um transformador de corrente SCT010T-D 5A/5V (para monitorização da potência). Também foi acrescentado um indicador de néon e uma tomada RJ11 para conectar um cabo normal de telefone de 4 fios e desta forma prática, ligarmos-nos ao Raspberry. Para além da referência GND, o cabo de telefone transportará para a tomada/relé o comando ON/OFF dado pelo Raspberry. Por este cabo, a montagem com o Raspberry recebe o valor analógico de 0 a 5V fornecido pelo transformador de corrente existente na tomada. Antes do sinal chegar ao Raspberry, há um amplificador operacional OPA344 (rail-to-rail) a implementar a montagem “seguidor de tensão” ou “buffer” e um divisor de tensão (com a intenção de transpor o sinal de 0 a 5 V, vindo do transformador de corrente, para níveis de 0 a 3V3 – nível apropriado às entradas analógicas do ADS1115). Para evitar a utilização de um amplificador operacional+divisor de tensão pode-se ou deve-se optar por um transformador de corrente que ofereça à saída uma tensão analógica entre 0 e 3v3.
Testes a transformadores de corrente de núcleo dividido (SCT)
Testes realizados a transformadores de corrente de núcleo dividido compostos de conversor de corrente AC para tensão DC. Recorreu-se a um conversor analógico/digital ADS1115 (ncd.io) e um Raspberry, para “ler” a corrente indiretamente e assim calcular a potência. Um multímetro digital e um wattímetro digital foram usados como auxiliares a este teste.
Os transformadores em teste são os SCT010T-D 5A/5VDC, SCT010T-D 10A/5VDC, SCT010T-D 50A/5VDC e SCT013 20A/1V.
Saídas Digitais (Relés + Open-Collectors)
Este é mais um circuito com o Raspberry PI e alguns sensores e transdutores. Pretende-se testar saídas digitais (relés e open-collectors) e um conversor digital-analógico de 0 a 10 volts. O circuito ainda inclui um sensor de luz e outro de CO2, temperatura e humidade.
Esquema de blocos simplificado
Esquema de blocos mais pormenorizado
«Zoom» às ligações nas placas de saídas digitais
Endereços dos sensores e transdutores
Endereços pré-definidos ou configurados através de jumpers:
I2C – RL812s = 0x20
I2C – OC805s = 0x27
MCP4725 = 0x60
TSL2591 = 0x29
SCD30 = 0x61
Objectivo de cada sensor e transdutor:
i2c – RL812S: Relés (Saídas digitais)
i2c – OC805S: Open Collectors (Saídas digitais)
DAC 10V – MCP4725 (Conversor Digital-Analógico)
TSL2591: Sensor de luz
SCD30: Sensor de Temperatura, Humidade e CO2
Interface adaptadora para módulos NCD: OUTPI2
Saídas digitais: Relés
Saídas Digitais: Open-Collectors
«Each output is open collector that can support 500mA of load current and up to 50V.»
«…the VCC and GND of loads must be supplied into the boards via +V and GND terminals.»
Frame
Hiperligações úteis
TSL2591:
https://github.com/adafruit/Adafruit_CircuitPython_TSL2591
https://learn.adafruit.com/adafruit-tsl2591/python-circuitpython
SCD30:
https://github.com/Wappsto/IoT_RapidPrototyping/tree/master/co2
https://www.hackster.io/bfboyles/homemade-co2-sensor-unit-22a9d8
MCP4725:
https://store.ncd.io/product/1-channel-0-10v-dac-digital-analog-converter-i²c/
https://github.com/adafruit/Adafruit_CircuitPython_MCP4725
I2C OC PCF8574 / I2C-OC805S
https://www.ereshop.com/shop/index.php?main_page=product_info&products_id=806
I2C Relay 12V 1A PCF8574 / I2C-RL812S
https://www.ereshop.com/shop/index.php?main_page=product_info&products_id=790
Interface I2C / OUTPI2
https://store.ncd.io/product/i2c-shield-for-raspberry-pi-3-pi2-with-outward-facing-i2c-port/
Diversos:
http://wiki.seeedstudio.com/Seeed_Gas_Sensor_Selection_Guide/
https://learn.adafruit.com/i2c-addresses/the-list
https://github.com/ControlEverythingCommunity
https://store.ncd.io/
https://i2cdevices.org/ | https://i2cdevices.org/devices | https://i2cdevices.org/addresses
Bibliotecas
sudo pip3 install adafruit-circuitpython-tsl2591
sudo pip3 install adafruit-circuitpython-mcp4725
Código para testar sensores e transdutores
Sensores de gases
Pretende-se detetar diversos tipos de gases, luminosidade, temperatura e humidade. Para tal foi utilizado um Raspberry PI com diversos sensores, entre eles:
- MQ9: Mónoxido de carbono (CO), gás de carvão (Metano/CH4) e gás liquefeito (LPG);
- MQ5: LPG, gás natural, gás de cidade;
- MQ3: Vapor de álcool
- MQ2: LPG, butano, propano, metano, álcool, hidrogénio [gás combustível]
- CCS811: eCO2 e compostos orgânicos (TVOC)
- TSL2591: Luz
- SGP30: eCO2, TVOC
- SCD30: CO2, temperatura e humidade
O protocolo de comunicação utilizado entre sensores e o Raspberry PI é o I2C:
Os módulos sensores de gases da série MQx são módulos que integram um sensor e um conversor analógico-digital. Estes podem ser interligados facilmente, desde que se cumpra com a correta ligação física e desde que os endereços sejam corretamente selecionados de forma a evitar conflitos nas comunicações.
A representação genérica de cada sensor de gás MQx (módulo da NCD*) e a definição do endereço pode ser consultada aqui:
Os endereços dos módulos de gás MQx são configuráveis e para este circuito/montagem foram definidos os seguintes endereços:
MQ9 = 0x50
MQ5 = 0x52
MQ3 = 0x51
MQ2 = 0x54
Endereços pré-definidos nos restantes sensores:
CCS811 = 0x5a
TSL2591 = 0x29
SGP30 = 0x58
SCD30 = 0x61
Os módulos da NCD interligam-se ao barramento do Raspberry PI através do módulo OUTPI2, através de uma ficha apropriada e os restantes podem-se interligar ao barramento do modo habitual.
Hiperligações úteis
MQ9:
https://github.com/ControlEverythingCommunity/ADC121C_MQ9
https://shop.controleverything.com/products/carbon-monoxide-combustible-gas-sensor
https://store.ncd.io/product/mq-9-carbon-monoxide-combustible-gas-sensor-adc121c-12-bit-adc-i2c-mini-module/
MQ3:
https://github.com/ControlEverythingCommunity/ADC121C_MQ3
https://store.ncd.io/product/mq-3-alcohol-sensor-adc121c-12-bit-adc-i2c-mini-module/
CCS811:
https://learn.adafruit.com/adafruit-ccs811-air-quality-sensor/python-circuitpython
TSL2591:
https://github.com/adafruit/Adafruit_CircuitPython_TSL2591
https://learn.adafruit.com/adafruit-tsl2591/python-circuitpython
SGP30:
https://learn.adafruit.com/adafruit-sgp30-gas-tvoc-eco2-mox-sensor
https://learn.adafruit.com/adafruit-sgp30-gas-tvoc-eco2-mox-sensor/circuitpython-wiring-test
https://github.com/adafruit/Adafruit_CircuitPython_SGP30
SCD30:
https://github.com/Wappsto/IoT_RapidPrototyping/tree/master/co2
https://www.hackster.io/bfboyles/homemade-co2-sensor-unit-22a9d8
Interface I2C:
https://store.ncd.io/product/i2c-shield-for-raspberry-pi-3-pi2-with-outward-facing-i2c-port/
Diversos:
http://wiki.seeedstudio.com/Seeed_Gas_Sensor_Selection_Guide/
https://learn.adafruit.com/i2c-addresses/the-list
https://github.com/ControlEverythingCommunity
https://store.ncd.io/
https://i2cdevices.org/
Bibliotecas a instalar
sudo pip3 install adafruit-circuitpython-ccs811
sudo pip3 install adafruit-circuitpython-tsl2591
sudo pip3 install adafruit-circuitpython-sgp30
Código fonte do programa teste, para todos os sensores
Eis os resultados que podemos obter na sequência da execução do programa de teste:
Raspberry PI + SCD30 + TSL2561
Monitorizar CO2, temperatura e humidade com um sensor SCD30 e a luminosidade com o TSL2561.
Bibliotecas a instalar e software exemplo de “acesso” ao sensor TSL2561:
$sudo pip3 install adafruit-circuitpython-tsl2561
Um programa exemplo para o sensor SCD30:
https://github.com/Wappsto/IoT_RapidPrototyping.git
Pode ser feito o download deste modo:
$sudo git clone https://github.com/Wappsto/IoT_RapidPrototyping.git
Programa teste resultante da combinação e integração dos exemplos atrás referidos e disponibilizados: download do programa teste dos sensores SCD30 e TSL2561 e script auxiliar optional.
O circuito:
Raspberry PI + TSL2561 + BME280
Download do Sistema Operativo Raspbian
- Download imagem: https://downloads.raspberrypi.org/raspbian_latest
- Descompactar
Copiar imagem do S.O. para micro-sd (com win32diskimager)
Ativar i2c
- $sudo raspi-config
- Ativar protocolo i2c: Interfacing Options –> I2C
Atualizar versão atual ou/e para nova versão
- $sudo apt-get update && sudo apt-get upgrade
Instalar bibliotecas relativas ao sensor TSL2561 e BME280
- $sudo pip3 install adafruit-circuitpython-tsl2561
- $sudo pip3 install adafruit-circuitpython-bme280
Fonte Python: