Kako postaviti pametne telefone i računala. Informativni portal

Jednostavna kontrola uređaja s računala. Upravljanje uređajima preko USB porta računala

Jedna od najjednostavnijih i najčešće korištenih metoda organiziranja razmjene podataka između računala i vanjskih uređaja je korištenje standardnih ulazno-izlaznih portova - kao što su COM, LPT, IrDA i USB, kao i industrijskih sučelja SPI, 12C, I-Wire . Ova knjiga posvećena je objašnjenju principa njihova rada i izradi kontrolnih korisničkih programa. Razmatraju se problemi uparivanja uređaja s računalom pomoću navedenih sučelja. Razmatraju se problemi uparivanja uređaja s računalom pomoću navedenih sučelja. Navedeni su primjeri sklopova, izvorni kodovi programa za računala i mikrokontrolere obitelji AVR.Priručnik je namijenjen programerima elektroničke opreme koji trebaju osigurati 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. Shema postolja za otklanjanje pogrešaka programa
2.4. Uparivanje mikrokontrolera s 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-amperskih karakteristika tranzistora s 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 hardvera luka
3.2. RS-232C sučelje
3.3. Električno sučelje
3.4. Kontrola protoka
3.4. Sučelje trenutne petlje
3.6. Infracrveno sučelje
3.7. MIDI sučelje
3.8. Konfiguriranje COM portova
3.9. Korištenje COM portova
3.10. Kvarovi i testiranje COM portova
3.10.1. Konfiguriranje potvrde
3.10.2. Funkcionalno testiranje
3.11. UART programiranje za mikrokontrolere
3.11.1. Prijenos podataka
3 11.2. Primanje podataka
3.11.3. UART kontrola
3.11.4. Generator brzine prijenosa
3.12. Uparivanje računala s mikrokontrolerom preko COM porta
3.13. Program mikrokontrolera

4. PROGRAMIRANJE COM PORTOVA
4.1. Otvaranje luke
3.2. Konfiguriranje parametara porta
4.3. Postavljanje vremenskih ograničenja
4.4. Korištenje dijaloškog okvira postavki standardnog porta
4.5. Prijem i prijenos podataka
4.6. Korištenje streamova

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

6. PROGRAMIRANJE USB BUS-a
6.1. Instaliranje upravljačkih programa
6.2 Definicija povezanih uređaja. Dohvaćanje 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 sustavi
7.2.1. Princip rada SCADA sustava
7.2.2. Genie sustav
7.3. Teiminat
7.4. Wtnscope

8. NAČELA ORGANIZACIJE MREŽNE KOMUNIKACIJE
8.1. Korištenje Windows utičnica
8.2. Winsock inicijalizacija
8.3. Napravite utičnicu i otvorite vezu
8.4. Slanje i primanje poruka
8.5. Upravljanje procesom generiranja poruka
8.6. Primjer razvoja programa
PRILOZI
KNJIŽEVNOST

Izdavač: Oldie-plus
Godina izdanja: 2008
Stranice: 380
ISBN: 978-966-8447-51-8
ruski jezik
Format: PDF
Veličina: 8,5 MB
Preuzimanje: Ryabenky V.M. Računalno upravljanje vanjskim uređajima putem standardnih sučelja

Na Habréu o upravljanju svjetiljkom putem interneta došla je ideja da rasvjetom kod kuće upravljam s računala, a kako već imam podešeno kompjutersko upravljanje s mobitela, to znači da se svjetlom može upravljati i iz isti telefon. Nakon što je jednom od mojih kolega pokazao članak, rekao je da mu samo treba. Budući da često zaspi iza filmova koje gleda na računalu. Neko vrijeme nakon završetka filma i računalo zaspi i gasi monitor, ali svjetlo u prostoriji ostaje upaljeno. Oni. odlučeno je da je stvar korisna i počeo sam prikupljati podatke i detalje za ovo čudo.
Ostatak informacija je pod habracutom (pazite s puno slika - promet).

Dijagram uređaja

Za originalnu shemu uzeta je jedna od shema pronađenih na internetu i izgledala je ovako:

