Sadržaj:

Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola: 6 koraka
Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola: 6 koraka

Video: Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola: 6 koraka

Video: Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola: 6 koraka
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Srpanj
Anonim
Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola
Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola
Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola
Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola

Često smatram da stvaram knjižnice za nove ugrađene module od nule na temelju podatkovne tablice uređaja. U stvaranju biblioteke nalazim da sam zaglavljen u ciklusu koda, kompajliranja, programiranja i testiranja kada osiguravam da stvari rade i da su bez grešaka. Često vrijeme kompajliranja i programa može biti puno duže od vremena potrebnog za uređivanje koda, pa bi način za izrezivanje ovih koraka pri razvoju bio vrlo zgodan.

Također često smatram da želim spojiti ugrađeni modul s računalom. Ako modul nema posebno USB povezivanje, što je često slučaj, općenito morate kupiti preskupi USB pretvarač koji će raditi jedan posao, primjerice samo SPI ili samo I2C.

Iz tih sam razloga odlučio stvoriti univerzalnu ploču za sučelje. Dizajniran je tako da omogućuje jednostavnu komunikaciju temeljenu na računalu s ugrađenim modulima.

Značajke ugrađenog sučelja ploče na kojoj sam se odlučio uključuju.

  • Digitalni I/O
  • I2C
  • SPI
  • UART
  • PWM
  • Servo motor
  • ADC ulaz
  • DAC izlaz

Sve se to može koristiti potpuno neovisno.

Pločom sučelja može se upravljati putem USB veze s računalom, ali također ima opcionalne veze WIFI ili Bluetooth modula koje omogućuju daljinsko korištenje ploče ili u scenariju tipa IoT.

Korištenjem standardnih SIL zaglavlja promjera 2,54 mm, moguće je izravno spojiti ženske dupont kabele između ploče i ugrađenog modula što omogućuje brze, pouzdane veze bez lemljenja.

Također sam razmišljao o dodavanju stvari kao što su CAN, LIN, H-bridge itd., Ali to bi moglo doći kasnije s v2 revizijom.

Korak 1: Projektiranje PCB -a

Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a
Projektiranje PCB -a

Prilikom projektiranja PCB -a volim se truditi da stvari budu što jednostavnije. Kad ćete ručno graditi ploče, važno je da komponente dodajete samo ako imaju određenu svrhu i koriste što je moguće više unutarnjih značajki mikrokontrolera.

Gledajući svog omiljenog dobavljača elektronike, pronašao sam čip s kojim sam se osjećao ugodno i koji je imao značajke koje sam tražio i imao je razumnu cijenu. Čip na koji sam sletio bio je PIC18F24K50.

S dostupna 23 U/I pina to mi je omogućilo ove značajke

  • Digtal I/O
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servo motor x 6
  • ADC ulaz x 3
  • DAC izlaz x 1
  • Ulazno/izlazni pogon od 5V ili 3V3
  • LED status

Jedan nedostatak IC -a koji sam odabrao je to što ima samo jedan UART periferni uređaj pa vam upotreba Bluetooth ili Wifi metode upravljanja neće omogućiti korištenje UART veze.

Na gornjim slikama prikazane su gotove sheme i PCB.

Korak 2: Dizajniranje protokola

Dizajniranje protokola
Dizajniranje protokola

Prvi korak u osmišljavanju protokola je odlučivanje što će vam konkretno ploča trebati da biste mogli učiniti. Razbijanje stvari dodaje bolju razinu kontrole, dok kombiniranje stvari pojednostavljuje sučelje i smanjuje komunikacijski promet između ploče i računala. To je ravnotežna igra i teško ju je usavršiti.

Za svaku funkciju ploče trebate navesti sve parametre i povratne vrijednosti. Na primjer, funkcija za čitanje ADC ulaza može imati parametar za specifikaciju ulaza za uzorkovanje i povratnu vrijednost koja sadrži rezultat.

U svom dizajnu ovdje je popis funkcija koje sam htio uključiti:

  • Digitalni I/O

    • SetPin (PinNumber, država)
    • Stanje = GetPin (PinNumber)
  • SPI

    • Inicijalizacija (SPI način rada)
    • DataIn = Prijenos (DataOut)
    • ControlChipSelect (kanal, stanje)
    • SetPrescaler (stopa)
  • I2C

    • Inicijalizacija ()
    • Početak ()
    • Ponovo pokreni ()
    • Zaustavi ()
    • SlaveAck = Pošalji (DataOut)
    • DataIn = Primanje (posljednje)
  • UART

    • Inicijalizacija ()
    • TX bajt (DataOut)
    • BytesAvailable = RX broj ()
    • DataIn = RX bajt ()
    • SetBaud (Baud)
  • PWM

    • Omogući (kanal)
    • Onemogući (kanal)
    • SetFrequency (kanal, frekvencija)
    • GetMaxDuty (Duty)
    • SetDuty (Dužnost)
  • Servo

    • Omogući (kanal)
    • Onemogući (kanal)
    • SetPosition (kanal, položaj)
  • ADC

    ADCsample = Uzorak (kanal)

  • DAC

    • Omogućiti
    • Onemogući
    • SetOutput (napon)
  • WIFI

    • SetSSID (SSID)
    • Postavi lozinku (lozinka)
    • Status = CheckConnectionStatus ()
    • IP = GetIPAddress ()

Parametri su prikazani u zagradama, a povratak je prikazan prije simbola jednakosti.

Prije nego počnem kodirati, svakoj funkciji dodjeljujem kod naredbe koji počinje od 128 (binarni 0b10000000) i radi prema gore. Potpuno dokumentiram protokol kako bih osigurao da jednom kad mi glava bude u kodu moram imati lijep dokument na koji se mogu vratiti. Potpuni protokolarni dokument za ovaj projekt nalazi se u privitku i uključuje dolazne naredbene kodove i širine bitova.

Korak 3: Dizajniranje firmvera

Dizajniranje firmvera
Dizajniranje firmvera
Dizajniranje firmvera
Dizajniranje firmvera
Dizajniranje firmvera
Dizajniranje firmvera

Nakon što se protokol uspostavi, tada se radi o implementaciji funkcionalnosti na hardveru.

Usvajam jednostavan pristup tipa državnog stroja pri razvoju podređenih sustava kako bih pokušao maksimizirati potencijalni protok naredbi i podataka, a da firmver ostane jednostavan za razumijevanje i ispravljanje pogrešaka. Umjesto toga mogao bi se koristiti napredniji sustav, poput Modbusa, ako vam je potrebna bolja interakcija s drugim povezanim uređajima, ali to dodaje dodatne troškove koji će usporiti stvari.

Stroj stanja sastoji se od tri stanja:

1) Čekanje naredbi

2) Prijemni parametri

3) Odgovorite

Tri stanja međusobno djeluju na sljedeći način:

1) Prolazimo kroz dolazne bajte u međuspremniku sve dok nemamo bajt koji ima postavljen najznačajniji bit. Nakon što primimo takav bajt, provjeravamo ga na popisu poznatih naredbi. Ako nađemo podudaranje, dodjeljujemo broj bajtova parametara i povratnih bajtova koji odgovaraju protokolu. Ako nema bajtova parametara, tada možemo izvršiti naredbu i ili preskočiti na stanje 3 ili ponovno pokrenuti stanje 1. Ako postoje parametri bajtova, prelazimo na stanje 2.

2) Prolazimo kroz dolazne bajtove spremajući ih sve dok ne spremimo sve parametre. Nakon što imamo sve parametre, izvršavamo naredbu. Ako postoje povratni bajtovi, prelazimo na fazu 3. Ako nema povratnih bajtova za slanje, vraćamo se na fazu 1.

3) Prolazimo kroz dolazne bajtove i za svaki bajt prepisujemo eho bajt valjanim povratnim bajtom. Nakon što smo poslali sve povratne bajtove, vraćamo se na prvu fazu.

Koristio sam Flowcode za dizajn firmvera jer lijepo vizualno pokazuje što radim. Ista se stvar može jednako dobro učiniti u Arduinu ili drugim ugrađenim programskim jezicima.

