Regras de Configuração dos Filtros Mikrotik

Postado em

Olá!

Para deixar como referencia, fica aqui o link para uma lista de filtros para o firewall do mikrotik. Isso ajudou bastante a estabilizar meu link em casa.

Link: http://forum.mikrotik.com/viewtopic.php?t=76314

Até!

Nova Stack no meu GitHUB

Postado em Atualizado em

AppnoteSBOlá!

Mensagem rápida. Estou desenvolvendo alguns códigos para o nRF24l01+ da nordic. Esse item é um radio 2.4GHz, com payload de 32B e tem um protocolo de link layer muito interessante chamado enhanced shockburst.

Já tenho uma stack bem rudimentar que está permitindo a comunicação ponto a ponto de dois cortex-m3 e o mesmo está disponível para visualização no meu GITHUB.

Segundo o meu roadmap pessoal, temos os próximos passos:

  • Implementação de uma camada de rede e de transporte (3 e 4 do modelo OSI) – Em andamento;
  • Utilização da tecnologia Multiceiver para redes mesh;
  • Acender uma lampada.

Assim, aguardem movimentos neste blog em breve.

Ah, meu GitHUB está na coluna a direita, mas se quiser busque por nrf24lib em https://github.com/marcelommcouto/

Até!

Mudando o repositório (de novo) para GitHUB

Postado em

Olá!

Estou aqui para avisar que o meu repositório de projetos mudou novamente do google code para o github. Agora não é minha culpa pois o Google resolveu descontinuar o serviço e por isso estou de mudança.

Os projetos já foram migrados para sua nova casa no github e esperem novidades!

Ah… Link: https://github.com/marcelommcouto

Até!

Documentos sobre nRF24L01

Postado em

index

Olá.

Estava procurando informações sobre como funciona o nRF24L01 para colocar no meu helicóptero de controle remoto e achei um material bem interessante em: http://blog.diyembedded.com/

Esse componente é um item fácil de achar e muito baratinho (comprei dois módulos por $10 na DX) e muito versátil pelo que andei vendo. O site tem uma explicação básica para aqueles que querem usar este radio da Nordic.

                                       imagessindex

Para mim esse rádio tem duas funções hoje:

  1. Me colocar novamente nas redes PAN (802.15.4) e desenvolver meu sistema de automação inteligente;
  2. Ser a base do meu protocolo de comunicação 6lowpan que vou fazer para o item 1.

Vamos ver no que dá!

Até!

Zicou!!! Mudando do GIT para o SVN (de novo)

Postado em Atualizado em

Olá…

Caros amigos frequentadores… Tive um problemão com o servidor GIT no meu LPCxpresso e tive de desfazê-lo e com isso remover do Google Code também!

images_homer Mas não temam (ou não) pois recoloquei tudo na mesma conta do Google Code mas usando o versionamento SVN.

Portanto, este é um aviso pois o método de sincronismo mudou e quem for sincronizar o seu repositório local não vai achar… Para verificar como fazer o seu novo sincronismo, consulte a minha página do Google Code e o Google!

No mais… Até!

Integrando a Stack FatFS no FreeRTOS + LPC1768

Postado em

Olá!

Hoje vamos ver como integrar a projetos com freeRTOS a pilha Chan FatFS, que permite ao microcontrolador LPC1768 acessar sistemas com sistema de arquivos FAT32. Aqui não vou focar nas configurações de hardware e nem nas pinagens pois isso pode ser achado facilmente na Internet.

indexPrimeiro você precisa de um Workspace já pronto para trabalhar com FreeRTOS. Como montar tal sistema inicial pode ser visto aqui neste blog. Depois, baixe o arquivo fonte com a pilha FatFs na pagina oficial do projeto AQUI (A versão usada é a v0.11) e descompacte a mesma em uma pasta qualquer em seu computador.

Screenshot from 2015-02-14 20:37:22Vá no seu workspace, no projeto principal onde já tem a pasta do freertos e crie uma pasta com o nome de fatfs e copie tudo que estava na pasta descompactada para cá. neste momento, se você expandir os diretórios, encontrará algo semelhante ao encontrado a esquerda.

Depois, vamos excluir do build tudo aquilo que não importa e só lembrando que aqui não se apaga nada, para tornar facil a atualização da stack e o seu entendimento. Exemplo: Atualizei da Stack v0.10c para a v0.11 somente substituindo seus arquivos que são compilados e não encontrei problemas.

Exclua do BUILD (conforme vimos no post de freeRTOS):

  • diskio.c
  • Na pasta option, exclua tudo exceto o arquivo syscall.c

Agora, crie uma pasta em fatfs com o nome user_config, que armazenará todos os arquivos adicionais para que possamos integrar essa stack no freertos e com os demais periféricos do LPC1768. O conteúdo dessa pasta está disponível no meu Google Code e tem os arquivos de comunicação SPI, configuração RTC, o arquivo de abstração que conecta a stack com as funções de acesso ao SDcard e ao USB. Neste ultimo caso, não estamos usando a diskio.c para o arquivo de abstração mas no futuro corrigirei isso.

As ultimas modificações são na stack diretamente e como na stack freertos, nós vamos mexer o mínimo possível para tornar as atualizações faceis. Os arquivos que modificaremos são:

  • ffconfig.h (Que configura os recursos da stack FatFS) e,
  • Syscall.c (Que configura a integração da FatFS com o FreeRTOS.

No ffconfig.c as modificações que devemos fazer são:

  • Adicionar o cabeçario #include “FreeRTOS.h” e #include “semphr.h” no inicio do arquivo;
  • Mude a opção _FS_REENTRANT  para 1, o _FS_TIMEOUT para 10000 e _SYNC_t para SemaphoreHandle_t;

No syscall.c retire os comentários de todas as funções que falam do FreeRTOS e comente as demais pois por padrão vem descomentado as funções que tratam o Win32 (Bleh!).

Se não quiser ter esse trabalho, vá no meu Google Code e busque os arquivos já modificados.

Finalizando, no seu main.c adicione o código abaixo:

#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif

#include "cr_section_macros.h"
#include "stdio.h"

#include "FreeRTOS.h"
#include "task.h"

#include "ff.h"

void blinkLed(void *pvParameters)
{
    LPC_GPIO0->FIODIR |= (1<<4);

    while(1)
    {
        LPC_GPIO0->FIOSET = (1<<4);
        vTaskDelay(500/portTICK_RATE_MS);
        LPC_GPIO0->FIOCLR = (1<<4);
        vTaskDelay(500/portTICK_RATE_MS);
    }
}

void sdTimerSupport(void *pvParameters)
{
	while(1)
	{
		disk_timerproc();
		vTaskDelay(10/portTICK_RATE_MS);
	}
}

void sdMount(void *pvParameters)
{
	FATFS FatFs;   /* Work area (file system object) for logical drive */
	FIL fil;       /* File object */
	char line[82]; /* Line buffer */
	FRESULT fr;    /* FatFs return code */

        printf("Montando...\r\n");

	/* Register work area to the default drive */
	fr = f_mount(&FatFs, "", 1);

	printf("Abrindo...\r\n");

	/* Open a text file */
	fr = f_open(&fil, "message.txt", FA_READ);
	if (fr)
		printf("Erro..\r\n");

	/* Read all lines and display it */
	while (f_gets(line, sizeof line, &fil))
		printf(line);

	printf("Final!\r\n");

	/* Close the file */
	f_close(&fil);

	while(1);
}

int main(void)
{
   SystemCoreClockUpdate();

   /* create task to blink led */
   xTaskCreate(blinkLed, "ledact", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
   /* Create task to control SD timer */
   xTaskCreate(sdTimerSupport, "tsdsup", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
   /* Create task to mount and read SDCard */
   xTaskCreate(sdMount, "sdmount", configMINIMAL_STACK_SIZE * 7, NULL, tskIDLE_PRIORITY, NULL);

   /* Start the scheduler. */
   vTaskStartScheduler();

   while(1);

   return 0;
}

Compile o projeto e antes de iniciar, adicione o arquivo message.txt em um cartão SD formatado com FAT32 com um texto qualquer dentro dele.

Ao iniciar, o microcontrolador vai montar o cartão e colocar no console o que estiver escrito no arquivo message.txt

Bom, no mais, é só isso… Vamos pensar um pouco!

Até!

Atualização no Google Code

Postado em

Olá!

Pessoal, só para lembrar que todos os códigos estão disponíveis no meu google code para download. Não espere nada separado pois o objetivo é realmente montar um “Projetão” com todas as pilhas e só usar obviamente cada coisa quando necessário.

Na revisão de hoje, eu atualizei a stack fatfs para a versão v0.11, adicionei rotinas de uso do RTC para a stack do FatFS, adicionei um suporte a multiplas unidades fisicas nos meus arquivos de personalização da pilha nxpUSBlib para usar SDCard e pendrive (ainda em testes).

Ainda, a partir de agora, vou colocar o arquivo main.c com o nome do exemplo que estou usando para facilitar o entendimento. Portanto, quando eu estiver testando sdcard com o freertos e o fatfs achará no meu repositório o sdcard com o fatfs chamado main_ex_sdcard.c

Breve mais novidades!

Até!