Ali samo uz malu promjenu: otpornik od 390 Ohma dodan je između 1. pina 4N25 optospojnice i 2. pina LPT-a, a dodana je i LED koja označava uključenje. Krug je sastavljen u testnom načinu, t.j. samo spojeno po potrebi i testirano. U ovoj verziji jednostavno je uključivala i gasila staru sovjetsku svjetiljku.
Odlučeno je da ako već radite kontrolu, onda ne za jedan uređaj, već za najmanje 4 uređaja (na temelju: 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, budući da je u njegovoj biblioteci bilo "sličnih" dijelova. Evo što se u njemu dogodilo:

Dijagram koristi DB9 port, tj. običan COM port, to je učinjeno iz razloga uštede i prostora na ploči i samih konektora (imao sam COM), a kako ćemo koristiti samo 5 vodiča, to će nam biti dovoljno s marginom. 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 kontrolnih podataka;
LPT 18-25 pin (često su međusobno povezani) = COM 9 pin - ovo je naše uzemljenje.
Također, sklop koristi dodatno napajanje od 12V za napajanje releja, prema 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čunala koriste se odvojeno napajanje i galvanska izolacija pomoću optospojnice. Ako želite, možete se, naravno, napajati iz računala od 12 V, ali to svatko radi sam i na vlastitu 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. optospojnica 4n25 - 4 kom
  5. sjedalo 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. Sučelje programa je intuitivno, na ruskom jeziku i program ima prilično jasnu pomoć (pomoć). Stoga su sve daljnje radnje za razvoj tiskane ploče izvedene u sprint layoutu 5 (u daljnjem tekstu SL5).
Iako mnogi ljudi koriste ovaj program za razvoj ploča za svoje uređaje, on nije sadržavao dijelove koje sam trebao (čak ni u hrpi preuzetih zbirki makronaredbi). Stoga sam prvo morao stvoriti dijelove koji nedostaju:
  1. COM port (onaj koji se nije poklopio s 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 otisnuta je 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 pogreška u krugu releja - zapravo, kućište releja pomaknuto je za 2-3 mm. Naravno, sve greške su ispravljene.
Na prvoj tiskanoj verziji pokazalo se da tranzistor nije ispravno spojen, dva su kontakta pomiješana.
Nakon svih ispravki i prilagodbi dobili smo sljedeću ploču:

SL5 ima funkciju PhotoView za gledanje ploče, ovako izgleda u njoj:

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

SL5 ima i zgodnu opciju za ispis ploče, možete sakriti nepotrebne slojeve i odabrati boju ispisa za svaki sloj, što je vrlo korisno.

Priprema PCB-a

Odlučeno je da se ploča izradi metodom LUT (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, mora se isprati i odmastiti. Možete isprati vodom, a odmastiti acetonom (u mom slučaju to je otapalo 646).
Zatim ispisujemo našu ploču na laserskom pisaču na premazani papir, ne zaboravljajući instalirati najhrabriji ispis u pisač (bez štednje 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 prema potrebi, a zatim ga zagrijte glačalom. Cijela površina mora biti dobro zagrijana kako bi se toner otopio i prionuo na bakrenu površinu. Zatim pustite da se daska malo ohladi i namočite je pod tekućom vodom. Kada se papir dovoljno smoči, mora se odvojiti od ploče. Samo toner se zalijepio na ploču. izgleda ovako:

Zatim morate pripremiti otopinu za jetkanje. Za ovo sam koristio željezni klorid. Na staklenki sa željeznim kloridom piše da se otopina mora napraviti 1 prema 3. Malo sam odstupio od ovoga i napravio 60 g željeznog klorida na 240 g vode, t.j. ispalo je 1 prema 4, unatoč tome, ploča je urezana normalno, samo malo sporije. Imajte na umu da je proces otapanja suhog željeznog klorida u vodi popraćen oslobađanjem topline, pa se mora dodati u vodu u malim obrocima 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, ljepljivom trakom zalijepio sam uže za pecanje na stražnju stranu, kako bi bilo prikladnije uzeti i okrenuti dasku. Ako vam otopina dospije na ruke, morate je brzo isprati sapunom (sapun ga neutralizira), ali mrlje mogu ostati, sve ovisi o konkretnim uvjetima. Mrlje se uopće ne skidaju s odjeće, ali imala sam sreću da to sama nisam provjerila. Dasku je potrebno uroniti u otopinu s bakrenim premazom i ne sve ravno, već pod kutom. S vremena na vrijeme, preporučljivo je očistiti ploču od rada, jer ometa daljnje jetkanje. To se može učiniti s pamučnim štapićima.

Cijeli proces jetkanja mi je trajao 45 minuta, 40 minuta bi bilo dovoljno, ali samo sam bio zauzet još jednom stvari.
Nakon jetkanja, ploču operemo sapunom, otkinemo traku s ribarskom linijom i dobijemo:

Pažnja! Otopinu željeznog klorida nemojte ulijevati u sudoper (kanalizaciju) - to može oštetiti metalne dijelove sudopera, a općenito, otopina bi ipak mogla dobro doći.
Zatim trebamo isprati toner, to se uspješno radi s istim otapalom 646 koje je korišteno za odmašćivanje (dulji kontakt otapala s 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 bušilice. Također, u našem gradu nije bilo moguće pronaći steznu steznu glavu za pričvršćivanje na elektromotor, pa se sve radilo 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 bušilica se pokvarila, a druga se savijala. Sve što sam uspio izbušiti prvog dana:

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

Nakon bušenja, ploča mora biti kalajisana. Za to sam koristio staru metodu - lemilo, TAGS fluks i lim. Htjela sam isprobati Roseovu leguru, ali je ne mogu pronaći u našem gradu.

Nakon kalaja dobivamo sljedeći rezultat:

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

Montaža dijelova

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

Nakon ugradnje dijelova, idemo i spajamo uređaj na računalo putem LPT-a, za to je zalemljen adapter od DB25 (LPT) do 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 pin 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, ali za ovaj uređaj dovoljno je samo pet žica, tako da je ova opcija prikladna. Koristimo jednostavnu sovjetsku svjetiljku kao opterećenje koje treba uključiti. Pa, kao napajanje - univerzalno kinesko napajanje (4 konektora i napajanje od 3 do 12 V). Ovdje je sve sastavljeno:

Ali uređaj već radi:

Time je završena još jedna večer, a montaža ostalih dijelova ostavljena je sljedećeg dana.

A evo i potpuno sastavljenog uređaja:

Pa, i mali video o tome kako radi (kvaliteta nije baš dobra, nije se bilo što normalno snimati)

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

Softverski dio

Naravno, da biste upravljali LPT portom, potreban vam je softver, ali s obzirom da imam linux kod kuće, odlučeno je da samo napišem najjednostavniji program, a zatim ga dodam i prilagodim prema potrebi. Izgledalo je otprilike ovako:
#uključiti
#uključiti
#uključiti
#uključiti
#define BASE 0x378
#definiraj VRIJEME 100000
int main ()
{
int x = 0x0F;
int y = 0x00;
if (ioperm (BASE, 1, 1))
{
perror ("ioperm ()");
izlaz (77);
}
outb (x, BASE);
vrati 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, budući da funkcija ioperm nije dostupna običnom korisniku. Mislim da ne možete reći kako riješiti takav problem, svatko će odabrati prikladniju opciju.

Naknadno je program modificiran tako da se prosljeđivanjem parametara naredbenog retka u njega može naznačiti s kojim uređajem i što učiniti.
Izlaz "sw --help":
Program za upravljanje relejem preko LPT porta.
Program može imati jedan ili dva parametra.
Format parametra: sw [broj uređaja] [radnja]
broj uređaja - od 1 do 8
radnja - "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 treba, onda mogu staviti datoteku sa shemom ploče u sl5 i izvor upravljačkog programa negdje.

P. VYSOCHANSKY, Rybnitsa, Transnistria, Moldavija

Uređaj za računalno upravljanje raznim uređajima, čiji je dijagram prikazan na sl. 1, funkcionalno sličan onome opisanom u, ali se spaja na USB priključak računala, koji se (za razliku od COM porta) danas nalazi u svakom od njih. Jedini mikro krug uređaja je uobičajeni ATmega8 mikrokontroler. Neophodan je za organiziranje komunikacije putem USB sabirnice. Iako nema namjenski hardverski modul, ova se funkcija izvodi u softveru.

Otpornik R1, spojen između pozitivnog terminala napajanja i USB D-bus linije, stavlja ga u LS način rada niske brzine sa brzinom prijenosa od 1,5 Mbit / s, što omogućuje softversko dešifriranje računala. Otpornici R4 i R5 eliminiraju 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 koriste se za snižavanje napona napajanja mikrokontrolera na približno 3,6 V - to je potrebno za usklađivanje razina s USB sabirnicom. Upravljački signali instrumenta se generiraju na izlazima PBO-PB5 i RSO, PC1 mikrokontrolera. Visoka logička razina - napon oko 3,4 V. Napon niske razine je blizu nule. Na izlaze se mogu spojiti 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 podudarni čvorovi prikazani na Sl. 5 i 6.

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

Program za mikrokontroler razvijen je u okruženju Bascom-AVR verzije 1.12.0.0. Za rad s USB sabirnicom korištena je biblioteka swusb.LBX koja vrši softversko dekodiranje USB signala u stvarnom vremenu. Programski kod dobiven kao rezultat kompilacije iz datoteke s nastavkom HEX treba učitati u FLASH memoriju mikrokontrolera. Za to je korišten programator zajedno s 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 s računalom, operativni sustav otkriva novi USB HID kompatibilan uređaj pod nazivom "uniUSB" i instalira potrebne upravljačke programe. Nakon nekoliko sekundi uređaj je postavljen i spreman za korištenje. Za rad s njim stvoren je program UniUSB. Predstavljen je u dvije verzije: za 32-bitne (x86) i 64-bitne (x64) Windows operativne sustave. 32-bitna verzija je testirana u sustavima Windows 98, Windows XP, Windows 7, a 64-bitna verzija je testirana samo u sustavu Windows XPx64.

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

U istoj mapi s izvršnom datotekom mora postojati datoteka pod nazivom UniUSB_KOfl.txt ili UniCOM_KOfl.txt. Potonja opcija je potrebna za kompatibilnost s UniCOM programom predloženim u. Ova datoteka sadrži skriptu za upravljanje vanjskim uređajima. Kada se program pokrene, podaci iz datoteke se učitavaju u tablicu koja se nalazi u glavnom prozoru, a kada program završi, spremaju se u datoteku. Lijevim klikom na ćelije tablice možete promijeniti njihovo stanje: 1 - visoka logička razina, 0 ili prazno - niska logička razina.

Da biste dodali ili uklonili stupac tablice, trebate ga kliknuti desnom tipkom miša i odabrati potrebnu radnju u izborniku koji se pojavi.

Kada je uređaj spojen na USB priključak, program ga detektira i aktivira gumb> koji se nalazi na vrhu prozora na alatnoj traci. Pritiskom na ovu tipku pokreće se proces nabrajanja stupaca tablice i postavljanja stanja u njima naznačenih izlaza. Radi veće jasnoće, lijevo od tablice, označeni su brojevi izlaza na kojima je trenutno postavljena visoka logička razina. Brzina pretraživanja (vrijeme u milisekundama između prijelaza iz stupca u stupac) postavlja se u polju "Brzina, ms".

Razmislite o operacijskom sustavu 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 sustavu. Stoga ne treba očekivati ​​visoku točnost držanja vremenskih intervala manjim od 100 ms.

Da biste trenutno zaustavili ponavljanje po stupcima, koristite gumb JB. Ponovnim pritiskom nastavit će se pretraživanje od točke zaustavljanja. Gumb ■ potpuno zaustavlja iteraciju po stupcima tablice. Ako tijekom razmjene informacija između računala i uređaja dođe do kvara ili se uređaj odvoji od USB konektora računala, program će prijaviti grešku tako što će prikazati odgovarajuću poruku u statusnoj traci.

Vrhunski povezani članci