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

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.

Faça seu comentário

Acesse sua conta e participe

4 Comentários

  1. Pedro , gostei.
    Como fazer o controle de velocidade de uma mini turbina eólica, tipo, 3 kW de potência, para evitar disparo em altas rotações sem controle- vendavais; controle o fluxo de água em turbinas hidráulicas, que abrem e fecham as pás diretrizes através de atuadores e mantem a rotação constante da turbina e do motor; neste caso seria uma frenagem após determinada rotação, se não arrebenta toda estrutura.
    Cid,

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

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