Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Televizori (Smart TV)
  • Jednostavna kontrola uređaja sa računara. Upravljanje uređajima preko USB porta računara

Jednostavna kontrola uređaja sa računara. Upravljanje uređajima preko USB porta računara

Jedan od najjednostavnijih i najčešće korišćenih metoda organizovanja razmene podataka između računara i eksternih uređaja je korišćenje standardnih I/O portova - kao što su COM, LPT, IrDA i USB, kao i industrijskih interfejsa SPI, 12C, I-Wire . Ova knjiga je posvećena objašnjavanju principa njihovog rada i kreiranju kontrolnih korisničkih programa. Razmatraju se problemi uparivanja uređaja sa računarom pomoću navedenih interfejsa. Razmatraju se problemi uparivanja uređaja sa računarom pomoću navedenih interfejsa. Dati su primeri kola, kao i izvorni kodovi programa za računare i mikrokontrolere porodice AVR.Priručnik je namenjen programerima elektronske opreme koji treba da obezbede softversku podršku za svoje uređaje.

2. PROGRAMIRANJE LPT PORTA
2.1. Instaliranje upravljačkog programa giveio sys
2:2. Upravljanje statusom linije LPT porta
2.3. Šema postolja za otklanjanje grešaka u programu
2.4. Uparivanje mikrokontrolera sa LPT portom
2.5. Hardver i softver za uzimanje strujno-naponskih karakteristika poluvodičkih uređaja
2.5.1. Uklanjanje strujno-naponskih karakteristika bipolarnih tranzistora
2.5.2. Uklanjanje volt-amper karakteristika tranzistora sa efektom polja
2.5.3. Uklanjanje strujno-naponskih karakteristika dioda
2.5.4. Uklanjanje strujno-naponskih karakteristika zener dioda
2.5.5. Kontrolni blok
2.5.6. Opis softvera

3 SERIJSKI PORT
3.1. Organizacija portnog hardvera
3.2. RS-232C interfejs
3.3. Električni interfejs
3.4. Kontrola protoka
3.4. Interfejs trenutne petlje
3.6. Infracrveni interfejs
3.7. MIDI interfejs
3.8. Konfiguriranje COM portova
3.9. Korištenje COM portova
3.10. Kvarovi i testiranje COM portova
3.10.1. Konfiguriranje verifikacije
3.10.2. Funkcionalno testiranje
3.11. UART programiranje za mikrokontrolere
3.11.1. Prijenos podataka
3 11.2. Prijem podataka
3.11.3. UART kontrola
3.11.4. Generator brzine prijenosa
3.12. Uparivanje računara sa mikrokontrolerom preko COM porta
3.13. Program mikrokontrolera

4. PROGRAMIRANJE KOM PORTOVA
4.1. Otvaranje luke
3.2. Konfiguriranje parametara porta
4.3. Postavljanje vremenskih ograničenja
4.4. Korišćenje standardnog dijaloga postavki porta
4.5. Prijem i prijenos podataka
4.6. Korištenje streamova

5.USB BUS
5.1. Organizacija hardverske autobuske
5.2. USB u FIFO pretvarači
5.3. Povezivanje FT245BM čipa na USB
5.4. Pretvarači USB-RS232
5.5. Povezivanje FT232BM čipa na USB

6. PROGRAMIRANJE USB BUS-a
6.1. Instaliranje drajvera
6.2 Definicija povezanih uređaja. Preuzimanje informacija o uređaju
6.3. Organizacija razmjene podataka
6.4. Softver AVR kontrolera
6.5. Korištenje vremenskih ograničenja
6.6. Uređaji za programiranje bazirani na FT232
6.7. EEPROM programiranje
6.8. USB kodovi grešaka

7. PREGLED SOFTVERA LUKA
7.1. Proteus
7.2. SCADA sistemi
7.2.1. Princip rada SCADA sistema
7.2.2. Genie sistem
7.3. Teiminat
7.4. Wtnscope

8. PRINCIPI ORGANIZACIJE MREŽNE KOMUNIKACIJE
8.1. Korištenje Windows utičnica
8.2. Winsock inicijalizacija
8.3. Kreirajte utičnicu i otvorite vezu
8.4. Slanje i primanje poruka
8.5. Upravljanje procesom generiranja poruka
8.6. Primjer razvoja programa
ANEKSI
LITERATURA

Izdavač: Oldie-plus
Godina izdavanja: 2008
Stranice: 380
ISBN: 978-966-8447-51-8
ruski jezik
Format: PDF
Veličina: 8.5 MB
Preuzimanje: Ryabenky V.M. Računarska kontrola eksternih uređaja preko standardnih interfejsa

Na Habré-u o kontroli lampe putem interneta došla je ideja da se rasvjeta kod kuće kontroliše sa kompjutera, a pošto već imam kompjuter koji se kontroliše sa mobilnog, to znači da se svjetlo može kontrolisati i sa istog telefona . Nakon što je jednom od mojih kolega pokazao članak, rekao je da mu samo treba. Pošto često zaspi iza filmova koje gleda na kompjuteru. Neko vrijeme nakon završetka filma i kompjuter zaspi i gasi monitor, ali svjetlo u prostoriji ostaje upaljeno. One. odlučeno je da je stvar korisna i počeo sam prikupljati informacije i detalje za ovo čudo.
Ostatak informacija je pod habracutom (pazite sa puno slika - saobraćaj).

Dijagram uređaja

Za originalnu šemu uzeta je jedna od šema pronađenih na internetu i izgledala je ovako:

Ali sa samo malom promjenom: dodat je otpornik od 390 Ohma između 1. pina 4N25 optokaplera i 2. pina LPT-a, a dodana je i LED koja označava uključenje. Kolo je sastavljeno u test modu, tj. samo spojeno po potrebi i testirano. U ovoj verziji jednostavno je uključivala i gasila staru sovjetsku baterijsku lampu.
Odlučeno je da ako je kontrola već obavljena, onda ne za jedan uređaj, već za najmanje 4 uređaja (na osnovu: jedne lampe na stolu, lustera za dva prekidača, rezervne utičnice). U ovoj fazi postalo je potrebno izgraditi kompletan krug uređaja, te se počelo birati različite programe.
Instalirani su:

  1. KiCAD
  2. orao
Nakon što sam ih sve pogledao, odlučio sam se za Orla, jer je u njegovoj biblioteci bilo "sličnih" dijelova. Evo šta se u njemu dogodilo:

Dijagram koristi DB9 port, tj. običan COM port, to je urađeno iz razloga uštede kako prostora na ploči tako i samih konektora (imao sam COM), a pošto ćemo koristiti samo 5 provodnika to će nam biti dovoljno sa marginom.Tako i mi napravite adapter sa DB25 (LPT) na DB9 (COM), u mom slučaju to se radi na sljedeći način:
LPT 2-9 pin = COM 1-8 pin su pinovi za kontrolne podatke;
LPT 18-25 pin (često su međusobno povezani) = COM 9 pin - ovo je naše uzemljenje.
Također, kolo koristi dodatno napajanje od 12V za napajanje releja, po planu će to biti običan kineski punjač ili možda krunica od 9V (jedan relej radi dobro, potrebno je provjeriti 4 istovremeno). Za osiguranje porta računara koriste se odvojeno napajanje i galvanska izolacija pomoću optokaplera. Ako želite, možete se, naravno, napajati iz računarskog napajanja od 12 V, ali svako to radi sam i na svoju odgovornost i rizik.

Potrebni dijelovi za izradu uređaja
  1. COM port - 1 kom
  2. konektor za napajanje - 1 kom
  3. zelena LED - 4 kom
  4. optospojnik 4n25 - 4 kom
  5. sjedište za optospojnicu (imao sam samo 8 nogu) - 4 kom
  6. otpornik 390 Ohm - 4 komada
  7. otpornik 4,7 kOhm - 4 kom
  8. tranzistor KT815G - 4 komada
  9. relej HJR-3FF-S-Z - 4 kom
  10. stezaljke za 3 kontakta - 4 kom.
  11. folijski tekstolit

Priprema izgleda PCB-a

