Projeto de Estimador de Estado de Enlace: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Sem resumo de edição |
|||
(45 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
=Página do Bolsista= | =Página do Bolsista= | ||
Nome: Gabriel Espíndola Soares de Souza | |||
=Local de Trabalho= | |||
Labic | |||
=Horário de Trabalho= | =Horário de Trabalho= | ||
*Bolsa de 20h | *Bolsa de 20h | ||
* | *Segunda-feira - 07:30 às 11:30 | ||
*Terça-feira - 07:30 às 11:30 | |||
*Quarta-feira - 07:30 às 11:30 | |||
*Quinta-feira - 07:30 às 11:30 | |||
*Sexta-feira - 07:30 às 11:30 | |||
=Cronograma de Trabalho= | =Cronograma de Trabalho= | ||
#Estudo Básico de Redes | #Estudo Básico de Redes | ||
##Referência: Livro de Redes de Computadores do Kurose | ##Referência: Livro de Redes de Computadores do Kurose e experimentos de rede (https://wiki.sj.ifsc.edu.br/index.php/Curso_T%C3%A9cnico_Integrado_de_Telecomunica%C3%A7%C3%B5es_-_Redes_de_Computadores_(RCO)) | ||
##Duração: | ##Duração: 8 semanas (até dia 31 de Junho) | ||
##Indicador de Sucesso: Resumo dos cap.1,2.1, 2.2, 2.5, 2.7, 3.1, 3.3, 4.1, 4.2,4.3,4.4,5.1, 5.2, 5.3,6.1,6.2, 6.3 - Fazer no Sharelatex em um modelo de relatório - compartilhar com o coordenador. | ##Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com) | ||
##Indicador de Sucesso: Resumo dos cap.1,2.1, 2.2, 2.5, 2.7, 3.1, 3.3, 4.1, 4.2,4.3,4.4,5.1, 5.2, 5.3,6.1,6.2, 6.3 - (i) Fazer no Sharelatex em um modelo de relatório - compartilhar com o coordenador. (ii) Execução dos experimentos de laboratório do link passado (resumo de atividades). | |||
#Estudo do Contiki/Cooja | #Estudo do Contiki/Cooja | ||
##Instalar o Contiki/Cooja: http://www.contiki-os.org/start.html | ##Instalar o Contiki/Cooja: http://www.contiki-os.org/start.html | ||
##Estudar no Contiki/Cooja dois exemplos do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl e escolher outro exemplo simples usando rime (falar com André) | ##Estudar no Contiki/Cooja dois exemplos do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl e escolher outro exemplo simples usando rime (falar com André) | ||
##Propor e implementar um exempĺo sobre os nodos. | |||
##Indicador de Sucesso: (i) discutir os dois exemplos no relatório (ii)propor um exemplo de comunicação usando 3 nodos para fazer algo específico no simulador | |||
##Duração: 8 semanas (até dia 15 de Junho) | |||
##Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com) | |||
=Semana 1 DATA 02/05= | |||
*02/05 até 03/05: Leitura e produção do resumo sobre os subcapítulos 1.1,1.2 e 1.3; | |||
*04/05 até 07/05: Instalação do Contiki/Cooja; | |||
*08/05 até 09/05: Leitura e produção do resumo sobre os subcapítulos 1.4,1.5,1.6,1.7; | |||
=Semana 2 DATA 09/05 = | |||
*10/05 até 15/05: Leitura e produção do resumos dos subcapítulos 2.1,2.2,2.5,2.7; | |||
*12/05 até 18/05: Estudar no Contiki/Cooja dois exemplos do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl e escolher outro exemplo simples usando rime; | |||
=Semana 3 DATA 16/05 = | |||
*16/05 até 17/05: Leitura e produção do resumo dos subcapítulos 3.1,3.3 | |||
*18/05 até 24/05: Leitura e produção do resumo dos subcapítulos 4.1,4.2,4.3,4.4 | |||
*18/05 até 25/05: Estudo no Contiki/Cooja os exemplos unicast-receiver.c e unicast-sender.c do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl | |||
=Semana 4 DATA 23/05 = | |||
*25/05 até 30/05: Leitura e produção do resumo dos subcapítulos 5.1,5.2,5.3 | |||
*23/05 até 30/05: Realização dos laboratórios 1 e 2 | |||
=Semana 5 DATA 30/05 = | |||
*30/05 até 05/06: Leitura e produção do resumo dos subcapítulos 6.1,6.2,6.3 | |||
*30/05 até 06/06: Realização do laboratórios 3 e 4 | |||
=Semana 6 DATA 06/06 = | |||
*06/06 até 13/06: Propor exemplo de 3 nodos para fazer algo no simulador | |||
<syntaxhighlight lang=c> | |||
#include "contiki.h" | |||
#include "lib/random.h" | |||
#include "sys/ctimer.h" | |||
#include "sys/etimer.h" | |||
#include "net/ip/uip.h" | |||
#include "net/ipv6/uip-ds6.h" | |||
#include "simple-udp.h" | |||
#include <stdio.h> | |||
#include <string.h> | |||
#include "dev/leds.h" | |||
#define UDP_PORT 1234 | |||
// Define a porta UDP | |||
#define SEND_INTERVAL (20 * CLOCK_SECOND) | |||
// Define o tempo qual equivale a SEND_INTERVAL | |||
#define SEND_TIME (random_rand() % (SEND_INTERVAL)) | |||
// Define o tempo qual equivale a SEND_TIME | |||
//------------------------------ VÁRIAVEIS ---------------------------------// | |||
static struct simple_udp_connection broadcast_connection; // Cria a estrutura do tipo simple_udp_connection com o nome de broadcast_connection | |||
static uint8_t blinks; | |||
//--------------------------------------------------------------------------// | |||
PROCESS(broadcast_example_process, "UDP broadcast example process"); /*broadcast_example_process é o nome do processo e "UDP broadcast example process" | |||
é o nome que será impresso no terminal*/ | |||
PROCESS(blink_process, "LED blink process"); // blink_process é nome do processo e "LED blink process" é o nome que será impresso no terminal | |||
AUTOSTART_PROCESSES(&broadcast_example_process,&blink_process); // Dá o comando para o contiki começar o processo após ser iniciado | |||
//------------------------------ RECEPTOR ----------------------------------// | |||
static void | |||
receiver(struct simple_udp_connection *c, | |||
const uip_ipaddr_t *sender_addr, | |||
uint16_t sender_port, | |||
const uip_ipaddr_t *receiver_addr, | |||
uint16_t receiver_port, | |||
const uint8_t *data, | |||
uint16_t datalen) /* Função que recebe os parâmetros na seguinte ordem (ponteiro apontando para uma struct do tipo simple_udp_connection, | |||
ponteiro com o tipo de endereço IP de quem enviou, número da porta quem enviou a mensagem, ponteiro com o tipo de endereço IP de quem recebeu, | |||
número da porta de quem recebeu a mensagem, ponteiro apontando para o tamanho 8bytes em constante inteiras, tamanho da mensagem enviada)*/ | |||
{ | |||
leds_on(LEDS_GREEN); // Acende o LED verde | |||
printf("A porta %d recebeu dados da porta %d com tamanho %d\n", | |||
receiver_port, sender_port, datalen); /* Mostra a mensagem (A porta "número do nó que recebeu" recebeu dados da porta "número do nó que enviou", | |||
com tamanho "tamanho da mensagem" )*/ | |||
leds_off(LEDS_GREEN); // Apaga o LED verde | |||
} | |||
//------------------------------ PROCESSOS -----------------------------// | |||
PROCESS_THREAD(broadcast_example_process, ev, data) /* Recebe o conteúdo do processo no qual possui os parâmetros na seguinte ordem (funções do processo, | |||
manipulador de evento, manipulador de dados)*/ | |||
{ | |||
static struct etimer periodic_timer; // Cria a estrutura do tipo etimer com o nome de periodic_timer | |||
static struct etimer send_timer; // Cria a estrutura do tipo etimer com o nome de send_timer | |||
uip_ipaddr_t addr; // Representação do endereço de IP | |||
PROCESS_BEGIN(); // Inicia o processo | |||
simple_udp_register(&broadcast_connection, UDP_PORT, | |||
NULL, UDP_PORT, | |||
receiver); /* Faz um registro UDP simples que recebe como parâmetros na ordem os seguintes itens | |||
(ponteiro apontando para struct do tipo simple_udp_connection, porta UDP local definida previamente, endereço de IP remoto, | |||
porta UDP remota definida previamente, um ponteiro para chamar uma função)*/ | |||
etimer_set(&periodic_timer, SEND_INTERVAL); // Seta o periodic_timer com o valor de SEND_INTERVAL | |||
while(1) // Loop infinito | |||
{ | |||
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); // Aguarda um evento acontecer, com uma condição extra, a qual está entre () | |||
etimer_reset(&periodic_timer); // Reseta o periodic_timer | |||
etimer_set(&send_timer, SEND_TIME); // Seta o send_timer com o valor de SEND_TIME | |||
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&send_timer)); // Aguarda um evento acontecer, com uma condição extra, a qual está entre () | |||
printf("Enviando transmissão\n"); // Mostra a mensagem (Enviando transmissão) | |||
uip_create_linklocal_allnodes_mcast(&addr); // Torna o IpV6 endereço local de todos os nós criados | |||
simple_udp_sendto(&broadcast_connection, "Test", 4, &addr); /* Envio de mensagem UDP que recebe como parâmetros na ordem os seguintes itens | |||
(ponteiro apontando para struct do tipo simple_udp_connection, um ponteiro apontando para os dados a serem enviados, | |||
o tamanho dos dados que serão enviados, endereço IP de quem irá receber)*/ | |||
} | |||
PROCESS_END(); // Finaliza o processo | |||
} | |||
// -------------------------------------------------------------------------// | |||
PROCESS_THREAD(blink_process, ev, data) /* Recebe o conteúdo do processo no qual possui os parâmetros na seguinte ordem (funções do processo, | |||
manipulador de evento, manipulador de dados)*/ | |||
{ | |||
static struct etimer send_timer; // Cria a estrutura do tipo etimer com o nome de send_timer | |||
static struct etimer et_blink; // Cria a estrutura do tipo etimer com nome et_blink | |||
PROCESS_BEGIN(); // Inicia o processo | |||
while(1) // Entra em um loop infinito | |||
{ | |||
etimer_set(&et_blink, SEND_TIME); // Seta o et_blink com o valor de SEND_TIME | |||
PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER); // Aguarda um evento acontecer, com uma condição extra, a qual está entre () | |||
leds_on(LEDS_RED); // Acende o LED vermelho | |||
printf("Uma mensagem foi enviada"); // Mostra a mensagem (Uma mensagem foi enviada) | |||
leds_on(LEDS_RED); // Apaga o LED vermelho | |||
} | |||
PROCESS_END(); // Finaliza o processo | |||
} | |||
</syntaxhighlight> | |||
*08/06 até 13/06 Gerar iso do instant contiki (https://www.turnkeylinux.org/blog/convert-vm-iso) e testar antes em uma virtualbox | |||
Peguei a referência desse site: https://www.sevenbits.io/blog/iso/puredarwin/osx/2015/03/11/convert-to-iso.html | |||
<code> | |||
sudo apt-get install qemu-img | |||
qemu-img convert -f vmdk nome_do_arquivo.vmdk novo_nome.raw | |||
dd if=novo_nome.raw of=novo_nome.iso | |||
</syntaxhighlight> | |||
=Semana 7 DATA 13/06 = | |||
*13/06 até 18/06 Estudar Cap.4 itens 4.1 e 4.2 do livro IoT | |||
*14/06 até 20/06 Estudar no cooja quais modelos de propagação de sinal são disponíveis | |||
=Semana | =Semana 8 DATA 20/06 = | ||
*Fazer um experimento para capturar LQI e RSSI no mote | |||
=Semana | =Semana 9 DATA 27/06 = | ||
*Fazer um programa para ler dados da leitura de estado e devolver esses dados para um arquivo XML |
Edição atual tal como às 10h34min de 28 de junho de 2018
1 Página do Bolsista
Nome: Gabriel Espíndola Soares de Souza
2 Local de Trabalho
Labic
3 Horário de Trabalho
- Bolsa de 20h
- Segunda-feira - 07:30 às 11:30
- Terça-feira - 07:30 às 11:30
- Quarta-feira - 07:30 às 11:30
- Quinta-feira - 07:30 às 11:30
- Sexta-feira - 07:30 às 11:30
4 Cronograma de Trabalho
- Estudo Básico de Redes
- Referência: Livro de Redes de Computadores do Kurose e experimentos de rede (https://wiki.sj.ifsc.edu.br/index.php/Curso_T%C3%A9cnico_Integrado_de_Telecomunica%C3%A7%C3%B5es_-_Redes_de_Computadores_(RCO))
- Duração: 8 semanas (até dia 31 de Junho)
- Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com)
- Indicador de Sucesso: Resumo dos cap.1,2.1, 2.2, 2.5, 2.7, 3.1, 3.3, 4.1, 4.2,4.3,4.4,5.1, 5.2, 5.3,6.1,6.2, 6.3 - (i) Fazer no Sharelatex em um modelo de relatório - compartilhar com o coordenador. (ii) Execução dos experimentos de laboratório do link passado (resumo de atividades).
- Estudo do Contiki/Cooja
- Instalar o Contiki/Cooja: http://www.contiki-os.org/start.html
- Estudar no Contiki/Cooja dois exemplos do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl e escolher outro exemplo simples usando rime (falar com André)
- Propor e implementar um exempĺo sobre os nodos.
- Indicador de Sucesso: (i) discutir os dois exemplos no relatório (ii)propor um exemplo de comunicação usando 3 nodos para fazer algo específico no simulador
- Duração: 8 semanas (até dia 15 de Junho)
- Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com)
5 Semana 1 DATA 02/05
- 02/05 até 03/05: Leitura e produção do resumo sobre os subcapítulos 1.1,1.2 e 1.3;
- 04/05 até 07/05: Instalação do Contiki/Cooja;
- 08/05 até 09/05: Leitura e produção do resumo sobre os subcapítulos 1.4,1.5,1.6,1.7;
6 Semana 2 DATA 09/05
- 10/05 até 15/05: Leitura e produção do resumos dos subcapítulos 2.1,2.2,2.5,2.7;
- 12/05 até 18/05: Estudar no Contiki/Cooja dois exemplos do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl e escolher outro exemplo simples usando rime;
7 Semana 3 DATA 16/05
- 16/05 até 17/05: Leitura e produção do resumo dos subcapítulos 3.1,3.3
- 18/05 até 24/05: Leitura e produção do resumo dos subcapítulos 4.1,4.2,4.3,4.4
- 18/05 até 25/05: Estudo no Contiki/Cooja os exemplos unicast-receiver.c e unicast-sender.c do diretório /home/user/contiki/examples: ipv6/simple-udp-rpl
8 Semana 4 DATA 23/05
- 25/05 até 30/05: Leitura e produção do resumo dos subcapítulos 5.1,5.2,5.3
- 23/05 até 30/05: Realização dos laboratórios 1 e 2
9 Semana 5 DATA 30/05
- 30/05 até 05/06: Leitura e produção do resumo dos subcapítulos 6.1,6.2,6.3
- 30/05 até 06/06: Realização do laboratórios 3 e 4
10 Semana 6 DATA 06/06
- 06/06 até 13/06: Propor exemplo de 3 nodos para fazer algo no simulador
#include "contiki.h"
#include "lib/random.h"
#include "sys/ctimer.h"
#include "sys/etimer.h"
#include "net/ip/uip.h"
#include "net/ipv6/uip-ds6.h"
#include "simple-udp.h"
#include <stdio.h>
#include <string.h>
#include "dev/leds.h"
#define UDP_PORT 1234
// Define a porta UDP
#define SEND_INTERVAL (20 * CLOCK_SECOND)
// Define o tempo qual equivale a SEND_INTERVAL
#define SEND_TIME (random_rand() % (SEND_INTERVAL))
// Define o tempo qual equivale a SEND_TIME
//------------------------------ VÁRIAVEIS ---------------------------------//
static struct simple_udp_connection broadcast_connection; // Cria a estrutura do tipo simple_udp_connection com o nome de broadcast_connection
static uint8_t blinks;
//--------------------------------------------------------------------------//
PROCESS(broadcast_example_process, "UDP broadcast example process"); /*broadcast_example_process é o nome do processo e "UDP broadcast example process"
é o nome que será impresso no terminal*/
PROCESS(blink_process, "LED blink process"); // blink_process é nome do processo e "LED blink process" é o nome que será impresso no terminal
AUTOSTART_PROCESSES(&broadcast_example_process,&blink_process); // Dá o comando para o contiki começar o processo após ser iniciado
//------------------------------ RECEPTOR ----------------------------------//
static void
receiver(struct simple_udp_connection *c,
const uip_ipaddr_t *sender_addr,
uint16_t sender_port,
const uip_ipaddr_t *receiver_addr,
uint16_t receiver_port,
const uint8_t *data,
uint16_t datalen) /* Função que recebe os parâmetros na seguinte ordem (ponteiro apontando para uma struct do tipo simple_udp_connection,
ponteiro com o tipo de endereço IP de quem enviou, número da porta quem enviou a mensagem, ponteiro com o tipo de endereço IP de quem recebeu,
número da porta de quem recebeu a mensagem, ponteiro apontando para o tamanho 8bytes em constante inteiras, tamanho da mensagem enviada)*/
{
leds_on(LEDS_GREEN); // Acende o LED verde
printf("A porta %d recebeu dados da porta %d com tamanho %d\n",
receiver_port, sender_port, datalen); /* Mostra a mensagem (A porta "número do nó que recebeu" recebeu dados da porta "número do nó que enviou",
com tamanho "tamanho da mensagem" )*/
leds_off(LEDS_GREEN); // Apaga o LED verde
}
//------------------------------ PROCESSOS -----------------------------//
PROCESS_THREAD(broadcast_example_process, ev, data) /* Recebe o conteúdo do processo no qual possui os parâmetros na seguinte ordem (funções do processo,
manipulador de evento, manipulador de dados)*/
{
static struct etimer periodic_timer; // Cria a estrutura do tipo etimer com o nome de periodic_timer
static struct etimer send_timer; // Cria a estrutura do tipo etimer com o nome de send_timer
uip_ipaddr_t addr; // Representação do endereço de IP
PROCESS_BEGIN(); // Inicia o processo
simple_udp_register(&broadcast_connection, UDP_PORT,
NULL, UDP_PORT,
receiver); /* Faz um registro UDP simples que recebe como parâmetros na ordem os seguintes itens
(ponteiro apontando para struct do tipo simple_udp_connection, porta UDP local definida previamente, endereço de IP remoto,
porta UDP remota definida previamente, um ponteiro para chamar uma função)*/
etimer_set(&periodic_timer, SEND_INTERVAL); // Seta o periodic_timer com o valor de SEND_INTERVAL
while(1) // Loop infinito
{
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&periodic_timer)); // Aguarda um evento acontecer, com uma condição extra, a qual está entre ()
etimer_reset(&periodic_timer); // Reseta o periodic_timer
etimer_set(&send_timer, SEND_TIME); // Seta o send_timer com o valor de SEND_TIME
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&send_timer)); // Aguarda um evento acontecer, com uma condição extra, a qual está entre ()
printf("Enviando transmissão\n"); // Mostra a mensagem (Enviando transmissão)
uip_create_linklocal_allnodes_mcast(&addr); // Torna o IpV6 endereço local de todos os nós criados
simple_udp_sendto(&broadcast_connection, "Test", 4, &addr); /* Envio de mensagem UDP que recebe como parâmetros na ordem os seguintes itens
(ponteiro apontando para struct do tipo simple_udp_connection, um ponteiro apontando para os dados a serem enviados,
o tamanho dos dados que serão enviados, endereço IP de quem irá receber)*/
}
PROCESS_END(); // Finaliza o processo
}
// -------------------------------------------------------------------------//
PROCESS_THREAD(blink_process, ev, data) /* Recebe o conteúdo do processo no qual possui os parâmetros na seguinte ordem (funções do processo,
manipulador de evento, manipulador de dados)*/
{
static struct etimer send_timer; // Cria a estrutura do tipo etimer com o nome de send_timer
static struct etimer et_blink; // Cria a estrutura do tipo etimer com nome et_blink
PROCESS_BEGIN(); // Inicia o processo
while(1) // Entra em um loop infinito
{
etimer_set(&et_blink, SEND_TIME); // Seta o et_blink com o valor de SEND_TIME
PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER); // Aguarda um evento acontecer, com uma condição extra, a qual está entre ()
leds_on(LEDS_RED); // Acende o LED vermelho
printf("Uma mensagem foi enviada"); // Mostra a mensagem (Uma mensagem foi enviada)
leds_on(LEDS_RED); // Apaga o LED vermelho
}
PROCESS_END(); // Finaliza o processo
}
- 08/06 até 13/06 Gerar iso do instant contiki (https://www.turnkeylinux.org/blog/convert-vm-iso) e testar antes em uma virtualbox
Peguei a referência desse site: https://www.sevenbits.io/blog/iso/puredarwin/osx/2015/03/11/convert-to-iso.html
sudo apt-get install qemu-img
qemu-img convert -f vmdk nome_do_arquivo.vmdk novo_nome.raw
dd if=novo_nome.raw of=novo_nome.iso
</syntaxhighlight>
11 Semana 7 DATA 13/06
- 13/06 até 18/06 Estudar Cap.4 itens 4.1 e 4.2 do livro IoT
- 14/06 até 20/06 Estudar no cooja quais modelos de propagação de sinal são disponíveis
13 Semana 9 DATA 27/06
- Fazer um programa para ler dados da leitura de estado e devolver esses dados para um arquivo XML