LusoRobótica - Robótica em Português
Robótica => Discussão geral sobre robótica => Tópico iniciado por: Wolfz em 05 de Julho de 2012, 23:02
-
Boas pessoal, ultimamente ando a aprofundar os meus conhecimentos sobre o ethernet shield, tal como já devem ter percebido com os outros tópicos que coloquei.
Eu vi num vide do youtube um Sr que conseguia através do ethernet shield retirar informação do twiter, no meu caso queria apenas retirar por exemplo a hora que aparece neste site: http://www.horadomundo.com/ (http://www.horadomundo.com/)
Alguma sugestão? ;)
-
Não há ninguém que me possa ajudar? Que me possa dizer ao menos como posso procurar (o que procurar no google)...
-
Boas.
Tens de usar EthernetClient tens aqui um exemplo que faz um pedido ao google.
http://arduino.cc/en/Reference/EthernetClient (http://arduino.cc/en/Reference/EthernetClient)
Para "sacares" a hora vais ter de implementar á tua maneira uma forma de tirar do html que vais receber esta linha que lá vem "<input type="hidden" name="miliSegundos" value="1341540522837" />" onde diz value="1341540522837" é onde está a data mas num formato diferente vê o link em baixo.
http://www.epochconverter.com/ (http://www.epochconverter.com/)
-
O outro site que deste está carregado de javascript, processar isso num arduino não é tarefa fácil, em todo o caso vê se há algum sítio onde haja um número perto de 1341580386 (unix time para a altura em que estou a escrever isto), esse número é o número de segundos desde 1 de Janeiro de 1970, é só fazer as contas :)
-
Poderias era alojar um script em PHP ou assim noutro sítio teu, e mandas o arduino ir buscar o resultado já parseado.
-
Obrigado zedlav, tiagogala =)
Obrigado amando96 inicialmente estava a pensar fazer como tu dizes, mas não consegui arranjar informação sobre como fazer isso. Se Já fizeste isso ou sabes de algum "tutorial" agradecia a tua ajuda.
-
Já consigo aceder ao site e ver "as informações" =D
O que recebo na Serial é isto:
connecting...
connected
HTTP/1.1 404 Not Found
Date: Fri, 06 Jul 2012 17:10:04 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Last-Modified: Fri, 07 Jan 2005 23:09:11 GMT
ETag: "a8002c-2a6-3ed1e4e7193c0"
Accept-Ranges: bytes
Content-Length: 678
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html
<HTML><HEAD><TITLE> Wait ... </TITLE>
<META HTTP-EQUIV="refresh" CONTENT="0;URL=/">
</HEAD><BODY><FONT FACE="verdana,arial" SIZE=2>
<!-- This page doensn't exist anymore -->
Click <A HREF="/">here[/url] to continue ...
</FONT>
<!-- adding to get to 512 bytes 000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
</BODY></HTML>
disconnecting.
Há alguma maneira de guardar isto ("Date: Fri, 06 Jul 2012 17:10:04 GMT") numa variavel?
-
Mas só queres saber as horas? ou é para uma demonstração de ir buscar algo à net? é que os recursos que estás a gastar são imensos, há relógios em forma DIP de 8 pinos baratos e fáceis de usar.
Experimentei usar o DOMDocument mas o site está mal feito, repetem o mesmo id várias vezes... html inválido (http://validator.w3.org/check?uri=http%3A%2F%2Fwww.horadomundo.com%2F&charset=%28detect+automatically%29&doctype=Inline&group=0).
-
Obrigado mais uma vez amando96 :)
O que eu queria fazer mesmo era retirar informação dos sites, por exemplo, retirar informações deste site (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040 (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040))
Gostava de fazer com o retirar da Internet, pois no futuro poderá servir-me para outras coisas.
-
Retirar a informação é relativamente simples, lês a página linha a linha e passas por um sscanf, e procuras por Date, depois é retirar a informação campo a campo, o problema é se alteram a notação/formatação e se tiveres de ler o site todo para ram, podes esquecer que não vai caber na ram de um arduino.
-
:-X pois é tens razão
Já agora como posso saber qual o "ip" para o arduino " ler este site (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040 (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040))
Obrigado senso ;)
-
Boas Senso, tive a pensar e o que me dizes de em vez de retirar a informação de um site "exterior" alojar uma pagina html com um javascript para "gerar" as horas no SD e ir buscar as horas através do arduino?
-
Isso parece-me o trabalho perfeito para um router de 25 ou 30€ a correr openWrt ou DD-WRT, a tirar informação da internet do que for preciso e depois envia o essencial por serial para o arduino.
-
Agora é que me baralhas-te todo :o
Não tenho bases para isso xD
-
Olá,
Deixo-te aqui uma solução para Data + Hora:
Arranjas um webhost e escreves um simples ficheiro php como o debaixo
<?php
date_default_timezone_set('UTC');
echo date('l jS \of F Y h:i:s A');
?>
Onde está UTC metes a timezone que desejas e na string do argumento da função date alteras o formato para como queres receber a hora. As letras têm significados escritos aqui: http://php.net/manual/en/function.date.php (http://php.net/manual/en/function.date.php)
Ele não vai gerar um site html mas vai gerar apenas só a data no formato que escolheste.
Com o shield de ethernet deverá te gerar um coisa assim:
HTTP/1.1 200 OK
Date: Sat, 07 Jul 2012 15:32:05 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html
Saturday 7th of July 2012 03:32:06 PM
Depois com o Arduino fazes só o parsing da ultima linha...
Para obteres o Endereço Ip arranja-se uma coisa parecida...
P.S:
O Código em PHP para o Endereço de IP:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
Cumprimentos,
GnGz
-
Ok... Antes de mais obrigado GnGz e desculpa ser tão vira casacas :-X, mas o que eu gostava mesmo de fazer era retirar muitas das informações que estão neste site (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040 (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040)) :S
Quando comecei era apenas as horas que me interessvam mas agora era a temperatura e mais umas coisas.
Se me poderes ajudar obrigado :P
-
Se esse site tivesse uma api, era mais fácil... Mas porque não arranjas os teus sensores e um rtc?
Cumps :D
-
Não há maneira de criar uma pagina html, que faça a recolha dos dados do site (como podemos fazer como visual basic), alojar esse html no SD e depois recolher os dados dele para variáveis.
Ps: Os meus conhecimentos sobre isto não são muitos por isso não sei se estou a dizer alguma barbaridade xD
Cumps ;-)
-
Poder recolher do site até podes e até podes fazer directamente pelo arduino, mas se esse site tivesse uma api, fazias parsing e mandavas só o necessário para o Arduino. E assim ficava automatizado. Mas se quiseres como tu disseste também é possivel , mas não é automático...
Cumprimentos,
-
E como faço isso então? :P
-
Pegas numa Linguagem de Programação, comunicas com o site e tiras o código, fazes parsing dos dados que necessitas, depois escreves um ficheiro na localização do cartão sd e gravas...
Tens de dizer qual a language que te dás melhor...
Cumprimentos,
-
Txiii... Bicho de 7 cabeças :-X
O que costumo de programar é arduino. Logo a linguagem é C.
Obrigado por mr estares a ajudar =)
-
Pesquisa no google como podes obter o código html de um website ou coisa parecida... O Google é o teu melhor amigo. Vai postando aqui as coisas de forma ao pessoal ajudar-te.
http://curl.haxx.se/libcurl/c/example.html (http://curl.haxx.se/libcurl/c/example.html)
-
E se tentares encontrar algo que te dê a mesma informação em Json ou XML?
-
Pois até é melhor, não me lembrei das librarys para fazer parsing ao json e ao xml...
Sempre tens o Wunderground que têm uma api e que te dá os dados em XML e JSON... Não têm a hora , mas para isso arranjas um RTC e sincronizas a hora...
Wunderground para Braga: http://www.wunderground.com/cgi-bin/findweather/hdfForecast?query=braga (http://www.wunderground.com/cgi-bin/findweather/hdfForecast?query=braga)
Wunderground API: http://www.wunderground.com/weather/api (http://www.wunderground.com/weather/api)
A API tem um plano gratuito que te permite retirares os dados 10 vezes por minuto e 500 vezes por dia.
-
O RTC é aquele "componente" para saber a hora certo? é que por mais barato que isso seja não estava em conta de gastar mais dinheiro :S
-
Sim é.
-
=S eu quando "acedo ao site" recebo isto:
HTTP/1.1 404 Not Found
Date: Fri, 06 Jul 2012 17:10:04 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Last-Modified: Fri, 07 Jan 2005 23:09:11 GMT
ETag: "a8002c-2a6-3ed1e4e7193c0"
Accept-Ranges: bytes
Content-Length: 678
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: text/html
<HTML><HEAD><TITLE> Wait ... </TITLE>
<META HTTP-EQUIV="refresh" CONTENT="0;URL=/">
</HEAD><BODY><FONT FACE="verdana,arial" SIZE=2>
<!-- This page doensn't exist anymore -->
Click <A HREF="/">here[/url] to continue ...
</FONT>
<!-- adding to get to 512 bytes 000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
<!-- 000000000000000000000000000000000000000000000000000000000000000000000000000 -->
</BODY></HTML>
disconnecting.
não da para tirar a hora/ data por aqui? ("Date: Fri, 06 Jul 2012 17:10:04 GMT")
-
É pelo tal software em c ou é codigo do arduino? Posta o código.
-
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 199 };
byte server[] = { 69, 73, 153, 37 };
EthernetClient client;
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
if (client.connect(server, 80)) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
-
lol, isso não tá configurado para nenhum site. Eu ajudo, de que site queres puxar a informação?
-
:-X Obrigado xD Estou mesmo a nora
Eu queria tirar deste site (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040 (http://www.horadomundo.com/mundo/ciudad/openCity.do?nome=Braga&city_id=1890040))
-
Código enviado por PM.
-
Obrigado, a serio... Se soubesses as dores de cabeça que estava a ficar de tanto procurar no google e não encontrar nada... xD
-
Desculpa mas como fui sair só testei agora o código, agora como faço para guardar por exemplo as horas numa variável?
-
Vamos fazer diferente, com outro site com api para tirar os dados metreologicos. Para hora vamos arranjar outra maneira para ser mais fácil para o teu Arduino. Hoje não te posso ajudar, mas escreve aqui ao certo o que pretendes mesmo para te dar a melhor solução.
Enviado pelo telemóvel.
Cumps :D
-
GnGz enviei-te uma PM quando poderes diz alguma coisa ;)
Cumprimentos ;)
-
Não recebi nenhuma PM.
Cumps :D
-
Já experimentaste a a biblioteca Textfinder? O intuito dela é precisamente fazer o que pretendes, apesar de também poder ser usada para pesquisar streams serial. Vê em http://www.arduino.cc/playground/Code/TextFinder (http://www.arduino.cc/playground/Code/TextFinder)
-
Pois boa ideia.
-
connecting...
connected
HTTP/1.1 200 OK
Date: Mon, 09 Jul 2012 14:05:47 GMT
Set-Cookie: JSESSIONID=AEBDC07693A5F1CF28CE1763B08D4B8A; Path=/
Content-Type: text/html;charset=ISO-8859-1
Vary: Accept-Encoding
Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://www.horadomundo.com/">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="pragma" value="NO-CACHE">
<meta http-equiv="cache-control" value="NO-CACHE">
<meta http-equiv="expires" value="0">
<meta http-equiv="keywords" content='hora Braga,Hora certa em Braga,hora Portugal,Hora certa em Portugal,Tempo meteorológico actual Braga'>
<meta http-equiv="description" content='Hora certa em Braga(Portugal) e Tempo meteorológico actual'>
<title>Horadomundo.com : Hora certa em Braga (Portugal).</title>
<meta name="verify-v1" content="N+auz/2jD7/QHtZKkoQDHz1wWFiwJPSP+wUd8XnAonY=" />
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<script src="js/util.js" type="text/javascript"></script>
<body onload="IniciarRelojes24();ajustarTamano();">
<div id="header">
<div id="headerLogo">
<img src='images/cabecera_pt.gif' alt="Atua hora actual obtida usando o protocolo NTP" >
</div>
<div id="headerIcons">
<a href="/pda/index.jsp" title="Formato para PDA">
<img border="0" src="images/pda.png" width="22" height="22" alt="Formato para PDA">
[/url]
<a href="javascript:bookmarksite();" title="Adicionar aos Favoritos">
<img border="0" src="images/bookmark.png" width="22" height="22" alt="Adicionar aos Favoritos">
[/url]
<a href="javascript:print()">
<img border="0" src="images/fileprint.png" width="22" height="22" alt="">
[/url]
<a href="mailto:horadomundo@miswebs.es" title="Contacta connosco">
<img border="0" src="images/mail.png" width="22" height="22" alt="Contacta com os administradores de horadomundo.com">
[/url]
<a href="/servlet/urlInvoker?code=1">
<img border="0" src="images/spanishflag.jpg" width="22" height="22" >
[/url]
<a href="/servlet/urlInvoker?code=3">
<img border="0" src="images/englandflag.jpg" width="22" height="22" >
[/url]
</div>
<div id="headerBlueBar"></div>
</div>
<div id="content">
<div id="contentLeft">
<div id="contentMenu">
<div id="p7TMnav">
<div>
<a href="/index.jsp">
Iniciar
[/url]
</div>
<div>
<a href="/mudancahoraria/">
Mudança horária
[/url]
</div>
<div>
<a href="/mundo/">
Hora no mundo
[/url]
<div>
<a href="/mundo/africa.jsp">
África
[/url]
</div>
<div>
<a href="/mundo/americaNorte.jsp">
América do Norte
[/url]
</div>
<div>
<a href="/mundo/americaCentral.jsp">
América Central
[/url]
</div>
<div>
<a href="/mundo/americaSul.jsp">
América do Sul
[/url]
</div>
<div>
<a href="/mundo/asia.jsp">
Ásia
[/url]
</div>
<div>
<a href="/mundo/europa.jsp">
Europa
[/url]
</div>
<div>
<a href="/mundo/australia.jsp">
Pacífico / Oceânia
[/url]
</div>
</div>
<div>
<a href="/comofunciona/">
Como funciona?
[/url]
</div>
<div>
<a href="/cultura/">
Cultura
[/url]
<div>
<a href="/cultura/historia.jsp">
A história do relógio
[/url]
</div>
<div>
<a href="/cultura/zonahoraria.jsp">
Zonas horárias
[/url]
</div>
<div>
<a href="/cultura/denominacao.jsp">
Denominação
[/url]
</div>
<div>
<a href="/cultura/mudancashorarias.jsp">
Mudança horária
[/url]
</div>
<div>
<a href="/cultura/tiempociencia.jsp">
O tempo na ciência
[/url]
</div>
</div>
</div>
</div>
</div>
<div id="contentMain">
<div id="contentContent">
<!-- Indicador de navegacion -->
<div id="whereAreYouCity">
Estás aqui:
<a href="/index.jsp">Iniciar[/url]
>
<a href="/mundo/">
Que hora é no mundo?
[/url]
>
<a href='/mundo/europaPortada.jsp'>Europa[/url]
>
<a href='/mundo/pais/openCountry.do?country_id=pt&prefix=A&country_name=Portugal'>Portugal[/url]
> Braga
</div>
<!-- Para el tiempo meteorologico -->
<!-- Añadido para la i18n del código JS -->
<form name="lang" action="">
<input type="hidden" name="locale" value="pt" />
</form>
<script src="js/reloj.js" type="text/javascript" charset="ISO-8859-15"></script>
<div id="formHide">
<form name="servertime" action="">
<input type="hidden" name="diferenciaHorariaLocal" value="" />
<input type="hidden" name="miliSegundos" value="1341842747310" />
<input type="hidden" name="miliSegundosRemoto" value="1341846347310" />
</form>
</div>
<table summary="Tabela com a hora certa da cidade do mundo escolhida" width="100%">
<tr>
<td align="center">
<h1>
Hora certa em
Braga -
(Portugal)
</h1>
</td>
</tr>
<tr>
<td align="center" valign="middle" class="diferencia_horaria">
<div id="hora2" class="horaLocal">
Hora no mundo
</div>
</td>
</tr>
<tr>
<td align="center">
<div id="fecha2" class="fecha">
A actualizar a hora
</div>
</td>
</tr>
<tr>
<td align="center">
GMT +1
</td>
</tr>
<tr>
<td align="center">
<p>
Braga está a usar actualmente o horário de Verão.
</p>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
<table summary="Tempo meteorológico actual" width="100%">
<tr>
<td align=center>
<table width=65%>
<thead>
<tr><th colspan=3>Tempo meteorológico actual</th></tr>
</thead>
<tbody>
<tr>
<td rowspan=2><img src='images/weather/1cloud_norain.png'></td>
<td>Temperatura:</td>
<td> 20ºC </td>
</tr>
<tr>
<td align=left valign=middle>Vento:</td>
<td align=left><img src='images/weather/nnw.png' width=20 height=20 align=top> 20 km/h</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan=3 align=center>Última actualização: 09/07/2012 15:30</td>
</tr>
<tr>
<td colspan=3 align=center>
<p class="imagefooter">Distância à estação meteorológica: 47 kms</p>
</td>
</tr>
</tfoot>
</table>
</td>
</tr>
</table>
<table summary="Tabela com a hora certa da cidade do mundo escolhida" width="100%">
<tr>
<td align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-8412499929002098";
//hdm_OpenCityCentralBannerHor
google_ad_slot = "1680615502";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td align=center>
<table width=65%>
<thead>
<tr><th colspan=2>Sol</th></tr>
</thead>
<tbody>
<tr>
<td align=left>Nascer-do-Sol:</td>
<td align=left>06:07</td>
</tr>
<tr>
<td align=left>Pôr-do-Sol:</td>
<td align=left>21:10</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td align=center>
<table width=65%>
<thead>
<tr><th colspan=3>Lua</th></tr>
</thead>
<tbody>
<tr>
<td align=center rowspan=3><img src='images/moonphase/moon20.gif'></td>
<td align=left>Nascer-do-Lua:</td>
<td align=left>16:05</td>
</tr>
<tr>
<td align=left>Pôr-do-Lua:</td>
<td align=left>12:27</td>
</tr>
<tr>
<td align=left>Porcentaje iluminado:</td>
<td align=left>64%</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="center">
<h3>
Hora local:
<span id="hora1" class=hora>
A actualizar a hora
</span>
</h3>
</td>
</tr>
<tr>
<td align="center">
<div id="fecha1">
Hora actualizada.
</div>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td align="center">
A hora certa no mundo:
<a href="/mundo/africaTexto.jsp">África[/url] -
<a href="/mundo/americaNorteTexto.jsp">América do Norte[/url] -
<a href="/mundo/americaCentralTexto.jsp">América Central[/url] -
<a href="/mundo/americaSulTexto.jsp">América do Sul[/url] -
<a href="/mundo/asiaTexto.jsp">Ásia[/url] -
<a href="/mundo/europaTexto.jsp">Europa[/url] -
<a href="/mundo/australiaTexto.jsp">Pacífico / Oceânia[/url]
</td>
</tr>
</table>
</div>
</div>
<div id="contentRight">
<div id="contentAds">
<div id="borderLeftDashed">
<script type="text/javascript"><!--
google_ad_client = "pub-8412499929002098";
//hdm_GeneralDerechaSkyscraper
google_ad_slot = "6854390144";
google_ad_width = 120;
google_ad_height = 600;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="leftFooter">
<a href="/miswebs/">Miswebs[/url] © 2010
</div>
<div id="rightFooter">
horadomundo.com
vê a hora na internet
</div>
</div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript" charset="ISO-8859-15">
</script>
<script type="text/javascript">
_uacct = "UA-708940-4";
urchinTracker();
</script>
</body>
</html>
disconnecting.
-
Para obteres a hora com o TextFinder presumo que tenhas que procurar o texto "hora2" ou eventualmente "horaLocal" e depois é questão de veres qual é a ordem do parâmetro que corresponde às horas.
Vê o exemplo da biblioteca.
-
boas
possivel retirar ou ver o programa que fizemos no arduino?
é que ja nao trabalho no arduino que esta no meu robo, agora ja nao sei onde esta o programa que fiz para ele.
obrigado a todos
-
Identifico-me perfeitamente com essa situação, em especial devido a ter bastantes plataformas diferentes e varios computadores... e já me questionei diversas vezes acerca disso tambem, fazer reverse engineering do hex que vai para o mcu...
Que eu conheça não ha mesmo forma, apartir do momento em que "queimas" o programa para o microcontrolador não tens forma de o recuperar, mas espero estar enganado e espero que alguem diga que é possivel para poder tirar codigo perdido... ou pelo menos saber que funções tem alguns mcu's q tenho espalhados por casa antes de os reprogramar...
-
Não tens forma de recuperar o código fonte em C original, porque para ler o código é agarrar num programador ISP como por exemplo um USBasp ou um AVR Dragon, ler o código e se não estou em erro o AVR Studio até te faz o disassmbly é só abrir o .hex, mas o código que lá vai aparecer é assembly optimizado, não é totalmente legivel, e para mais tendo em conta que é Arduino, refazes o código mais rápidamente que o tempo que demoras a entender a primeira meia duzia de linhas de assembly.