Month: December 2013

Iniciando em BLE com o Nordic nRF51822

Resolvi me aventurar no chip nRF51822, segue abaixo o relato dos testes que estou fazendo.

Eu não tenho o kit de desenvolvimento da Nordic, mas “banquei” o desenvolvimento do Stick’n’Find e recebi dois buttons. Após abri-lo, notei que haviam alguns test-points grandes nos pinos 23 e 24 do chip (SWD), isso simplifica muito na hora de soldar os fios para o programador.

Infelizmente, até onde sei, este chip não funciona com os programadores open-source suportados pelo OpenOCD. Então o jeito será usar um J-Link.

Como não tenho um J-Link, resolvi comprar a versão estudante na Digikey.

A ligação do programador foi simples: TMS (pino 7) do JLink no pino 23 do nRF51822; TCK (pino 9) no pino 24; VTref (pino 1) no pino 12; GND (pino 20 ou qualquer pino par) no pino 13.

Instalei as ferramentas do J-Link (http://www.segger.com/jlink-software.html) no Ubuntu.

Ao executar o comando JLinkExe, o chip não foi reconhecido. A solução foi simplementes dar um rápido curto-circuito entre o VDD e GND para reiniciar o chip. Após isso o chip foi reconhecido:

J-Link>si 1
Selecting SWD as current target interface.
Setting target interface speed to 1MHz. Use "Speed" to change.

J-Link>selemu
J-Link[0]: Connection: USB, Serial number: 268006167, ProductName: J-Link EDU
Select emulator index: 0
Emulator with USB serial number 268006167 selected.
DLL version V4.80, compiled Dec 20 2013 19:40:51
Firmware: J-Link ARM V8 compiled Nov 25 2013 19:20:08
Hardware: V8.00
S/N: 268006167 
OEM: SEGGER-EDU 
Feature(s): FlashBP, GDB 
VTarget = 2.601V
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
No devices found on JTAG chain. Trying to find device on SWD.
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Cortex-M0 identified.
Target interface speed: 100 kHz

O próximo passo foi apagar a flash:

J-Link>device nrf51822
J-Link>speed 1000

# erase the entire flash
J-Link>w4 4001e504 2
J-Link>w4 4001e50c 1
J-Link>w4 4001e514 1

Após isso, basta executar o comando diretamente via terminal que o chip é identificado:

$ JLinkExe 
SEGGER J-Link Commander V4.80 ('?' for help)
Compiled Dec 20 2013 19:40:54
DLL version V4.80, compiled Dec 20 2013 19:40:51
Firmware: J-Link ARM V8 compiled Nov 25 2013 19:20:08
Hardware: V8.00
S/N: 268006167 
OEM: SEGGER-EDU 
Feature(s): FlashBP, GDB 
VTarget = 2.627V
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
No devices found on JTAG chain. Trying to find device on SWD.
Info: Found SWD-DP with ID 0x0BB11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 4 code (BP) slots and 0 literal slots
Cortex-M0 identified.
Target interface speed: 100 kHz
J-Link>

O próximo passo será a instalação do SDK da Nordic e a criação do meus primeiros programas, para quem não tem paciência de esperar, pode tentar instalar as ferramentas seguindo estas dicas:
http://www.funwithelectronics.com/?id=168
http://hg.cmason.com/nrf

Fonte: http://www.segger2.com/index.php?page=Thread&postID=4072

Update: SDK Nordic modificado para compilar com o GCC: https://github.com/finnurtorfa/nrf51
Dicas de desenvolvimento: http://robolabwiki.sdu.dk/mediawiki/index.php/Nordic_Semiconductor_nRF51822_development
BLE Stack Open Source: https://github.com/pauloborges/blessed/

Relato dos problemas encontrados na MakerBot Replicator 2X

Como já postei antes, tive alguns problemas com a MakerBot Replicator 2X, então resolvi documentar aqui os problemas que já tive até o momento para ajudar outras pessoas que possam vir a passar pelos mesmos problemas:

1) Impressora não carrega novo filamento: durante a troca de filamento pode acontecer do filamento que estava antes na impressora se romper dentro da cabeça de impressão e quando você vai colocar o novo filamento a fio de ABS/PLA não sai no bico de impressão. É fácil detectar que isso aconteceu pois o motor da extrusora faz um barulho estranho como se tivesse fazendo muita força e não consegue puxar o filamento.

