Raspberry Pi Zero W e turbina eólica: geração de energia limpa monitorada pela Internet 3

A energia limpa e renovável, ou seja, geração de energia (elétrica ou calor) mediante fontes de energia provenientes da natureza (como luz solar, vento, fluxo d’água, movimento de marés, etc.) não produzindo poluentes como sub-produto, é uma das principais alternativas referentes ao futuro da geração de energia. Isso é interessante para todo mundo, afinal teremos nossa demanda de energia atendida e com menores danos à natureza. Apesar disso parecer realidade em um futuro distante, sabia que você já pode gerar um pouco de energia elétrica a partir do vento e monitorar esta energia elétrica gerada pela Internet, de qualquer lugar do mundo? É justamente disso que este post se trata: geração de energia monitorada pela Internet, utilizando uma turbina eólica para geração da energia e uma Raspberry Pi Zero W para monitorar o a geração de energia e disponibilizar estas informações por Internet.

Material necessário

Para fazer o projeto de geração de energia monitora pela internet, você precisará de:

OBS: Para saber como instalar o Raspbian na sua placa, basta acessar o post Primeiros passos com Raspberry Pi e Linux.

Geração de energia monitorada pela Internet: Turbina eólica

Antes de mais nada, recomendo fortemente a leitura do post “Como fazer um anemômetro monitorado por Internet“, onde é explicado, dentre outras coisas, o funcionamento da mini turbina eólica e o porque ela gera energia elétrica.
Em resumo, a geração de energia elétrica com uma turbina eólica pode ser vista na figura 1/ gif animado abaixo.

Figura 1 - geração de energia com turbina eólica
Figura 1 – geração de energia com turbina eólica

Na figura 1, nota-se claramente que, ao passo que as pás da turbina eólica giram (mediante incidência de vento), o LED ligado aos terminais da turbina eólica brilha. Isso significa que a turbina eólica converte energia mecânica (proveniente do movimento das pás, provocado pelo vento) em energia elétrica, sendo portanto uma fonte de energia a partir do vento. No caso de se aproveitar o próprio vento de um ambiente/local para geração de energia elétrica, pode-se dizer que houve geração de energia elétrica de forma limpa, ou seja, sem sub-produtos nocivos à natureza. Ainda, pelo fato do vento ser “renovável” (afinal, a natureza se encarrega de produzir vento/brisa), pode-se dizer que foi utilizada energia renovável. Muito ecologicamente correto, não?

Medição da energia elétrica gerada com a turbina eólica

Agora que vimos que a geração de energia elétrica a partir do vento em uma mini turbina eólica é possível, o próximo passo é fazer medições da mesma. Dessa forma, conseguiremos determinar quanto de energia eólica somos capazes de gerar e, além disso, o que podemos alimentar com a mesma. Para isso, utilizaremos o sensor de Corrente DC INA219 I2C. Este módulo torna possível medir:

  • Tensão elétrica gerada
  • Corrente elétrica consumida por uma carga
  • Potência consumida pela carga

Para mais detalhes do INA219, recomendo a leitura do post Medindo corrente e tensão com o módulo INA219. Com estas informações, é possível ainda contabilizar quanto foi a energia elétrica total consumida pela carga (e, consequentemente, gerada pela turbina), através da fórmula da figura 2.

Figura 2 - fórmula para cálculo de energia elétrica gerada (e consumida)
Figura 2 – fórmula para cálculo de energia elétrica gerada (e consumida)

Onde:

  • Potencia: potência medida pelo INA219, em Watts
  • Delta tempo (delta TempoConsumoEnergia): quantidade de tempo, em horas, em que houve consumo de potência pela carga

No caso, se medirmos de um em um segundo, teremos que a energia consumida (e por consequência, gerada) é igual a potência consumida medida no período. Contabilizando esta energia ao longo do tempo, significa dizer o quanto de energia elétrica limpa foi consumida!

Bibliotecas necessárias 

A biblioteca necessária para utilizar o INA219 na Raspberry PI Zero W pode ser instalada com os comando abaixo:

sudo pip install pi-ina219

Além disso, para utilizar o MQTT (protocolo pelo qual irão ser enviadas as informações de energia consumida, tensão gerada e corrente consumida), é preciso utilizar a biblioteca Paho MQTT para Python. Para instalá-la, utilize os comandos abaixo:

git clone https://github.com/eclipse/paho.mqtt.python
cd paho.mqtt.python
python setup.py install

Geração de energia monitorada pela Internet: Circuito esquemático

O circuito esquemático do projeto pode ser visto abaixo.

 

Figura 3 - circuito esquemático
Figura 3 – circuito esquemático

Com o circuito montado, o último passo é enviar o código-fonte para a sua placa.

Código-fonte

