M d Y

Ubuntu 12.04 – Configurando Samba (3.6.3)


Olá,

Hoje decidi formar meu servidor de casa e quando "terminei" de configurar o samba eu tive alguns problemas.

Quando eu estava tentando conectar ao meu Ubuntu 12.04 server, eu recebia a seguinte mensagem: "Failed to Retrieve Share List from Server"

Para resolver eu adicionei dentro do arquivo de configuração /etc/samba/smb.conf na seção [globals] o seguinte:

name resolve order = bcast host

Eu fiz isso no meu computador também. (Mas não tenho certeza se isso é necessário, eu acredito que não). Reiniciei o servidor e esta funcionando.

Dentro do meus arquivos de logs /var/log/samba/log.XXXX eu estava recebendo diversas mensagens de smb_panic:

[2013/03/07 22:13:43.607536, 0] lib/util.c:1122(smb_panic) smb_panic(): calling panic action [/usr/share/samba/panic-action 1928]

(Novamente, eu não tenho certeza que essa mensagem esta exclusivamente relacionada com esse problema e acredito que não, mas não custa nada deixar claro que eu também tinha ela.)

Outra mensagem que eu estava vendo quando utilizava smbclient -L SERVER era:

NT_STATUS_PIPE_BROKEN

Se você deseja ver todo o meu smb.conf continue lendo!

O meu arquivo de configurações é uma pasta Compartilhados que é somente leitura mas que qualquer um pode acessar (guest) e a outra é Writable, onde todos podem escrever. (guest) Ou seja, minha configuração não utiliza de autenticação para os meus compartilhamentos.

Se eu lembrar de mais algum detalhe eu aviso vocês.

Thanks,
Matheus

PS: Eu acredito que este não seja um problema exclusivo do Ubuntu 12.04 ou 12.10 mas sim alguma modificação do Samba

Read more »

M d Y

Projetos – Git Hub


Boa tarde,

Alguns dias atrás eu comecei a trabalhar com o Git Hub, enviando meus projetos mais recentes para ele.

No momento, estou trabalhando pesado no meu RF24SH Protocolo, o qual é um protocolo para o modulo wifi NRF24L01+ que provê um Protocolo para criação de uma rede de nodos. A diferença básica entre a biblioteca do Maniacbug a RF24Network, é que você não precisa definir Canais/ID por vocês mesmo. A biblioteca fornece um protocolo que trata a distribuição de nodos. Quando um novo nodo conecta a mesma, este vai se comunicar e descobrir com quem ele consegue se comunicar e então enviará uma requisição de configuração a estação "Master", quando a estação "Master" recebe essa requisição, ela verifica os canais disponiveis e em quais nodos e envia uma mensagem com as definições para este novo nodo utilizar. Então esta biblioteca é fácil de ser utilizada por iniciantes e talvez também seja mais fácil de colocar a mesma em produtos e distribuir para usuários leigos. (Se você fizer isso e pudesse me avisar, isso seria muito bom)

Ainda tem muito trabalho a ser feito no Protocolo, mas a biblioteca já esta funcional e possui exemplos. A página do RF24SH fornece mais detalhes, se você ainda tiver dúvidas, entre em contato.

Outro projeto que estou trabalhando é o Pocket ImAT - Pocket Image Analysis Tools, o qual é um programa (por enquanto) que fornece ao usuário maneiras de medir objetos em images. Por exemplo, se você estiver trabalhando com imagens de microscopios e possui um monte de objetos nessa imagem e possui uma escala, você pode definir o tamanho da escala, e adicionar "reguas" aos objetos e depois salva-las assim como outras informações como a distancia entre os dois pontos do objeto. Este projeto começou quando um amigo me falou que eles precisariam de um programa como esse para fazer esse tipo de análise, já que os que eles utilizavam estava desatualizado.

Voltando ao Git Hub... você pode encontrar meu Git Hub -> Matheus (X-warrior) Bratfisch Git Hub

Se você tiver alguma dúvida, sugestão, etc, entre em contato.
Abraços,
Matheus

M d Y

Compilando para Teensy 3.0 no Windows utilizando Makefile


Boa tarde,

Se você não quer utilizar a Arduino IDE (Teensy IDE?) para programar e enviar seus códigos para o Teensy 3.0 você pode utilizar o Makefile.

A última versão da IDE por enquanto você consegue no Forum do PJRC . Como ele diz, existe um exemplo de Makefile na pasta: "arduino-1.0.3\hardware/teensy/cores/teensy3" porém para utiliza-lo você precisa fazer alguns passos como adicionar o "arduino-1.0.3\hardware\tools\arm-none-eabi\bin" ao seu PATH para que possa utilizar os executaveis desta pasta tranquilamente. Para isso abra o seu Prompt de Comando: Iniciar - Executar - CMD

