Sadržaj:
- Korak 1: Projektiranje PCB -a
- Korak 2: Dizajniranje protokola
- Korak 3: Dizajniranje firmvera
- Korak 4: Povezivanje putem protokola
- Korak 5: Ostale metode povezivanja
- Korak 6: Gotov proizvod
Video: Ugrađena univerzalna ploča sučelja - USB/Bluetooth/WIFI kontrola: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Č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
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
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
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
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 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:
Senzor ADXL335 sučelja na Raspberry Pi 4B u 4 koraka: 4 koraka
Sučelje ADXL335 senzora na Raspberry Pi 4B u 4 koraka: U ovom uputstvu ćemo spojiti senzor ADXL335 (akcelerometar) na Raspberry Pi 4 sa Shunya O/S
UCL -ugrađena relejna komunikacijska kutija: 5 koraka
UCL -Embedded -Relay Communication Box: Glavna ideja ovog projekta je kontrola seta od dva releja i DHT11 senzora s aplikacijom Blynk pomoću WiFi komunikacije i mikrokontrolera Nodmcu esp8266
EAL- Ugrađena unutarnja klima: 5 koraka
EAL- Ugrađena unutrašnja klima: Za naš školski projekt, imali smo zadatak integrirati arduino u automatizirani sustav. Odlučili smo napraviti unutarnji senzor klime, koji može osjetiti temperaturu, vlagu i razinu decibela u zatvorenom prostoru. Izbušili smo nekoliko rupa u ormaru
Kako nabaviti glazbu s gotovo bilo koje (haha) web stranice (sve dok je možete čuti možete je dobiti u redu dobro ako je ugrađena u Flash možda nećete moći) IZMJENJENO !!!!! Dodane informacije: 4 koraka
Kako nabaviti glazbu sa gotovo bilo koje (haha) web stranice (sve dok je možete čuti možete je dobiti … u redu dobro ako je ugrađena u Flash možda nećete moći) IZMJENJENO !!!!! Dodani podaci: ako ikada posjetite web stranicu koja svira pjesmu koja vam se sviđa i želite je, evo vam upute, nisam ja kriv ako nešto zabrljate (jedini način na koji će se to dogoditi je ako počnete brisati stvari bez razloga ) uspio sam nabaviti glazbu za
Univerzalna kontrola glasnoće slušalica/slušalica: 8 koraka (sa slikama)
Univerzalna kontrola glasnoće slušalica/slušalica: Kupio sam PMP (prijenosni medijski player) iz Hong Konga kako bih mogao igrati svoje NES igre s ugrađenim emulatorom gdje god je to prikladno. Duga putovanja, letovi, čekaonice itd. Mjesta su na koja volim ubijati vrijeme prijenosnim medijima, ali