Nakon što sam pokušao upotrijebiti Eagle za pripremu PCB-a, shvatio sam da će to biti teško i odlučio sam pronaći lakšu opciju. Ova opcija je program sprint layout 5, čak i ako je u izvršavanju za Windows, ali radi bez problema u wine pod linuxom. Interfejs programa je intuitivan, na ruskom jeziku i program ima prilično jasnu pomoć (pomoć). Stoga su sve dalje radnje za razvoj štampane ploče izvedene u sprint rasporedu 5 (u daljem tekstu SL5).
Iako mnogi ljudi koriste ovaj program za razvoj ploča za svoje uređaje, on nije sadržavao dijelove koji su mi bili potrebni (čak ni u gomili preuzetih kolekcija makroa). Stoga sam prvo morao napraviti dijelove koji nedostaju:
  1. COM port (onaj koji se nije poklopio sa mojim, duž rupa za montažu)
  2. utičnica
  3. stezaljka za tri kontakta
  4. relej HJR-3FF-S-Z
Pogled na ove dijelove:

Nakon dodavanja potrebnih detalja, započeo je sam dizajn PCB-a. Trebalo je nekoliko pokušaja, bilo ih je oko pet. Svaka verzija ploče je odštampana na kartonu, probušene su rupe i u njih umetnuti dijelovi. Zapravo, otkriveno je da moj COM port ne odgovara onom koji je bio u SL5. Pojavila se i mala greška u krugu releja - u stvari, kućište releja je pomaknuto za 2-3 mm. Naravno, sve greške su ispravljene.
Na prvoj štampanoj verziji pokazalo se da tranzistor nije ispravno spojen, dva kontakta su pomiješana.
Nakon svih ispravki i prilagođavanja, dobili smo sljedeću ploču:

SL5 ima funkciju PhotoView za pregled ploče, ovako izgleda na njoj:

Na konačnoj verziji ploče, staze će biti malo izmijenjene, ali inače izgleda isto.

SL5 takođe ima zgodnu opciju za štampanje ploče, možete sakriti nepotrebne slojeve i odabrati boju štampe za svaki sloj, što je veoma korisno.

Priprema PCB-a

Odlučeno je da se ploča napravi LUT metodom (laser-iron tehnologija). Nadalje, cijeli proces je na fotografiji.

Izrežite komad PCB-a potrebne veličine.

Uzimamo najfiniji brusni papir i pažljivo čistimo bakrenu površinu.

Nakon čišćenja površine, potrebno je isprati i odmastiti. Možete isprati vodom, a odmastiti acetonom (u mom slučaju je to bio rastvarač 646).
Zatim štampamo našu ploču na laserskom štampaču na premazanom papiru, ne zaboravljajući da u štampač ugradimo najhrabriji otisak (bez uštede tonera). Ova opcija se pokazala malo neuspješnom, jer je toner bio razmazan, ali još jedan pokušaj je bio sasvim u redu.

Sada morate prenijeti crtež s papira na tekstolit. Da biste to učinili, izrežite crtež i nanesite ga na PCB, pokušajte ga poravnati po potrebi, a zatim ga zagrijte peglom. Cela površina mora biti dobro zagrejana kako bi se toner otopio i prionuo na površinu bakra. Zatim pustite da se daska malo ohladi i namočite je pod tekućom vodom. Kada se papir dovoljno navlaži, mora se odvojiti od ploče. Samo toner zalijepljen na ploču. izgleda ovako:

Zatim morate pripremiti otopinu za graviranje. Za ovo sam koristio željezni hlorid. Na tegli sa željeznim hloridom piše da se otopina mora napraviti 1 prema 3. Malo sam odstupio od ovoga i napravio 60 g željeznog hlorida na 240 g vode, tj. ispalo je 1 prema 4, uprkos tome, ploča je urezana normalno, samo malo sporije. Imajte na umu da je proces rastvaranja suhog željeznog klorida u vodi praćen oslobađanjem topline, pa se mora dodati u vodu u malim porcijama i miješati. Naravno, za jetkanje je potrebno koristiti nemetalno posuđe, u mom slučaju to je bila plastična posuda (kao od haringe). Dobio sam sljedeće rješenje:

Prije nego što sam dasku spustio u otopinu, zalijepio sam traku za pecanje na njenu stražnju stranu ljepljivom trakom, kako bi bilo zgodnije uzeti i okrenuti dasku. Ako vam otopina dospije na ruke, morate je brzo isprati sapunom (sapun ga neutralizira), ali mrlje i dalje mogu ostati, sve ovisi o konkretnim uvjetima. Mrlje se uopšte ne skidaju sa odeće, ali ja sam imala sreću da to sama nisam proverila. Dasku je potrebno uroniti u rastvor bakrenim premazom i to ne sve ravno, već pod uglom. Povremeno je preporučljivo očistiti ploču od rada, jer ometa dalje jetkanje. To se može učiniti pamučnim štapićima.

Cijeli proces graviranja mi je trajao 45 minuta, 40 minuta bi bilo dovoljno, ali sam bio zauzet samo još jednom stvari.
Nakon jetkanja, dasku operemo sapunom, otkinemo traku sa vrpcom i dobijemo:

Pažnja! Nemojte sipati otopinu željeznog klorida u sudoper (kanalizaciju) - to može oštetiti metalne dijelove sudopera, a općenito, rješenje bi moglo biti korisno.
Zatim moramo isprati toner, to se uspješno radi sa istim otapalom 646 koji je korišten za odmašćivanje (duži kontakt rastvarača sa kožom može je oštetiti).

Sljedeći korak je bušenje rupa. U početku sam imao rupe od 1 mm i 1,5 mm na ploči, jer nisam mogao pronaći tanje burgije. Ni u našem gradu nije bilo moguće pronaći steznu steznu glavu za pričvršćivanje na elektromotor, pa je sve rađeno velikom bušilicom.

Pojavio se prvi uređaj

Prvi put sam uzeo samo dvije bušilice, ali kada sam koristio takvu bušilicu, to nije bilo dovoljno. Jedna burgija se pokvarila, a druga se savijala. Sve što sam uspeo da izbušim prvog dana:

Sutradan sam kupio pet bušilica. I bili su taman dovoljni, jer ako se ne slome (usput, slomio sam samo jedan od pet), onda postaju tupi, a pri bušenju s tupim, tragovi se pogoršavaju, bakar se počinje ljuštiti. Nakon potpunog bušenja ploče dobijamo:

Nakon bušenja, ploča mora biti kalajisana. Za to sam koristio staru metodu - lemilicu, TAGS fluks i lim. Hteo sam da probam da koristim Roseovu leguru, ali ne mogu da je nađem u našem gradu.

Nakon kalajisanja dobijamo sledeći rezultat:

Zatim morate isprati ploču kako biste uklonili ostatke fluksa, budući da se TAGS može prati u vodi, to možete učiniti vodom ili alkoholom. Uradio sam nešto između - oprao sam ga starom votkom i obrisao pamučnim štapićima. Nakon svih ovih koraka, naša ploča je spremna.

Montaža delova

Da provjerim ispravnost ploče, u početku sklapam samo jedan (od četiri) red dijelova, nikad se ne zna gdje se uvukla greška.

Nakon ugradnje dijelova idemo i spajamo uređaj na računalo preko LPT-a, za to je zalemljen adapter sa DB25 (LPT) na DB9 (COM) u sljedećem obliku:

  • 2-pinski DB25 do 1-pinski DB9
  • 3-pinski DB25 do 2-pinski DB9
  • Pin 4 od DB25 do pina 3 od DB9
  • 5-pinski DB25 do 4-pinski DB9
  • 6-pinski DB25 do 5-pinski DB9
  • 7-pinski DB25 do 6-pinski DB9
  • 8-pinski DB25 do 7-pinski DB9
  • 21 pin DB25 (mogući su bilo koji broj od 18 do 25) na pin 9 DB9
Budući da je kao žica korištena obična upletena parica, jedno ožičenje nije bilo dovoljno, već je za ovaj uređaj dovoljno samo pet žica, tako da je ova opcija prikladna. Koristimo jednostavnu sovjetsku baterijsku lampu kao opterećenje koje treba uključiti. Pa, kao napajanje - univerzalno kinesko napajanje (4 konektora i napajanje od 3 do 12 V). Evo svega sastavljeno:

Ali uređaj već radi:

Time je završeno još jedno veče, a montaža ostalih delova je ostavljena sledećeg dana.

A evo i potpuno sastavljenog uređaja:

Pa i mali video o tome kako radi (kvalitet nije baš dobar, nije se imalo šta normalno snimati)

To je sve, ostaje samo pronaći normalno kućište za uređaj i pokrenuti ga.

Softverski dio

Naravno, za upravljanje LPT portom potreban vam je softver, ali pošto imam linux kod kuće, odlučeno je da sam napišem najjednostavniji program, a zatim ga dodam i prilagodim po potrebi. Izgledalo je otprilike ovako:
#include
#include
#include
#include
#define BASE 0x378
#define VRIJEME 100000
int main ()
{
int x = 0x0F;
int y = 0x00;
if (ioperm (BASE, 1, 1))
{
perror ("ioperm ()");
izlaz (77);
}
outb (x, BASE);
return 0;
}

Ovaj program šalje port 0x0F = 00001111 na LPT, tj. napaja 1 do 2-5 pinova (Data0-Data3), a ovo je naš kontrolni napon između 2-5 pinova i mase (18-25 pinova), tako da će se sva četiri releja uključiti. Program za slanje 0x00 na port za gašenje radi na isti način, samo šalje y - outb (y, BASE) umjesto x. Također možete pročitati stanje porta:
#define BASEPORT 0x378 / * lp1 * /
...
printf ("status:% d \ n", inb (BASEPORT));
...

Jedina nijansa ovog programa je da se mora pokrenuti kao root, pošto funkcija ioperm nije dostupna običnom korisniku. Mislim da ne možete reći kako riješiti takav problem, svi će odabrati prikladniju opciju.

Naknadno je program modificiran tako da je prosljeđivanjem parametara komandne linije u njega bilo moguće naznačiti s kojim uređajem i šta treba raditi.
Izlaz "sw --help":
Program za upravljanje relejem preko LPT porta.
Program može imati jedan ili dva parametra.
Format parametra: sw [broj uređaja] [akcija]
broj uređaja - od 1 do 8
akcija - "uključeno", "isključeno", "st" - omogući, onemogući, status
Primjer: "sw 2 on" za omogućavanje drugog uređaja ili "sw --help" za prikaz pomoći

PS Ako nekome zatreba, mogu staviti datoteku sa šemom ploče u sl5 i izvor kontrolnog programa negdje.

P. VYSOCHANSKY, Rybnica, Transnistria, Moldavija

Uređaj za kompjutersko upravljanje raznim uređajima, čiji je dijagram prikazan na sl. 1, funkcionalno sličan onom opisanom u, ali se povezuje na USB port računara, koji se (za razliku od COM porta) danas nalazi u svakom od njih. Jedini mikrokolo uređaja je uobičajeni ATmega8 mikrokontroler. Neophodan je za organizaciju komunikacije preko USB magistrale. Iako mu nedostaje namenski hardverski modul, ova funkcija se izvodi u softveru.

Otpornik R1, povezan između pozitivnog terminala napajanja i USB D-bus linije, stavlja ga u LS režim niske brzine sa brzinom prijenosa od 1,5 Mbit/s, što omogućava softversko dešifriranje računala. Otpornici R4 i R5 eliminišu komunikacijske tranzijente za povećanu stabilnost. Kondenzator C1 blokira impulsni šum u krugu napajanja, što također poboljšava stabilnost uređaja. Diode VD1 i VD2 se koriste za snižavanje napona napajanja mikrokontrolera na približno 3,6 V - to je potrebno da bi se uskladili nivoi sa USB magistralom. Kontrolni signali instrumenta se generišu na izlazima PBO-PB5 i RSO, PC1 mikrokontrolera. Visok logički nivo - napon oko 3,4 V. Napon niskog nivoa je blizu nule. Na izlaze se mogu priključiti uređaji koji ne troše više od 10 mA struje (sa svakog izlaza). Ako su potrebne velike vrijednosti struje ili napona, tada se podudaraju čvorovi prikazani na sl. 5 i 6.

Uređaj je montiran na matičnoj ploči, štampana ploča nije razvijena. Korišteni otpornici MLT, kondenzatori C2 i SZ - keramički visokofrekventni, C1 - K50-35 ili slično uvozni. Silicijumske diode sa padom napona na spoju od oko 0,7 V.

Program za mikrokontroler je razvijen u Bascom-AVR okruženju verzije 1.12.0.0. Za rad sa USB magistralom korišćena je biblioteka swusb.LBX koja vrši softversko dekodiranje USB signala u realnom vremenu. Programski kod dobijen kao rezultat kompilacije iz datoteke sa ekstenzijom HEX treba učitati u FLASH memoriju mikrokontrolera. Za to je korišten programator zajedno sa uslužnim programom ugrađenim u Bascom-AVR. Stanje bitova konfiguracije mikrokontrolera mora odgovarati onom prikazanom na sl. 2.

Kada prvi put povežete uređaj sa računarom, operativni sistem otkriva novi USB HID kompatibilan uređaj pod nazivom "uniUSB" i instalira potrebne drajvere. Nakon nekoliko sekundi uređaj je postavljen i spreman za upotrebu. Za rad s njim kreiran je UniUSB program. Predstavljen je u dvije verzije: za 32-bitne (x86) i 64-bitne (x64) Windows operativne sisteme. 32-bitna verzija je testirana u Windows 98, Windows XP, Windows 7, a 64-bitna verzija je testirana samo u Windows XPx64.

UniUSB program je napisan u PureBasicu (verzija 4.31) koristeći biblioteku prilagođenih funkcija HIDJJb koja podržava USB HID uređaje. Izgled prozora programa prikazan je na sl. 3.

U istoj fascikli sa izvršnom datotekom, mora postojati datoteka pod nazivom UniUSB_KOfl.txt ili UniCOM_KOfl.txt. Posljednja opcija je potrebna za kompatibilnost sa UniCOM programom predloženim u. Ova datoteka sadrži skriptu za kontrolu vanjskih uređaja. Kada se program pokrene, podaci iz datoteke se učitavaju u tabelu koja se nalazi u glavnom prozoru, a kada program završi, pohranjuju se u datoteku. Lijevi klik na ćelije tabele omogućava vam da promijenite njihovo stanje: 1 - visoki logički nivo, 0 ili prazno - niski logički nivo.

Da biste dodali ili uklonili kolonu tabele, potrebno je da kliknete desnim tasterom miša na nju i izaberete potrebnu radnju u meniju koji se pojavi.

Kada je uređaj povezan na USB port, program ga detektuje i aktivira dugme> koje se nalazi na vrhu prozora na traci sa alatkama. Pritiskom na ovo dugme pokreće se proces nabrajanja kolona tabele i postavljanja stanja u njima naznačenih izlaza. Radi veće jasnoće, lijevo od tabele, označeni su brojevi izlaza na kojima je trenutno postavljen visoki logički nivo. Brzina pretraživanja (vrijeme u milisekundama između prijelaza iz stupca u kolonu) se postavlja u polju "Brzina, ms".

Uzmite u obzir operativni sistem Windows - multitasking! To znači da je vrijeme procesora podijeljeno na mnoge procese, ponekad skrivene od korisnika, koji se izvršavaju redom, uzimajući u obzir prioritete postavljene u sistemu. Stoga ne treba očekivati ​​visoku tačnost držanja vremenskih intervala manjim od 100 ms.

Da biste trenutno zaustavili iteraciju preko kolona, ​​koristite dugme JB. Ponovnim pritiskom nastavlja se pretraga od tačke zaustavljanja. Dugme ■ potpuno zaustavlja iteraciju po kolonama tabele. Ako tokom razmjene informacija između računara i uređaja dođe do kvara ili se uređaj isključi iz USB konektora računara, program će prijaviti grešku tako što će prikazati odgovarajuću poruku u statusnoj traci.

Top srodni članci