E em seguida insira o seguinte comando:

PATH = %PATH%;C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools\arm-none-eabi\bin

[Se você não quer entender as modificações que eu realizei va para o final da publicação]

Para garantir que não estragaria o arquivo, fiz uma copia completa do diretório. Em seguida ao executar o

cs-make.exe

Recebia a seguinte mensagem de erro:

C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\Projects\Example_not_working>cs-make.exe
C:/Users/X-warrior/Desktop/tools/arm-none-eabi/bin/arm-none-eabi-gcc -Wall -g -Os -mcpu=cortex-m4 -mthumb -nostdlib -MMD -DF_CPU=48000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I. -c -o analog.o analog.c
process_begin: CreateProcess(NULL, C:/Users/X-warrior/Desktop/tools/arm-none-eabi/bin/arm-none-eabi-gcc -Wall -g -Os -mcpu=cortex-m4 -mthumb -nostdlib -MMD -DF_CPU=48000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I. -c -o analog.o analog.c, ...) failed.
make (e=2): The system cannot find the file specified.
cs-make.exe: *** [analog.o] Error 2

Verificando o Makefile decidi alterar as configurações das váriaveis para caminho completo já que eu fiz uma copia do teeensy/core.
TOOLSPATH = C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools
LIBRARYPATH = Deixei como estava
COMPILERPATH = C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools\arm-none-eabi\bin

O erro continuou o mesmo, continuando a entender o código percebi os "abspath" e pensei que poderia estar dando problema por eu estar usando caminhos absolutos então removi todos os "$(abspath" lembrando que o mesmo possui um parêntesis que fecha o comando. Então por exemplo:

$(abspath $(COMPILERPATH)) ficará $(COMPILERPATH)

Tentando compilar novamente com cs-make, iniciou a compilar mas no final aconteceu o seguinte erro:

C:\Users\X-warrior\Desktop\arduino-1.0.3\hardware\tools\arm-none-eabi\bin/arm-none-eabi-objcopy -O ihex -R .eeprom main.elf main.hex
C:\Users\X-warrior\Desktop\arduino-1.0.3\hardware\tools/teensy_post_compile -file=main -path= -tools=C:\Users\X-warrior\Desktop\arduino-1.0.3\hardware\tools
Opening Teensy Loader...
Teensy Loader could not find the file main
cs-make.exe: *** [main.hex] Error 1

Analisando o arquivo encontrei: "path=$(shell pwd)" e me pareceu que pwd não era um comando válido de shell em windows. Testei no console, e não era. Então alterei para "path=$(shell echo %cd%)". Antes de compilar novamente decidi tentar limpar os arquivos que já foram gerados com cs-make clean

O erro encontrado foi:

C:\Users\X-warrior\Desktop\arduino-1.0.3\Projects\Example_not_working>cs-make.exe clean
rm -f *.o *.d main.elf main.hex
process_begin: CreateProcess(NULL, rm -f *.o *.d main.elf main.hex, ...) failed.
make (e=2): The system cannot find the file specified.
cs-make.exe: *** [clean] Error 2

E me pareceu que ele estava chamando rm -f no windows o que também não é um comando válido. Alterei o comando rf para:

del *.o
del *.d
del $(TARGET).elf
del $(TARGET).hex

Com isso consegui limpar os arquivos. E tentei compilar novamente e funcionou! Realizei uns testes alterando o main.cpp e estava sendo compilado e enviado ao meu Teensy 3.0 como deveria ser. De qualquer forma trabalhar com todos aqueles arquivos e os meus juntos seria um tanto quanto trabalhoso, então copiei todos os arquivos com exceção do Makefile e do main.cpp para teensy/ dentro do meu projeto. Assim eu conseguiria compilar com o Makefile sem ter todos os arquivos em uma confusão. Alterei os CPP e C files para:

C_FILES := $(wildcard *.c) \
$(wildcard $(addprefix teensy/, *.c)) \
$(wildcard $(addprefix teensy/util, *.c)) \
$(wildcard $(addprefix teensy/avr, *.c))
CPP_FILES := $(wildcard *.cpp) \
$(wildcard $(addprefix teensy/, *.cpp)) \
$(wildcard $(addprefix teensy/util, *.cpp)) \
$(wildcard $(addprefix teensy/avr, *.cpp))
OBJS := $(C_FILES:.c=.o) $(CPP_FILES:.cpp=.o)

As configurações do linker para:

LDFLAGS = -Os -Wl,--gc-sections -mcpu=cortex-m4 -mthumb -Tteensy/mk20dx128.ld

E para ficar consistente:

$(TARGET).elf: $(OBJS) teensy/mk20dx128.ld
$(CC) $(LDFLAGS) -o $@ $(OBJS)

E encontrei o seguinte erro:

teensy/keylayouts.c:1: fatal error: avr/pgmspace.h: No such file or directory
compilation terminated.
cs-make: *** [teensy/keylayouts.o] Error 1

Alterei as CPPFLAGS para:

CPPFLAGS = -Wall -g -Os -mcpu=cortex-m4 -mthumb -nostdlib -MMD $(OPTIONS) -I. -Iteensy/

E também lembrei que o clean deveria ser alterado para:

clean:
del *.o
del *.d
del $(TARGET).elf
del $(TARGET).hex
del $(CURRENT_PATH)\teensy\*.o
del $(CURRENT_PATH)\teensy\*.d

E adicionei:

CURRENT_PATH=$(shell echo %cd%)

Logo após as configurações que não devem ser alteradas pelo usuário. Com isso consegui utilizar o Makefile no Windows 7 para compilar e fazer upload para o Teensy 3.0 e mantendo os arquivos separados.

Resumo:
Você deve editar as váriaveis TOOLSPATH , COMPILERPATH e LIBRARYPATH para o seu caminho COMPLETO.
Em seguida crie uma pasta para o seu projeto "Meu_Projeto"
Crie uma pasta dentro dela chamada "teensy" (Meu_Projeto/teensy/)
Copie "arduino-1.0.3\hardware/teensy/cores/teensy3/" para "Meu_Projeto/teensy/" (os sub-diretórios também, mas o Makefile não)
Adicione o Makefile que você encontra no final deste post em "Meu_Projeto"
Copie o arquivo "Meu_Projeto/teensy/main.cpp" para o "Meu_Projeto/main.cpp"
Programe apartir do main.cpp
Compile e faça Upload com cs-make

Makefile para Teensy no Windows

Espero que seja útil,
Matheus

M d Y

Programando atmega8u2 no Arduino Uno utilizando USB Asp


Olá,

Recentemente meu Arduino parou de ser reconhecido pelo computador. Realizei diversos testes:

- Troquei o Atmega328
- Regravei a bootloader
- Testei o controlador fora da placa
- Medi com o multimetro as conexões básicas para ver se fechava o circuito

Nada disso solucionou o problema e então decidi tentar programar o atmega8u2 que é responsável por controlar a conexão com a USB. Encontrei dois artigos principais os quais usei como base:
Atualizando o Atmega8U2 no Uno ou no Mega2560 usando DFU (Ingles) e também Como atualizar o firmware do atmega8u2 Updating the Atmega8U2 on an Uno or Mega2560 using DFU

Ambos utilizavam de soluções que era necessário soldar um resistor na placa, o que eu não queria fazer, então verifiquei que próximo ao atmega8u2 existem pinos de ICSP e imaginei que os mesmos servem para programar o atmega8u2. Decidi tentar, por garantia removi meu Atmega328 da placa. E conectei meu USB Asp seguindo os pinos da imagem, lembrando que o pino 1 possui uma marcação próxima no meu Arduino UNO uma pequena bolinha.

Após a conexão acessei o diretório que continha os hex do atmega8u2 do arduino Uno (/arduino/hardware/arduino/firmware/) e usei o comando:

sudo avrdude -c usbasp -p m8 -u -U flash:w:UNO-dfu_and_usbserial_combined.hex

O mesmo não aceitou dizendo que o identificador de ambos eram diferentes:

avrdude: Yikes! Invalid device signature.

voltei a pesquisar e descobri que o at90usb162 é compativel, então decidi arriscar e forçar a escrita com a opção

sudo avrdude -c usbasp -p usb162 -u -U flash:w:UNO-dfu_and_usbserial_combined.hex -F

Esperei gravar, desliguei o arduino, conectei meu atmega328 e a conexão USB voltou a aparecer no computador, tornando assim possivel eu utilizar meu Arduino pela USB novamente.

Matheus

PS: Logo após regravar a bootloader meu atmega328 não sincronizava com a USB, então escrevi a bootloader do atmega328 pro arduino uno novamente e tudo funcionou perfeitamente.

Referencias:
http://8515.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=688637
http://image.pinout.net/pinout_10_pin_files/connector_pinout.php?image=avr_icsp.png&pinout=%20This%20a%20pinout%20of%20the%20AVR%20ICSP%20header.%20(6-pin%20&%2010-pin)

M d Y

Usando USB ASP como não root


Olá,

Para utilizar o USB Asp sem ser root (ou seja como um usuário normal) você deve adicionar uma regra ao /etc/udev/rules.d/.

Para isso:

$ sudo pico /etc/udev/rules.d/99-usbasp.rules

Dentro dele adicione:

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", MODE="0666"

Reinicie e você poderá utilizar seu USB Asp sem ser root.

Matheus

M d Y

Raspberry Pi com Raspbian derrubando conexão SSH


Estava brincando com meu Raspberry PI com o Raspbian e a conexão com o ssh ficava caindo o tempo todo, Broken pipe, e depois não permitia minha conexão.

Eu não sei porque isso estava acontecendo mas para arrumar isso, edite o /etc/ssh/sshd_config com

sudo nano /etc/ssh/sshd_config

Procure por TCPKeepAlive e altere de yes pra no.

TCPKeepAlive no

Não faz sentido, mas funcionou.

Abraços

M d Y

Sensor de Distância ultrasonico com Arduino e HC-SR04 (Arduino + HC-SR04)


Boa noite,

Continuando minhas aventuras com o Arduino e sensores. Hoje decidi brincar com o Sensor Ultrasonico HC-SR04 para medir distancia.

O funcionamento do mesmo é realmente simples, ele possui 4 pinos, VCC para alimentação, Trig para iniciar uma medida, Echo para retorno da distância e GND terra.

O mesmo possui uma biblioteca pronta para fazer as medidas e tudo mais. A mesma se chama Ultrasonic. O unico problema que tive com a mesma é que ela estava desatualizada e ainda utilizava o WProgram.h enquanto o Arduino 1.0.1 utiliza Arduino.h, atulizei a mesma e executei sem problemas.

A mesma deve ser incluida no seu diretório "arduino-1.0.1/libraries" e você deve fechar e abrir a IDE.

Sensor VCC conecta ao Arduino +5V pino
Sensor Trig conecta ao Arduino PINO 12
Sensor Echo conecta ao Arduino PINO 13
Sensor GND conecta ao Arduino GND

Você pode configurar os pinos nas variáveis trig e echo.

#include "Ultrasonic.h"
int trig = 12;
int echo = 13;
Ultrasonic ultrasonic(trig,echo);

void setup() {
  Serial.begin(9600);
}

void loop()
{
  Serial.print("Distance CM:");
  Serial.println(ultrasonic.Ranging(CM));
  Serial.print("Distance INC:");
  Serial.println(ultrasonic.Ranging(INC));
  delay(100);
}

Referências:
HC-SR04 DataSheet
Biblioteca Ultrasonic atualizada para Arduino 1.0.1

M d Y

Instalando Flash 11.2 no Ubuntu 12.10 – 64 Bits.


Boa noite,

Esta atualização do Instalador do Flash faz com que o mesmo baixe a versão 11.2 e instale-a.

Para instalar você precisa dar permissão de execução:

chmod +x native-64bit-flash-installer-11.2.sh

Execute o mesmo:

./native-64bit-flash-installer-11.2.sh

A instalação deve ocorrer sem mais problemas, qualquer problema ou duvida entre em contato.

Instalador Flash 11.2 - Ubuntu 64 Bits

Se desejar verificar as versões anteriores: Instalar Flash 10 no Ubuntu 64 Bits

Lembrando que esta é a última versão a ter suporte para o Linux. Infelizmente. Problemas com segurança ainda serão atualizados.

Matheus

M d Y

Instalando Java no Ubuntu 12.10 – 64 bits


Olá,

Após realizar a instalação do novo Ubuntu 12.10 (Quantal Quetzal) tentei acessar meu banco online para pagar umas contas. Como sempre acontece, o Java não estava pronto para ser usado no navegador.

Para instalar o Java no Ubuntu 12.10 faça o seguinte:

Instalei:

$ sudo apt-get install icedtea6-plugin

Agora para fazer o Java funcionar no navegador instalei o:

$ sudo apt-get install icedtea-plugin

Fechei o navegador e abri, e pronto. Java funcionando no Ubuntu 12.10 (64 bits) e também no Firefox.

Abraços,
Matheus

PS: Funciona perfeitamente para acessar o Banco do Brasil com o Ubuntu 12.10 (64 bits)

M d Y

Remover ou Desabilitar a barra de rolagem overlay – Ubuntu 12.10


Boa noite,

Infelizmente a barra padrão do Ubuntu 12.10 continua a "overlay" que eu particularmente não gosto e pelo visto vai continuar assim pra sempre. Por enquanto ainda podemos remover a mesma da seguinte maneira:

Utilize este comando:

# echo export LIBOVERLAY_SCROLLBAR=0 > /etc/X11/Xsession.d/80overlayscrollbars

Caso queira testar um dos outros métodos, teste e nos avise se funcionou!

Remover ou Desabilitar a barra de rolagem overlay – Ubuntu 11.04

PS: Tem um bug com a seta da barra mas de maneira geral ela funciona.

Abraços,
Matheus