sábado, 14 de junho de 2008

Cadsoft Eagle 5




Pessoal lançaram a versão 5 do Eagle.

Segue link com descrição dos novos recursos e melhorias do software!

http://www.cadsoftusa.com/version50.htm

Fonte para protoboard

Algo que sempre enche o saco na hora de prototipar em protoboard é a ligação de energia. Soca 7805, bota capacitor, mete ponte retificadora e por aí vai ...
um cara resolveu fazer um circuito pronto que para 5 e 3.3 Volts lá na gringolândia.

Deêm uma olhada no brinquedo.

http://www.curiousinventor.com/kits/bread_power

Obviamente não é uma fonte de bancada mas para rápidos protótipos a um custo irrisório é muito interessante. Sem contar a economia de espaço na bancada.

Medindo o nível de qualidade do sinal em Modems GSM

Fala gente,

O trabalho está estressante então resolvi parar um pouco e colocar mais uma contribuição aqui para meus amigos tecnomaniacos.

Hoje vamos falar um pouco sobre qualidade de sinal de Modems GSM.
Todos sabemos que para ocorrer uma transmissão bem sucessida é necessário estar dentro de um HotSpot adequando para o mesmo. O módulo deve ser capaz de transmitir dados para ERB local com uma intensidade boa para que possa ter um troughput capaz de estabelecer uma conexão de dados consistente.

O módulo que apresento é o Siemens MC35i, já trabalho há algum tempo com eles e apesar de ser um módulo dual band, sem pilha tcp/ip, funciona muito bem para praticamente 90% das aplicações de Campo que eu necessitei até hoje.

Bom vamos lá.

O comando para se descobrir qual a Qualidade do Sinal é o AT+CSQ.

O resultado é um número de 0 a 31 ou 99 no primeiro campo. Este número corresponde a tabela abaixo:

0 -113 dBm or less
1 111 dBm
2 - 30 -109 to -53 dBm
31 -51 dBm or more
99 Unknown

O nível mais forte de sinal é -51dBm e o mais fraco é -113dBm... caso o retorno seja 99 é porque ele não conseguiu averiguar o nível de sinal.

Olha um exemplo C#... dá pra usar já...


========================== recorte aqui =========================
using System;
using System.Collections.Generic;
using System.Text;

namespace XXX {
public class ModemConfig {
// ------- Response Setters
//0 -113 dBm or less
//1 111 dBm
//2 - 30 -109 to -53 dBm
//31 -51 dBm or more
//99 Unknown
public void SetCSQ(string csq) {
string dbFactor = csq.Substring(0, csq.IndexOf(','));
dbFactor = dbFactor.Substring(csq.IndexOf(' '));
int dbiFactor = int.Parse(dbFactor);
if (dbiFactor == 0 || dbiFactor == 99) {
signalStrenght = 0;
antennaDbi = -113;
} else if (dbiFactor == 1) {
signalStrenght = 1;
antennaDbi = -111;
} else if (dbiFactor == 31) {
signalStrenght = 100;
antennaDbi = -51;
} else {
int fullDbiFactor = (56 * dbiFactor) / 28;
antennaDbi = -109 + fullDbiFactor;
signalStrenght = (fullDbiFactor * 100) / 56;
}
}

// ------- Variáveis interpretadas
private int signalStrenght;
private int antennaDbi;

public int SignalStrenght {
get { return signalStrenght; }
}

public int AntennaDbi {
get { return antennaDbi; }
}
}
}
========================== recorte aqui =========================

Se você quiser poderá fazer o download diretamente do arquivo...

http://rapidshare.com/files/122415261/ModemConfig.cs.html

Saber a qualidade do sinal é muito importante, pois assim pode-se configurar a sincronização de dados somente quando a condição mínima de qualidade for alcançada.

quarta-feira, 11 de junho de 2008

Led Flash com R8C/25

Bom... como todo programador de MCUs que se preza, vamos começar um pequeno projeto com o R8C, piscando Leds...

PISCA, PISCA, PISCA...

#include "sfr_r825.h"
#include "main.h"

void main(void) {
char xVal;
unsigned long timerCount;
unsigned long timerCount2;
xVal=0;
pd2=0xFF;
while(1) {
xVal++;
for(timerCount=0; timerCount<2000; timerCount++);
p2=xVal;
if(xVal==255) xVal=0;
}
}


Esse é o programa que vamos rodar.
p2 é a porta na qual estão ligados os Leds do kit de desenvolvimento, os bits que aparecem visualmente são somente o 4,5,6 e 7.
Ainda não encontrei uma referencia para ajustar o clock do MCU... vamos ver depois no Datasheet e eu posto aqui no meu segundo exemplo ...

Bom é isso... vou tirar fotos e publico depois!...

Esse aí é o meu "hello world" no mundo Renesas.

Da série: DO IT YOURSELF ... Vamos construir válvulas em casa?

Recebi recentemente este link deste francês maluco que faz válvulas literalmente no quintal da casa dele...

