Há alguns dias venho travando uma luta com a Oi pela instalação de um Velox avulso. Não que o fixo e a Oi que venda casada, então estamos em um impasse.
Acompanhem http://www.ldutra.com.br/oi/
Há alguns dias venho travando uma luta com a Oi pela instalação de um Velox avulso. Não que o fixo e a Oi que venda casada, então estamos em um impasse.
Acompanhem http://www.ldutra.com.br/oi/
Depois de algumas pessoas terem me dito que o ACS712 retorna valores negativos em Corrente Alternada (CA) resolvi dar uma pesquisada e encontrei um Sketch que pode resolver o problema.
Ainda não testei o código, mas compilou legal no IDE 1.5.2. Pelo código é para funcionar sem muita dificuldade.
Neste post também estou testando a forma correta de colocar códigos no blog. Da forma como eu vinha fazendo não dava para copiar e colar no IDE.
//retirado de <a href="http://www.seriallink.com.br/forum/viewtopic.php?f=46&t=1900">http://www.seriallink.com.br/forum/viewtopic.php?f=46&t=1900</a> const int sensorPin = A0; float sensorValue_aux = 0; float sensorValue = 0; float currentValue = 0; float voltsporUnidade = 0.0048828125; void setup() { Serial.begin(9600); } void loop() { for(int i=500; i>0; i--) { sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0 sensorValue += pow(sensorValue_aux,2); // soam os quadardos das leituras no laco } sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts currentValue = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper) // mostra o resultado no terminal Serial.print("corrente = " ); Serial.print(currentValue); Serial.print("\n" ); sensorValue =0; delay(150); }
Com esse código é possível medir corrente de lampadas, eletrodomésticos e outros.
O que o código faz é uma transformação quadratica para que os resultados sejam mostrados da forma correta. No caso da corrente contínua essa transformação não é necessária.
Finalmente meu DUE chegou, depois de dois meses de espera. Ainda não tive tempo de fazer testes mais profundos com ele (Só rodou BLink até agora). Eu gosto do UNO pela mobilidade do microcontrolador, por desenvolvo o projeto no arduino e depois transporto só o ATMEGA328 para a nova placa. Com o DUE vai ser um pouco mais complicado fazer isso, então vou continuar trabalhando mais com meu UNO. hehehehe
Assim que eu tiver mais detalhes do DUE posto por aqui.
Segue código que encontrei na net para uso com shields de ethernet e módulos com relés.
Verificado com o IDE 1.5 e testado em um Arduino UNO
Código:
#include <Dhcp.h> #include <Dns.h> #include <Ethernet.h> #include <EthernetClient.h> #include <EthernetServer.h> #include <EthernetUdp.h> #include <util.h> /* Original Version by Poldi modified by Katsu the functions readString.append() and readString.contains() where replaced */ #include <SPI.h> // insert by Katsu // #include <WString.h> removed by Katsu byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,0, 177); EthernetServer server(80); int Pin3 = 3; int Pin4 = 4; int Pin5 = 5; int Pin6 = 6; String readString = String(100); // string for fetching data from address boolean Pin3ON = false; // Status flag boolean Pin4ON = false; void setup(){ Ethernet.begin(mac, ip); server.begin(); pinMode(Pin3, OUTPUT); pinMode(Pin4, OUTPUT); Serial.begin(9600); } void loop(){ // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); //read char by char HTTP request if (readString.length() < 100) { //store characters to string // readString.append(c); removed by Katsu readString = readString + c; // insert by Katsu // very simple but it works... } Serial.print(c); //output chars to serial port if (c == '\n') { //if HTTP request has ended // readString.contains() replaced with readString.indexOf(val) > -1 by Katsu // indexOf locates a character or String within another String. // Returns the index of val within the String, or -1 if not found. if(readString.indexOf("3=einschalten") > -1) { digitalWrite(Pin3, HIGH); Serial.println("Pin 3 eingeschaltet!"); Pin3ON = true; } if(readString.indexOf("3=ausschalten") > -1){ digitalWrite(Pin3, LOW); Serial.println("Pin 3 ausgeschaltet!"); Pin3ON = false; } if(readString.indexOf("4=einschalten") > -1) { digitalWrite(Pin4, HIGH); Serial.println("Pin 4 eingeschaltet!"); Pin4ON = true; } if(readString.indexOf("4=ausschalten") > -1){ digitalWrite(Pin4, LOW); Serial.println("Pin 4 ausgeschaltet!"); Pin4ON = false; } if(readString.indexOf("all=Alles+aus") > -1){ digitalWrite(Pin3, LOW); digitalWrite(Pin4, LOW); Serial.println("Alles ausgeschaltet"); Pin3ON = false; Pin4ON = false; } //--------------------------HTML------------------------ client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.print("<html><head>"); client.print("<title>Arduino Webserver Poldi</title>"); client.println("</head>"); client.print("<body bgcolor='#444444'>"); //---Überschrift--- client.println("<br><hr />"); client.println("<h1><div align='center'><font color='#2076CD'>Arduino Webserver 1.0 by Poldi</font color></div></h1>"); client.println("<hr /><br>"); //---Überschrift--- //---Ausgänge schalten--- client.println("<div align='left'><font face='Verdana' color='#FFFFFF'>Ausgänge schalten:</font></div>"); client.println("<br>"); client.println("<table border='1' width='500' cellpadding='5'>"); client.println("<tr bgColor='#222222'>"); client.println("<td bgcolor='#222222'><font face='Verdana' color='#CFCFCF' size='2'>Ausgang 3<br></font></td>"); client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=3 value='einschalten'></form></td>"); client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=3 value='ausschalten'></form></td>"); if (Pin3ON) client.println("<td align='center'><font color='green' size='5'>ON"); else client.println("<td align='center'><font color='#CFCFCF' size='5'>OFF"); client.println("</tr>"); client.println("<tr bgColor='#222222'>"); client.println("<td bgcolor='#222222'><font face='Verdana' color='#CFCFCF' size='2'>Ausgang 4<br></font></td>"); client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=4 value='einschalten'></form></td>"); client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=4 value='ausschalten'></form></td>"); if (Pin4ON) client.println("<td align='center'><font color='green' size='5'>ON"); else client.println("<td align='center'><font color='#CFCFCF' size='5'>OFF"); client.println("</tr>"); client.println("</tr>"); client.println("</table>"); client.println("<br>"); client.println("<form method=get><input type=submit name=all value='Alles aus'></form>"); client.println("</body></html>"); //---Ausgänge schalten--- //clearing string for next read readString=""; //stopping client client.stop(); }}}}}
Recebi a tarefa de instalar o PHP no servidor da empresa, dei uma olhada na net e conclui que seria coisa fácil, nada complicado. Fiz o download dos arquivos necessários e fui para salão do servidor, isso as 15:00. Fiz tudo conforme um dos vários tutoriais que achei e em poucos minutos o PHP estava instalado, então hora de testar. Assim que fiz o primeiro acesso e cliquei no arquivo com o código do phpinfo apareceu uma caixa pedindo lógica e senha, quando cliquei em cancelar “Erro 401.3 Permissão negada”. Varri as pastas do site olhando as permissões e nada de errado, depois notei que só os arquivos Php estavam dando esse erro. Refiz todo o processo dos tutoriais e nada. Quando eu colocava a senha de acesso do servidor o phpinfo aparecia, quando não colocava só erro 401.3. As 17hrs finalmente achei em um fórum gringo um citação do que podia ser, o usuário convidado da Internet tem que ter permissão de acesso na pasta do Php. Não só a pasta, mas todos os arquivos dentro tem que estar estado para pelo menos leitura para o IUSR. Foi só fazer essa alteração e pronto. Então é isso, fica a dica.
Bom pessoal, ainda não o tutorial para usar as tintas para máscara de solda que são vendidas no Ebay, mas pelo menos fiz algumas fotos para mostrar como ficam as placas depois de reveladas.
Comprei essa tinta para mascara de solda pelo Ebay. Não sai caro e da pra fazer muitas placas. Um potinho com 100g saiu por uns R$15,00 na cor azul e R$12,00 o verde. No método fotográfico, a tinta contém um fotossensibilizante que reage com alguma onda luminosa e se polimeriza, onde não pega a luz não ocorre a polimerização. Existe vários tipos de tinta para esse fim, mas o que muda de uma tinta para outra são só alguns detalhes no procedimento e a forma de fazer a “revelação” da foto.
Basicamente o que faço é o seguinte:
Essa tinta para mascara de solda que tenho usado polimeriza com raios UV, então tenho usado uma lampada de luz negra de 25W (Emite UV-A, fácil de achar e custa uns R$20,00) por 35 minutos.
As tintas para silkscreen polimerizam bem mais rápido, mas não consegui correr as placas.
Uso a tinta para fazer a PCB, para fazer a marcara depois da corrosão e em outras placas quando precisam de reparo na mascara.
Esse final de semana ia fazer um tutorial, mas não rolou. Mesmo assim, só para mostrar a um colega como funciona o processo fiz rapidinho uma placa. Segue algumas fotos:
Fiz tudo bem rápido, pois era só pra mostrar para um colega, então é possível um resultado bem melhor.
No fotolito que usei tinha vários circuitos iguais de aproximadamente 5,5 x 2,1cm para confecção de um Arduino básico com o ATmega328P, mas errei no tamanho dos pads e vou refazer a placa. Como era só pra demonstração usei o fotolito errado mesmo.
Consegui finalmente adaptar o método fotográfico de confecção de PCB para uma das tintas que tenho disponível. Quero ver se faço um passo a passo logo logo.:-) Pra adiantar, as placas que fiz até agora ficaram muito boas e o custo é baixo. A tinta que estou usando custa entre U$5 e U$8, algo em torno dos R$16,00 (Ebay), por 100g (Da pra fazer muitas placas).
Aguardem…
Quem tem contas antigas de e-mail e uma vida ativa na internet sabe como é difícil gerenciar SPANS hoje em dia. Minha conta do Gmail tem mais de 9 anos de uso (essa conta ainda é da época que para ter um gmail era necessário um convite e cada pessoa convidada só podia convidar mais 10).
O problema maior é que uso a mesma conta para quase tudo e dai surge a minha dor de cabeça diária para separa o que é útil do que é inútil. Já criei outras contas de e-mail, para não fazer cadastro em foruns, por exemplo, com a minha conta pessoal, mas quem é que aguenta fazer login e monitorar várias contas todos os dias? Recentemente descobri uma solução para o meu problema, os ALIAS do outlook.com. A conta Alias não é novidade, pois já estava disponível no hotmail, mas eu nunca tinha usado.
O que é a conta Alias no outlook.com/hotmail?
É um endereço de e-mail criado dentro de um endereço já existente. 🙂
Por que criar um alias? Algumas pessoas gostam de usar vários endereços de email para diferentes atividades. Por exemplo, você pode usar um endereço para procurar emprego e outro para fazer compras online. Dessa forma, as mensagens enviadas a esses endereços podem ser mantidas em pastas separadas.
Digamos que eu tenha um e-mail chamado zeblog@live.com, mas não quero usar esse e-mail para cadastros na internet, então eu crio um ALIAS dentro dele. O Alias pode ficar como uma pasta dentro do e-mail principal, podendo ser usada para recebimento de e-mails e também para envio.
Entre na sua conta do Outlook.com/hotmail/MSN/Live
Vá em configurações (1) e clique em Mais configurações (2)
Clique em “Criar um alias”
Escolha o endereço da conta Alias. As opções de endereço são @outlook.com, @hotmail.com, @hotmail.com.br ou @live.com
Nesta tela é exibido a opção para criar uma pasta para receber os e-mails enviados para o Alias que acabamos de criar ou enviar para caixa de entrada. Eu, particularmente, prefiro usar uma pasta, pois fica mais fácil de visualizar os e-mails, mas vai depender da preferencia de cada um.
Na minha pagina de entrada o Alias aparece como uma pasta. A vantagem do alias sobre criar uma nova conta é que não é necessário preencher todo o cadastro e não é necessário fazer vários logins e senhas para olhar todos os e-mails. Fazendo apenas o login na conta principal a pessoa tem acesso aos e-mails da conta principal e dos Aliases criados nela.
Os Alias podem ser usados também para enviar e-mail e não somente para receber
O Alias é facilmente descartado nas opções de conta da Microsoft, onde podemos facilmente excluir o Alias sem perder a conta principal. 🙂