Mudanças entre as edições de "Projeto de Estimador de Estado de Enlace - Semestre 2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(17 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 11: Linha 11:
 
*Sexta-feira - 15:40 às 17:30 (2h)
 
*Sexta-feira - 15:40 às 17:30 (2h)
 
Total = 20 hrs
 
Total = 20 hrs
 +
 +
=Links=
  
 
[[Progresso da bolsa - 2018/2]]
 
[[Progresso da bolsa - 2018/2]]
  
=Base de conhecimento=
+
[[Base de conhecimento]]
Este tópico foi idealizado com a intenção de juntar informações encontradas sobre o assunto do projeto para formar uma base de conhecimento para o bolsista atual e também para futuros estudantes do câmpus interessados sobre o assunto, seja para a continuação da mesma bolsa ou para um tcc.
 
==O que é o Contiki==
 
 
 
Contiki é um sistema operacional de código aberto que conecta micro controladores de baixa potência à Internet. Contiki apoia plenamente o padrão IPv6 e IPv4 e os últimos padrões wireless de baixo consumo: 6LoWPAN , RPL, COAP. Contiki é executado em uma grande quantidade de dispositivos sem fio de baixa potência (Contiki et al. 2013).
 
 
 
==Download Contiki e VMWare Player==
 
 
 
Para instalar o Contiki acesse:
 
*http://sourceforge.net/projects/contiki/files/Instant%20Contiki/
 
Foi escolhido o software VMWare Player pra simular a maquina virtual do Contiki. O VMWare pode ser baixado em:
 
*http://www.vmware.com/go/downloadplayer/
 
 
 
==Instalação==
 
 
 
Em breve...
 
 
 
Teclado de Inglês para Português:
 
> sudo dpkg-reconfigure keyboard-configuration
 
 
 
==Estrutura genérica da aplicação Contiki==
 
 
 
<syntaxhighlight lang=c>
 
PROCESS(process_name, "The string representation of the process name");
 
AUTOSTART_PROCESSES(&process_name);
 
 
 
PROCESS_THREAD(process_name, process_event_t, process_data_t){
 
PROCESS_BEGIN();
 
/*Execução do código*/
 
PROCESS_END();
 
}
 
</syntaxhighlight>
 
 
 
==Criando um makefile==
 
Para cada código .c que for criado, é necessária a criar o arquivo que contém as instruções para as ferramentas de compilação da tarefa, o conhecido makefile. O arquivo makefile deve estar no mesmo diretório do código criado para a aplicação Contiki. A seguir, alguns passos de como criar o seu makefile:
 
Em breve...
 
 
 
==Iniciando a implementação==
 
 
 
===Process===
 
Como visto anteriormente, o process é um método essencial para o funcionamento da aplicação. Nesta seção, iremos estar explicando melhor cada método da biblioteca process.h e como são implementados no Contiki.
 
 
 
Uma process_thread contém o código do processo. Nela há uma protothread que é invocada pelo escalonador de processos. A protothread é uma maneira de estruturar o código de modo que permita que o sistema execute outras atividades enquanto o código está aguardando que algum determinado evento aconteça.
 
 
 
Vamos agora para os métodos:
 
 
 
*PROCESS()                          -> Criador do processo.
 
*AUTOSTART_PROCESS()                -> Inicia o processo automaticamente passado o seu nome por referência.
 
*PROCESS_BEGIN()                    -> Define o inicio de um processo.
 
*PROCESS_END()                      -> Define o fim de um processo.
 
*PROCESS_WAIT_EVENT()                -> bloqueia o processo atualmente em execução até que o processo receba um evento.
 
*PROCESS_WAIT_EVENT_UNTIL()          -> Necessita ser passada uma condição que deve ser verdadeira para chamar o processo.
 
*PROCESS_EXITHANDLER(handler)        -> Especifica uma ação quando há uma saída do processo.
 
 
 
===Timers===
 
A utilização dos timers nos permitirá acionar eventos em um determinado momento, acelerando a transição de um
 
estado para outro e automatizar um determinado processo ou tarefa.
 
 
 
No Contiki existem 4 tipos de timers:
 
* Simple timer: A aplicação deve conferir manualmente se o timer expirou. ''#include "sys/timer.h"''.
 
* Callback timer: Quanto o timer expira o callback chama uma determinada função. ''#include "sys/ctimer.h"''.
 
* Timer Event: O mesmo que acima, mas em vez de chamar uma função, quando o timer expira posta um evento sinalizando sua expiração. ''#include "sys/etimer.h"''.
 
* Real time timer: O módulo em tempo real lida com o agendamento e execução de tempo real tarefas. #include ''"sys/rtimer.h"''
 
 
 
===Clock Timer===
 
A biblioteca clock é a interface entre o Contiki e a funcionalidade clock da plataforma especificada.
 
*CLOCK_SECOND - A biblioteca clock define esse macro para converter segundos na resolução de instante da plataforma.
 
 
 
===Interface de sistema de arquivo do Contiki===
 
A interface do sistema de arquivos Contiki (CFS) define uma API abstrata para ler diretórios e ler e gravar arquivos. A seguir alguns principais métodos e atributos da biblioteca.
 
 
 
*cfs_open (const char *name, int flags) - Abre um arquivo.
 
*cfs_close (int fd) - Fecha um arquivo.
 
*cfs_read (int fd, void *buf, unsigned int len) - Lê o dado de um arquivo aberto.
 
*cfs_write (int fd, const void *buf, unsigned int len) - Escreve dado em um arquivo aberto.
 
*cfs_seek (int fd, cfs_offset_t offset, int whence) - Procura uma posição especifica em um arquivo aberto.
 
*cfs_remove (const char *name) - Remove um arquivo.
 
*CFS_READ - Atributo que especifica ao cfs_open() que o arquivo aberto é para leitura.
 
*CFS_WRITE - Atributo que especifica ao cfs_open() que o arquivo aberto é para escrita.
 
  
 +
[[Contiki]]
  
=Resumo artigo estimador estado de link=
+
[[Resumo sobre estimadores de estado de enlace]]
*[https://dl.acm.org/citation.cfm?id=2240123 Link do artigo]
 
O estimador de estado de link de radios no WSN tem um impacto fundamental na performance de rede e também afeta o design de protocolo da camada superior. Este artigo fornece uma pesquisa abrangente sobre literatura relacionada, abrangendo características dos links de baixa potência, os conceitos fundamentais de estimativa de qualidade de links em RSSFs, uma taxonomia de estimadores de qualidade de link existentes e sua análise de desempenho.
 
  
A propagação dos sinais de rádio são afetados por muitos fatores que contribuem para a degradação do sinal. Os efeitos desses fatores são mais significantes se tratando de propagação sinal wireless com baixa potência, tipicamente usados em WSN. De fato, sua qualidade é instável e a conectividade é assimétrica.
+
[[Resumo "Estimador de link para redes de sensores sem fio baseada em Contiki"]]
  
Hoje em dia sabe-se que temos três fatores que levam a links inseguros:
+
[[Resumo artigo "Estimador de enlace sem fio 4B" de Rodrigo Fonseca]]
* O ambiente, no qual causam efeitos de propagação de multi-percursos, contribuindo com os ruídos.
 
* Interferência, que resulta em transmissões simultâneas dentro de uma rede sem fio.
 
* hardwares transmissores, que podem distorcer os sinais enviados e recebidos devido ao seu ruído interno. No WSN, esses tranmissores transmitem sinais de baixa potência, no qual são mais propensos à ruido, interferência e distorção de multipercursos.
 
  
Na literatura, muitos estudos focam na caracterização estatística de links de baixa potência através de uma teoria de estimação, que é comumente conhecida como Estimador de qualidade do link, para estudar os comportamentos analisados até então. Entregar dados através de links com alta qualidade melhora o rendimento da rede, limitando a perda de pacotes e maximizando vida útil, minimizando o número de retransmissões e evitando a reprogramação de rotas desencadeada pela falha dos links. A estimativa da qualidade dos links também desempenha um papel crucial para mecanismos de controle para manter a estabilidade da topologia. 
+
[[ Estudo sobre o protocolo collect ]]
  
==Hardware de comunicação do rádio== 
+
[[Processos no Contiki]]
  
 
=Referências=
 
=Referências=
 +
*[https://ri.ufs.br/bitstream/riufs/6858/2/Diego%20Assis%20Siqueira%20G%C3%B3is.pdf Simulação de pilhas de protocolos para internet das coisas]
 +
*[http://delivery.acm.org/10.1145/1540000/1537055/a77-ni.pdf?ip=191.36.11.51&id=1537055&acc=ACTIVE%20SERVICE&key=344E943C9DC262BB%2E20BA84C2D88F9A43%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&__acm__=1535991581_351562e2c5149fded41838285b2f1c15 On the Performance of Expected Transmission Count (ETX) for Wireless Mesh Networks]
 +
*[http://sbrt.org.br/sbrt2016/anais/ST02/1570269791.pdf Avaliação de Desempenho do Protocolo RPL em Ambientes com Mobilidade]
 +
*[https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2011-07-1/NET-2011-07-1_09.pdf RPL - Protocolo de roteamento para redes de baixa potência]
 
*[https://github.com/contiki-os/contiki/wiki/Contiki-Build-System Criando makefile]
 
*[https://github.com/contiki-os/contiki/wiki/Contiki-Build-System Criando makefile]
 
*[https://github.com/alignan/contiki/blob/master/core/sys/process.h Biblioteca process.h]  
 
*[https://github.com/alignan/contiki/blob/master/core/sys/process.h Biblioteca process.h]  
Linha 120: Linha 44:
 
*[http://www.ti.com/lit/ds/symlink/cc2420.pdf Radio cc2420]
 
*[http://www.ti.com/lit/ds/symlink/cc2420.pdf Radio cc2420]
 
*[https://github.com/marcozennaro/IPv6-WSN-book/tree/master/Releases Livro WSN Marco Zennaro]
 
*[https://github.com/marcozennaro/IPv6-WSN-book/tree/master/Releases Livro WSN Marco Zennaro]
 +
*[http://savannah.nongnu.org/projects/avr-libc/ Download avr-libc]
 +
*[https://www.nongnu.org/avr-libc/user-manual/install_tools.html Como instalar avr-libc]
 +
*[https://repositorio.ufsm.br/bitstream/handle/1/5353/FREITAS%2C%20JOSUE%20PAULO%20JOSE%20DE.pdf?sequence=1&isAllowed=y Uma proposta de arquitetura de pilha de comunicação em rede com um numero reduzido de camadas]
 +
*[https://anrg.usc.edu/contiki/index.php/Contiki_tutorials Tutoriais Contiki]

Edição atual tal como às 09h33min de 20 de dezembro de 2018