Prvi korak je uspostaviti komunikaciju s računalom. Da bismo to učinili, mikro treba konfigurirati da radi odgovarajućom brzinom i moramo dodati kod za pogon USB i UART perifernih uređaja. U Flowcodeu to je jednostavno kao i uvlačenje u projekt USB serijske komponente i UART komponente iz izbornika Comms komponente.

Dodamo RX prekid i međuspremnik za hvatanje dolaznih naredbi na UART -u i redovito anketiramo USB. Tada možemo u slobodno vrijeme obraditi tampon.

Priloženi su projekt Flowcode i generirani C kod.

Korak 4: Povezivanje putem protokola

Sučelje putem protokola
Sučelje putem protokola
Sučelje putem protokola
Sučelje putem protokola
Sučelje putem protokola
Sučelje putem protokola

Simulacija protokola vrlo je moćna i omogućuje nam stvaranje komponente za razgovor s pločom. Prilikom izrade komponente sada možemo jednostavno povući komponentu u naš projekt i odmah imati dostupne funkcije ploče. Kao dodatni bonus, bilo koja postojeća komponenta koja ima SPI, I2C ili UART periferiju može se koristiti u simulaciji, a podaci o komunikaciji mogu se dopremiti na ploču sučelja putem komponente za ubrizgavanje. Na priloženim slikama prikazan je jednostavan program za ispis poruke na zaslonu. Podaci o komunikaciji koji se šalju putem ploče sučelja na stvarni hardver zaslona i postavljanje komponente s komponentama I2C zaslona, I2C injektora i ploče sučelja.

Novi SCADA način rada za Flowcode 8.1 apsolutni je dodatni bonus jer tada možemo uzeti program koji radi nešto u simulatoru Flowcode i izvesti ga tako da se može samostalno izvoditi na bilo kojem računalu bez ikakvih problema s licenciranjem. To bi moglo biti izvrsno za projekte poput testnih platformi ili senzorskih grupa.

Ovaj SCADA način rada koristim za izradu alata za konfiguraciju WIFI -a koji se može koristiti za konfiguriranje SSID -a i lozinke, kao i za prikupljanje IP adrese modula. To mi omogućuje da sve postavim pomoću USB veze, a zatim prijeđem na WIFI mrežnu vezu kada stvari budu pokrenute.

U prilogu su neki primjeri projekata.

Korak 5: Ostale metode povezivanja

Osim protokola, možete komunicirati s pločom sučelja u velikoj mjeri pomoću programskog jezika po izboru. Koristili smo Flowcode jer je već sadržavao biblioteku dijelova koje smo mogli odmah pokrenuti, ali to se odnosi i na mnoge druge jezike.

Ovdje je popis jezika i metoda za komunikaciju s pločom Interface.

Python - Korištenje serijske knjižnice za prijenos podataka na COM port ili IP adresu

Matlab - Korištenje naredbi File za prijenos podataka na COM port ili IP adresu

C ++ / C# / VB - Korištenjem unaprijed napisanog DLL -a, izravnim pristupom COM portu ili Windows TCP / IP API -ju

Labview - Korištenje unaprijed napisanog DLL -a, komponente VISA Serial ili TCP/IP komponente

Ako netko želi vidjeti implementirane gore navedene jezike, neka mi to javi.

Korak 6: Gotov proizvod

Gotov proizvod
Gotov proizvod
Gotov proizvod
Gotov proizvod
Gotov proizvod
Gotov proizvod

Gotov proizvod vjerojatno će godinama biti istaknuta značajka u mom ugrađenom alatu. Već mi je pomogao u razvoju komponenti za različite Grove zaslone i senzore. Sada mogu potpuno zabiti kôd prije nego što pribjegnem bilo kakvim kompilacijama ili programiranju.

Čak sam podijelio i neke ploče za kolege kako bi i oni mogli poboljšati svoj tijek rada, a oni su jako dobro prihvaćeni.

Hvala što ste pročitali moj Instructable. Nadam se da vam je bio koristan i nadamo se da će vas inspirirati da stvorite vlastite alate za ubrzanje vaše produktivnosti.

Preporučeni: