Simulando aplicações simples com TinyOS e Cooja
Este artigo é um tutorial que mostra como simular aplicações voltadas para Redes de Sensores sem Fio (RSSF), utilizando o TinyOS e o simulador Cooja. As aplicações que serão abordadas são: app Blink e um mini sistema distribuído simulando a mensagem de "eco" na arquitetura cliente-servidor.
Parte 2: Simulação 1 - Blink
1. Simulando a app Blink:
Inicialmente, irei demonstrar como simular uma simples aplicação exemplo do TinyOS, chamada Blink.
Em resumo, este exemplo tem como finalidade, apenas ligar e desligar os LEDs dos sensores. Para acessar as aplicações disponíveis, acesse o diretório "home/tinyos/apps". Nesta pasta você terá acesso a alguns apps exemplos do TinyOS.
2. Entre na pasta Blink e verifique os arquivos "BlinkAppC.nc" e "BlinkC.nc", o Makefile e o README.
2.1 Você poderá abrir os arquivos e ver os códigos.
3. Temos que compilar a aplicação, e para isso, abra o terminal e vá até ao diretório em que o respectivo exemplo se encontra. Digite o seguinte comando:
make telosb
Obs.: telosb é um tipo de sensor, executando o comando make telosb, você estará compilando a aplicação para o sensor telosb, o mais usado geralmente. Caso o make for executado sem erros, você visualizará este mesmo log de compilação.
4. Você irá perceber que na pasta em que se encontra os arquivos ".nc", foi criado uma pasta com o nome build, que contém a pasta telosb. Dentro dessa pasta, estão os arquivos resultantes da compilação.
5. Vá ao Desktop e abra o simulador Cooja (ele será pré-carregado pelo terminal, abrindo logo em seguida.)
5.1. File → New Simulation (Ctrl+n).
5.2. Dê um nome a sua simulação e clique em: Create.
5.3. Você verá que o ambiente de simulação será carregado.
6. Agora, temos que carregar o código compilado da aplicação para os sensores em nossa rede. Para isso, precisamos criar os sensores.
6.1. Motes → Add Motes → Create new mote type → Sky mote. 6.2. A seguinte janela irá aparecer, pedindo a descrição do sensor (nome e o firmware). O nome pode ser qualquer.
Já o firmware será o arquivo "main.exe", que se encontra no diretório ".../build/telosb" do app Blink.
Clique em Browse e navegue até selecionar o arquivo "main.exe". Clique em Open e em seguida, em Create. 6.3. Escolha a quantidade de sensores que você quer ter na sua simulação (para esta, basta um sensor) e clique em: Add motes.
6.4. Você verá que o nó foi criado na aba Network do simulador. Para ativar atributos desse sensor, clique no menu View e escolha o desejado. Como nossa aplicação irá trabalhar com os LEDs do sensor, queremos então, ativar os LEDs.
6.5. Antes de colocar a simulação para rodar, vá até a aba Simulation control e defina a velocidade para 100%, simulando numa métrica real de tempo.
6.6. Clique em Start.
A simulação irá iniciar, começando a piscar os LEDs após 4~6 segundos de simulação (este é o tempo que, supostamente, demora para carregar o código no sensor). Para parar a simulação, clique em Stop.
6.7. Você poderá ver o resultado no próprio nó e também na aba Timeline, na parte inferior do simulador Cooja.
Inicialmente, irei demonstrar como simular uma simples aplicação exemplo do TinyOS, chamada Blink.
Em resumo, este exemplo tem como finalidade, apenas ligar e desligar os LEDs dos sensores. Para acessar as aplicações disponíveis, acesse o diretório "home/tinyos/apps". Nesta pasta você terá acesso a alguns apps exemplos do TinyOS.
2. Entre na pasta Blink e verifique os arquivos "BlinkAppC.nc" e "BlinkC.nc", o Makefile e o README.
2.1 Você poderá abrir os arquivos e ver os códigos.
3. Temos que compilar a aplicação, e para isso, abra o terminal e vá até ao diretório em que o respectivo exemplo se encontra. Digite o seguinte comando:
make telosb
Obs.: telosb é um tipo de sensor, executando o comando make telosb, você estará compilando a aplicação para o sensor telosb, o mais usado geralmente. Caso o make for executado sem erros, você visualizará este mesmo log de compilação.
4. Você irá perceber que na pasta em que se encontra os arquivos ".nc", foi criado uma pasta com o nome build, que contém a pasta telosb. Dentro dessa pasta, estão os arquivos resultantes da compilação.
5. Vá ao Desktop e abra o simulador Cooja (ele será pré-carregado pelo terminal, abrindo logo em seguida.)
5.1. File → New Simulation (Ctrl+n).

6. Agora, temos que carregar o código compilado da aplicação para os sensores em nossa rede. Para isso, precisamos criar os sensores.
6.1. Motes → Add Motes → Create new mote type → Sky mote. 6.2. A seguinte janela irá aparecer, pedindo a descrição do sensor (nome e o firmware). O nome pode ser qualquer.
Já o firmware será o arquivo "main.exe", que se encontra no diretório ".../build/telosb" do app Blink.
Clique em Browse e navegue até selecionar o arquivo "main.exe". Clique em Open e em seguida, em Create. 6.3. Escolha a quantidade de sensores que você quer ter na sua simulação (para esta, basta um sensor) e clique em: Add motes.
6.4. Você verá que o nó foi criado na aba Network do simulador. Para ativar atributos desse sensor, clique no menu View e escolha o desejado. Como nossa aplicação irá trabalhar com os LEDs do sensor, queremos então, ativar os LEDs.


A simulação irá iniciar, começando a piscar os LEDs após 4~6 segundos de simulação (este é o tempo que, supostamente, demora para carregar o código no sensor). Para parar a simulação, clique em Stop.
6.7. Você poderá ver o resultado no próprio nó e também na aba Timeline, na parte inferior do simulador Cooja.
Eu queria saber quais são as diferenças entre o Contiki e o TinyOS?
Para um projeto de Automação Residencial, qual você usaria?
Eu pretendo ter uma Aplicação(Provavelmente em Django) rodado em um Raspberry Pi e comunicando com os Sensores e os Atuadores através CoAP, você vê algum problema nesta arquitetura?
Para eu ligar o Raspberry Pi aos Sensores, eu necessito de um radio do mesmo dos Sensores ligado no Raspberry Pi, correto? Tem como ligar esse radio por USB? Ou Somente pelo GPIO?
Se eu usar a MSP430 Launchpad + CC2500 para desenvolver, eu vou ter alguma limitação, e muito difícil fazer essa ligação?
Essa Telosb é fácil de encontrar?
Desculpa ai pela quantidade de perguntas e por que eu estou começando agora nesse mundo então tenho um monte de duvidas.