Sadržaj:

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

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

Video: Ugrađena univerzalna ploča za sučelje - USB/Bluetooth/WIFI kontrola: 6 koraka
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Novembar
Anonim
Ugrađena univerzalna ploča za sučelje - USB/Bluetooth/WIFI kontrola
Ugrađena univerzalna ploča za sučelje - USB/Bluetooth/WIFI kontrola
Ugrađena univerzalna ploča za sučelje - USB/Bluetooth/WIFI kontrola
Ugrađena univerzalna ploča za sučelje - USB/Bluetooth/WIFI kontrola

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

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

Iz ovih razloga sam odlučio stvoriti univerzalnu ploču za sučelje. Dizajniran je tako da omogućava laku komunikaciju zasnovanu na računaru sa 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.

Interfejsnom pločom se može upravljati putem USB veze sa računarom, ali takođe ima i opcionalne veze WIFI ili Bluetooth modula koje omogućavaju daljinsku upotrebu ploče ili u scenariju tipa IoT.

Korištenjem standardnih SIL zaglavlja promjera 2,54 mm, moguće je direktno 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 može doći kasnije s v2 revizijom.

Korak 1: Dizajniranje PCB -a

Dizajniranje PCB -a
Dizajniranje PCB -a
Dizajniranje PCB -a
Dizajniranje PCB -a
Dizajniranje PCB -a
Dizajniranje PCB -a
Dizajniranje PCB -a
Dizajniranje PCB -a

Prilikom dizajniranja PCB -a volim se truditi da stvari budu što jednostavnije. Kada ć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 unutrašnjih funkcija mikrokontrolera.

Gledajući svog omiljenog dobavljača elektronike, našao sam čip koji mi je bio ugodan i koji je imao karakteristike 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 jednu UART periferiju, 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 dizajniranju protokola je odlučivanje o tome šta vam je konkretno potrebno da ploča može raditi. Razbijanje stvari dodaje bolji nivo kontrole, dok kombinovanje stvari pojednostavljuje interfejs i smanjuje komunikacijski promet između ploče i računara. To je balansirajuća 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 unosa za uzorkovanje i povratnu vrijednost koja sadrži rezultat.

U mom dizajnu ovdje je lista funkcija koje sam htio uključiti:

  • Digitalni I/O

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

    • Inicijalizacija (SPI način rada)
    • DataIn = Transfer (DataOut)
    • ControlChipSelect (kanal, država)
    • SetPrescaler (stopa)
  • I2C

    • Inicijalizacija ()
    • Start ()
    • Ponovo pokreni ()
    • Stop ()
    • 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ći
    • 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, dodjeljujem svakoj funkciji naredbeni kod 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 imam lijep dokument na koji se mogu vratiti. Potpuni protokolarni dokument za ovaj projekt nalazi se u prilogu 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

Kada se protokol uspostavi, tada se radi o implementaciji funkcionalnosti na hardveru.

Usvajam jednostavan pristup tipa državnih mašina prilikom razvoja podređenih sistema kako bih pokušao maksimizirati potencijalnu propusnost naredbi i podataka, a da firmver bude jednostavan za razumijevanje i otklanjanje greš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.

Mašina stanja sastoji se od tri stanja:

1) Čekanje na naredbe

2) Prijemni parametri

3) Odgovorite

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

1) Prolazimo kroz ulazne bajtove 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 preći u stanje 3 ili ponovo pokrenuti stanje 1. Ako postoje parametri bajtova, prelazimo u stanje 2.

2) Prolazimo kroz dolazne bajtove spremajući ih sve dok ne pohranimo sve parametre. Kada 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 važećim povratnim bajtom. Nakon što smo poslali sve povratne bajtove, vraćamo se na prvu fazu.

Koristio sam Flowcode za dizajniranje 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 uspostavljanje komunikacije sa računarom. 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 protokolu to je jednostavno kao uvlačenje u projekt USB serijske komponente i UART komponente iz izbornika Comms komponente.

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

Priloženi su projekt Flowcode i generirani C kod.

Korak 4: Povezivanje putem koda protoka

Povezivanje putem protokola
Povezivanje putem protokola
Povezivanje putem protokola
Povezivanje putem protokola
Povezivanje putem protokola
Povezivanje putem protokola

Simulacija protokola je vrlo moćna i omogućava nam stvaranje komponente za razgovor sa pločom. Prilikom stvaranja komponente sada možemo jednostavno prevuć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 komunikacijski podaci mogu se dopremiti na ploču sučelja putem komponente za ubrizgavanje. Na priloženim slikama prikazan je jednostavan program za štampanje poruke na ekranu. Podaci o komunikaciji koji se šalju putem Interface Board -a na stvarni hardver ekrana i podešavanje komponente sa I2C Display, I2C Injector i Interface Board komponentama.

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 će raditi samostalno na bilo kojem računalu bez ikakvih problema s licenciranjem. Ovo bi moglo biti odlično za projekte poput testnih platformi ili senzorskih grupa.

Koristim ovaj SCADA način rada za kreiranje WIFI konfiguracijskog alata 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 prebacim na WIFI mrežnu vezu kada stvari budu pokrenute.

U prilogu su neki primjeri projekata.

Korak 5: Ostale metode povezivanja

Osim protokola, možete prilično koristiti svoj programski jezik za komunikaciju s pločom sučelja. 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 biblioteke 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 - Koristeći unaprijed napisani DLL, komponentu VISA Serial ili TCP/IP komponentu

Ako neko želi da se gore navedeni jezici implementiraju, neka mi to javi.

Korak 6: Gotov proizvod

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

Gotov proizvod će vjerovatno godinama biti istaknuta značajka u mom ugrađenom kompletu alata. Već mi je pomogao u razvoju komponenti za različite Grove ekrane i senzore. Sada mogu potpuno zakucati kôd prije nego što pribjegnem bilo kakvim kompilacijama ili programskim smicalicama.

Čak sam podijelio i neke ploče za kolege kako bi i oni poboljšali tok svog 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čuje se: