Mouse-ul computerului ca senzor precis

Sarcina: efectuați rapid un senzor liniar de deplasare de la un șoarece computer.
La șoarecii convenționali, se ascunde un senzor optic foarte sensibil. Există propriile mici "camere" și prelucrarea procesorului, care urmărește mișcarea celor mai mici puncte de pe suprafață. În rezoluția șoarecilor de top este de numai 3 microni!






Mouse-ul computerului ca senzor precis

Cu ce ​​pietre underarm am întâlnit, plus partea tehnică, vom spune mai departe!


Următoarea TK a dat clientului: pentru a face cât mai curând posibil, cu orice mouse-ul (posibil fără fir), afișat pe LED 7 segmente, buton de resetare, calculatorul nu se potrivește, avem nevoie de rezoluție de 0,01 mm, distanța maximă de 1000 mm.

În primul rând, cum sa procedat:
Plan:

Citiți coordonatele xy din mouse:
Puteți implementa datele de citire în mai multe moduri:
a) direct de la cipul senzorului optic
+se poate face cu un controler simplu
- Poți uita de universalitate
b) conectați mouse-ul prin USB la controlerii simpli (de exemplu, la arduino)
+simplitate și hotărâre
- este necesar să lipiți
- la îndemână a fost doar arduino, și vă puteți conecta la soareci compatibile cu
PS / 2, și de obicei sunt foarte inexacte. A fost posibil pe stm32, dar pe panourile de depanare
puternic în preț, nu am avut timp să mă lipesc. (dar dacă este interesat, atunci
acum câțiva ani a existat un proiect similar cu privire la stm32f4discovery)
c) Luați un simplu calculator cu plată unică. La mâna a fost doar
Raspberri pi.
+potrivit pentru orice mouse USB
+performanță bună
-scump, dar puterea excesivă poate fi cerută mai târziu
Ca rezultat, sub bisturiul chirurgului pune Zmeură pi 3. Patru pe 64 de biți de bază A-53 la 1 GHz, 512 MB de RAM și multe alte spațiu pentru acest tsiferok.

Mouse-ul computerului ca senzor precis

Sarcina: indicarea trebuie să se facă pe indicatorii pe 7 segmente emise. Se pare că avem nevoie de 6 cifre pe coordonate, 12 indicatori în total. Fiecare indicator are 7 picioare pe cifre + picior pe punctul LED (dp), firul comun nu este luat în considerare. Total după calcule simple, ajungem că trebuie să controlam 96 conductori și avem nevoie de un buton. 96 rezistoare nu au vrut cu adevărat să-și petreacă.

Ascultă asta!
La urma urmei, dacă LED-ul este aprins - înseamnă - este nevoie de o singură rezistență?

Nu este posibil să gestionați imediat o astfel de gamă de picioare. Există o cale de ieșire! Și chiar și câteva!
1) Utilizați microcipuri suplimentare ca max7219 sau registre de deplasare, multiplexoare etc.
+puteți crește aproape infinit numărul de indicatori
- s-a găsit că max7219 are o tensiune de operare de 5 V
- nu era la îndemână nimic potrivit.
2) Puteți face o afișare dinamică. La un moment dat, este aprinsă numai o singură lumină LED. Dacă indicatorii comută foarte repede, ochiul uman nu va observa cadrele.






+ aveți nevoie doar de 8 fire și rezistențe pe indicator și 12 pentru indicatoarele de comutare. În plus, nu uitați butonul. Total: doar 21 de picioare împotriva 96. Luăm!
-deoarece încercăm să controlam un întreg indicator printr-un pin al unei magistrale, atunci curentul maxim este limitat la 50 mA. Luați întotdeauna un stoc și ia 35 mA pentru toate cele 8 LED-uri (care nu prea sunt). În plus, adăugăm o schimbare rapidă a indicatorilor. Ca rezultat, fiecare dintre noi are de 12 ori mai scurt decât cel prescris. 12 tranzistori pot fi modificate, dar am lăsat-o pentru mai târziu, deoarece luminozitatea a fost de ajuns.

Mouse-ul computerului ca senzor precis

