Sadržaj:
- Korak 1: Dizajniranje PCB -a
- Korak 2: Dizajniranje protokola
- Korak 3: Dizajniranje firmvera
- Korak 4: Povezivanje putem koda protoka
- Korak 5: Ostale metode povezivanja
- Korak 6: Gotov proizvod
Video: Ugrađena univerzalna ploča za sučelje - USB/Bluetooth/WIFI kontrola: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Č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
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
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
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
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 ć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:
MXY ploča - niskobudžetna robotska ploča za crtanje XY plotera: 8 koraka (sa slikama)
MXY ploča - Robotska ploča za crtanje niskobudžetnih XY plotera: Moj cilj je bio dizajnirati mXY ploču tako da bude niskobudžetna mašina za crtanje XY plotera. Zato sam dizajnirao ploču koja olakšava onima koji žele napraviti ovaj projekt. U prethodnom projektu, koristeći 2 komada Nema17 koračnih motora, ova ploča koristi
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 Nodmcu esp8266 mikro kontrolera
EAL- Ugrađena unutrašnja klima: 5 koraka
EAL- Ugrađena unutrašnja klima: Za naš školski projekt, imali smo zadatak integrirati arduino u automatizirani sistem. Odlučili smo se za unutarnji senzor klime koji može osjetiti temperaturu, vlažnost i nivo decibela u zatvorenom prostoru. Izbušili smo nekoliko rupa u ormaru
Kako nabaviti muziku sa SKORO BILO KOJE (Haha) web stranice (sve dok je možete čuti možete je nabaviti U redu, ako je ugrađena u Flash možda nećete moći) IZMENJENO !!!!! Dodane informacije: 4 koraka
Kako nabaviti muziku sa SKORO BILO KOJE (Haha) web stranice (sve dok je možete čuti možete je nabaviti … U redu, ako je ugrađena u Flash možda nećete moći) IZMENJENO !!!!! Dodane informacije: ako ikada posjetite web stranicu koja pušta 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 muziku za
Univerzalna kontrola jačine zvuka u slušalicama/slušalicama: 8 koraka (sa slikama)
Univerzalna kontrola jačine zvuka u slušalicama/slušalicama: 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 kojima volim ubijati vrijeme prijenosnim medijima, ali