Ir ao conteúdo
  • Cadastre-se

TUTORIAL: Projeto PicUSB quase pronto PIC<-->RF<-->PIC<-->USB<-->PC


Posts recomendados

@AlyssonMachado, Fico feliz q tenha gostado do projeto.

Então, sobre o gráfico, é simples de colocar.

você vai em Toolbox e procura por Chart. Arrasta ele para seu projeto e vai configurando até ficar do seu jeito. O meu marca a temperatura do LM35.

Minhas configurações do gráfico ficaram assim: Com o Gráfico seleciona, fui até o painel de Properties e procurei por Series. Cliquei nos 3 pontinhos (...). Abriu-se uma janela. Fui em Border Color e escolhi uma cor qualquer, fui em Border Width e escolhi 2.

Escolhi o Char Type como Spline (curvas). E pronto, agora só falta adicionar os dados que chegam pela USB. Meu código ficou assim:

private void timer1_Tick(object sender, EventArgs e)            //Valores atualizados a cada 1 segundo
{
temperatura_ambiente_var =( usbapi.ADC()); //Valor da Temperatura do LM35 que vem pela USB

progressBar_temp_ambiente.Value = temperatura_ambiente_var; //Barra de progresso recebe o valor da temperatura
temp_ambiente_box.Text = "Temperatura Ambiente: " + temperatura_ambiente_var.ToString() + " ºC"; //Mostra numa caixinha de texto
temp_ambiente_box.ForeColor = Color.Red; //Na cor vermelha

chart1.Series["Series1"].Points.AddXY(time, temperatura_ambiente_var); //Adiconar os valores da temperatura no gráfico


time = time + 1; //Controle dos pontos no gráfico

if (time > 10) //Mostrar somente 10 valores de cada vez no gráfico
{
chart1.ChartAreas["ChartArea1"].AxisX.Minimum = time - 10;
}

Sobre material, tenho um bocado aqui, mas são apenas códigos prontos onde vou entudando e tentando decifrá-los. Tem sido bem úteis. vou fazer uma compilação e postarei aqui.

Preciso atualizar o Tutorial, consegui fazer funcionar no Windows 7 64bits. Já havia um driver e não tinha percebido, estava no meu PC a meses :(

O legal que agora não preciso trabalhar com máquinas virtuais mais.

Meu atual projeto é fazer um Bargraph pela USB. Vamo ver o que sai. Hj mesmo consegui enviar uma String e receber num LCD 16x2. Achei interessante.

Falou

Link para o comentário
Compartilhar em outros sites

Grande Matheus! valeu aee pelo post, Muito bom colocar gráficos nas aplicações!!

Espero em breve (talvez nem tanto ) poder compartilhar aqui tb com um projeto, vou iniciar nas férias, ligado a automação(faço Eng de controle e automação hehe). To pensado em criar um sistema de automação residencial bem interessante baseado em PIC´s e HOLTEK ( por ser bem baratos). Pretendo acrecentar comunicação wireless ( Zigbee ) e um sistema de segurança completo ( áudio, vídeo , envio de mensagens SMS para proprietário, envio de dados Via internet para quando o proprietario estiver viajando, integração com a PM para chamadas automáticas á polícia) além de climatização e criação de cenários pré-programados, gestão de gastos , sistema SCRN ( que apelidei de sistema de controle de recursos naturais, ou seja, captação de água da chuva, otimização do uso interno da luz solar, etc...). Enfim, projeto extenso, duro mas emocionante. Vai ser pro meu TCC,

Falou e obrigado pelo código.

Link para o comentário
Compartilhar em outros sites

Matheus eu também achei o máximo, seu projeto, meus parabéns! Sou iniciante e leigo no que diz respeito a comunicação usb entre um microcontrolador e visual c#, sou fascinado em aprender, quero fazer para testar e começar a mexer com pic18f4550 uma comunicação usb que mostre o estado lógico de entradas e saidas teria como voce me dar uma dica de pelo menos começar a fazer a interface usando o visual c# 2010? E se possível também informar como fazer para fazer funcionar no Windows 7 64bits, :D agradecerei mais ainda!

Link para o comentário
Compartilhar em outros sites

MatheusLPS, queria saber se você possui um tutorial ou apostila de como desenvolver software no visual C# 2010.

Infelizmente não tenho nenhuma apostila relacionado a C#. Como já sei o C comum, o C# só muda a sintaxe e quando tenho dúvida pesquiso no google. Por exemplo:

Estou com dúvida em como fazer formatação de de números com virgula. Vou no google e digito: format float C# e me retorna um monte de resultados. Só vou vendo um por um até encontrar o que quero. Simples.

quero fazer para testar e começar a mexer com pic18f4550 uma comunicação usb que mostre o estado lógico de entradas e saidas teria como voce me dar uma dica de pelo menos começar a fazer a interface usando o visual c# 2010? E se possível também informar como fazer para fazer funcionar no Windows 7 64bits.

Irei fazer esses dias p frente uma aplicação base doq você precisa.

Como mencionei acima, vou fuçando no C# até conseguir aprender... não tem muito segredo sabendo q você sabe um pouco de C.

Falou

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

e ai matheus, então cara, baixei os programas que você deixou ai "trabalhofinal.rar", mas como nunca mexi com usb e pic, fiquei meio perdido, mesmo com toda a ajuda fornecida...auhuaha

mas vi la, no post #1, que você chegou a fazer um programa bem mais simples, que você denominou de pictesteusb, se nao me engano, teria como você disponibiliza-lo junto com o circuito no proteus, para que eu possa aprender por ele?

http://img137.imageshack.us/img137/2442/funcionando.jpg

essa é a screenshot da sua simulação que me refiro, seria muito util se você pudesse me passar os codigos do ccs, o circuito do proteus, o codigo do visual c# e o q mais for precisar pra poder simular igual.

outra coisa, tem como eu simular o visual c# e ver as respostas no proteus?

e quanto aos drivers? tem que copiar aqueles arquivos pra algum lugarw

valeu ai matheus!

Link para o comentário
Compartilhar em outros sites

Fala aí colega Patolino.

Por sorte ainda tenho os arquivos que você pediu. No entanto, não possuo o arquivo do proteus mas é fácil de fazer. Só você seguir a screenshot e colocar os leds e no PIC colocar cristal de 12Mhz.

Lembre-se que essa versão só funciona no Windows XP. Para vista/7 é outro esquema.

Código fonte do aplicativo e PIC:

http://www.4shared.com/file/b6f2GL2q/PicUSB_Teste.html

O sistema funciona todo no proteus. você consegue simular sim!

A 1ª coisa a ser feita é instalar os drivers USB do proteus. Estão no menu iniciar....

Quando você mandar executar, o XP pedirá um drievr. Apenas indique o caminho onde está a pasta driver que está no pacote inicial que você baixou.

Falou

Link para o comentário
Compartilhar em outros sites

e ai matehus, tranquilo?

então cara, baixei os arquivos, instalei o xp, instalei os drivers, e...

ainda nao consegui...ahuaah

mas pra nao fik poluindo o seu topico, criei um para sanar tal duvida...

http://forum.clubedohardware.com.br/conexao-pic-pc/898819?p=4834633#post4834633

quando c tiver um tempinho ai, me da um help la...valeu ai matheus!

Link para o comentário
Compartilhar em outros sites

Bem, não possuo um exemplo meu.

Mas já vi um super legal e funcional aqui: Open Source Framework for USB Generic HID devices based on the PIC18F and Windows

No entanto o carinha utiliza o C18 se não me engano. Na página acima, contém todo o material gratuito para pode estudar e desfrutar!!

Falou

Link para o comentário
Compartilhar em outros sites

Valeu Mateus, o maior problema meu é montar a interface mesmo... Vou focar em uma e mandar ver, vou continuar com o Labview que tenho um pouco de experiencia... Valeu cara.

**** EDIT.

Se alguém estiver na mesma busca que eu:

http://www.edaboard.com/thread113553.html

Um ponta pé inicial!

Link para o comentário
Compartilhar em outros sites

Matheus, olhando este código você sabe me dizer se é bulk ou hid ou alguma outra coisa?


#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)


#define USB_HID_DEVICE FALSE //No se trata de un dispositivo HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //Se habilita EP1(EndPoint1) for IN bulk transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //Se habilita EP1(EndPoint1) for OUT bulk transfers
#define USB_EP1_TX_SIZE 3 //Memoria a reservar para el endpoint tx (Inpipe)
#define USB_EP1_RX_SIZE 3 //Memoria a reservar para el endpoint rx (Outpipe)


#include <pic18_usb.h> //Carga de las librerias USB.
#include <usb_desc_scope_alt.h> //Carga el header con las definiciones.
#include <usb.c>


char sine_wave[3]={1, 2, 3};


#define mode usb_indata[0]

void main(void) {

int8 usb_indata[3]; //declaramos variables


usb_init(); //Se inicializa USB y espera que sea enumerado por la PC
usb_task();
usb_wait_for_enumeration();



while (TRUE) //Ciclo principal
{
if(usb_enumerated()) //Si el PIC ha sido enumerado por la PC
{
if (usb_kbhit(1)) //y si hay un dato en el buffer de entrada USB.
{
usb_get_packet(1, usb_indata, 3); //Leemos el paquete de 3 bytes que hay en el OutPipe
//(Leemos de la PC)
if ((usb_indata[0] == 1)&&(usb_indata[1] == 0)&&(usb_indata[2] == 0)) //Si el primer byte (modo) es cero
{ //entonces lee los ADC's y envia //los datos (4 bytes
usb_puts(1,sine_wave,3,50); //Colocamos los 4 bytes en el InPipe.(Enviamos a la PC)
sine_wave[0]=2;
}
}
}
}
}


Consegui fazer o labview enviar um pacote, o PIC entender e devolver um outro pacote.

O que são os números 1 na primeira, e 1-50 na sgunda função?


usb_get_packet(1, usb_indata, 3);
usb_puts(1,sine_wave,3,50)

Uma dúvida, entre o VCC e o GND do USB você coloca algum capacitor?

Valeu cara!

Link para o comentário
Compartilhar em outros sites

Matheus, olhando este código você sabe me dizer se é bulk ou hid?

De acordo com o código:

#define USB_HID_DEVICE     FALSE                   //No se trata de un dispositivo HID

Só pode ser bulk.

Tem um exemplo para o Labview aqui ó: PicUSB

Baixar a versão PicUSBStuff.

Só não sei o porque do 50 aí no meio. Mas o 3 diz que estamos recebendo 3 dados e enviando 3 dados.

Esse código está completo?

Falou

Link para o comentário
Compartilhar em outros sites

Esta sim matheus... Vou postar ele completo.

Cara estou até emocionado, USB não é um bicho de 7 cabeças, é um bicho de 1000 cabeças HAHAHAHEHEHEHE, no codigo tem um esquema de VID e PID e para alterar essas duas coisas tem que alterar no driver também, e eu não sei como montar um driver para USB, eu peguei o que veio pronto e editei as coisas e deu certo (O.O)...

Aprender este troço vai dar um trabalho louco HAHEHAHEHA...

Código PIC (sem alteração)


/////////////////////////////////////////////////////////////////////////
//// SineWaveUSB.c ////
//// ////
//// A continuacion se describe el programa de prueba para la ////
//// comunicacion USB. Este programa es el más sencillo. ////
//// ////
//// Espera recibir 3 bytes de la PC. El primer byte es el modo ////
//// En este programa solo se maneja el modo cero. ////
//// Los otros dos bytes son datos y en este ejemplo se ignoran. ////
//// ////
//// El pic simplemente envìa los 256 bytes de una onda senoidal ////
//// lo más rápido que puede. ////
//// ////
//// Configurar el programa en el host para recibir 256 bytes.- ////
//// ////
//// ////
//// ////
//// Rafael Rodriguez Covarrubias ////
//// IICO-UASLP ////
//// [email protected] ////
/////////////////////////////////////////////////////////////////////////
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN
#use delay(clock=48000000)


#define USB_HID_DEVICE FALSE //No se trata de un dispositivo HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //Se habilita EP1(EndPoint1) for IN bulk transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //Se habilita EP1(EndPoint1) for OUT bulk transfers
#define USB_EP1_TX_SIZE 64 //Memoria a reservar para el endpoint tx (Inpipe)
#define USB_EP1_RX_SIZE 3 //Memoria a reservar para el endpoint rx (Outpipe)


#include <pic18_usb.h> //Carga de las librerias USB.
#include <usb_desc_scope_alt.h> //Carga el header con las definiciones.
#include <usb.c>


char sine_wave[256]={
127, 130, 133, 136, 139, 142, 145, 148, 151, 154, 157, 160, 163, 166, 169,
172, 175, 178, 181, 184, 186, 189, 192, 195, 197, 200, 202, 205, 207, 210,
212, 214, 216, 219, 221, 223, 225, 227, 229, 230, 232, 234, 236, 237, 239,
240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 250, 251, 252, 252, 253,
253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 251, 250, 250,
249, 248, 247, 246, 245, 244, 242, 241, 240, 238, 237, 235, 234, 232, 230,
228, 226, 224, 222, 220, 218, 216, 214, 211, 209, 207, 204, 202, 199, 197,
194, 191, 189, 186, 183, 180, 178, 175, 172, 169, 166, 163, 160, 157, 154,
151, 148, 145, 142, 138, 135, 132, 129, 127, 124, 121, 118, 114, 111, 108,
105, 102, 99, 96, 93, 90, 87, 84, 81, 78, 75, 73, 70, 67, 64,
62, 59, 56, 54, 51, 49, 46, 44, 42, 39, 37, 35, 33, 31, 29,
27, 25, 23, 22, 20, 18, 17, 15, 14, 12, 11, 10, 9, 8, 7,
6, 5, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12,
13, 14, 16, 17, 19, 21, 22, 24, 26, 28, 30, 32, 34, 36, 38,
41, 43, 45, 48, 50, 53, 55, 58, 60, 63, 66, 69, 71, 74, 77,
80, 83, 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, 116, 119, 122,
125
};


#define mode usb_indata[0]

void main(void) {

int8 usb_indata[3]; //declaramos variables


usb_init(); //Se inicializa USB y espera que sea enumerado por la PC
usb_task();
usb_wait_for_enumeration();



while (TRUE) //Ciclo principal
{
if(usb_enumerated()) //Si el PIC ha sido enumerado por la PC
{
if (usb_kbhit(1)) //y si hay un dato en el buffer de entrada USB.
{
usb_get_packet(1, usb_indata, 3); //Leemos el paquete de 3 bytes que hay en el OutPipe
//(Leemos de la PC)
if (mode == 0) //Si el primer byte (modo) es cero
{ //entonces lee los ADC's y envia
//los datos (4 bytes)

usb_puts(1,sine_wave,256,50); //Colocamos los 4 bytes en el InPipe.(Enviamos a la PC)

}




}
}
}
}
[/spoiler]


Cabeçalho que pelo que eu pude entender até agora, está ligado ao driver e tem o nomezinho que aprece quando a instalação do driver é solicitada, e também o tal de VID e PID:


///////////////////////////////////////////////////////////////////////////
//// usb_desc_scope.h ////
//// ////
//// Este programa unicamente se modificó al final en las strings ////
//// que identifican el dispositivo. ////
//// Aqui se puede definir outro VID&PID. Por ahora esta definido como ////
//// VID 0x04D8&PID 0x0003 ////
//// ////
///////////////////////////////////////////////////////////////////////////

#IFNDEF __USB_DESCRIPTORS__
#DEFINE __USB_DESCRIPTORS__

#include <usb.h>

//////////////////////////////////////////////////////////////////
///
/// start config descriptor
/// right now we only support one configuration descriptor.
/// the config, interface, class, and endpoint goes into this array.
///
//////////////////////////////////////////////////////////////////

#DEFINE USB_TOTAL_CONFIG_LEN 32 //config+interface+class+endpoint

//configuration descriptor
char const USB_CONFIG_DESC[] = {
//config_descriptor for config index 1
USB_DESC_CONFIG_LEN, //length of descriptor size
USB_DESC_CONFIG_TYPE, //constant CONFIGURATION (0x02)
USB_TOTAL_CONFIG_LEN,0, //size of all data returned for this config
1, //number of interfaces this device supports
0x01, //identifier for this configuration. (IF we had more than one configurations)
0x00, //index of string descriptor for this configuration
0xC0, //bit 6=1 if self powered, bit 5=1 if supports remote wakeup (we don't), bits 0-4 reserved and bit7=1
0x32, //maximum bus power required (maximum milliamperes/2) (0x32 = 100mA)

//interface descriptor 0 alt 0
USB_DESC_INTERFACE_LEN, //length of descriptor
USB_DESC_INTERFACE_TYPE, //constant INTERFACE (0x04)
0x00, //number defining this interface (IF we had more than one interface)
0x00, //alternate setting
2, //number of endpoints, not counting endpoint 0.
0xFF, //class code, FF = vendor defined
0xFF, //subclass code, FF = vendor
0xFF, //protocol code, FF = vendor
0x00, //index of string descriptor for interface

//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05)
0x81, //endpoint number and direction (0x81 = EP1 IN)
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt)
USB_EP1_TX_SIZE & 0xFF,USB_EP1_TX_SIZE >> 8, //maximum packet size supported
0x01, //polling interval in ms. (for interrupt transfers ONLY)

//endpoint descriptor
USB_DESC_ENDPOINT_LEN, //length of descriptor
USB_DESC_ENDPOINT_TYPE, //constant ENDPOINT (0x05)
0x01, //endpoint number and direction (0x01 = EP1 OUT)
0x02, //transfer type supported (0 is control, 1 is iso, 2 is bulk, 3 is interrupt)
USB_EP1_RX_SIZE & 0xFF,USB_EP1_RX_SIZE >> 8, //maximum packet size supported
0x01, //polling interval in ms. (for interrupt transfers ONLY)

};

//****** BEGIN CONFIG DESCRIPTOR LOOKUP TABLES ********
//since we can't make pointers to constants in certain pic16s, this is an offset table to find
// a specific descriptor in the above table.

//NOTE: DO TO A LIMITATION OF THE CCS CODE, ALL HID INTERFACES MUST START AT 0 AND BE SEQUENTIAL
// FOR EXAMPLE, IF YOU HAVE 2 HID INTERFACES THEY MUST BE INTERFACE 0 AND INTERFACE 1
#define USB_NUM_HID_INTERFACES 0

//the maximum number of interfaces seen on any config
//for example, if config 1 has 1 interface and config 2 has 2 interfaces you must define this as 2
#define USB_MAX_NUM_INTERFACES 1

//define how many interfaces there are per config. [0] is the first config, etc.
const char USB_NUM_INTERFACES[USB_NUM_CONFIGURATIONS]={1};

#if (sizeof(USB_CONFIG_DESC) != USB_TOTAL_CONFIG_LEN)
#error USB_TOTAL_CONFIG_LEN not defined correctly
#endif


//////////////////////////////////////////////////////////////////
///
/// start device descriptors
///
//////////////////////////////////////////////////////////////////

//device descriptor
char const USB_DEVICE_DESC[] ={
USB_DESC_DEVICE_LEN, //the length of this report
0x01, //constant DEVICE (0x01)
0x10,0x01, //usb version in bcd
0x00, //class code (if 0, interface defines class. FF is vendor defined)
0x00, //subclass code
0x00, //protocol code
USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8)
0xD8,0x04, //vendor id (0x04D8 is Microchip)
0x03,0x00, //product id (0x0003)
0x00,0x01, //device release number
0x01, //index of string description of manufacturer. therefore we point to string_1 array (see below)
0x02, //index of string descriptor of the product
0x00, //index of string descriptor of serial number
USB_NUM_CONFIGURATIONS //number of possible configurations
};