Acum începe software-ul:
Trebuie să instalați linux pe server. Am pus distribuția minimă
RASPBIAN JESSIE LITE
Mai mult, prin programul chit conectat la IP malinki, și mai mult printr-o linie de comandă.
Pentru a facilita lucrul cu GPIO (porturi de intrare și ieșire) există o minunată bibliotecă de WiringPi
Cum se instalează și se administrează porturile, puteți găsi o mulțime de informații despre rețea, așa că nu voi elabora în detaliu acest lucru.

În continuare, trebuie să creăm un tată pentru proiectul nostru

Asta e tot! Acum conectăm mouse-ul, introducem firele și începem!

Mouse-ul computerului ca senzor precis

// declarații privind numărul de pini. Folosim numerele de cipuri Broadcom.

const int p21pin = 2;
const int p22pin = 3;
const int p23pin = 4;
const int p24pin = 17;
const int p25pin = 27;
const int p26pin = 22;
const int p11pin = 10;
const int p12pin = 9;
const int p13pin = 11;
const int p14pin = 5;
const int p15pin = 6;
const int p16pin = 13;
const int papin = 8;
const int pbpin = 23;
const int pcpin = 12;
const int pdpin = 20;
const int pepin = 21;
const int pfpin = 24;
const int pgpin = 18;
const int pdppin = 16;

const int butpin = 26;

Autostart la boot:

Este foarte ușor să lucrezi cu acest program. Făcând clic pe butonul mouse-ului sau doar un buton de pe tablă este zero. Când butonul este apăsat pentru o lungă perioadă de timp, mergeți la modul de ajustare DPI. Acesta este un parametru important care este setat de mouse și arată câte contorizări obținem când se mișcă un inch. În consecință, excavatorul de pe placă și de pe mouse adaugă și scade DPI. Apăsați lung, valoarea noastră este înregistrată într-un fișier și stocată în mod fiabil până la următoarea pornire de sistem. Pentru puritatea experimentului din program, indicația, primirea informațiilor de la mouse și buton sunt procesate în procese paralele.

Apoi, cel mai interesant! Testarea și rezultatele!
Care sunt nuanțele de lucru cu mouse-ul:
1. axele X și Y pe mouse-ul meu nu a fost paralelă cu fețele laterale, a fost necesar pentru distanța reală vyschityvaniya utilizați „pantaloni pitagoreice.“
2. Puterea de rezolvare nu este egală cu eroarea!
Rezoluția simplă yazykom- arată într-adevăr deplasarea minimă, care vede un mouse (contează în calculator trebuie să fie rezoluția minimă discretă). Dar că mouse-ul nu pierde nimic, nu este garantat. Puteți reduce această valoare utilizând suprafețe bune (astfel încât senzorul optic să poată urmări mișcările), să utilizeze viteze mici. Dar vor exista întotdeauna omisiuni! Pentru utilizator, aceasta înseamnă o plecare constantă la zero și o eroare de măsurare imprevizibilă.
3. HID-ul USB pe care funcționează mouse-ul nu garantează furnizarea de informații către computer! Aceasta este, nu se știe dacă computerul a pierdut orice informație de la mouse sau nu. Probabilitatea pierderii informațiilor este mică, dar totuși există.
4. Setările de sensibilitate (rezoluție) sunt uneori stocate nu pe mouse, ci în programul pentru mouse.
5. Aici sunt foarte supărat! Faptul că mouse-ul am luat cea mai tare gama de Logitech, a fost cel mai avansat model de pe MX performanță logitech zi. Dar ce a fost surpriza mea atunci când mouse-ul a dat diferite erori atunci când merge înainte și înapoi. Acesta este modul în care? Voi explica utilizatorului. Dacă mișcați în mod constant mouse-ul înainte și înapoi, atunci cursorul este vizibil, astfel încât totul să scadă și să scadă. E pe orice platformă. Trebuie să ridici periodic mouse-ul și să îl plasați într-un loc nou. După ce am observat asta, viața mea sa transformat într-un coșmar! #Logitech logitech explică diferența esențială în erorile de măsurare înainte și înapoi!







Trimiteți-le prietenilor: