Normalmente os agregados familiares têm ligações eléctricas pós-pagas. Do lado do consumidor, as conexões pós-pagas têm a desvantagem de que o consumo de energia elétrica não é monitorado pelos consumidores e muitas vezes eles ficam chocados quando recebem contas altas. A causa de contas altas geralmente não são as altas tarifas de eletricidade, mas o uso excessivo inconsciente de eletricidade. As ligações eléctricas pré-pagas são normalmente sugeridas como a solução viável para este problema. Numa ligação eléctrica pré-paga, o consumidor necessitaria de recarregar a quantidade de electricidade que pretende consumir. Num tal sistema, os contadores de electricidade domésticos precisam de ser equipados com um sistema que possa ser reconhecido pela quantidade recarregada pelo consumidor e possa contar o consumo de electricidade desde a quantidade recarregada até zero. Quando o medidor chegar a zero, a alimentação principal será automaticamente cortada e poderá ser reiniciada somente após a próxima recarga.
Fig. 1: Protótipo de estação de recarga de eletricidade pré-paga baseada em Arduino
A estação de recarga também enviará uma mensagem de confirmação para o número de celular cadastrado do consumidor a cada recarga. A estação de recarga e o medidor de energia pré-pago são mostrados conectados entre si via módulo RF no projeto para que o medidor de energia pré-pago possa enviar um alerta de valor de recarga esgotado para a estação de recarga e a estação de recarga possa enviar um SMS ao consumidor para fazer uma recarga logo novamente. Portanto, do ponto de vista do hardware, este sistema elétrico pré-pago consiste nos seguintes dispositivos –
1) Estação de recarga de eletricidade – Um dispositivo embarcado que pode gravar informações de recarga em um sistema de memória. Para simplificar, o sistema de memória utilizado é um chip de memória. Uma versão comercial do sistema realizado aqui pode ter cartões inteligentes para facilitar as recargas de energia elétrica. A estação de recarga também utiliza um módulo GSM/GPRS para enviar uma mensagem de confirmação a cada recarga bem-sucedida e está conectada ao medidor de energia pré-pago via módulo RF para receber alerta sobre o valor de recarga esgotado e a estação pode enviar um SMS para recarregar em breve. Uma versão comercial do sistema pode ter estação de recarga e medidor de energia pré-pago conectados via internet. Infelizmente, atualmente a Internet não está disponível em todos os lugares nem é gratuito fornecer tal recurso em um avatar comercial de tal sistema.
2) Dispositivo inteligente para armazenar a quantidade de recarga – O projeto utiliza um cartão de memória para demonstrar o funcionamento de um dispositivo de recarga inteligente. Uma versão comercial do sistema pode ter cartões inteligentes.
3) Medidor de energia pré-pago – Um dispositivo incorporado que pode ser integrado a medidores domésticos comuns para ler a quantidade de recarga e rastrear o consumo de energia em ordem decrescente até chegar a zero. O dispositivo é capaz de cortar as fontes principais regulando as fontes principais através de um circuito de relé.
No projeto, a estação de recarga de eletricidade é construída no Arduino UNO e o medidor de energia pré-pago é construído em torno do Arduino Mega. O cartão de memória utilizado como alternativa ao cartão de recarga inteligente é o AT2402. O AT2402 é um cartão de memória de 2Kb que se conecta a qualquer microcontrolador na interface I2C. O Arduino IDE é usado para escrever os esboços do Arduino para a estação de recarga e medidor de energia pré-pago e o AVR Dude é utilizado para gravar códigos de programa nas placas do microcontrolador.
Componentes necessários –
Para construir uma estação de recarga, serão necessários os seguintes componentes –
• Arduino UNO
• Módulo GSM
•HT12D
• Módulo RF de 433 KHz
• Teclado de 4 interruptores
• LCD
• Reguladores de tensão 7805/7812.
• Transformador 12-0,2Amp
• Resistores de 1K ohm
• Resistor de 47K ohms
• Diodo IN4007
• 4700uF, capacitor de 25V
• Fio elétrico
• Plugue de dois pinos
O cartão de memória AT2402 é usado como dispositivo de recarga inteligente. Para construir medidores de energia pré-pagos, serão necessários os seguintes componentes –
• Arduino Mega
• LCD
• Codificador – HT12E
• Módulo RF de 433 KHz
• Medidor de energia de 3.200 imp/kwh
• Comparador LM358
• LIDERADO
• Relé 12v
• Transistor BC547
• Diodo IN4007
• Resistores de 1k ohm
• Resistor de 1M ohm
• Carregar para testar
• Bloco terminal
• Fio elétrico
• Plugue de dois pinos
Diagrama de bloco
Fig. 2: Diagrama de blocos da estação de recarga de eletricidade pré-paga baseada em Arduino
Conexões de Circuito
Estação de recarga
A estação de recarga é construída no Arduino UNO. Possui display LCD e teclado de 4 interruptores para interação humana. O cartão de memória que armazena as informações de recarga pode ser conectado à placa Arduino através do protocolo I2C implementado nos pinos A4 e A5 do Arduino. A placa é conectada a um módulo GSM para envio de SMS de confirmação de recargas bem-sucedidas e mensagens de alerta para próxima recarga. A placa tem interface com o circuito receptor de RF para que possa se conectar ao medidor de energia pré-pago e detectar baixo balanço de energia. O circuito que funciona como estação de recarga possui diferentes componentes e módulos conectados à placa Arduino da seguinte maneira –
Display LCD 16X2 – O display LCD é usado para fornecer uma interface para interação humana e exibe mensagens orientando o usuário para recarregar o uso de eletricidade. Ele é conectado à placa Arduino conectando seus pinos de dados aos pinos 3 a 6 da placa Arduino. Os pinos RS e E do LCD estão conectados aos pinos 13 e 12 do Arduino UNO respectivamente. O pino RW do LCD está aterrado.
Fig. 3: Tabela listando conexões de circuito entre Arduino Uno e Character LCD
A biblioteca padrão de código aberto para interface do LCD com o Arduino UNO é usada no projeto. A biblioteca funciona conforme o esperado e não precisa de alterações ou modificações.
Teclado de 4 interruptores – Os interruptores táteis são usados para formar o teclado. Existem quatro interruptores no teclado que estão conectados aos seguintes pinos com determinadas funções atribuídas a eles –Fig. 4: Tabela listando os pinos do Arduino e suas funções na Estação de Recarga de Eletricidade Pré-paga
Os interruptores são conectados entre o terra e os pinos do Arduino. Os pinos do Arduino por padrão são conectados ao VCC e recebem lógica HIGH. Ao pressionar um botão tátil, o respectivo pino do Arduino entra em curto-circuito para chão e recebe uma lógica BAIXA.
Módulo GSM – O módulo GSM possui quatro pinos – Tx, Rx, Vcc e GRND. Os pinos Tx e Rx estão conectados aos pinos número 9 e 10 do Arduino UNO, respectivamente. Os pinos 9 e 10 são declarados como porta serial virtual no esboço do Arduino para comunicar dados com o módulo. Os pinos VCC e Terra do módulo são conectados ao pino 5V DC e GRND da placa Arduino UNO. Uma fonte de alimentação externa de 18V é usada para alimentar o módulo GSM.
Receptor RF – O receptor RF é utilizado para receber um alerta de baixo balanço energético dos medidores de energia pré-pagos. O módulo receptor RF possui 8 pinos e a seguinte configuração de pinos –
Fig. 5: Tabela listando a configuração dos pinos do receptor RF
A saída de dados serial do receptor RF é conectada ao pino 16 do IC decodificador HT12D.
IC decodificador HT12D – O sinal que transporta alerta de baixo equilíbrio de energia é detectado pelo receptor RF e passado para o decodificador HT12D. Ele converte os dados seriais de volta em dados paralelos após separar dados e endereços. O HT12D pertence à série 212 de decodificadores e pode ser emparelhado com a série 212 de codificadores com o mesmo número de endereços e formato de dados. O HT12D é capaz de decodificar 12 bits, dos quais 8 são bits de endereço e 4 são bits de dados. O byte de endereço do IC decodificador deve ser o mesmo do IC codificador para corresponder aos circuitos transmissor e receptor. No projeto, o byte de endereço dos módulos receptor e transmissor é definido como 0x00. Um resistor de 47 KΩ é conectado entre os pinos 14 e 15 do IC decodificador para corresponder à frequência de RF. O pino 17 é chamado de transmissão válida e possui um LED conectado a ele através de um resistor de 1 KΩ para indicar se o transmissor RF do Medidor de Energia Pré-Pago está pareado com o receptor ou não. Apenas o bit de dados D0 do decodificador é rastreado para detectar o sinal de alerta. O bit D0 do IC decodificador está conectado ao pino 7 do Arduino UNO.
EEPROM externa – AT24C02 é a EEPROM externa usada como dispositivo de recarga inteligente. O IC de 8 pinos tem a seguinte configuração de pinos –
Fig. 6: Tabela listando a configuração dos pinos da EEPROM externa AT24C02
Os pinos 5 e 6 do IC EEPROM se conectam aos pinos A4 e A5 do Arduino, onde A4 está configurado para SDA e A5 está configurado para SCL. Os pinos 1, 2 e 3 do IC EEPROM são conectados ao terra, pois a qualquer momento a estação de recarga terá apenas uma única EEPROM conectada. Os pinos são usados para endereçar EEPROMs individuais quando várias EEPROMs se conectam a um único microcontrolador ao mesmo tempo .
Fonte de alimentação – Um transformador abaixador é usado para converter 230 V CA em 18 V CA e, usando um retificador de ponte completa e um capacitor, ele é convertido para 18 V CC. Este 18V DC é convertido em 12V DC usando um regulador de tensão 7812 e é fornecido ao pino Vin da placa Arduino UNO. Os 18V DC são fornecidos ao módulo GSM. Todos os outros ICs e módulos são alimentados por 5V DC da placa Arduino.
Dispositivo de recarga inteligente
O IC EEPROM AT24C02 serve como dispositivo de recarga inteligente no projeto. Para simplificar, é utilizado como alternativa aos cartões inteligentes. O IC EEPROM armazena as informações de recarga e pode ser conectado à estação de recarga e ao medidor de energia pré-pago.
Medidor de energia pré-pago
O circuito desenvolvido deverá ser conectado entre as cargas e a saída neutra de um medidor de energia elétrica comum. Quando uma carga for ligada e começar a consumir eletricidade, a corrente também passará pelo medidor de energia pré-pago. O dispositivo terá um conjunto de circuito LDR para detectar o consumo de eletricidade, detectando o piscar do LED Imp / kWh no painel frontal do Medidor Eletrônico de Energia e acionará um circuito de relé para cortar o fornecimento da extremidade do fio neutro quando o saldo de uso de energia de recarga estiver esgotado . O dispositivo terá slot para conectar EEPROM para ler e diminuir o saldo de recarga e terá um display LCD para mostrar o saldo atual do uso de energia diminuindo com o consumo de energia. O dispositivo possui um circuito transmissor de RF para se conectar à estação de recarga para enviar o alerta de baixo saldo restante de uso. O circuito é construído no Arduino Mega e possui diferentes componentes e módulos conectados à placa da seguinte maneira –
Visor LCD 16X2 – O visor LCD é usado para mostrar o equilíbrio restante do uso de energia. Ele é conectado à placa Arduino conectando seus pinos de dados aos pinos 3 a 6 da placa Arduino. Os pinos RS e E do LCD estão conectados aos pinos 13 e 12 do Arduino UNO respectivamente. O pino RW do LCD está aterrado.
Fig. 7: Tabela listando conexões de circuito entre Arduino Uno e Character LCD
A biblioteca padrão de código aberto para interface do LCD com o Arduino MEGA é usada no projeto. A biblioteca funciona conforme o esperado e não precisa de alterações ou modificações.
EEPROM externa – A EEPROM externa será conectada ao dispositivo e conectada ao Arduino MEGA na interface de dois fios. Os pinos 5 e 6 do IC EEPROM se conectam aos pinos 20 e 21 do Arduino Mega respectivamente, onde o pino 20 da placa está configurado para SDA e o pino 21 está configurado para SCL.
Circuito de Relé – Um relé 12V 2A será usado para controlar as fontes principais. As cargas serão conectadas entre o fio de fase e o pino NO do relé. O fio neutro será conectado novamente a um medidor de eletricidade normal através do ponto COM. Quando o saldo de uso de energia se esgotar, o microcontrolador enviará uma lógica HIGH para o circuito de transistor chaveador BC547. O circuito do transistor causará um curto-circuito em uma das extremidades da bobina com o terra, enquanto a outra extremidade da bobina recebe alimentação de 12 V, desarmando o relé para o ponto NC.
Sensor LDR – O sensor LDR será colocado em conjunto antes do LED Imp/kWh do painel frontal do EEM regular. Um sensor LDR altera sua resistência de acordo com a intensidade da luz. Quando a luz incide no LDR, sua resistência permanece baixa, enquanto quando há ausência de luz sua resistência é alta. O sensor LDR é conectado ao pino 2 não inversor do comparador de tensão LM358, enquanto a tensão no pino 3 inversor do LM358 é passada através de uma resistência variável. O LED Imp/KWH do painel frontal do EEM pisca um determinado número de vezes de acordo com a classificação de impulso/KWH quando o consumo de eletricidade lido pelo medidor ultrapassa 1KWH de cada vez. Por padrão, o LDR possui baixa resistência e mas quando o LED Imp/kWh do painel frontal do EEM pisca, sua resistência é aumentada. A diferença entre a tensão inversora e não inversora é passada do pino de saída 1 do comparador para o pino analógico A0 do Arduino.
Transmissor RF – O transmissor RF será usado para transmitir mensagem de alerta de baixo equilíbrio de energia para o circuito receptor. O módulo transmissor de RF é um pequeno subconjunto de PCB. A configuração dos pinos do módulo transmissor é a seguinte:
Fig. 8: Tabela listando a configuração dos pinos do transmissor RF
Os dados serializados de codificador é recebido no pino 2 do módulo e repassado para a antena a partir do pino 4 do módulo.
HT12E IC – O HT12E IC converte os dados paralelos em dados seriais para passá-los ao transmissor de RF. O codificador IC HT12E pertence à série 212 de codificadores. É emparelhado com decodificadores da série 212 com o mesmo número de endereços e formato de dados. O HT12E é capaz de codificar 12 bits, dos quais 8 são bits de endereço e 4 são bits de dados. Assim, o sinal codificado é um dado paralelo serializado de 12 bits composto por dados de 4 bits a serem transferidos anexados ao byte de endereço. Para definir a frequência do oscilador, um resistor de 1MΩ é conectado entre os pinos 15 e 16 do IC do codificador HT12E. Apenas o bit de dados D0 do codificador precisa ser usado para enviar alerta de baixo equilíbrio de energia para a estação de recarga. Portanto, o bit D0 do IC do codificador está conectado ao pino 7 do Arduino MEGA.
Fonte de alimentação – Um transformador abaixador é usado para converter 230 V CA em 18 V CA e, usando um retificador de ponte completa e um capacitor, ele é convertido para 18 V CC. Este 18V DC é convertido em 12V DC usando um regulador de tensão 7812 e é fornecido ao pino Vin da placa Arduino UNO e ao relé. Os 18V DC são convertidos em 5V DC usando o regulador de tensão 7805 que é fornecido ao restante dos componentes.
Como funciona o projeto
Um consumidor primeiro precisa fazer uma recarga de energia. Ele possui o EEPROM IC como dispositivo inteligente de recarga de energia. Para fazer a recarga, ele deve conectar o cartão de memória na Estação de Recarga e pressionar o botão interfaceado ao pino A2 do Arduino UNO. Ao pressionar o botão, o consumidor será solicitado a selecionar um valor de recarga por meio de mensagens piscantes na tela LCD. Serão sete pacotes de recarga disponíveis no valor de 2, 5, 7, 9, 12, 15 e 17 rúpias. O consumidor pode navegar para a ordem crescente dos pacotes de recarga pressionando o botão conectado ao pino A1 do Arduino UNO, enquanto pode navegar para a ordem decrescente dos pacotes de recarga pressionando o botão conectado ao pino A0 do Arduino UNO. Ao navegar até o pacote de recarga desejado, o consumidor pode confirmar a recarga pressionando o botão conectado ao pino A3 do Arduino UNO. Conforme o usuário pressiona o botão conectado ao pino A3 do Arduino UNO, o valor da recarga é salvo no local 1 do endereço B01010000 na EEPROM e as unidades de energia elétrica são recarregadas em termos de número de piscadas do LED Imp/kWh do painel frontal de EEM são salvos. Uma mensagem é enviada ao consumidor confirmando as informações da recarga através do módulo GSM.
O consumidor precisa retirar o cartão de memória e carregá-lo para conectar o medidor de energia pré-pago. Assim que o cartão de memória estiver conectado ao medidor de energia pré-pago, o circuito do medidor de controle do Arduino MEGA lê a quantidade de recarga da EEPROM e retoma o fornecimento de energia alternando o relé. O saldo da recarga é mostrado no painel LCD do medidor de energia pré-pago. O consumo de energia elétrica disponível é calculado pelo número de piscadas do LED Imp/KWH do EEM. O Arduino Mega aguarda o piscar do LED Imp/kWh do painel frontal do EEM e a cada piscada compara a tensão analógica detectada em seu pino A0 que é convertida para uma medida digital com valor calibrado. O valor calibrado para comparação com o valor do ADC foi definido como 300 durante os testes do projeto. Sempre que o LED Imp/kWh do painel frontal do EEM pisca, a resistência do LDR é aumentada no circuito divisor de potencial aumentando a tensão não inversora e maior tensão é detectada no pino 1 do IC comparador LM358. Assim, conforme a tensão detectada e digitalizada do A0 do Arduino MEGA ultrapassa o valor de referência 300, é registrado um único piscar do LED Imp / kWh do painel frontal do EEM e uma variável no código do programa contendo o número de unidades recarregadas no formulário O número de piscadas ou pulsos é diminuído em um.
Os EEMs vêm com uma classificação Impulse/KWH. Esta classificação significa que o LED Imp / kWh do EEM piscará pelo número de vezes indicado quando for consumido 1 KWH ou 1 unidade de eletricidade. Como se houvesse uma carga de 100 Watts, ela consumirá 100 Watts em uma hora. Em 10 horas, consumirá 1 KW de eletricidade. Portanto, em 10 horas, uma carga de 100 Watts consumirá 1KWH ou 1 unidade de eletricidade. Se um EEM for indicado com classificação de 1600 impulsos/KWH, no consumo de 1 KWH ou 1 unidade de eletricidade, seu LED Imp / kWh no painel frontal piscará 1600 vezes. O EEM regular usado nos testes do projeto tinha uma classificação de 3.200 impulso/KWH. Esta classificação pode variar de 800 impulso/KWH a 3600 impulso/KWH. No entanto, medidores com classificação de 1000 impulsos/KWH estão ganhando popularidade hoje em dia.
A classificação do medidor deve ser confirmada e bem conhecida para escrever o código Arduino para cálculo do consumo de energia e dedução do saldo. Para testar a classificação real de impulso/KWH do medidor, uma carga de potência fixa deve ser conectada ao medidor e fornecida energia por um minuto. O número de piscadas em um minuto durante o fornecimento à carga deve ser calculado.
A potência da carga está relacionada à classificação do medidor pela seguinte fórmula –
Potência da carga em KW = 3600/(Classificação do medidor em impulso/KWH * Segundos por Flash)
Os segundos por flash estão relacionados às piscadas por minuto da seguinte maneira –
segundos por flash = 60/piscas por minuto
Então,
Potência da carga em KW = (3600 * Piscas por minuto)/ (Classificação do medidor em impulso/KWH * 60)
Potência da carga em KW = (60* piscadas por minuto)/Classificação do medidor em impulso/KWH
Se a potência da carga for conhecida em Watts, então,
Potência da carga em Watts = (60* piscadas por minuto*1000)/Classificação do medidor em impulso/KWH
A partir da equação acima, a classificação do medidor pode ser confirmada pelas fórmulas –
Classificação do medidor em impulso/KWH = (60* piscadas por minuto*1000)/ Potência da carga em Watts
O EEM utilizado durante os testes do projeto tinha uma classificação de 3.200 impulsos/KWH mencionada nele. Ao ligar uma lâmpada de 100 Watts por intervalos de 1 minuto, foram recebidas em média 5.333 piscadas. Colocando os valores na equação acima –
Classificação do medidor em impulso/KWH = (60 * 5,333 * 1000)/100
= 3199,8
Portanto, a classificação do medidor foi confirmada em 3.200 impulsos/KWH. O mesmo número de piscadas será equivalente a 1 KWH ou 1 unidade de consumo de eletricidade.
O esboço do Arduino do medidor de energia pré-pago detecta as piscadas e executa um contador em ordem decrescente, medindo o consumo de cada 1 kWh ou unidade de eletricidade em 3.200 piscadas ou pulsos. Quando o consumo de eletricidade disponível é deixado em 30 por cento, o Arduino Mega aumenta o bit D0 do decodificador de RF, enviando uma confirmação de baixo equilíbrio de energia para a estação de recarga. Ao detectar o bit D0 alto no codificador RF, o Arduino UNO na estação de recarga se enquadra e envia uma mensagem de alerta ao consumidor utilizando o módulo GSM/GPRS. O consumidor precisa fazer uma recarga antes que o saldo energético disponível se esgote. Se o balanço de energia disponível se esgotar, o Arduino Mega aciona o contator do relé para o ponto NC cortando a alimentação principal. A alimentação principal é retomada à medida que o balanço de energia é recarregado e lido pelo medidor a partir da EEPROM recarregada.
Guia de programação
Esboço Arduino da estação de recarga
O código do programa será executado no Arduino UNO. No código do programa, primeiro são importadas as bibliotecas de código aberto padrão do Arduino para interface com LCD, porta serial virtual e comunicação serial.
#includeCódigo-fonte do projeto
###
//Program to #include#include #include LiquidCrystal lcd(13, 12, 6, 5, 4, 3);// Pins used for RS,E,D4,D5,D6,D7 SoftwareSerial mySerial(9, 10); // RX, TX int b1 = A0; // Push button used as * and < at A0 pin int b2 = A1; // Push button used as > at A1 pin int b3 = A2; // Push button used as EXIT at A2 pin int b4 = A3; // Push button used as # and save at A3 pin int RFin=7; int bS1 = 0; int bS2 = 0; int bS3 = 0; int bS4 = 0; int bS5 = 0; int teriff(7) = { 2,5,7,9,12,15,17}; int i=0,j=0,k=0,l=0,m=0,puls=0,pos=0; byte rupees(8) ={ 0b00000, 0b11111, 0b00100, 0b11111, 0b00100, 0b01000, 0b00100, 0b00010 }; void eeprom_i2c_write(byte address, byte from_addr, byte data) { Wire.beginTransmission(address); Wire.write(from_addr); Wire.write(data); Wire.endTransmission ; } byte eeprom_i2c_read(int address, int from_addr) { Wire.beginTransmission(address); Wire.write(from_addr); Wire.endTransmission ; Wire.requestFrom(address, 1); if(Wire.available ) return Wire.read ; else return 0xFF; } void setup { mySerial.begin(9600); Wire.begin ; Serial.begin(9600); pinMode(b1, INPUT); pinMode(b2, INPUT); pinMode(b3, INPUT); pinMode(b4, INPUT); pinMode(RFin, INPUT); lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("Engineers Garage"); lcd.setCursor(0,1); lcd.print(" PRE PAID EM "); delay(3000);lcd.clear ; } void loop { bS1 = digitalRead(b1); bS2 = digitalRead(b2); bS3 = digitalRead(b3); bS4 = digitalRead(b4); bS5 = digitalRead(RFin); digitalWrite(RFin,0); lcd.setCursor(0,0); lcd.print("**TO RECHARGE**"); lcd.setCursor(0,1); lcd.print(" PRESS YES* "); if(bS3==LOW){ pos=20; lcd.clear ;} if(bS1==LOW){ lcd.clear ; int r = eeprom_i2c_read(B01010000, 1); int s = eeprom_i2c_read(B01010000, 2); lcd.setCursor(0,0); lcd.print("AMOUNT RECHARGED"); lcd.setCursor(6,1); printDigits2(r); lcd.setCursor(9,1); printDigits2(s); while(1){ delay(3000);delay(3000); lcd.clear ; break; } } if(bS5==HIGH){ lcd.setCursor(0,0); lcd.print("LOW AMOUNT DETCT"); lcd.setCursor(0,1); lcd.print(" PLS RECHARGE "); lowAlertSMS ; lcd.clear ; } while(pos==20){ bS1 = digitalRead(b1); bS2 = digitalRead(b2); bS3 = digitalRead(b3); bS4 = digitalRead(b4); lcd.setCursor(0,0); lcd.print(" RECHARGE AMOUNT "); lcd.createChar(1,rupees); lcd.setCursor(6,1); lcd.write(1); if(bS1==LOW && pos==20){ if(i>0){ i--; delay(400); } } if(bS2==LOW && pos==20){ if(i<6){ i++; delay(400); } } lcd.setCursor(8,1); printDigits2(teriff(i)); if(bS4==LOW && pos==20){ lcd.clear ; pos=1; lcd.setCursor(3,0); lcd.print("AMOUNT"); lcd.createChar(1,rupees); lcd.setCursor(10,0); lcd.write(1); lcd.setCursor(12,0); printDigits2(teriff(i)); lcd.setCursor(0,1); lcd.print(" YES* NO# "); delay(500); while(pos==1){ bS3 = digitalRead(b3); bS4 = digitalRead(b4); if(bS3==LOW && pos==1){ eeprom_i2c_write(B01010000, 1, teriff(i)); delay(200); pos=30; lcd.clear ; break; } if(bS4==LOW && pos==1){ lcd.clear ; break; } } } } while(pos==30){ byte r = eeprom_i2c_read(B01010000, 1); lcd.setCursor(0,0); lcd.print("RECHARGE "); lcd.createChar(1,rupees); lcd.setCursor(10,0); lcd.write(1); lcd.setCursor(12,0); printDigits2(teriff(i)); rechagreAlertSMS ; puls=(3200*r)/6; //6 rupees per UNIT assumption eeprom_i2c_write(B01010000, 2,puls); Serial.print(puls); for(j=0;j<16;j++){ lcd.setCursor(j,1); lcd.print("*"); delay(500); } lcd.setCursor(0,1); lcd.print(" DONE !!! "); delay(3000);delay(3000); lcd.clear ; pos=40; break; } } void printDigits2(int digits) //this void function is really useful; it adds a "0" to the beginning of the number, so that 5 minutes is displayed as "00:05:00", rather than "00:5 :00" { if(digits < 10) { lcd.print("0"); lcd.print(digits); } else { lcd.print(digits); } } void lowAlertSMS { delay(100); mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(1000); // Delay of 1000 milli seconds or 1 second mySerial.println("AT+CMGS="+917357187588"r"); delay(100); mySerial.println("LOW BALANCE PLEASE RECHANGE");// The SMS text you want to send delay(100); mySerial.println((char)26);// ASCII code of CTRL+Z delay(1000); loop ; } void rechagreAlertSMS { delay(100); mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(100); // Delay of 1000 milli seconds or 1 second mySerial.println("AT+CMGS="+917357187588"r"); delay(100); mySerial.print("Rechange Done, MRP:Rs.");// The SMS text you want to send delay(100); mySerial.print(teriff(i)); delay(100); mySerial.print("n"); delay(100); mySerial.println("Use electricity wisely to avoid rising costs."); delay(100); mySerial.println((char)26);// ASCII code of CTRL+Z delay(1000); } ###
Diagramas de circuito
Circuito-Diagrama-Arduino-Baseado-Eletricidade-Estação de Recarga-Medidor de Energia Pré-pago |