Controlați dispozitivele externe de pe un computer. Controlul încărcării prin interfața USB

Autorul a dezvoltat un program și un dispozitiv pentru controlul diferitelor dispozitive electrice și radio cu ajutorul unui computer. Dispozitivul este conectat la unul dintre porturile COM, iar dispozitivele pot fi controlate atât folosind taste de pe ecran, cât și senzori externi.

Diagrama dispozitivului este prezentată în Fig.1. Baza sa este cipul 74HC595, care este pe 8 biți registru de schimbare cu intrare serială și ieșiri seriale și paralele de informații. Ieșirea paralelă este realizată printr-un registru tampon cu ieșiri care au trei stări. Semnalul de informații este furnizat la intrarea SER (pin 14), semnalul de scriere la intrarea SCK (pin 11) și semnalul de ieșire la intrarea RSK (pin 12). Cipul DA1 conține un regulator de tensiune de 5 V pentru a alimenta registrul DD1.

Figura 1. Diagrama dispozitivului

Dispozitivul este conectat la unul dintre porturile COM ale computerului. Semnalele de informații ajung la pinul 7 al soclului XS1, semnalele de înregistrare a informațiilor merg la pinul 4, iar semnalele de ieșire a informațiilor merg la pinul 3. Semnalele portului COM, conform standardului RS-232, au niveluri de aproximativ -12 V (log. 1) și aproximativ +12 V (log.0). Aceste niveluri sunt asociate cu nivelurile de intrare ale registrului DD1 folosind rezistențele R2, R3, R5 și diode Zener VD1-VD3 cu o tensiune de stabilizare de 5,1 V.

Semnalele de control pentru dispozitivele externe sunt generate la ieșirile Q0-Q7 ale registrului DD1. Nivelul înalt este egal cu tensiunea de alimentare a microcircuitului (aproximativ 5 V), nivelul scăzut este mai mic de 0,4 V. Aceste semnale sunt statice și sunt actualizate când un nivel înalt ajunge la intrarea RSK (pin 12) a DD1. registru. LED-urile HL1-HL8 sunt proiectate pentru a monitoriza funcționarea dispozitivului.

Dispozitivul este controlat folosind programul UmiCOM dezvoltat de autor. Aspect fereastra principală a programului este afișată în Fig.2.

Figura 2. Aspectul programului UniCOM

După ce îl porniți, ar trebui să selectați un port COM liber și viteza de comutare a ieșirii. Starea fiecăreia dintre ieșirile dispozitivului este introdusă în rândurile tabelului (nivel înalt - 1, nivel scăzut - 0 sau gol). Programul de „sortare” prin coloanele tabelului din ciclul de operare stabilește nivelurile logice corespunzătoare la ieșirile dispozitivului. Informațiile introduse în tabel sunt salvate automat când programul este terminat și încărcate din nou la următoarea lansare. Pentru claritate, în partea stângă a ferestrei programului sunt evidențiate numărul de ieșiri pe care este setat nivelul înalt.

Dispozitivele pot fi controlate și folosind senzori de contact externi, care sunt conectați la intrările 1-3 și la linia +5 V. Acestea trebuie să funcționeze pentru a închide sau deschide contacte. Un exemplu de diagramă de conectare a senzorului este prezentat în Fig.3.

Figura 3. Conectarea senzorilor de contact

Când apăsați tasta soft „Input Setup”, se deschide fereastra „Input and Output Assignment” ( Fig.4.), unde sunt selectate intrări care vor schimba starea ieșirilor. Puteți simula funcționarea intrărilor făcând clic pe taste soft„1”, „2”, „3” din fereastra principală a programului. În cazurile în care dispozitivele nu pot fi controlate folosind niveluri logice, trebuie utilizat un releu, a cărui schemă de conectare este prezentată în Fig.5, sau optocupler tranzistor ( Fig.6.).

Figura 4. Potrivirea intrărilor și ieșirilor

Figura 5. Schema de conectare a releului

Figura 6. Schema de conectare a optocuplatorului tranzistorului

Majoritatea pieselor sunt montate pe o placă de circuit imprimat din folie laminată de fibră de sticlă cu o singură față cu o grosime de 1...1,5 mm, al cărei desen este prezentat în Fig.7. Rezistoarele R1-R6 sunt montate pe bornele soclului XS1.

Figura 7. Desenul PCB

Dispozitivul folosește rezistențe C2-23. MLT, condensatoare de oxid- K50-35 sau importat, priza XS1 - DB9F. Pe lângă diodele zener indicate în diagramă, puteți utiliza BZX55C5V1 sau KS174A domestic, orice LED-uri. Dispozitivul este alimentat de la o sursă de alimentare stabilizată sau nestabilizată cu o tensiune de 12 V și un curent de până la 100 mA.

Dispozitiv de control al computerului
diverse dispozitive, a căror diagramă este prezentată în Fig. 1, similar din punct de vedere funcțional
descris în, dar se conectează la portul USB al unui computer, care (spre deosebire de
din portul COM) este prezent în fiecare dintre ele astăzi. Singurul cip al dispozitivului
- un microcontroler comun ATmega8. Este necesar pentru organizare
Comunicare cu magistrala USB. Deși îi lipsește hardware-ul specializat
modul, această funcție este realizată în software. Rezistorul R1 conectat între
borna pozitivă a sursei de alimentare și a liniei D- Autobuz USB, îl transferă la viteză mică
Modul LS cu un curs de schimb de 1,5 Mbit/s, care vă permite să decriptați colete
computer în mod programatic. Rezistoarele R4 și R5 elimină tranzitorii
procese care apar în timpul schimbului de informații, ceea ce crește stabilitatea muncii.
Condensatorul C1 blochează zgomotul de impuls în circuitul de alimentare, care, de asemenea, se îmbunătățește
stabilitatea dispozitivului. Diodele VD1 și VD2 sunt folosite pentru a reduce tensiunea
furnizați microcontrolerul la aproximativ 3,6 V - acest lucru este necesar pentru
potrivirea nivelului cu magistrala USB. Semnalele de control al dispozitivului sunt generate
ieșirile РВ0-РВ5 și PC0, PC1 ale microcontrolerului. Ridicat nivel logic -
tensiunea este de aproximativ 3,4 V. Tensiunea nivel scăzut aproape de zero. Spre iesiri
Puteți conecta dispozitive care consumă un curent de cel mult 10 mA (de la fiecare ieșire).
Dacă sunt necesare valori mari ale curentului sau tensiunii, atunci ar trebui utilizate nodurile
acordurile prezentate în fig. 5 și 6.

Dispozitivul este asamblat pe o placă,
nu a fost dezvoltată nicio versiune tipărită. Se folosesc rezistențe MLT, condensatoare C2 și C3 -
ceramica de inalta frecventa, C1 - K50-35 sau similar importat. Diode
siliciu cu o cădere de tensiune pe joncțiune de aproximativ 0,7 V. Program pentru un microcontroler
dezvoltat în mediul Bascom-AVR versiunea 1.12.0.0. Pentru operarea magistralei USB
Este folosită biblioteca swusb.LBX, care realizează decodarea semnalului software
USB în timp real. Codul programului rezultat
dintr-un fișier cu extensia HEX ar trebui să fie încărcat în memoria FLASH a microcontrolerului.
În acest scop, programatorul a fost folosit împreună cu Bascom-AVR încorporat
utilitate. Starea biților de configurare a microcontrolerului trebuie să corespundă
prezentată în fig. 2. Când conectați dispozitivul la computer pentru prima dată, sistemul de operare
sistemul va detecta noul USB HID dispozitiv compatibil cu nume
„uniUSB” și instalați driverele necesare. În câteva secunde
Dispozitivul este configurat și gata de utilizare.

A fost creat un program pentru a lucra cu el
UniUSB. Este prezentat în două versiuni: pentru 32 de biți (x86) și 64 de biți
(x64) sisteme de operare Familia Windows. Versiunea pe 32 de biți a fost verificată pentru a funcționa
în sistemele de operare Windows 98, Windows XP, Windows 7 și 64 de biți -
numai pe Windows XP x64. Programul UniUSB este scris în limbajul PureBasic (versiunea
4.31) folosind biblioteca HID_lib de funcții definite de utilizator,
suport pentru lucrul cu dispozitive USB HID. Aspectul ferestrei programului
prezentată în fig. 3. În același folder ca ea fișier executabil trebuie să fie
un fișier numit UniUSB_Code.txt sau UniCOM_Code.txt. Ultima opțiune este necesară
pentru compatibilitate cu programul UniCOM propus în . În acest dosar
Scriptul pentru controlul dispozitivelor externe este stocat. Când programul începe, datele
din fișier sunt încărcate în tabelul situat în fereastra principală, iar la finalizare
lucrările sunt salvate într-un fișier. Făcând clic stânga pe celulele tabelului vă permite
schimba starea lor: 1 - nivel logic ridicat, 0 sau gol - scăzut
nivel logic. Pentru a adăuga sau șterge o coloană de tabel, trebuie să o utilizați
clic clic dreapta mouse-ul și selectați acțiunea necesară în meniul care apare.

Când conectați un dispozitiv la un port USB
programul îl va detecta și va activa butonul situat în partea de sus
ferestre din bara de instrumente. Făcând clic pe acest buton, începe procesul
căutarea prin coloanele tabelului și setarea stărilor de ieșire indicate în acestea. Pentru
Pentru o mai mare claritate, numerele de ieșire sunt evidențiate în stânga tabelului, activat
care sunt setate în prezent la un nivel logic înalt. Viteză
căutarea (timp în milisecunde între tranzițiile de la coloană la coloană) este setată
în câmpul „Viteză, ms”.

Vă rugăm să rețineți că sistemul de operare este Windows
- multitasking! Aceasta înseamnă că timpul CPU este împărțit între multe
uneori ascunse de procesele utilizatorului care sunt executate pe rând cu
ţinând cont de priorităţile stabilite în sistem. Deci nu te aștepta la mare lucru
precizia menținerii intervalelor de timp mai mici de 100 ms. Pe termen scurt
Pentru a opri iterarea prin coloane, utilizați butonul Faceți clic pe el din nou
va continua căutarea de unde s-a oprit. Butonul oprește complet iterarea prin coloane
mesele. Dacă în timpul schimbului de informații între computer și dispozitiv
va apărea o defecțiune sau dispozitivul va fi deconectat de la conector USB computer,
programul va raporta o eroare prin afișarea corespunzătoare
mesaj.

LITERATURĂ

1. Nosov T. Controlul dispozitivelor
prin portul COM al computerului. - Radio, 2007, Nr. 11,0.61,62.

2. Ryzhkov A. programator american
Microcontrolere AVR și AT89S, compatibile cu AVR910. - Radio, 2008, nr. 7, p.
28, 29.

De la editor. Sunt localizate programe pentru microcontroler și computer
pe serverul nostru FTP la ftp:// ftp.radio.ru/pub/2011/02/uniUSB.zip

Scor 1 Scor 2 Scor 3 Scor 4 Scor 5

Un dispozitiv de control al computerului pentru diferite dispozitive, a cărui diagramă este prezentată în Fig. 1, se conectează la portul USB al computerului, care este prezent în fiecare dintre ele astăzi. Singurul cip al dispozitivului este un microcontroler comun ATmega8. Este necesar pentru organizarea comunicării prin autobuz. USB. Deși îi lipsește specializarea modul hardware, această funcție este realizată de software.

Figura 1

Rezistorul R1, conectat între terminalul pozitiv al sursei de alimentare și linia USB D-bus, îl comută în modul LS de viteză redusă cu un curs de schimb de 1,5 Mbit/s, care vă permite să decriptați mesajele computerului în mod programatic. Rezistoarele R4 și R5 elimină tranzitorii care apar în timpul schimbului de informații, ceea ce crește stabilitatea de funcționare. Blocuri condensatoare C1 zgomot de impulsîn circuitul de alimentare, care îmbunătățește și stabilitatea dispozitivului, diodele VD1 și VD2 sunt utilizate pentru a reduce tensiunea de alimentare a microcontrolerului la aproximativ 3,6 V - acest lucru este necesar pentru a se potrivi cu magistrala USB.

Semnalele de control al dispozitivului sunt generate la ieșirile PB0-PB5 și PC0, PC1 ale microcontrolerului. Nivel logic ridicat - tensiunea este de aproximativ 3,4 V. Tensiunea de nivel scăzut este aproape de zero. Puteți conecta dispozitive la ieșirile care consumă un curent de cel mult 10 mA (de la fiecare ieșire). Dacă sunt necesare valori mari ale curentului sau tensiunii, atunci ar trebui utilizate noduri de potrivire.

Dispozitivul este asamblat pe o placă de breadboard, nu a fost dezvoltată o placă de circuit imprimat, sunt utilizate rezistențe MLT, condensatorii C2 și SZ sunt condensatori ceramici de înaltă frecvență, C1 este K50-35 sau similar importat. Diode de siliciu cu o cădere de tensiune pe joncțiune de aproximativ 0,7 V.

Programul pentru microcontroler a fost dezvoltat în mediu Bascom-AVR versiuni 1.12.0.0. O bibliotecă este folosită pentru a lucra cu magistrala USB swusb.LBX, care efectuează decodarea software în timp real a semnalelor USB. Codul de program rezultat dintr-un fișier cu extensia HEX ar trebui să fie încărcat în memoria FLASH a microcontrolerului. Starea biților de configurare a microcontrolerului trebuie să corespundă cu cea prezentată în Fig. 2.

Figura 2

Când vă conectați dispozitivul la computer pentru prima dată, sistemul de operare va detecta un nou USB HID dispozitiv compatibil numit " uniUSB" și va instala driverele necesare. După câteva secunde, dispozitivul este configurat și gata de utilizare. Programul UniUSB a fost creat pentru a funcționa cu el. Este disponibil în două versiuni: pentru 32 de biți (x86) și 64 de biți (x64) sisteme de operare din familia Windows Versiunea pe 32 de biți a fost testată pe sistemele de operare Windows 98, Windows XP și Windows 7, în timp ce versiunea pe 64 de biți a fost testată doar pe Windows XP x64.

Program UniUSB scris în limbaj PureBasic(versiunea 4.31) folosind biblioteca funcții personalizate HID_Lib, sprijinind munca cu USB HID dispozitive. Aspectul ferestrei programului este prezentat în Fig. 3.

Figura 3

În același folder cu fișierul său executabil ar trebui să existe un fișier numit UniUSB_KOfl.txt. Acest fișier stochează scriptul pentru controlul dispozitivelor externe. Când programul pornește, datele din fișier sunt încărcate într-un tabel situat în fereastra principală, iar când lucrarea este finalizată, acestea sunt salvate în fișier. Făcând clic stânga pe celulele tabelului vă permite să le schimbați starea: 1 - nivel logic ridicat, 0 sau gol - nivel logic scăzut.

Pentru a adăuga sau șterge o coloană de tabel, trebuie să faceți clic dreapta pe ea și să selectați acțiunea necesară în meniul care apare. Când conectați un dispozitiv la un port USB, programul îl va detecta și va activa butonul Start situat în partea de sus a ferestrei din bara de instrumente. Făcând clic pe acest buton, începe procesul de sortare a coloanelor din tabel și setarea stărilor de ieșire indicate în acestea. Pentru o mai mare claritate, în stânga tabelului numărul de ieșiri pe care în acest moment Nivelul logic este setat ridicat. Viteza de căutare (timp în milisecunde între tranzițiile de la coloană la coloană) este setată în câmpul „Viteză, ms”.

class="eliadunit">

Vă rugăm să rețineți că sistemul de operare Windows este multitasking! Aceasta înseamnă că timpul procesorului este împărțit între multe procese, uneori ascunse utilizatorului, care sunt executate pe rând, ținând cont de prioritățile stabilite în sistem. Prin urmare, nu trebuie să vă așteptați la o mare precizie în menținerea intervalelor de timp mai mici de 100 ms.

Pentru a opri pentru scurt timp sortarea coloanelor, utilizați butonul „Pauză”. Apăsând din nou, va continua căutarea de unde s-a oprit. Butonul „Oprire” oprește complet căutarea prin coloanele tabelului. Dacă schimbul de informații între computer și dispozitiv eșuează sau dispozitivul este deconectat de la conectorul USB al computerului, programul va raporta o eroare prin afișarea unui mesaj corespunzător în bara de stare.

Sursa: Radio Nr. 2, 2011

Arhiva pentru articolul „Load control via interfață USB"
Descriere: Texte sursă ale programelor, fișier firmware microcontroler, program uniUSB
Dimensiunea fișierului: 89,3 KB Număr de descărcări: 2 773

Acest articol încearcă să ofere instrucțiuni pas cu pas- cum se conectează dispozitiv de casă USB HID pe un microcontroler AVRși un computer cu sistem de operare Windows 7 x64 pentru a comunica și controla porturile microcontrolerului. Exemplul de aplicație controlează pinul portului microcontrolerului prin USB (un LED indicator este conectat la acesta). De asemenea, este posibil să citiți starea LED-ului - indiferent dacă este stins sau aprins. Subiectul este destinat începătorilor, deci o mare cerere către experții în programare - salvați ouăle putrede și roșiile putrede comentarii ironice pentru o ocazie mai convenabilă.

Software utilizat

1 . Pentru microcontroler - biblioteca V-USB de la Objective Development și IDE Atmel Studio 6 din Atmel. De asemenea, trebuie să descărcați și să instalați WinAVR toolchain pentru a compila firmware-ul microcontrolerului (pentru specialiști acest lucru nu este necesar, deoarece vă puteți descurca cu toolchain-ul care este inclus în Atmel Studio).
2 . Pentru scris programe Windows(software gazdă) S-au folosit biblioteca LibUsbDotNet și IDE-ul lui Travis Robinson Visual Studio C# 2010 de la Microsoft.

Toate software, cu excepția Visual Studio 2010, este gratuit, deși puteți utiliza Visual Studio C# 2010 Express gratuit pentru o perioadă limitată de timp. Toate activitățile s-au desfășurat într-un mediu de sală de operație sisteme Windows 7 x64, dar orice alt sistem de operare din familia Windows (Windows XP și mai nou) va funcționa probabil și el.

Fier folosit

Dispunând de biblioteca V-USB pentru crearea unui dispozitiv USB HID Orice va face Microcontroler AVR. Dacă vă simțiți confortabil cu un fier de lipit, puteți chiar să asamblați singur conexiunea USB folosind una dintre diagramele publicate. Un astfel de circuit (preluat din pachetul V-USB) este prezentat în imagine ca exemplu.

Pentru a economisi timp și efort, este mai bine să utilizați o placă gata făcută. Este deosebit de convenabil dacă pe placă este scris un bootloader USB, atunci nu va trebui să cumpărați un programator pentru a flash-o placă. Am folosit o placă de dezvoltare AVR-USB-MEGA16 cu un microcontroler ATmega32A, are un bootloader (USBasploader, emulând comportamentul Programator USBasp). Iată cum arată eșarfa la dimensiune completă:

Puteți lua și o metaboard (are ATmega168 sau ATmega328), sau chiar un programator pe microcontrolerul ATmega8. Astfel de glande pot fi cumpărate ieftin de la ebay.com sau dx.com.

Crearea firmware-ului microcontrolerului folosind Atmel Studio 6 și biblioteca V-USB

Do proiect nouîn Atmel Studio 6 (denumit în continuare AS6). Când AS6 vă solicită să selectați un microcontroler, selectați Atmega32 fără scrisoare O, nu Atmega32A (deși placa are Atmega32A) - acest lucru este important, deoarece lanțul de instrumente WinAVR nu vede diferența, cunoaște doar Atmega32. Aceste microcontrolere sunt structura internă identic, deci pentru noi nu e nicio diferenta, dar pentru AS6 exista.

Acum trebuie să configurați corect compilatorul. ÎN meniul de sus AS6 încasează Instrumente, mai departe Opțiuni..și va apărea această fereastră:

Din lista din stânga, selectați Lanțul de instrumente. O listă de arome va apărea în partea dreaptă. Atmel a codificat acest cuvânt opțiuni posibile instrumentele folosite (lanțuri de instrumente).

Nota. Lista conține deja lanțul de instrumente nativ, care este utilizat implicit (implicit). Lanțul de instrumente nativ este un compilator GCC împreună cu fișierele antet și bibliotecile care oferă mediu necesar compilarea cod sursă pentru microcontroler. Acest lanț de instrumente este furnizat de Atmel și este instalat automat odată cu instalarea AS6. După cum am menționat deja, puteți utiliza acest lanț de instrumente pentru compilare, dar apoi în codul sursă Exemple V-USB(bazat pe Exemplu USB HID va funcționa pe dispozitivul nostru USB) va trebui să faceți manual corecții. Sunt simple, dar pentru începători ar fi mai bine să adăugați aici lanțul de instrumente WinAVR și să îl utilizați pentru compilare.
Pentru a adăuga lanțul de instrumente WinAVR la lista de arome, faceți clic pe butonul Adăugați aromă, va apărea următoarea fereastră:

În linia de sus a acestei ferestre, introduceți numele compilatorului WinAVR (arbitrar), iar în linia de jos, introduceți calea plină, unde este instalat însuși compilatorul toolchain (indicând folderul \bin) și faceți clic pe butonul Adăuga. Compilatorul adăugat va apărea în lista de arome, așa cum se arată în captură de ecran.

Selectați compilatorul WinAVR nou adăugat cu mouse-ul și faceți clic pe butonul Setați ca implicit(faceți din acesta instrumentul implicit) și faceți clic pe OK. După această procedură, AS6-ul nostru va folosi compilatorul WinAVR.

Este timpul să configurați proprietățile proiectului nostru pentru a face acest lucru, cu cursorul în Solution Explorer, faceți clic stânga pe numele proiectului și faceți clic Alt+F7(meniul Proiect -> Proprietăți), va apărea o fereastră cu setări:

Do următoarele setări:

  • In sectiunea Compilator AVR/GNU C -> Simboluri adaugă la câmp -D linia F_CPU=12000000UL- aceasta corespunde unei frecvențe de microcontroler de 12 MHz (acest cuarț este instalat pe placa mea de dezvoltare AVR-USB-MEGA16).
  • In sectiunea AVR/GNU Assembler -> Generalîn câmp Steagul asamblatorului trebuie adăugate -DF_CPU=12000000UL.
  • In sectiunea Compilator AVR/GNU C -> Optimizareîn câmp Nivel de optimizare ar trebui să stea Optimizați pentru dimensiune (-Os).
Mai departe foarte punct important- în partea stângă a ferestrei, selectați o secțiune din listă Avansat, după cum se arată în figura de mai jos.

În lista derulantă Aromă de lanț de instrumente selectați compilatorul WinAVR adăugat, astfel încât AS6 să-l folosească la compilarea proiectului. Aceasta completează configurarea AS6.

Apoi, trebuie să adăugați fișierele cu codul sursă al proiectului la proiectul creat - vedeți folderul firmware\VUSB, fișierele VUSB.c, usbdrv.c, usbdrvasm.S și oddebug.c. Proiectul ASS6 se bazează pe unul dintre exemplele de bibliotecă V-USB: hid-custom-rq, care a fost compilat inițial folosind utilitarul make de la linie de comandă. Multe alte exemple de cod pot fi găsite pe baza bibliotecii V-USB - mai ales dispozitive USB HID (șoareci, tastaturi, dispozitive de intrare și ieșire), dar există și dispozitive USB CDC (port COM virtual). Dacă vă este prea lene să creați singur un proiect, deschideți fișierul de proiect VUSB.atsln în AS6, totul este deja făcut în el setările necesareși toate fișierele necesare sunt adăugate.

Dacă utilizați o altă placă de dezvoltare, trebuie să configurați corect fișierul usbconfig.h. Acesta este fișierul de configurare a bibliotecii V-USB, multe setări și parametri sunt specificați în acesta (VID, PID, pini microcontroler, valori pentru descriptori și alte setări). Descriere detaliată Toate setările sunt date în comentariile acestui fișier. O atenție principală trebuie acordată atribuirii pinilor microcontrolerului, care sunt utilizați pentru semnalele USD D+ și D- (definiții macro USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT, USB_CFG_DPLUS_BIT), acestor pini sunt impuse cerințe speciale. Fișierul de configurare usbconfig.h din arhiva concepută pentru rutarea piciorului panou AVR-USB-MEGA16 și este garantat să funcționeze. Programul va clipi LED-ul care este deja pe placa de breadboard și conectat la pinul 0 al portului B.

Crearea unui program de calculator (software gazdă)

Programul nostru ar trebui să fie trimis prin Conexiune USB pachete care vor controla microcontrolerul.

