Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PC tastatura preko mikrokontrolera

[es] :: Elektronika :: Mikrokontroleri :: PC tastatura preko mikrokontrolera

[ Pregleda: 4248 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Brelak
Nis

Član broj: 131174
Poruke: 227
92.60.238.*



+3 Profil

icon PC tastatura preko mikrokontrolera26.05.2011. u 13:55 - pre 157 meseci
Postovane kolege, sebi sam postavio zadatak da mikrokontroler upravlja radom tastature sa ciljem slanja karaktera (funkcija) ka racunaru. Tastatura je naravno matricna i sastoji se iz A-H redova i 1-18 kolona cijim se kombinovanjem (kratkospajanjem) dobija tacno odredjeni karakter na izlazu. Moja predpostavka je ta da su kolone (1-18) ulazi a redovi (A-H) izlazi na osnovu toga sto je na linijama A-H napon od 4,2 V dok je na linijama 1-18 "nula". Moja sledeca predpostavka je ta da je u odredjenom momentu na 7 linija iz grupe A-H napon od 5 V a na samo jednoj iz iste grupe "nula". Meni lici na neki vid PWM-a sa "duty cycle" od 7/8. Na osnovu toga vidim da postoji "sekvenca" na izlazima.

E sad, posto zelim da MCU upravlja tastaturom, imam opciju da napravim matricu "prekidaca" koji ce se paliti i gasiti od strane MCU-a, ta opcija odpada jer je suvise primitivna i verujem da postoji pametnije resenje. Sledeca ideja je da GPIO linije dovedem do kodera 3/8 (A-H linije) i 4/16 (1-18) jer koristim samo 16 linija i na taj nacim pravim kombinaciju i dobijam karaktere.

To je sto sam planirao a evo sta se desava. Kada dovedem "nulu" na neku od linija 1-18 ne dobijam nista, ne dobijam nista ni ako dovedem "jedinicu". Ako dovedem "jedinicu" na jednu od linija A-H ne dobijam nista, ali dobijam cirkus ako dovedem "nulu" a to izgleda od prilike ovako: "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfASDFASDFASDFASDFSDFSDFSDFSDFasasasasasasasdasdfasdf".

Interesuje me zna li neko kako da "prevarim" tastaturu da izgleda kao da kucam, zanima me samo kako bi elektronika izgledala jer ako skontam kako ona funkcijonise napisacu program bez problema?
Sledece pitanje je, ukoliko nije moguce da ide preko miktrokontrolera kontrola, koji je protokol koji koristi USB-tastatura? Cilj mi je dakle da saljem karaktere i da moj hardver glumi HID (human interface device).

Hvala unapred!
Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: PC tastatura preko mikrokontrolera26.05.2011. u 21:09 - pre 157 meseci
imas gomilu primera
- kako da oponasas tastaturu (da okacis pic ili atmel na ps2 port i da oni glume tastaturu - salju skan kodove)
- kako da oponasas hid device (tastaturu i misa i saljes preko usb-a isto to)

ako hoces pic, imas primer za to koji dolazi uz mikroC za 18f4550 na primer za usb i ps2 i za 16f887 ili 870 samo za ps2 .. takodje imas primer kako da okacis tastaturu na pic i da citas "sta stize sa pc tastature"

za hid takodje imas primer u MAL-u (microchip application library) i za tastaturu i za misa (samo da budes HID klijent, ne i da budes host za hid device)

za atmela imas brdo primera uz arduino ide koji glume tastaturu preko ps2
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: PC tastatura preko mikrokontrolera26.05.2011. u 21:12 - pre 157 meseci
inace nisam skontao pitanje sa tastaturom? ne znas kako da ocitas matricu?

ako imas matricu AxB

setas keca od A0 do An i citas za Ax koji By je 1 .. i tako u krug, to se zove "skeniranje" tastature

dakle ako je za A5 B7 kec onda ti je stisnut taster na polju A5B7 ..

obrati paznju da takva standardna matrica ne ume uvek pravilno da detektuje kada je stisnuto vise tastera

to sto ti se cini da je pwm je samo brzo skeniranje ... dakle za nekoliko mikro sekundi se izskenira jedna linija tako da gledanje napona voltmetrom nece mnogo da ti pomogne .. neki osciloskop ili logic analyzer bi ti mnogo vise pomogli
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
92.60.238.*



+3 Profil

icon Re: PC tastatura preko mikrokontrolera26.05.2011. u 21:49 - pre 157 meseci
Princip rada matricne tastature mi je savrseno jasan. Ali ocigledno je da se od A0 do An ne salje 1 vec 0, jer 7/8*5V je onaj napon koji ja merim na jednom od pinova. Ja hocu pinove sa kontrolera da prikacim direktno na izvode plocice iz tastature i da na taj nacin "kuckam".

Moja ideja je da skiniram izlazni port, odnosno onaj port koji vrti jedinicu po svim pinovima, i da cekam jedinicu na tacno odredjenoj liniji i da u tom momentu pustim jedinicu na jednu od ulaznih linija na tastaturi. Time bih dobio "A5B7", trenutak A5 a B7 je moj izbor.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: PC tastatura preko mikrokontrolera26.05.2011. u 22:11 - pre 157 meseci
nije razlika dal je 1 ili 0 ... moze da bude i nula sto znaci da su svi pinovi dignuti pull-up otpornikom na Vdd a da ih mcu spusta dole... razlika je nikakva.

ako hoces da se kacis na plocicu, mozes, moras da vatas promenu na A0-Ax i da vracas nazad info na B0-Bx ... moguce je ali zavisi mnogo od toga kojom brzinom taj mcu na plocici to skenira, vrlo je moguce da skenira mnogo brze nego sto ti mozes da odreagujes. Mnogo ti je jednostavnije da se na 2 pina okacis direkt na izlaz te plocice i da saljes skan kodove preko ps2 porta direktno (ako je to ps2) ili da stavis neki usb enabled pic i da saljes to kao hid na usb .. imas primere u MAL-u kao i uz mikroC i u CCS C za to ...
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
92.60.238.*



+3 Profil

icon Re: PC tastatura preko mikrokontrolera26.05.2011. u 22:26 - pre 157 meseci
Da, razumem... Nista bez osciloskopa a za to cu morati na fakultet tako da cu jedino tada znati da li cu moci da odreagujem sa svojim kontrolerom (AT89S52). Radim inace iskljucivo sa Atmel kontrolerima jer samo taj programator imam. Moze jos jedno razjasnjavanje? :) Llinije su dignute ka Vdd-u a mcu spusta samo jednu ka nuli u odredjenom trenutku. Kako onda ulaz tog mcu-a (Bx) zna koji je taster pritisnut ako je pre pritiska napon na njemu bio nula i nakon pritiska, obzirom da je Ax prosledio nulu?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: PC tastatura preko mikrokontrolera27.05.2011. u 10:56 - pre 157 meseci
imas pull up i sa druge strane ... mada je mnogo cesce da se seta kec nego nula .. ako je sa druge strane uvek nula onda se vamo seta kec, samo se seta suvise brzo da bi ti to lepo izmerio bez osciloskopa

inace sa '52 ces teeeeeeeeesko da stignes da odgovoris na vreme. on nema dovoljno interapt ulaza da bi mogao na vreme da odreaguje na svaku tu promenu a da se vrtis u petlji i proveravas ulaze ... tesko .. doduse sve zavisi od tastature do tastature, pitanje koliko je brz taj ispljuvak na toj plocici, mnogo ti je bolji rad da izbacis taj ispljuvak potpuno i da pricas direktno na ps2 to sto koristis '52 ne bi trebalo da te spreci, ps2 protokol je lepo objasnjen imas primere i za intela ..

http://en.pudn.com/downloads15...ode/embed/detail649733_en.html
http://www.8052.com/sbc/ps2
http://www.8052.com/codelib/files/ps2_kbd_interface.zip
http://www.semiconductors.phil...oad/applicationnotes/AN434.pdf
http://www.edaboard.com/ftopic47473.html
http://www.edaboard.com/ftopic28031.html
http://www.edaboard.com/viewtopic.ph...&highlight=ps2
http://www.edaboard.com/ftopic47473.html
http://www.computer-engineering.org/

a evo ga i jedan koji radi to sto bi ti hteo (tuce po toj plocici od tastature): http://www.simpits.org/engineering/KeyEmu/Key_Emu.html


 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
*.entercom.co.yu.



+3 Profil

icon Re: PC tastatura preko mikrokontrolera27.05.2011. u 11:40 - pre 157 meseci
Moze li preko PS/2 da se simulira HID? Predpostavljam da moram po ukljucenju da saljem neku poruku da kazem da se registrujem kao HID...

Hvala na linkovima!
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: PC tastatura preko mikrokontrolera27.05.2011. u 11:59 - pre 157 meseci
HID je USB profil, nema nikakve veze sa PS2 ... ako hoces da se kacis na USB moras da uzmes mikrokontroler sa usb hardware-om, '52 nije jedan od njih

preko PS/2 saljes
- stisnut keycode 0x##
- otpusten keycode 0x##
- stisnut mouse taster %
- mis gore/dole = +-#
- mis levo/desno = +=#

i to je to ... saljes te kodove preko ps/2 po protokolu koji je prilicno dobro dokumentovan (preko istog tog protokola dobijas i neke informacije nazad, tj koji led da upalis na tastaturi) nema nikakve registracije na ps2 ... to je kao "seriski protokol na jednoj zici"



pogledaj www.rasmicro.com/FTP/an434.pdf

to ti je sema gde '51 prica sa tastaturom imas i sors

reko si da radis sa atmelom, ako moze atmega a ne samo odvratni '52 imas ovde usb varijantu sa atmega: http://www.krezac.net/avr/yake-en

a u prethodnom postu imas linkove sa sorsom za '52
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
..106.109.adsl.dyn.beotel.net.



+28 Profil

icon Re: PC tastatura preko mikrokontrolera27.05.2011. u 15:34 - pre 157 meseci
PS/2 ne moze da bude HID, HID je vezan za USB.

Sve mi je jasno, osim teznje da sebi iskomplikujes zivot i to maximalno.

Proguglaj "keyboard emulator" i dodaj svoj omiljeni mikrokontroler.

Sa PIConjom sam poodavno pravio tako nesto, kaci se na PS/2 port i izograva "tastaturu" za 10-ak tastera.
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
*.entercom.co.yu.



+3 Profil

icon Re: PC tastatura preko mikrokontrolera27.05.2011. u 17:58 - pre 157 meseci
Pa ja ne zelim da komplikujem sebi zivot, trebalo je da bude vrlo prosto ali nece pa nece. Problem je sto moj uredjaj treba da bude u istom rangu kao i tastatura, da na toliko niskom nivou salje karaktere i komande a ja preko USB-a, tacnije FT232 USB to UART board, to bas ne uspevam. Otud ideja da oponasam kuckanje sa tastature. Da to moze preko UART-a, moj problem bi bio resen.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: PC tastatura preko mikrokontrolera27.05.2011. u 18:14 - pre 157 meseci
FT232 NE MOZE da glumi HID uredjaj na USB-u

mozes
1. da glumis HID device (tastaturu) na USB-u ali to NE MOZE sa 8052, treba ti cip koji moze da tuce usb, znaci ili neki PIC ili ATMEGA, medju linkovima koje sam ti dao imas primer sa ATMEGA8
2. da glumis tastaturu na PS/2 portu i da sa tvoj 8052 saljes kodove direkt na PC preko PS/2 porta ... to mozes za 8052 i imas primer medju url-ovima kako to da uradis

ono sto ne mozes je da to odradis sa FT232 (on je fifo ili cdc device ne moze da bude hid device) a koriscenje te plocice kako si zamislio je komplikovanje zivota
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
..106.109.adsl.dyn.beotel.net.



+28 Profil

icon Re: PC tastatura preko mikrokontrolera27.05.2011. u 19:29 - pre 157 meseci
Paz 'vako, ona pljucka na plocici za tastaturu je neka podvarijanta 874x mikrokontrolera (imam negde jedan sa prozorcetom za UV briskanje) koji je skenirao matricu i slao XT/AT varijante Scan kodova preko PS/2 port-a (mini DIN-5) ili klasicnog DIN-5 porta (sto ti jedno te isto). Ako bas hoces, napravi sa tvojim omiljenim kontrolerom skeniranje redova/kolona, prouci PS/2 tastaturu i resio si problem.

Mada, koliko sam ja uklavirio, ti bi da imitiras pritisnut taster u matrici koju kontrolise neki 874x

Sve u svemu, turis jednu stanovitu kolicinu Reed-ova i simuliras svoje klaparanje po tastaturi - napravis svoju matricu da bi simulirao tastatursku matricu. Ne vidim nikakvu logiku u tome. Nisam siguran, al' trebalo bi da bude nekih primera na MikroE sajtu a propos PS/2 (imaju to oni na razvojnim sistemima).

Evo i neki demo program
Code:
/*
 * Project name:
     PS2 (Demonstration on using mikroC's PS/2 keyboard library)
 * Copyright:
     (c) MikroElektronika, 2009.
 * Revision History:
     20080930:
       - initial release;
       - 20090818 - Slavisa Zlatanovic;
 * Description:
     In this example, key(s) pressed on the PS/2 keyboard are read and transferred
     to PC through serial port connection. Various basic keyboard activities are
     tested: "normal" keys, keys with <Shift> pressed, keys with <Caps Lock>
     pressed, numerical keypad ON/OFF and keys. The result is visible on PC, via
     USART Terminal tool.
 * Test configuration:
     MCU:             ATmega16
                      http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf
     Dev.Board:       EasyAVR6
                      http://www.mikroe.com/en/tools/easyavr6/
     Oscillator:      External, 8.0000 MHz
     Ext. Modules:    PS/2 standard 101-keys keyboard
     SW:              mikroC PRO for AVR
                      http://www.mikroe.com/en/compilers/mikroc/avr/
 * NOTES:
     - Some keyboards with various multimedia attachments on them (especially the
       cheap ones) tend to "choke" the communication by constantly sending
       requests on various multimedia object's status (volume, mouse pos. etc.).
       This may slow down the communication pace with the MCU.
     - LEDs off and pull-ups on PORTC may be required.
     - RX and TX UART switches on EasyAVR6 should be turned ON(SW9.2 and SW9.5).
 */


unsigned short keydata = 0, special = 0, down = 0;
 
sbit PS2_Data         at PINC.B0;
sbit PS2_Clock_Input  at PINC.B1;
sbit PS2_Clock_Output at PORTC.B1;

sbit PS2_Data_Direction   at DDRC.B0;
sbit PS2_Clock_Direction  at DDRC.B1;

void main() {

  UART1_Init(19200);                        // Initialize UART module at 19200 bps
  Ps2_Config();                             // Init PS/2 Keyboard
  Delay_ms(100);                            // Wait for keyboard to finish
  UART1_Write('R');                         // Ready

  do {
    if (Ps2_Key_Read(&keydata, &special, &down)) {
      if (down && (keydata == 16)) {        // Backspace
         UART1_Write(0x08);
      }
      else if (down && (keydata == 13)) {   // Enter
        UART1_Write('\r');                  // Send carriage return to usart terminal
        //Usart_Write('\n');                // Uncomment this line if usart terminal also expects line feed
                                            // for new line transition
      }
      else if (down && !special && keydata) {
        UART1_Write(keydata);
      }
    }
    Delay_ms(10);                           // Debounce
  } while (1);
}


[Ovu poruku je menjao Sepa011 dana 27.05.2011. u 20:50 GMT+1]
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
92.60.238.*



+3 Profil

icon Re: PC tastatura preko mikrokontrolera28.05.2011. u 11:07 - pre 157 meseci
Ima smisla sve ako ste slepa osoba...Regularna tastatura moze da odradi posao, ali krajnji cilj je daleeeeeeeeeko...Mozda ste culi za Braille alfabet?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: PC tastatura preko mikrokontrolera28.05.2011. u 11:20 - pre 157 meseci
naravno samo to "sta" ces ti da doverdes do mikrokontrolera je abitno, fora je da mikrokontroler salje skankodove direktno preko ps2 umesto da komplikujes sebi zivot sa tom plocicom izmedju
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
..106.109.adsl.dyn.beotel.net.



+28 Profil

icon Re: PC tastatura preko mikrokontrolera28.05.2011. u 11:31 - pre 157 meseci
Naravno da sam čuo za Braille, čak sam i učio da kucam na Braille pisaćoj mašini. Trebalo je da odmah u startu napišeš š'a 'oćeš, pa da pokušamo da ti pomognemo.