O código-fonte do projeto está abaixo. Salve-o como energia_eolica.py na sua Raspberry PI Zero W.
Observe que as informações são enviadas todas juntas de forma mais textual / verbosa no tópico MQTTEnergiaLimpaVerbose e também de forma individualizada em outros quatro tópicos: MQTTTensaoGerada (tensão elétrica gerada), MQTTCorrenteConsumida (corrente elétrica consumida pela carga, MQTTPotenciaConsumida (potência elétrica consumida pela carga) e MQTTEnergiaConsumida (energia elétrica consumida). Estes quatro tópicos para envios individuais dos valores foram criados para permitir integração com dashboards MQTT, como por exemplo o MQTT DASH.

from ina219 import INA219
from ina219 import DeviceRangeError
import paho.mqtt.client as mqtt
import sys
import time

#definicoes:
Broker = "iot.eclipse.org"
PortaBroker = 1883
KeepAliveBroker = 5 #segundos
TopicoPublishVerbose  = "MQTTEnergiaLimpaVerbose" #Troque o nome do topico por algo "unico" e diferente dos outros topicos deste programa!
TopicoPublishTensao   = "MQTTTensaoGerada"        #Troque o nome do topico por algo "unico" e diferente dos outros topicos deste programa!
TopicoPublishCorrente = "MQTTCorrenteConsumida"   #Troque o nome do topico por algo "unico" e diferente dos outros topicos deste programa!
TopicoPublishPotencia = "MQTTPotenciaConsumida"   #Troque o nome do topico por algo "unico" e diferente dos outros topicos deste programa!
TopicoPublishEnergia  = "MQTTEnergiaConsumida"    #Troque o nome do topico por algo "unico" e diferente dos outros topicos deste programa!

#definicoes do INA219
SHUNT_OHMS = 0.1
energia = 0

#Callback - conexao ao broker realizada
def on_connect(client, userdata, flags, rc):
    print("[STATUS] Conectado ao Broker. Resultado de conexao: "+str(rc))

    #faz subscribe automatico no topico
    client.subscribe(TopicoSubscribe)
    return

#programa principal:
print("[STATUS] Inicializando MQTT...")

#inicializa e conecta MQTT:
client = mqtt.Client()
client.on_connect = on_connect
client.connect(Broker, PortaBroker, KeepAliveBroker)

#incializa INA219
ina = INA219(SHUNT_OHMS)
ina.configure()

msg_counter = 0

while (True):
    try:
        tensao = ina.voltage()    #V
        if (tensao < 0):
            tensao=0

        corrente = ina.current()/1000  #A
        if (corrente < 0):
            corrente = 0

        potencia = ina.power()/1000    #W
        if (potencia <0):
            potencia = 0

        energia = energia + potencia #energia consumida em 1 segundo

        str_verbose = "%d Tensao: %.2f V, Corrente: %.4f A, Potencia: %.4f W, Energia consumida: %.4f Wh" % (msg_counter, tensao, corrente, potencia, energia)
        str_tensao = "%.2f V" % tensao
        str_corrente = "%.4f A" % corrente
        str_potencia = "%.4f W" % potencia
        str_energia = "%.4f Wh" % energia

        print str_verbose

        #faz o envio por MQTT
        client.publish(TopicoPublishVerbose,str_verbose)
        client.publish(TopicoPublishTensao,str_tensao)
        client.publish(TopicoPublishCorrente,str_corrente)
        client.publish(TopicoPublishPotencia,str_potencia)
        client.publish(TopicoPublishEnergia,str_energia)

        msg_counter = msg_counter + 1
        client.loop()

        #aguarda 1 segundo ate as proximas medicoes
        time.sleep(1)
    except KeyboardInterrupt:
        sys.exit(0)
    except DeviceRangeError as e:
        print "Erro na medicao: "
        print e

Para rodar o projeto, utilize o comando abaixo:

sudo python energia_eolica.py

Agora basta utilizar um cliente MQTT de sua escolha e monitorar as medições! Um exemplo de cliente MQTT é o MQTTLens, mostrado no tópico “Teste do broker MQTT com Raspberry Pi” do artigo “Broker MQTT com Raspberry PI Zero W
Um exemplo de dashboard MQTT utilizando o MQTT DASH pode ser visto na figura 4.

Figura 4 - dashboard MQTT do projeto feito com o MQTT DASH
Figura 4 – dashboard MQTT do projeto feito com o MQTT DASH

Gostou deste post sobre geração de energia limpa monitorada pela Internet? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

3 Comentários

  1. Posso usar como base para um projeto integrador do curso técnico ?

  2. Você fez para o aeolico, funciona para a solar e em vez de usar a zero, usar a plaquinha comum?

    EDILSON DA SILVA OLIVEIRA