Nota. Programul a fost creat pe baza exemplului aplicație de consolă din aceeași bibliotecă V-USB. Codul sursă pentru aplicația de consolă a fost compilat folosind un makefile și pachetul MinGW și a folosit biblioteca LibUSB. În exemplul nostru vom folosi mediu grafic Visual Studio și biblioteca LibUsbDotNet. Cu toate acestea, principalul beneficiu al utilizării LibUsbDotNet nu este deloc faptul că acum puteți face cu ușurință și convenabil nu numai consola, ci și aplicatii grafice. Cel mai mare plus este că acum nu mai este nevoie de un driver de filtru, pe care biblioteca LibUSB l-a purtat cu el de mulți ani. Pentru cei din rezervor, un driver de filtru este un program de completare special pentru biblioteca LibUSB, prin care datele au fost schimbate cu dispozitivele USB de pe Platforma Windows. Acum nu este nevoie de acest atavism.
Fugi Microsoft Visual C# 2010 Express și creați un nou proiect în Bazat pe Windows Formă. Acum trebuie să conectați biblioteca la proiect LibUsbDotNet.dll. În Solution Explorer, faceți clic dreapta pe numele proiectului și selectați „Adăugați referință”.

Va apărea o altă fereastră

Aici trebuie să găsiți calea de pe disc unde se află biblioteca LinUsbDotNet.dll (în mod implicit este instalată în folderul C:\Program Files\LibUsbDotNet, dar este mai bine să faceți o copie fișier DLLîn directorul de lucru al proiectului. După conectarea bibliotecii, trebuie să fie declarată în proiect, pentru a face acest lucru, adăugați următoarele linii la modulul principal al programului (fișierul Form1.cs):

Utilizarea LibUsbDotNet; folosind LibUsbDotNet.Info; folosind LibUsbDotNet.Main;
Accesați editorul de formulare vizuale și faceți-l să arate cam așa (adăugați 3 Butoaneși 3 etichete text Etichetă):

Creați un handler de evenimente de încărcare formular. Este necesar pentru ca la pornirea programului să fie inițializată o instanță a clasei LibUsbDotNet, prin care să se efectueze schimbul cu dispozitivul USB. Înainte de a începe schimbul, este necesar să deschidem accesul la dispozitivul nostru, deoarece la computer pot fi conectate mai multe dispozitive USB HID și trebuie să le poți accesa pe fiecare separat. În scopul identificării dispozitivelor USB, există identificatori speciali pe care le au absolut toate dispozitivele USB, acestea sunt VID și PID.

Nota. Uneori, un dispozitiv unic este utilizat suplimentar pentru a identifica dispozitivul. număr de serie sau un descriptor text separat - atunci când mai multe dispozitive USB cu același VID și PID sunt conectate la computer, dar nu este cazul nostru. Deoarece de obicei fiecare dispozitiv USB conectat la un computer are propria sa pereche VID/PID, diferită de alte dispozitive, atunci găsiți dispozitivul necesar iar contactarea lui nu este o problemă.
VID este ID-ul furnizorului și PID este ID-ul produsului. Dispozitivul nostru USB are VID: 0x 16C0, PID: 0x 05DF, aceste valori sunt indicate în fișier de configurare usbconfig.h(am menționat deja acest fișier) al proiectului de microcontroler AS6. Pentru ca software-ul gazdă să acceseze dispozitivul nostru USB în mod specific, trebuie să inițializam obiectul MyUsbFinder cu aceiași parametri VID: 0x16c0, PID: 0x05df, așa cum este specificat în fișier usbconfig.h. Pentru a face acest lucru, adăugați următorul cod în zona de definire a variabilelor globale ale clasei Form1:

Public static UsbDevice MyUsbDevice;
public static UsbDeviceFinder MyUsbFinder = nou UsbDeviceFinder(0x16c0, 0x05df);

Odată ce am decis cu ce dispozitiv USB vom lucra, ne putem conecta la el, iar acest lucru este convenabil să facem în momentul în care programul pornește (deschiderea ferestrei de formular). Pentru a face acest lucru, selectați forma principală a programului și, în editorul de proprietăți, creați un handler de evenimente de încărcare Form1_Load. În corpul handlerului, introduceți următorul cod:
Privat void Form1_Load(emițător obiect, EventArgs e) ( MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); if (MyUsbDevice != null) ( label2.Text = "conectat!"; ) else label2.Text = "nu găsit!";) Faceți un handler de evenimente clic pe butonul butonul 1 ("Activat"), pentru a face acest lucru, faceți-o în editorul vizual de pe butonul dublu clic

și adăugați următorul cod în corpul handler-ului de evenimente:
Private void button1_Click(object sender, EventArgs e) ( // Trimite un pachet care aprinde LED-ul de pe placa de dezvoltare AVR-USB-MEGA16. UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Ctrl |CtrlFlags.RequestType_Ctrl | s .Direction_Out) , 1, (scurt)1, 0, 0 byte data = new controlTransfer (ref pachet, 0, out countIn);

Pentru gestionarea butonului „Oprit”, adăugați următorul cod:
Private void button3_Click(object sender, EventArgs e) ( // Trimite un pachet care va stinge LED-ul de pe placa de dezvoltare AVR-USB-MEGA16. UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor |Recipient |UsbSetupPacket) UsbCtrlFlags.Direction_Out) , 1, (scurt) 0, 0, 0 byte data = new ControlTransfer (pachet de referință, date, 0, out countIn);

Privat void button2_Click(emițător obiect, EventArgs e) ( //Se primesc date de la placa de dezvoltare AVR-USB-MEGA16 - stare LED. Pachetul UsbSetupPacket = nou UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor |RequestFlags.Frl | UsbSetupPacket) Direction_In) , 2, (short)0, (short)0 int countIn data = new byte if (MyUsbDevice.ControlTransfer(ref pachet, date, out countIn) && (countIn == 1) ) (label3. Text = "Citiți valoarea" + data.ToString();
Managerul de evenimente de închidere a formularului (încheierea programului) stinge LED-ul dacă este aprins:

Private void Form1_FormClosed(object sender, FormClosedEventArgs e) ( UsbSetupPacket packet = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device,UsbChort),1,0rl | 0); t countIn; = nou octet MyUsbDevice.ControlTransfer (ref pachet, date, 0, out countIn )

Cum sunt decodificate pachetele USB în firmware-ul microcontrolerului

Recepția și procesarea datelor pe partea microcontrolerului se realizează în funcție usbFunctionSetup(situat în modulul principal VUSB.c al proiectului firmware AS6). Aceasta este funcția:

UsbMsgLen_t usbFunctionSetup(uchar data) ( usbRequest_t *rq = (void *)data; if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_VENDOR)( DBG1(0x50, &rq->b output: /*Dequest,&rq->b); cererea noastră */ if(rq->bRequest == CUSTOM_RQ_SET_STATUS)( if(rq->wValue.bytes & 1)( /* set LED */ LED_PORT_OUTPUT |= _BV(LED_BIT); )else( /* clear LED */ LED_PORT_OUTPUT &= ~_BV(LED_BIT) )else if(rq->bRequest == CUSTOM_RQ_GET_STATUS)( static uchar dataBuffer; /* tamponul trebuie să rămână valabil la ieșirea din usbFunctionSetup */ dataBuffer = ((LED_PORT_OUTPUT &_B_IT) ) ! = 0); usbMsgPtr = dataBuffer /* spuneți driverului ce date trebuie returnate */ return 1 /* spuneți driverului să trimită 1 byte */ )else( /* cererile USBRQ_HID_SET_REPORT nu sunt implementate; , * deoarece nu le numim nici sistemul de operare nu le va accesa * deoarece descriptorul nostru nu defineste nicio valoare */ ) returneaza 0 /* implicit pentru cererile nerezolvate: nu returneaza datele inapoi la gazda */ )
Dispozitivul nostru USB HID este unul simplu și răspunde doar la transferurile de control care trec prin punctul final de control implicit 0. Direcția de transmitere a datelor este decodificată după tipul cererii (câmpul bRequest). Dacă CUSTOM_RQ_SET_STATUS, atunci acestea sunt date destinate microcontrolerului. Datele sunt decodificate și microcontrolerul execută comanda încorporată acolo. În acest caz, chiar în primul octet de date primite, starea LED-ului este codificată - dacă există unul în bitul cel mai puțin semnificativ, atunci LED-ul se aprinde, iar dacă este zero, atunci se stinge. Dacă câmpul bRequest acceptă valoarea CUSTOM_RQ_GET_STATUS, atunci tamponul este completat ca răspuns starea actuală LED-ul și datele tampon sunt trimise înapoi la gazdă. Totul este foarte simplu, iar dacă se dorește, comportamentul codului poate fi ușor modificat pentru a se potrivi nevoilor dumneavoastră.

Video despre cum funcționează:

Voi fi bucuros să răspund la întrebări și comentarii constructive în comentarii.

Mulți dintre noi ar dori probabil să ne descurcăm circuite electrice prin calculator. Și ce? Ar fi frumos. Imaginează-ți, un prieten te sună și spune: „Voi fi acolo în 20 de minute”, apoi trec 20 de minute, sună soneria, dar nu vrei să te ridici de la computer, să deschizi ușile etc. Imaginați-vă o situație diferită: sună soneria, pe monitor apare un mesaj de genul „Aveți oaspeți”, apăsați un buton de pe computer - încuietoarea magnetică de pe ușă se deschide și strigi la toată casa: „Intră, ” sau trebuie să-l pornești fierbător electric, lumină sau altceva. În zilele noastre, acest lucru nu mai este fantezie, ci destul de realist, doar din cauza economiei proaste, nu toată lumea își poate permite chiar și cea mai simplă „casă inteligentă”, dar dacă aveți dorința și mâinile directe, atunci puteți controla cu ușurință circuitele electrice prin PC. .

În zilele noastre, destul de mulți oameni știu să programeze pot scrie un program pentru un computer care ar putea controla dispozitive externe, dar cum se conectează același fierbător electric la un computer? Ei bine, poți, de exemplu, să treci Port LPT, dar acum îl poți vedea rar oriunde, ce rămâne atunci? USB!!!

Să facem un dispozitiv care să se conecteze la USB și să poată controla circuitele electrice (de exemplu, aprinde luminile), să răspundă la închiderea butoanelor (de exemplu, o sonerie) și altceva.

Deci, din ce vom face? Cei care au fost interesați de această problemă probabil că au auzit deja despre modulul Ke-USB24A.

Descriere:

Modulul Ke-USB24A este proiectat să interfațeze dispozitive externe digitale și analogice, senzori și actuatoare cu un computer printr-o magistrală USB. Definit ca opțional (virtual) Port COM. Modulul are 24 de linii de intrare/ieșire discrete (fie 0 logic, fie 1 logic) cu capacitatea de a configura direcția de transfer de date (intrare/ieșire) și un ADC de 10 biți încorporat. Pentru a controla modulul, este furnizat un set de comenzi de control text (KE - comenzi).

Caracteristici distinctive:

  • modul de interfață pentru interfața USB
  • definit de sistemul de operare Windows/Linux ca port COM virtual
  • nu necesită elemente suplimentare de circuit, este imediat gata de utilizare
  • 24 de linii de intrare/ieșire discrete cu capacitatea de a configura în mod independent direcția transferului de date (intrare/ieșire) și de a salva setările în memorie nevolatilă modul
  • ADC de 10 biți încorporat cu frecvență de eșantionare garantată de până la 400 Hz.
  • intervalul dinamic al tensiunii de intrare semnal analogic pentru ADC de la 0 la 5 V.
  • un set de comenzi de control text la nivel înalt gata făcute (KE - comenzi)
  • factor de formă convenabil sub forma unui modul cu un bloc DIP și un conector USB-B
  • Posibilitatea de alimentare atat de la bus USB cat si sursă externă alimentare (mod selectat prin jumperul de pe placă)
  • capacitatea de a salva datele utilizatorului în memoria nevolatilă a modulului (până la 32 de octeți)
  • capacitatea de a schimba descriptorul de șir dispozitive USB
  • fiecare modul are un număr de serie unic accesibil prin software
  • suport pentru Windows 2000, 2003, XP 32/64 biți, Vista 32/64 biți și Windows 7 32/64 biți
  • Suport OS Linux

Se pare că asta avem nevoie, DAR... prețul acestui miracol începe de la 40 USD. Probabil că ți-ai pierdut deja dorința de a-l cumpăra.

Mai bine să asamblam singuri un astfel de modul, doar ca să fie accesibil chiar și unui student înfometat!

Criterii obligatorii: cost redus și disponibilitate ușoară a componentelor, ușurință de asamblare.

Să luăm ATmega8 folosit pe scară largă (fără L la sfârșit) ca microcontroler. Caracteristicile modulului nostru vor fi următoarele:

  • Conectați-vă la PC prin USB.
  • este detectat de sistemul de operare Windows ca dispozitiv USB HID, nu este nevoie de șofer.
  • Gata de plecare imediat.
  • 7 linii de ieșire cu stare logică (activ/inactiv).
  • 2 linii de ieșire cu control uniform al tensiunii de la minim la maxim. Numai că acesta nu este un DAC ( convertor digital-analogic) și PWM ( modularea lățimii impulsului). Dar cu ajutorul unui filtru îl poți transforma cu ușurință într-un DAC.
  • 7 linii de intrare cu stare logică (activ/inactiv).
  • 1 ADC (convertor analog-digital) cu capacitatea de a conecta o sursă externă tensiune de referință(ION).
  • Posibilitate de umplere firmware nou direct prin USB.

De ce am ales HID și nu un port COM virtual (CDC)? În primul rând, driverele nu sunt necesare, în al doilea rând, HID încarcă microcontrolerul de câteva ori mai puțin decât CDC, deoarece datele nu sunt solicitate în mod constant, ci doar atunci când gazda (calculatorul) o cere și, în general, portul COM este deja pe moarte, în prezent există practic nu există porturi COM hardware, rămân doar cele virtuale. Liniile de ieșire logice sunt concepute pentru a controla doar două stări - pornit sau oprit, când ieșirea (piciorul microcontrolerului) este oprită va fi 0V, când este pornit - 5V, aici puteți conecta pur și simplu un LED și îl puteți controla de la un PC sau vă puteți conecta un releu (prin tranzistor) și controlați o sarcină mai puternică (iluminare etc.). Liniile de ieșire cu reglare a tensiunii (ieșire PWM) vă permit să schimbați fără probleme tensiunea de pe piciorul microcontrolerului de la 0V la +5V în pași de 5/1024V. Liniile de intrare de stare booleană sunt concepute pentru a monitoriza starea butoanelor, tastelor etc. Când linia este scurtcircuitată la masă (caz, GND), starea ei = 0, dacă nu este închisă - 1. ADC vă permite să măsurați tensiunea, puteți conecta un potențiometru, un senzor de temperatură analogic sau altceva aici, doar tensiunea , pe acest picior nu trebuie să depășească tensiunea de nutriție. Atât un ION extern, cât și tensiunea de alimentare a modulului pot fi utilizate ca sursă de tensiune de referință pentru ADC. Pentru ca la intermitent să nu fie nevoie să conectați microcontrolerul la programator, vom face posibilă încărcarea firmware-ului direct prin USB, fără a utiliza un programator extern.

Diagrama dispozitivului:

După cum puteți vedea, diagrama este destul de simplă, doar că am atașat conectorii pe diagramă nefuncționale, asta pentru că ATmega8 are picioare pentru fiecare port, dintr-un motiv oarecare sunt localizați împrăștiați, dar pe placa în sine va arăta frumos.

PCB:

Ei bine, rezultatul este acesta:

Acum să ne dăm seama ce vom conecta unde.

  1. USB - Port. Cred că toată lumea îl cunoaște.
  2. Indicator de putere.
  3. Intrare logica 1.
  4. Intrare logica 2.
  5. Intrare logica 3.
  6. Intrare logica 4.
  7. Intrare logica 5.
  8. Intrare logica 6.
  9. Intrare logica 7.
  10. Intrare ADC.
  11. Intrare pentru conectarea ION.
  12. Acest pin este conectat la sursa de alimentare a dispozitivului. Închideți pinii 12 și 13 cu un jumper, astfel încât tensiunea ION să fie egală cu tensiunea de alimentare.
  13. Ieșire logică 1.
  14. Ieșire logică 2.
  15. Ieșire PWM 1.
  16. Ieșire PWM 2.
  17. Ieșire logică 3.
  18. Ieșire logică 4.
  19. Ieșire logică 5.
  20. Ieșire logică 6.
  21. Ieșire logică 7.

Ce este GND?

Chiar și un radioamator începător știe ce este GND, dar pentru unii oameni li se par litere înfricoșătoare. GND este, ca să spunem așa, contact general. Se mai numește pământ și masă. Firul este de obicei negru (uneori alb sau altceva). GND este, de asemenea, conectat la carcasa metalica dispozitive. În cele mai multe cazuri, totul este pe tablă spatiu liber umple GND sub formă de poligoane mari. Modulul nostru are poligoane sub formă de plasă, la care sunt conectate Carcasa USB- conector.

Program de microcontroler.

Deoarece în acest articol vreau să vă spun cum să controlați circuitele prin USB folosind modul terminat, atunci nu voi explica cum funcționează programul de microcontroler, puteți descărca codul sursă de mai jos și vedeți, există o mulțime de comentarii acolo. Aici voi scrie pur și simplu despre identificatorii dispozitivului.

Deci, în surse există un fișier usbconfig.h, are linii

#define USB_CFG_VENDOR_ID 0x10, 0x00

#define USB_CFG_DEVICE_ID 0x01, 0x00

#define USB_CFG_VENDOR_NAME "k","i","b","e","r","m","a","s","t","e","r","." ,"p","l",".","u","a"

#define USB_CFG_VENDOR_NAME_LEN 17

#define USB_CFG_DEVICE_NAME "U","S","B","-","C","o","n","t","r","o","l"

#define USB_CFG_DEVICE_NAME_LEN 11

Primele două linii sunt ID-ul dispozitivului și ID-ul produsului, fiecare dispozitiv USB are acestea, doar în acest fișier este indicat mai întâi octetul mic, apoi octetul înalt, într-un program de calculator este invers. Urmează numele producătorului (furnizorului) și numele dispozitivului, iar lungimea liniei în octeți este de asemenea indicată. Programul pentru PC va căuta mai întâi dispozitivele după ID și apoi, printre cele găsite, va căuta după nume.

Firmware-ul dispozitivului.

În fișierele descărcate din folderul MCUusb_bootloader, găsiți fișierul principal.hex- acesta este un USB-bootloader, trebuie să fie încărcat în MK folosind un programator extern. După turnare, trebuie să setați corect siguranțele în fereastra programatorului STK500 ar trebui sa arate asa:

Dacă utilizați un alt program, puteți introduce pur și simplu valorile biților de siguranță HIGH și LOW (uitați-vă la captura de ecran).

După succesul firmware-ului, puteți încerca să flashați dispozitivul printr-un bootloader. Cum funcționează? Când porniți MK (pur și simplu când este aplicată alimentarea sau după o resetare), bootloader-ul pornește imediat, verifică starea, dacă este adevărată, apoi începe inițializarea bootloader-ului (calculatorul găsește dispozitivul). Ca o condiție, vom avea „Intrarea logică 1 = 0”, adică pentru a porni bootloader-ul, trebuie să închideți intrarea logică 1 la GND și să apăsați pe dispozitiv butonul RESET, ar trebui să apară un nou dispozitiv HID în managerul de dispozitive, care, de asemenea, nu necesită drivere:

Ok, acum în folderul MCUSB_Controldefault rulăm fișierul boot.bat, ar trebui să apară o fereastră cu numere care rulează:

Dacă fereastra se închide imediat, atunci ai făcut ceva greșit. Dacă totul este în regulă, atunci nu veți mai avea nevoie de un programator extern pentru acest dispozitiv. Acum puteți deconecta intrarea logică 1 de la GND. Și pentru orice eventualitate, apăsați RESET. Dispozitivul HID ar trebui să apară și în managerul de dispozitive (computerul va scrie că a fost găsit unul nou). Asigurați-vă că acest anumit dispozitiv apare în manager.

Gazdă- asta va controla dispozitivul, in cazul nostru computerul. Voi descrie mai detaliat controlul dispozitivului de pe un PC.

Pentru programatorii Delphi, scrierea unui program de control HID nu va fi o problemă, deoarece există o mulțime de informații pe Internet. Dar pentru programatorii C++ Builder, nu totul este atât de dulce, dar, după cum sa dovedit, totul nu este atât de rău. Am găsit biblioteca hidlibrary.h pe Internet, iar cu ajutorul ei vom lucra cu dispozitivul HID.

Descărcați sursele și rulați Control USB.cbproj(C++Builder 2010).

În dosar hidlibrary.hîn partea de sus este o linie

Să creăm un formular Formularul va avea un CheckListBox pentru controlul ieșirilor logice, 2 ScrollBars pentru controlul canalelor PWM, un ListBox pentru afișarea intrărilor logice, o Etichetă pentru afișarea stării ADC și un timer. Ar trebui să arate așa:

Redenumiți ScrollBars în ScrollBar_PWM1 și ScrollBar_PWM2, setați Max=1023 în proprietățile lor.

Să creăm o structură

#pachet pragma (împingere, 1)

struct status_t(

nesemnate char logical_outputs;

intrări_logice nesemnate;

caracter nesemnat ADC_DATA;

unsigned short int PWM1;

unsigned short int PWM2;

struct status_t DeviceStatus;

pachet #pragma (pop)

Pachetul #pragma este necesar pentru a preveni alinierea structurii de la compilator. ÎN ieșiri_logice starea tuturor ieșirilor logice este stocată în modul bit, adică primul bit stochează starea primei ieșiri, al doilea - al doilea și așa mai departe până la al șaptelea. De asemenea intrări_logice stochează starea intrărilor logice. ÎN ADC_DATA starea ADC este stocată, valoarea minima 0, maxim - 255.V PWM1 starea primei ieșiri PWM este stocată (reglarea lină a tensiunii), în PWM2- starea celui de-al doilea, valoarea minimă 0, maximă - 1023.

În programul pentru PC, trebuie să citiți această structură de la microcontroler și apoi să procesați datele primite. Pentru a seta noi valori de ieșire, trebuie mai întâi să scrieți noi valori în structură, apoi să trimiteți structura modificată la microcontroler. Când setați noi valori, trebuie doar să editați primele, 4 și 5 elemente, editarea celor două rămase nu va avea niciun efect.

HIDLibrary ascuns;

Și adăugați funcția connect().

Acum datele de la un dispozitiv HID pot fi solicitate folosind funcția hid.ReceiveData, specificând un pointer către structură ca parametru, numai înainte de solicitare trebuie să verificați dacă dispozitivul este conectat:

Acum să adăugăm programul nostru (sau pur și simplu să descarcăm sursele, totul este gata acolo).

Adăugați aceste linii undeva în cod (de preferință imediat după structură):

În proprietățile cronometrului, specificați Enabled = True, Interval = 500. Faceți dublu clic pe el și scrieți în handler

if (!connect()) return; // Ieșiți dacă dispozitivul nu este conectat

hid.ReceiveData(&DeviceStatus); // Citiți datele de pe dispozitiv

pentru (car i = 0; i< 7; i++)

CheckListBox_LogOuts->Checked[i] = CheckBit(DeviceStatus.logical_outputs, i);

ScrollBar_PWM1->Poziție = DeviceStatus.PWM1;

ScrollBar_PWM2->Poziție = DeviceStatus.PWM2;

ListBox_LogInputs->Clear();

pentru (car i = 0; i< 7; i++)

ListBox_LogInputs->Items->Add(" Logical input "+IntToStr(i+1)+" = "+BoolToStr(CheckBit(DeviceStatus.logical_inputs, i)));

Label_ADC->Caption = DeviceStatus.ADC_DATA;

Cred că totul este clar aici și nu necesită nicio explicație.

Faceți dublu clic pe CheckListBox, scrieți în handler

Gata, poti compila!

Test drive.

Deci, totul este gata: dispozitivul este asamblat, microcontrolerul este flash, este creat un program pentru computer, îl puteți testa.

Conectați dispozitivul la computer, lansați programul. În partea stângă a listei este afișată starea tuturor intrărilor logice dacă, de exemplu, intrarea logică 1 nu este scurtcircuitată la GND, atunci va fi scris „Log. intrare 1 = -1″, dacă este conectat, atunci „Log. intrare 1 = 0″. Iată ecranul:

Rezultatul este afișat sub această listă conversie ADC. Închideți intrarea ADC la minus, apoi rezultatul va fi 0, aproape de + putere, rezultatul va fi 255. Puteți conecta un potențiometru aici, sau altceva. Tensiunea de pe pinul ADC poate fi calculată folosind formula: Voltage_ION/255*ADC_result.

Acum conectați o sarcină mică la ieșirea logică 1 (LED sau doar un voltmetru). Bifați caseta de lângă „Ieșire logică 1” - LED-ul se va aprinde.

Conectați un voltmetru la primul canal PWM, rotiți cursorul - tensiunea se va schimba.

Finalizare.

Acum puteți folosi acest modul pentru a controla iluminatul sau alte aparate electrice. Puteți conecta un buton de sonerie sau o altă cheie la intrările logice. LA Intrare ADC poți conecta un senzor analog de umiditate, un senzor de temperatură sau un fotorezistor (vei ști dacă afară este noapte sau zi).



Ce parere aveti de acest articol?

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva