Zedomax DIY121 - Kā izveidot savu "PS3 SIXAXIS kontrolieri" style BASIC-programmējamas USB ierīci!
Uzklikšķināt šeit, lai apskatītu pilnekrāna režīmā
USB ierīces ir viegli lietotājiem instalēt un izveidot (kamēr viss strādā pareizi). Bieži vien jūs vienkārši iespraudiet USB ierīci un tā darbojas uzreiz. Tas it īpaši attiecas uz ievades ierīces, piemēram, peles un tastatūras.
Šīm ierīcēm jāatbilst specifikācijai slāņveida papildus USB protokols: Human Interface Device. Gandrīz jebkuru iespējamo veidu ieejas ir ierobežots; visu "ziņojums deskriptors" valodu lieto pateikt datoram, kā apstrādāt ievadi. Tas nav ļoti viegli īstenot; desmitiem uz konkrētiem pieprasījumiem, ir jārīkojas pareizi. Ir daudzi pasākumi, starp tapām USB ierīci, un spēja to izmantot;Tas viss notiek dažās milisekundēs un neveiksmes jebkurā posmā ir ierīce nedarbojas.
Ko darīt, ja jums nav jāuztraucas par kādu no tā? Ko darīt, ja jūs varētu izmantot jūsu mīļākie mikrokontrolleru, vai "kaut kas" un ievadi parādās datoru pareizā formātā? Jums nebūs jāuztraucas par sarežģītiem USB kodu, HID specifikācijas vai pārkāpj USB kodu, ja pievienojot citas funkcijas, jums ir nepieciešams. Jums nebūs jāuztraucas daudz par rakstveidā optimizēts kods, vai vienmēr kļūst jo kā USB pārtrauc.
HID portāls
Tas ir tieši tas, ko es nolēmu to darīt. Pāris gadus atpakaļ, es attīstīju USB ierīci un izgāja caur visu galvassāpes gūt USB HID izveidota un darbojas. Jo man jau bija grūti paveikto darbu, es nolēmu pievienot metodi, saņem datus no citas mikrokontrolleru un izmantojot šo datu ievades plūsma par HID kods. Es gribēju izmantot Cubloc BASIC-programmējams kontrolieris, lai apstrādātu manu ieejas datus un nosūta to HID portālu. Mans testa piemērošana būtu akselerometru bāzes HID kursorsviru, vienkārši pievienojiet ierīci datoram un tas darbojas.
Tai nav jābūt kursorsviru, to varēs tastatūra, pele, un daudzus citus vadības noteiktos HID standarts. Tas ir iespējams pievienot apjoma kontroles pogas, lai ierīce ... varbūt ir ķēdes izslēgtu datoru, kad tālrunis zvana? Pārvērst jebkuru sprieguma ievadīti kursorsviru ass jebkura ieslēgsies poga? Kaut kas ir iespējams!
Update: Es nolēmu sarukt CUBLOC aparatūru līdz CB220, un aprīkot viss par lidmašīnas modeli. Modelis tika izvēlēts, lai atbilstu lidmašīnu pieejams no Klusā okeāna spēli mēs izmantojām, lai pārbaudītu kursorsviru interfeiss varoņi.
Hardware Paskaidrojums
HID Portāls ir balstīta uz vecā projekta raktuves, pamatojoties uz MC68HC908JB8 mikrokontrolleru un programmēt pa pulcēšanās valodā. Attiecībā uz dažiem iemesliem nevaru tiešām atbrīvot kods tieši tagad, bet ir daudz citu USB projektiem, kas pastāv, kas varētu pielāgo šim nolūkam. Ir atvērts izcelsmes mīkstajiem USB īstenošanuATTINY mikrokontrolleru, for example.
Mans mikrokontrolleru nav iebūvēto I2C un SPI, tāpēc man nepieciešami, lai īstenotu vienu no mana. Man arī nebija pārtraukt pins pieejams, tas nozīmē mans risinājums, kas vajadzīgi, lai, pamatojoties uz aptauju. Kad visi tika teikts un darīts, un optimizēts, es nevarētu atklāt malām ātrāk nekā 16kHz. Tas ir apmēram desmit reizes lēnāk nekā pāreja produkcija pieejama CUBLOC kontrolieris, lai es nevarētu izmantot to. I beidzās rakstot savu maiņās veic regulāri, BASIC, lai iegūtu datus HID portālu. Tā varētu izvairīties, izmantojot mikrokontrolleru kas ir SPI vai I2C uzcelta jau, bet JB8 ir tas, kas man bija uz rokām.
Es izmantoju trīs signālus, lai sazinātos ar CUBLOC kontrolieris. Pirmkārt, ir CLK signālu. HID portāls konstatē pieaugošo mala. Tajā brīdī tas skan vērtība atrodas DATA līnijas. Tas ir nobīdīts vērā reģistrā, līdz baits ir saņemta, un kods pārceļas uz nākamo baitu./ RST līnija ir veids, lai sinhronizētu sākuma katru datu paketi, ja ir kāds neīsts ievadi, un, kad LOW tā ir iepakojuma, un mazliet indeksu līdz nullei.
HID portāls šobrīd ir ieprogrammēts, lai darbotos kā kursorsvira ar trim asīm un astoņi pogas. Esmu arī testē tā kā tastatūru. Turpmākajā attīstībā, es gribētu, lai HID portāls elastīgāku; let ārējā apstrādātāja izvēlieties ierīces tipu un cik daudz no katras ieejas ir jāaizpilda obligāti. Būtu ļoti elastīgu ja tas tieši pieņemts HID ziņojums raksturlielumiem, taču paver iespēju padarīt kļūdas un galu galā ar nestrādājošu iekārtu.
Akselometru DE-ACCM3D no Dimension Engineering. CUBLOC vienkārši skan spriegums tās ADIN ostām un pāriet uz vērtību starp -127 un 127.
Turpinājās Next Page
















