Daklem, Braille 'tastatura' ima mnogo mnanje tastera nego obična. PC tastatura, ponekad, ima problema sa očitavanjem više pritisnutih tastera odjednom. Tu bi tebi idealno čučnuo jedan uC sa malom matricom (i tehnikama prepoynavanja više pritisnutih tastera), proučiš PS/2 protokol ili upotrebiš USB HID i tu si završio posao. Mentalna gimnastika završena, a ljudima kojima je takav uređaj potreban veliko olakšanje.
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
92.60.238.*



+3 Profil

icon Re: PC tastatura preko mikrokontrolera28.05.2011. u 11:48 - pre 157 meseci
A dobro, trebao sam da kazem odmah ali rekoh da ne gusim previse, prvi post je i tako ogroman. Znam kako izgleda ceo taj Braille sistem, cak znam i kompletan alfabet. Fora je sledeca, kucas u Braille-u, kontroler prevodi u scan kodove i kraj price. Juce sam probao da napisem kod za slanje samo jednog karaktera medjutim nisam uspeo.

U sustini, ne pocinjem nista dok DATA i SCK linije nisu na visokom nivou, onda postavim DATA liniju na zeljeni nivo, pa tek onda klokujem i tako za svih 11 bitova. Evo, okacicu kod.
Code:
#include <REGX52.h>
#include <stdio.h>

#define    HIGH        1
#define    LOW        0
#define      DATA     P0_0
#define      CLK        P0_1


void DelayMs(unsigned int);
void Clock(void);

void PS2(void);                                            

void PS2(void)
{
    while(DATA && CLK != HIGH);            // Data & Clock = "1"
    
    DATA = LOW;        // Start bit
    Clock();
    DATA = LOW;        // bit 0
    Clock();
    DATA = LOW;        // bit 1
    Clock();
    DATA = HIGH;            // bit 2
    Clock();
    DATA = HIGH;             // bit 3
    Clock();
    DATA = HIGH;           // bit 4
    Clock();
    DATA = LOW;        // bit 5
    Clock();
    DATA = LOW;        // bit 6
    Clock();
    DATA = LOW;        // bit 7
    Clock();
    DATA = LOW;        // Parity bit
    Clock();
    DATA = LOW;        // Stop bit
    Clock();        
}

void DelayMs(unsigned int count)             // Pauza u milisekundama
{  
    unsigned int i;                     
    while(count) 
    {
        i = 115;
        while(i>0) i--;
        count--;
    }
}

void Clock()                                 // Pauza 44 mikrosekunde
{
    int d = 0;  
    CLK = LOW;
    while(d < 4)
        d++;
    CLK = HIGH;        
}

/*------------------------------------------------
MAIN C function
------------------------------------------------*/
void main (void)
{                            
    while(1)
    { 
        PS2();
        DelayMs(1000);
    }
}


U medjuvremenu sam video da postoje "MAKE" i "BRAKE" kodovi, to bih takodje trebao da ubacim. Inace, kad povezem MCU na ps/2 desi se to da DATA linija padne na niski nivo dok je CLK na visokom.
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
..106.109.adsl.dyn.beotel.net.



+28 Profil

icon Re: PC tastatura preko mikrokontrolera28.05.2011. u 13:50 - pre 157 meseci
Jes' da ne trosim atmele, al' evo malo "literature", mozda ti pomogne

http://www.leien.info/buttonbox/
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
..106.109.adsl.dyn.beotel.net.



+28 Profil

icon Re: PC tastatura preko mikrokontrolera28.05.2011. u 20:07 - pre 157 meseci
Ex, sad se setih, Braille tastatura ima jako malo tastera čini mi se ne više od 10-12. Prosta stvar za uC.
 
Odgovor na temu

Brelak
Nis

Član broj: 131174
Poruke: 227
92.60.238.*



+3 Profil

icon Re: PC tastatura preko mikrokontrolera28.05.2011. u 23:38 - pre 157 meseci
Heh, kao sto rekoh, znam je :) Pravio sam Braille typer. Ona mora da ima minimum 6 tastera za formiranje karaktera i bar jos jedan za "space".
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: PC tastatura preko mikrokontrolera

[ Pregleda: 4248 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.