//////////////////////////////////////////////////////////////////
///
/// start string descriptors
/// String 0 is a special language string, and must be defined. People in U.S.A. can leave this alone.
///
/// You must define the length else get_next_string_character() will not see the string
/// Current code only supports 10 strings (0 thru 9)
///
//////////////////////////////////////////////////////////////////

//the offset of the starting location of each string.
//offset[0] is the start of string 0, offset[1] is the start of string 1, etc.
const char USB_STRING_DESC_OFFSET[]={0,4,14};

#define USB_STRING_DESC_COUNT sizeof(USB_STRING_DESC_OFFSET)

char const USB_STRING_DESC[]={
//string 0
4, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
0x09,0x04, //Microsoft Defined for US-English
//string 1
10, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'I',0,
'I',0,
'C',0,
'O',0,
//string 2
32, //length of string index
USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
'F',0,
'l',0,
'o',0,
'w',0,
' ',0,
'C',0,
'o',0,
'n',0,
't',0,
'r',0,
'o',0,
'l',0,
'l',0,
'e',0,
'r',0
};


#ENDIF
[/spoiler]


Arquivo .INF que eu alterei e consegui alterar o que me parece ser o endereço do dispositivo USB.


; Installation file for mchpusb driver
; Copyright (C) 2004 by Microchip Technology, Inc.
; All rights reserved