A solução para este problema é simples: remova os 4 parafusos que prendem a ventoinha na cabeça extrusora, você verá o tubo por onde o filamento entra e é derretido, neste momento você deve ter notado que ficou apenas um “toco” do filamento anterior. Entre no Menu da Replicator 2X e escolha a opção de remover o filamento (Unload Filament) e então com um alicate de ponta ou com uma pinça remova o pedaço de filamento que ficou preso no bico de impressão.

2) Travamento do Eixo X: a Replicator 2X tem pequeno erro de projeto, que também existia na Replicator 2 que que a fabricante achou que havia consertado trocando o cabo flexível. O cabo do motor ligado à correia do eixo X é tensionado quando a impressora se move para o fundo da área de impressão, o que ocorrerá com muita frequência quando se está imprimindo peças muito grandes. Eu gravei um vídeo mostrando este problema ocorrendo: https://www.youtube.com/watch?v=VdMFXOacl3c Observe que num determinado momento a impressora faz um barulho estranho e imprime muito plástico numa única posição. Este problema também é facilmente notado quando você manda alinhar o nível da base da área de impressão e durante o movimento diagonal da cabeça de impressão o motor faz um barulho como se algo estivesse impedindo o movimento e há um deslocamento do movimento diagonal em relação ao eixo X.

Para resolver este problema você deve trocar os cabos que estão ligados ao motor do eixo X ou fazer uma emenda nele, como explicado neste vídeo: http://www.youtube.com/watch?v=Sd8y-dQVgoM

3) Atolamento do filamento: durante a impressão da peça o bico pára de fazer a extrusão do filamento. Isto acontece porque o calor do bico de extrusão chegou até ao eixo do motor de extrusão, com isso as ranhunhas no eixo do motor, que puxam o filamento para dentro do bico, começam a derretem o filamento e assim o eixo to motor passa a deslizar ao invés de puxar o filamento.

A solução neste caso também é simples, pre-aqueça as extrusoras, aguarde uns 5 minutos e então mande descarregar o filamento (Unload filament), faça um pouco de força para puxar o filamento, mas não muita, senão o filamento pode romper e você terá o problema documentado no item 1).

É isso pessoal, quem acha que é só comprar uma impressora 3D de mercado que todos os problemas estavam acabados, se engana. As impressoras de mercado podem dar tantos problemas quanto as impressoras criadas por você mesmo.

Understanding more about linkers

If you want to learn more about linkers and linker scripts I suggest you to take a look on this series of post from Ian Lance Taylor at his blog:

http://www.airs.com/blog/archives/38
http://www.airs.com/blog/archives/39
http://www.airs.com/blog/archives/40
http://www.airs.com/blog/archives/41
http://www.airs.com/blog/archives/42
http://www.airs.com/blog/archives/43
http://www.airs.com/blog/archives/44
http://www.airs.com/blog/archives/45
http://www.airs.com/blog/archives/46
http://www.airs.com/blog/archives/47
http://www.airs.com/blog/archives/48
http://www.airs.com/blog/archives/49
http://www.airs.com/blog/archives/50
http://www.airs.com/blog/archives/51
http://www.airs.com/blog/archives/52
http://www.airs.com/blog/archives/53
http://www.airs.com/blog/archives/54
http://www.airs.com/blog/archives/55
http://www.airs.com/blog/archives/56
http://www.airs.com/blog/archives/57

How to get access to github after change SSH key?

If you changed your SSH key or just created it but still not cloning:

$ git clone ssh://git@github.com/youruser/userproject.git
Cloning into 'yourproject'...
Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Then you could check if your computer key is accepted by github:

$ ssh -T git@github.com --version
Agent admitted failure to sign using the key.
Permission denied (publickey).

Then you just need to force ssh to load your new KEY this way:

$ ssh-add ~/.ssh/id_dsa

DONE! Now you can clone and push your project from and to github.

3D reconstruction from pictures

This guy created a big 3D Scanner using 39 “Raspi” boards: http://www.instructables.com/id/Multiple-Raspberry-PI-3D-Scanner/

He was very smart on this design because all 39 boards take a picture at same time then he doesn’t get nonalignment issues. But unfortunately there is a flaw: he depends on online services like Autodesk Recap Photo to convert these photos to a 3D model.

Maybe you didn’t realize what the flaw is: Easy, Recap service could become paid or autodesk could shutdown this services without caring about orphans users.

Then searching for alternatives I found Insight3D: http://insight3d.sourceforge.net

This software could eventually be used to replace Recap Photo and could do it offline, not depending on external services to convert your photos to 3D objects.

These kind of software are used on tomography reconstruction and magnetic resonance.