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

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 111: Linha 111:
 
   leds_on(LEDS_GREEN); // Acende o LED verde
 
   leds_on(LEDS_GREEN); // Acende o LED verde
 
   printf("A porta %d recebeu dados da porta %d com tamanho %d\n",
 
   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 da porta que enviou",
+
         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" )*/
 
           com tamanho "tamanho da mensagem" )*/
 
   leds_off(LEDS_GREEN); // Apaga o LED verde
 
   leds_off(LEDS_GREEN); // Apaga o LED verde
Linha 185: Linha 185:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=Semana 7 13/06 =
+
=Semana 7 DATA 13/06 =
  
 
*13/06 até 18/06 Estudar Cap.4 itens 4.1 e 4.2 do livro IoT
 
*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
 
*14/06 até 20/06 Estudar no cooja quais modelos de propagação de sinal são disponíveis
  
=Pontos a serem incluídos no cronograma=
+
=Semana 8 DATA 20/06 =
 
*Fazer um experimento para capturar LQI e RSSI no mote
 
*Fazer um experimento para capturar LQI e RSSI no mote
 +
 +
=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

Página do Bolsista

Nome: Gabriel Espíndola Soares de Souza

Local de Trabalho

Labic

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

Cronograma de Trabalho

  1. Estudo Básico de Redes
    1. 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))
    2. Duração: 8 semanas (até dia 31 de Junho)
    3. Colocar o detalhamento das tarefas no Trello (compartlhar com o professor: eraldo.silveira@gmail.com)
    4. 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).
  2. Estudo do Contiki/Cooja
    1. Instalar o Contiki/Cooja: http://www.contiki-os.org/start.html
    2. 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é)
    3. Propor e implementar um exempĺo sobre os nodos.
    4. 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
    5. Duração: 8 semanas (até dia 15 de Junho)
    6. 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


#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
}

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>

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 8 DATA 20/06

  • Fazer um experimento para capturar LQI e RSSI no mote

Semana 9 DATA 27/06

  • Fazer um programa para ler dados da leitura de estado e devolver esses dados para um arquivo XML