É um vídeo de 17 minutos mas vale muito a pena... insano!



Reparem a "pequena" quantidade de aparatos que o sujeito tem em casa para executar a pequena tarefa!

Esse sim mata a cobra e mostra o pau!

segunda-feira, 9 de junho de 2008

Library do Eagle para Renesas R8C/24 e 25 (52 Pinos)

Após procurar exaustivamente na internet por alguma library para MCUs da Renesas de 52 pinos e não encontrar absolutamente nada, resolvi deixar a preguiça de lado e montar a minha.
Após um final de semana relaxante com a Família... todos Dormindo no domingão, o nerd aqui resolveu botar a mão na massa no Eagle. O chato não é fazer o Package e sim o desenho do Schema, junto com as associações dos pinos.
Aproveitei e incrementei uma biblioteca que eu consegui da renesas... a renesas_mcu.lbr ...
Vejam como ficou o desenho do MCU, e seu esquemático... ficou bacana !


Aqui, agora! (essa é velha!) um esquema simplório só pra testar o MCU, e em seguida um routing do mesmo, em dois layers (mas só roteou no TOP ;-) )...



Amanhã sai uma plaquinha LQFP > DIP 52 pinos ... vamos botar pra quebrar agora pessoal!

Pra quem quiser a library, aqui está um link para o rapidshare...

http://rapidshare.com/files/121120059/renesas_mcu_youlink.zip.html

É isso ae pppessoal ... mais uma vez matando a cobra e mostrando o PAU! ... hauauhahua

Bora dormir cambada!

quarta-feira, 4 de junho de 2008

Eletrônica Básica

Para quem quer começar a controlar os electrons ... taí uma boa dica ...


Kits, montagens, jogos, coisas interessantes e não babacas pra quem quer aprender eletronica sem ficar se matando com as revistas nacionais. É um Kit da Make Magazine.

Olha o link ...

http://www.makershed.com/ProductDetails.asp?ProductCode=MKSL1&Show=ExtInfo

O legal é que parece que dá pra comprar e enviar como presente... se alguém quiser me mandar alguns destes... eu agradeço !!! Vai ser divertido ficar montando multivibradores astáveis com transistores!!! ;-)

Morte à bandeirinhas

Pessoal, tá aqui um projeto que eu fiz!... Essa é uma matéria que saiu no Meio&Mensagem, pra quem não conhece é a principal revista dos meios de publicidade e propaganda aqui pras bandas de SP e Rio...
Todo o sistema de comunicação via SMS, acionamento dos led, é projeto meu, desenvolvido com PIC.
Maiores detalhes: PIC16F877 com Modem Siemens, Relés Finder de 10A para acionamento dos Leds, Carregador solar e bateria com autonomia de 24Horas... projetasso!!!

É nóis virando notícia... hehehehe...


#include no CCS

Caros, recentemente numa lista que participo houve uma pergunta sobre como dividir um programa gigante, uma verdadeira tripa de código em blocos *.c ... bom ... a resposta está aí abaixo... Good Luck...

PS: Como estou sem saco pra identar o código aqui no blog... SE VIRA NEGÃO!


Exemplo.c
=========================================
#include<16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
//#use i2c(master, sda=PIN_C4, scl=PIN_C3)
#byte port_a=5
#byte port_b=6
#byte port_d=8

#include

// Prototypes
void hw_setup(void);

// Variables
byte mychar;

// Main Function
void main(void) {
hw_setup();
while(true) {
if(kbd_hasKey()) {
mychar=kbd_read();
}
}
}

void hw_setup(void) {
set_tris_a(0);
set_tris_b(0);
set_tris_d(0b11110000);
port_b=0;
port_d=0;
//init_ext_eeprom();
kbd_init();
//lcd_init();
//ds1307_init(DS1307_OUT_ON_DISABLED_HIHG | DS1307_OUT_ENABLED | DS1307_OUT_1_Z);
}
=========================================

keyb3x4.c
=========================================
// keyb3x4.c
// Change these pins to fit your own board.

#define KBD_C1 PIN_B0
#define KBD_C2 PIN_B1
#define KBD_C3 PIN_B2

#define KBD_L1 PIN_B3
#define KBD_L2 PIN_B4
#define KBD_L3 PIN_B5
#define KBD_L4 PIN_B6

char detected;

char verifyLine(int mapL) {
int line = 0;
if(bit_test(mapL,0)) {
line = 1;
output_high(KBD_L1);
} else {
output_low(KBD_L1);
}
if(bit_test(mapL,1)) {
line = 2;
output_high(KBD_L2);
} else {
output_low(KBD_L2);
}
if(bit_test(mapL,2)) {
line = 3;
output_high(KBD_L3);
} else {
output_low(KBD_L3);
}
if(bit_test(mapL,3)) {
line = 4;
output_high(KBD_L4);
} else {
output_low(KBD_L4);
}
if(input(KBD_C1)==1) {
while(input(KBD_C1)==1) delay_ms(10);
if(line==1) return('1');
if(line==2) return('4');
if(line==3) return('7');
if(line==4) return('*');
}
if(input(KBD_C2)==1) {
while(input(KBD_C2)==1) delay_ms(10);
if(line==1) return('2');
if(line==2) return('5');
if(line==3) return('8');
if(line==4) return('0');
}
if(input(KBD_C3)==1) {
while(input(KBD_C3)==1) delay_ms(10);
if(line==1) return('3');
if(line==2) return('6');
if(line==3) return('9');
if(line==4) return('#');
}
return('\0');
}

void detectKey(void) {
int t;
int mapL;
int mapC;

mapL = 0x0000001;
for (t=0; t<4; t++) {
mapC = verifyLine(mapL);
mapL = mapL << 1;
if(mapC != '\0') {
detected = mapC;
return;
}
}
}

void kbd_init(void) {
detected='\0';
}

int kbd_hasKey(void) {
detectKey();
if(detected != '\0') return(1);
return(0);
}

char kbd_read() {
char toReturn;
toReturn = detected;
detected='\0';
return(toReturn);
}
=========================================

E agora... como eu sempre digo: mato a cobra e mostro o pau!!!

Eis o output do CCS...
=========================================
Clean: Deleting intermediary and output files.
Clean: Deleted file "Exemplo.ERR".
Clean Warning: File "C:\test\Exemplo\Exemplo.o" doesn't exist.
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" "Exemplo.c" +FM +DF +LN +T -A +M +Z +Y=9 +EA
Memory usage: ROM=3% RAM=2% - 4%
0 Errors, 0 Warnings.
Loaded C:\test\GustavoExemplo\Exemplo.cof.
BUILD SUCCEEDED: Wed Jun 04 21:56:32 2008
=========================================

RFiD Omron V750

Mais uma vez pra mostrar que o Blog aqui mata a cobra e mostra o pau (ui!) coloco pra vocês as fotos de uma aplicação que estou terminando de desenvolver utilizando o hardware de RFiD da Omron modelo V750 com especificação brasileira.
O leitor/gravador, doravante denominado módulo, trabalha a 900Mhz (870 a 915 Mhz pra ser mais exato) e escreve e lê inlays de segunda geração.
Estou utilizando inlays Scorpion da Omron, substrato de alumínio, chipset Impinj Monza. O que dá +/- 4.3 metros de distância de leitura.
Bom chega de papo e vamos as fotos...




Apresento o módulo V750 da Omron...


Etiqueta com identificação do bichinho !!! Notem o "-BR" no final do código. É o único reader/writer de 900Mhz gen2 homologado pela Anatel... Foi dificiil mas nós conseguimos!


Este é o painel. Através dele podemos acompanhar os ciclos de funcionamento, quais antenas estão em utilização, além de monitorar os Ios dele. Eu explico tudo isso mais adiante...


Notem na foto acima, o plugue de energia elétrica que é fornecida por um adaptador ligado à energia elétrica 80 até 240V, uma i/o serial, uma i/o rj45 ethernet e o pinos para conexão de periféricos diversos, como relés e etc..

Olha os i/os de periféricos ai. Para saída é possível controlar cargas de até 1A cada uma no total de 4, notem que o GND é o C. Para entrada é possível monitorar até 4 entradas com coletor aberto. Um show.

Este é o conjunto completo, módulo, na bancada ao fundo e a antena V740.
Um detalhe interessante é a capacidade de distanciar a antenna do módulo, em até 20 metros. O cabo para 20 metros tem aproximadamente 20mm de espessura, é gigante... imagino que para proteção de transientes...
O módulo pode configurar o raio de ação da antena via regulagem de sua potência, podendo funcionar até 32,5 Dbi... com algumas inlays podemos conseguir leituras a até 7 Metros de distância.
Um detalhe da antena para poder visualizar melhor.
Cada módulo suporta até 4 antenas, podendo montar os famosos portais RFiD. Na implantação do sistema eu tiro mais fotos para vocês conhecerem como funciona com o portal completo.
Aqui uma fotos do sistema todo ligado ao meu note, note a tela amarela no note. É o meu programa fazendo uma leitura, eu configurei a entrada de 50 inlays, e ele está lendo no momento atual 0 inlays de 50 inlays para entrar.

Colocamos um strip de 10 inlays sobre a antena para dar leitura...
Eis as 10 etiquetas lidas!!!
Agora segurando as inlays no ar e a leitura das mesmas 10 etiquetas na tela do compuador.
Detalhes do software. Lidas 10 inlays de 10 que ele estava esperando a tela do supervisório fica verde indicando que a empilhadeira pode continuar.
Neste caso foram lidas mais etiquetas do o esperado, então a tela fica vermelha.
Bom é isso! Daqui dois dias vou tirar mais fotos na implantação em produção e posto aqui para vocês acompanharem.

Tenho dito!!!