[Version]
Signature=$WINDOWS NT$
Class=%ClassName%
ClassGuid={4D36E97E-E325-11CE-BFC1-08002BE10318}
Provider=%MFGNAME%
CatalogFile=mchpusb.cat
DriverVer=08/06/2007

[Manufacturer]
%MFGNAME%=DeviceList

[DestinationDirs]
DefaultDestDir=10,System32\Drivers

[SourceDisksFiles]
mchpusb.sys=1
wdmstub.sys=1

[SourceDisksNames]
1=%INSTDISK%,,,

[DeviceList]
%DESCRIPTION%=DriverInstall,USB\VID_04D8&PID_0003

;------------------------------------------------------------------------------
; Windows 2000/XP Sections
;------------------------------------------------------------------------------

[DriverInstall.ntx86]
CopyFiles=DriverCopyFiles

[DriverCopyFiles]
mchpusb.sys,,,2

[DriverInstall.ntx86.Services]
AddService=MCHPUSB,2,DriverService

[DriverService]
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%10%\system32\drivers\mchpusb.sys
AddReg=TraceFlags

;------------------------------------------------------------------------------
; Windows 98/Me Sections
;------------------------------------------------------------------------------

[DriverInstall]
AddReg=DriverAddReg
CopyFiles=DriverCopyFiles,StubCopyFiles
DriverVer=08/06/2007 ; TODO replace with real info

[DriverAddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,"wdmstub.sys,mchpusb.sys"

[StubCopyFiles]
wdmstub.sys,,,2

;------------------------------------------------------------------------------
; String Definitions
;------------------------------------------------------------------------------

[Strings]
MFGNAME="IICO"
INSTDISK="FlowController Installation Disc"
DESCRIPTION="Flow Controller"
ClassName="PIC 18Fxx5x USB Devices"
[/spoiler]


Vou ter que ler muito sobre o protocolo USB.

Links interessantes:

http://www.pads.ufrj.br/~rapoport/usb/usb4.html

http://homepages.dcc.ufmg.br/~adrianoc/usb/

Link para o comentário
Compartilhar em outros sites

A literatura sobre USB realmente é muito extensa.

Mas depois que você começa a estudar, não quer mais parar pois é muito bacana a gama de aplicações que podem ser feitas com ela.

você consegue perceber que a dificuldade não é o hardware em si, mas a parte de software/controle. Boa parte do tempo nos levamos tentando fazer com que o PC reconheça um dispositivo USB válido e consiga conversar com ele.

Mas você está no caminho certo. Pegou um exemplo pronto e está dissecando-o. Daqui a pouco tempo conseguirá modificá-lo a ponto de fazer suas próprias aplicações.

Falou

Link para o comentário
Compartilhar em outros sites

Matheus (koala) você teve algum problema com o capacitor do VUSB?

O cara aqui: http://www.vabsco.com/bardhp/

Fala que usou um de 200nF ceramico e teve problemas, e então trocou por um de 470nF também ceramico e os problemas se foram...

Você usou 47uF, era polarizado? O terminal positivo ficou no pino VUSB?

Entre o VCC e GND do USB você colocou um de 100nF mas isso foi apenas para deixar bem contínuo né?

Vou encomendar o PIC, ai já vou pedir tudo de uma vez...

Link para o comentário
Compartilhar em outros sites

você está correto.

Utilizei um polarizado, eletrolítico, no pino VUSB de 47uF. O positivo vai no pino e o negativo no terra. Um amigo meu estava usando um verde grande q nao sei o nome e teve problemas.

O de 100nF é para deixar a alimentação do PIC bem estável. Se você não utilizar um capacitor ali, quando tentar acender um led pelo PIC, ele simplesmente reinicia!!!

Falou

Link para o comentário
Compartilhar em outros sites

Olha, quando você pensa em fazer a comucação pela USB no PC, pelo menos entendo que o hardware deve fciar próximo ao PC.

Para aumentar essa distância você pode usar módulos RF como comentei no outro tópico.

Aí, nesse caso você precisa de 2 PICs: 1 vai estar no PC e o outro será o escravo q só receberá as ordens do primeiro PIC.

Falou

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!