App «Jogo da Reciclagem»

Jogo da Reciclagem

A App “Jogo de Reciclagem” é um jogo interativo que desafia o utilizador a separar corretamente os diferentes tipos de resíduos, colocando-os nos contentores apropriados. Ao iniciar o jogo, ao utilizador são apresentados diferentes resíduos, que incluem papel, plástico, vidro, metal, pilhas e baterias, entre outros. Cada resíduo é acompanhado de uma imagem que ajuda a identificá-lo e é mostrado um conjunto contentores, com as cores apropriadas para a separação dos resíduos.

O objetivo do jogo é selecionar o contentor correto para cada tipo de resíduo apresentado, clicando no botão correspondente. O utilizador deve tentar fazer a separação correta o mais rapidamente possível. Se o utilizador selecionar o contentor errado, “perde” uma vida. O utilizador tem três vidas no início do jogo e deve tentar fazer a separação correta o maior número de vezes possível sem perder todas as vidas.

O jogo apresenta conjunto de 10, 20, 50 ou 100 perguntas. O utilizador pode desafiar os amigos, partilhando a sua pontuação nas redes sociais, permitindo desta forma a comparação de pontuações.

A App “Jogo de Reciclagem” é uma forma divertida e educativa de aprender a separar os diferentes tipos de resíduos e contribuir para a proteção do meio ambiente. Com um design intuitivo e gráficos coloridos e atrativos, é fácil de jogar e agradável para todas as idades.

Jogo em Google Play: https://play.google.com/store/apps/details?id=appinventor.ai_Super_Engenheiro.OndeColocarEsteResiduo

Pedómetro (App)

Implementação, muito simples, de um pedómetro com a ferramenta de desenvolvimento e programação por blocos MIT App Inventor.

Ecrã smartphone
Ecrã Designer (MIT App Inventor)
Blocos de programação do Pedómetro

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

Relés
Open-Collectors

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

«National Control Devices is an electronics manufacturer on the cutting edge of the IoT industry focusing on interfacing the analog world with digital electronics. NCD products unite the digital with the analog enabling you to monitor and control your environment.»

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

«São enviados dados a partir do raspberry para a placa de saída Open-Collectors via barramento I2C. O primeiro byte é o endereço definido para a placa. O segundo byte é a informação que define o estado de cada saída. O bit ‘0’ do segundo byte controla a saída O / C1. O valor ‘1’ do bit significa saída desativada e o valor ‘0’ significa saída ativada. »

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:

Esquema de blocos

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:

* «National Control Devices is an electronics manufacturer on the cutting edge of the IoT industry focusing on interfacing the analog world with digital electronics. NCD products unite the digital with the analog enabling you to monitor and control your environment.»

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.

OUTPI2
Raspberry PI com o módulo OUTPI2
Atenção: Verificar se a ligação em cada módulo/sensor está a ser efetuada sempre com os pinos/fios GND para o lado de fora, de acordo com a figura.

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/

MQ2:
https://store.ncd.io/product/mq-2-propane-butane-methane-alcohol-gas-sensor-adc121c-12-bit-adc-i2c-mini-module/

MQ5:
https://store.ncd.io/product/mq-5-lpg-lng-natural-gas-iso-butane-propane-gas-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:

foto do ecrã

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

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
Feito com a aplicação Fritzing: https://sourceforge.net/projects/fritzing-portable/

Fonte Python: