{"id":266,"date":"2016-07-26T11:03:25","date_gmt":"2016-07-26T14:03:25","guid":{"rendered":"https:\/\/fedablio.com.br\/blog\/?p=266"},"modified":"2022-01-17T15:30:18","modified_gmt":"2022-01-17T18:30:18","slug":"arduino-http-port-aplicativo-android-para-automacao-residencial","status":"publish","type":"post","link":"https:\/\/fedablio.com.br\/blog\/arquivos\/266","title":{"rendered":"Arduino HTTP Port \u2013 aplicativo Android para automa\u00e7\u00e3o residencial"},"content":{"rendered":"\n<div style=\"text-align:justify;\">\n<p>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/ahp-01.png\" style=\"margin-right: 10px; margin-bottom: 10px;\" width=\"225\" height=\"225\" align=\"left\"\/>\nO foco deste post n\u00e3o \u00e9 ensinar a fazer a instala\u00e7\u00e3o do Arduino, seja ela de hardware ou software e sim a divulga\u00e7\u00e3o do aplicativo para sistema operacional Android \u201cArduino Http Port\u201d. A princ\u00edpio, o c\u00f3digo fonte Arduino desenvolvido, funciona com todos os Arduinos. Foram feitos testes reais nos Arduinos Mega e Uno. As portas do Arduino utilizadas foram as 2, 3, 5, 6 e 7 digitais e 0, 1, 2, 3 e 4 anal\u00f3gicas, conseguindo ligar\/desligar ao todo, 10 (dez) dispositivos (l\u00e2mpadas, ventiladores, e etc). A porta digital 4 \u00e9 utilizada para comunica\u00e7\u00e3o do Micro SD do ethernet shield. A digital 10 serve para selecionar o ethernet shield. As portas 11, 12 e 13 s\u00e3o de BUS do SPI (atrav\u00e9s do ICSP). As portas anal\u00f3gicas foram definidas para funcionar como se fossem portas digitais. Quando ligadas, colocam 5V na sa\u00edda. Quando desligadas, colocam 0V. Levando em considera\u00e7\u00e3o a compatibilidade entre aplicativo e vers\u00e3o do sistema operacional, informo que funciona a partir da vers\u00e3o Honeycomb 3.0 (API 11).\n<\/p\n\n<p>\nO funcionamento \u00e9 simples. Ap\u00f3s carregado o c\u00f3digo fonte no Arduino e instalado o aplicativo Arduino Http Port em seu smartphone, ser\u00e1 necess\u00e1rio alterar o IP conforme sua rede local (seu roteador). Quando o usu\u00e1rio pede para verificar as portas, o aplicativo \u201cfaz uma pergunta\u201d para o Arduino. Este responde em seguida com a situa\u00e7\u00e3o das 10 portas. Se por exemplo, ligou a porta digital 5 e precisou digamos, reiniciar o smarthpne, quando executar o aplicativo, ele vai fazer uma pergunta para o Arduino novamente. Em seguida, receber\u00e1 a resposta de que a porta digital 5 permanece ligada. Logo, o Arduino se mantem em funcionamento, n\u00e3o sendo necess\u00e1rio que o aplicativo esteja o tempo todo rodando no smartphone para que as portas se mantenham ligadas ou desligadas. Lembre-se de que a palavra inserida no c\u00f3digo Arduino deve ser a mesma inserida no aplicativo.\n<\/p>\n\n<p>\nOs nomes padr\u00f5es das portas no aplicativo s\u00e3o: Digital 2, Digital 3, Digital 5, Digital 6, Digital 7, Anal\u00f3gica 0, Anal\u00f3gica 1, Anal\u00f3gica 2, Anal\u00f3gica 3 e Anal\u00f3gica 4 sendo poss\u00edvel alterar conforme a necessidade do usu\u00e1rio.\n<\/p>\n\n<p>\nAbaixo segue o c\u00f3digo fonte que deve ser carregado em seu Arduino:\n<\/p>\n\n<pre>\n#include &lt;SPI.h&gt;\n#include &lt;String.h&gt;\n#include &lt;Ethernet.h&gt;\n\nbyte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };\nIPAddress ip(192, 168, 0, 199);\nIPAddress gateway(192, 168, 0, 1);\nIPAddress subnet(255, 255, 255, 0);\nEthernetServer server(8090);\nint D2 = 2;\nint D3 = 3;\nint D5 = 5;\nint D6 = 6;\nint D7 = 7;\nint N0 = A0;\nint N1 = A1;\nint N2 = A2;\nint N3 = A3;\nint N4 = A4;\nString palavra = \"fedablio\";\nString readString = String(30);\n \nvoid setup(){\nEthernet.begin(mac, ip, gateway, subnet);\nserver.begin();\npinMode(D2, OUTPUT);\npinMode(D3, OUTPUT);\npinMode(D5, OUTPUT);\npinMode(D6, OUTPUT);\npinMode(D7, OUTPUT);\npinMode(N0, OUTPUT);\npinMode(N1, OUTPUT);\npinMode(N2, OUTPUT);\npinMode(N3, OUTPUT);\npinMode(N4, OUTPUT);\n}\n \nvoid loop(){\nEthernetClient client = server.available();\nif (client) {\nwhile (client.connected()){\nif (client.available()){\nchar c = client.read();\nif (readString.length() < 30){\nreadString += (c);\n}\nif (c == '\\n'){\n\/\/recebe digital 2\nif(readString.indexOf(palavra+\"\/L2_LIG\")>=0){\ndigitalWrite(D2, HIGH);\n}\nif(readString.indexOf(palavra+\"\/L2_DES\")>=0){\ndigitalWrite(D2, LOW);\n}\n\/\/recebe digital 3\nif(readString.indexOf(palavra+\"\/L3_LIG\")>=0){\ndigitalWrite(D3, HIGH);\n}\nif(readString.indexOf(palavra+\"\/L3_DES\")>=0){\ndigitalWrite(D3, LOW);\n}\n\/\/recebe digital 5\nif(readString.indexOf(palavra+\"\/L5_LIG\")>=0){\ndigitalWrite(D5, HIGH);\n}\nif(readString.indexOf(palavra+\"\/L5_DES\")>=0){\ndigitalWrite(D5, LOW);\n}\n\/\/recebe digital 6\nif(readString.indexOf(palavra+\"\/L6_LIG\")>=0){\ndigitalWrite(D6, HIGH);\n}\nif(readString.indexOf(palavra+\"\/L6_DES\")>=0){\ndigitalWrite(D6, LOW);\n}\n\/\/recebe digital 7\nif(readString.indexOf(palavra+\"\/L7_LIG\")>=0){\ndigitalWrite(D7, HIGH);\n}\nif(readString.indexOf(palavra+\"\/L7_DES\")>=0){\ndigitalWrite(D7, LOW);\n}\n\/\/recebe anal\u00f3gica 0\nif(readString.indexOf(palavra+\"\/N0_LIG\")>=0){\ndigitalWrite(N0, HIGH);\n}\nif(readString.indexOf(palavra+\"\/N0_DES\")>=0){\ndigitalWrite(N0, LOW);\n}\n\/\/recebe anal\u00f3gica 1\nif(readString.indexOf(palavra+\"\/N1_LIG\")>=0){\ndigitalWrite(N1, HIGH);\n}\nif(readString.indexOf(palavra+\"\/N1_DES\")>=0){\ndigitalWrite(N1, LOW);\n}\n\/\/recebe anal\u00f3gica 2\nif(readString.indexOf(palavra+\"\/N2_LIG\")>=0){\ndigitalWrite(N2, HIGH);\n}\nif(readString.indexOf(palavra+\"\/N2_DES\")>=0){\ndigitalWrite(N2, LOW);\n}\n\/\/recebe anal\u00f3gica 3\nif(readString.indexOf(palavra+\"\/N3_LIG\")>=0){\ndigitalWrite(N3, HIGH);\n}\nif(readString.indexOf(palavra+\"\/N3_DES\")>=0){\ndigitalWrite(N3, LOW);\n}\n\/\/recebe anal\u00f3gica 4\nif(readString.indexOf(palavra+\"\/N4_LIG\")>=0){\ndigitalWrite(N4, HIGH);\n}\nif(readString.indexOf(palavra+\"\/N4_DES\")>=0){\ndigitalWrite(N4, LOW);\n}\n \nclient.println(\"HTTP\/1.1 200 OK\");\nclient.println(\"Content-Type: text\/html\");\nclient.println();\n \n\/\/envia digital 2\nif (digitalRead(2) == HIGH) {\nclient.print(\"D2_LIG\");\n} \nif(digitalRead(2) == LOW) {\nclient.print(\"D2_DES\");\n}\n\/\/envia digital 3\nif (digitalRead(3) == HIGH) {\nclient.print(\"D3_LIG\");\n} \nif(digitalRead(3) == LOW) {\nclient.print(\"D3_DES\");\n}\n\/\/envia digital 5\nif (digitalRead(5) == HIGH) {\nclient.print(\"D5_LIG\");\n} \nif(digitalRead(5) == LOW) {\nclient.print(\"D5_DES\");\n}\n\/\/envia digital 6\nif (digitalRead(6) == HIGH) {\nclient.print(\"D6_LIG\");\n} \nif(digitalRead(6) == LOW) {\nclient.print(\"D6_DES\");\n}\n\/\/envia digital 7\nif (digitalRead(7) == HIGH) {\nclient.print(\"D7_LIG\");\n} \nif(digitalRead(7) == LOW) {\nclient.print(\"D7_DES\");\n}\n\/\/envia anal\u00f3gica 0\nif(digitalRead(N0) == HIGH){\n  client.print(\"J0_LIG\");\n}\nif(digitalRead(N0) == LOW){\n  client.print(\"J0_DES\");\n}\n\/\/envia anal\u00f3gica 1\nif(digitalRead(N1) == HIGH){\n  client.print(\"J1_LIG\");\n}\nif(digitalRead(N1) == LOW){\n  client.print(\"J1_DES\");\n}\n\/\/envia anal\u00f3gica 2\nif(digitalRead(N2) == HIGH){\n  client.print(\"J2_LIG\");\n}\nif(digitalRead(N2) == LOW){\n  client.print(\"J2_DES\");\n}\n\/\/envia anal\u00f3gica 3\nif(digitalRead(N3) == HIGH){\n  client.print(\"J3_LIG\");\n}\nif(digitalRead(N3) == LOW){\n  client.print(\"J3_DES\");\n}\n\/\/envia anal\u00f3gica 4\nif(digitalRead(N4) == HIGH){\n  client.print(\"J4_LIG\");\n}\nif(digitalRead(N4) == LOW){\n  client.print(\"J4_DES\");\n}\nreadString = \"\";\nclient.stop();\n}\n}\n}\n}\n}\n<\/pre>\n\n<p>\nPara a instala\u00e7\u00e3o correta do Arduino, siga os tutoriais conforme o sistema operacional de seu computador Desktop ou Notebook:\n<\/p>\n\n<a href=\"https:\/\/www.arduino.cc\/en\/Guide\/Windows\" target=\"_blank\" rel=\"noopener\">Windows<\/a><br>\n<a href=\"https:\/\/www.arduino.cc\/en\/Guide\/macOS\" target=\"_blank\" rel=\"noopener\">Mac OS<\/a><br>\n<a href=\"https:\/\/www.arduino.cc\/en\/Guide\/Linux\" target=\"_blank\" rel=\"noopener\">Linux<\/a><br><br>\n<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=br.com.fedablio.ahp\" target=\"_blank\" rel=\"noopener\">Clique aqui para instalar o aplicativo (Google Play)<\/a><br>\n\n<h4>Pol\u00edtica de privacidade (pt-BR)<\/h4>\n\n<p>\nOs dados como IP (ou dom\u00ednio) e nome de portas, ficam salvos exclusivamente no dispositivo (smartphone ou tablet do usu\u00e1rio). Ou seja, n\u00e3o s\u00e3o enviados para outro local e nenhuma informa\u00e7\u00e3o do usu\u00e1rio fica em poder de &#8220;fedablio.com.br&#8221;.\n<ul>\n<li>O aplicativo solicita permiss\u00e3o de internet: significa que \u00e9 necess\u00e1rio trafegar dados atrav\u00e9s de uma rede.<\/li>\n<li>O aplicativo solicita permiss\u00e3o de rede: significa que vai verificar se tem conex\u00e3o de rede. Seja ela rede local (com ou sem internet) ou rede de dados (Edge, 3G, 4G e etc).<\/li>\n<\/ul>\n<\/p>\n\n<h4>Privacy policy (en-US)<\/h4>\n\n<p>\nData such as IP (or domain) and port names are saved exclusively on the device (user\u2019s smartphone or tablet). That is, they are not sent to another location and no user information is held by &#8220;fedablio.com.br&#8221;.\n<ul>\n<li>The application asks for internet permission: it means that it is necessary to traffic data over a network.<\/li>\n<li>The application asks for network permission: it means that it will check if you have a network connection. Be it local network (with or without internet) or data network (Edge, 3G, 4G and etc.).<\/li>\n<\/ul>\n<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>O foco deste post n\u00e3o \u00e9 ensinar a fazer a instala\u00e7\u00e3o do Arduino, seja ela de hardware ou software e sim a divulga\u00e7\u00e3o do aplicativo para sistema operacional Android \u201cArduino Http Port\u201d. A princ\u00edpio, o c\u00f3digo fonte Arduino desenvolvido, funciona com todos os Arduinos. Foram feitos testes reais nos Arduinos Mega e Uno. As portas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[40,41,42],"class_list":["post-266","post","type-post","status-publish","format-standard","hentry","category-android","tag-android-arduino","tag-automacao-arduino","tag-automacao-residencial"],"_links":{"self":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/comments?post=266"}],"version-history":[{"count":7,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/266\/revisions"}],"predecessor-version":[{"id":287,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/266\/revisions\/287"}],"wp:attachment":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/media?parent=266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/categories?post=266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/tags?post=266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}