Projeto de Estimador de Estado de Enlace

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

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