Sisällysluettelo:
- Vaihe 1: Piirilevyn suunnittelu
- Vaihe 2: Protokollan suunnittelu
- Vaihe 3: Laiteohjelmiston suunnittelu
- Vaihe 4: Liitäntä virtauskoodin kautta
- Vaihe 5: Muut liitäntämenetelmät
- Vaihe 6: Valmis tuote
Video: Sisäänrakennettu yleisliitäntäkortti - USB/Bluetooth/WIFI -ohjaus: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Huomaan usein, että luon kirjastoja uusille sulautetuille moduuleille tyhjästä laitteen tietolomakkeen perusteella. Kirjastoa luodessani huomaan, että olen jumissa koodin, kääntämisen, ohjelmoinnin ja testin kierrossa varmistaessani, että asiat toimivat ja ovat virheettömiä. Usein kokoamis- ja ohjelmointiajat voivat olla paljon pidempiä kuin koodin muokkaamiseen kuluva aika, joten tapa poistaa nämä vaiheet kehityksen aikana olisi erittäin kätevä.
Huomaan myös usein, että haluan liittää sulautetun moduulin tietokoneeseen. Jos moduulissa ei ole erityisesti USB -liitäntää, mikä usein tapahtuu, sinun on yleensä ostettava ylihinnoiteltu USB -muunnin, joka tekee yhden työn, kuten vain SPI tai vain I2C.
Näistä syistä päätin luoda yleisliitäntäkortin. Se on suunniteltu mahdollistamaan helppo PC -pohjainen viestintä sulautettujen moduulien avulla.
Asettamani levyn sulautetun käyttöliittymän ominaisuudet sisältävät.
- Digitaalinen I/O
- I2C
- SPI
- UART
- PWM
- Servo moottori
- ADC -tulo
- DAC -lähtö
Kaikkia niitä voidaan käyttää täysin itsenäisesti.
Liitäntäkorttia voidaan ohjata USB -liitännän kautta tietokoneeseen, mutta siinä on myös valinnaiset WIFI- tai Bluetooth -moduuliliitännät, jotta korttia voidaan käyttää etänä tai IoT -tyyppisessä skenaariossa.
Käyttämällä 2,54 mm: n vakiokokoisia SIL -liitäntöjä on mahdollista kytkeä naaraspuoliset dupont -kaapelit suoraan levyn ja sulautetun moduulin väliin, mikä mahdollistaa nopeat, luotettavat ja juottamattomat liitännät.
Ajattelin myös lisätä asioita, kuten CAN, LIN, H-bridge jne., Mutta nämä voivat ehkä tulla myöhemmin v2-version kanssa.
Vaihe 1: Piirilevyn suunnittelu
Piirilevyä suunnitellessani haluan yrittää pitää asiat mahdollisimman yksinkertaisina. Kun aiot rakentaa levyjä käsin, on tärkeää lisätä komponentteja vain silloin, kun ne tekevät tiettyä tarkoitusta ja käyttävät mahdollisimman monia mikro -ohjaimen sisäisiä ominaisuuksia.
Tarkastelemalla ensisijaista elektroniikkatoimittajaani löysin sirun, johon olin tyytyväinen ja jolla oli etsimäni ominaisuudet ja joka oli kohtuullinen hinta. Siru, johon päädyin, oli PIC18F24K50.
Käytettävissä olevien 23 I/O -nastan ansiosta tämä mahdollisti minulle nämä ominaisuudet
- Digitaalinen I/O
- I2C
- SPI
- UART
- PWM x 2
- Servomoottori x 6
- ADC -tulo x 3
- DAC -lähtö x 1
- I/O -jännite 5V tai 3V3
- Tila -LED
Yksi valitun IC: n haittapuoli on, että siinä on vain yksi UART -oheislaite, joten Bluetooth- tai Wifi -ohjausmenetelmän käyttö estää UART -yhteyden käytön.
Yllä olevissa kuvissa on valmis kaavio ja piirilevy.
Vaihe 2: Protokollan suunnittelu
Ensimmäinen askel protokollan suunnittelussa on päättää, mitä tarvitset taulua voidaksesi tehdä. Asioiden jakaminen lisää hallittavuutta, kun taas asioiden yhdistäminen yksinkertaistaa käyttöliittymää ja vähentää kommunikaatioliikennettä kortin ja tietokoneen välillä. Se on tasapainottava peli, jota on vaikea täydentää.
Jokaisen kortin toiminnon kohdalla sinun on ilmoitettava parametrit ja palautukset. Esimerkiksi ADC -tulon lukemistoiminnolla voi olla parametri, joka määrittää otoksen näytteelle, ja palautusarvo, joka sisältää tuloksen.
Suunnittelussa tässä on luettelo toiminnoista, jotka halusin sisällyttää:
-
Digitaalinen I/O
- SetPin (PinNumber, tila)
- Tila = GetPin (PinNumber)
-
SPI
- Alustus (SPI -tila)
- DataIn = Siirto (DataOut)
- ControlChipSelect (Kanava, tila)
- SetPrescaler (korko)
-
I2C
- Alusta ()
- Alkaa ()
- Uudelleenkäynnistää ()
- Lopettaa ()
- SlaveAck = Lähetä (DataOut)
- DataIn = Vastaanota (viimeinen)
-
UART
- Alusta ()
- TX -tavu (DataOut)
- BytesAvailable = RX Count ()
- DataIn = RX -tavu ()
- SetBaud (Baud)
-
PWM
- Ota käyttöön (kanava)
- Poista käytöstä (kanava)
- SetFrequency (kanava, taajuus)
- GetMaxDuty (velvollisuus)
- SetDuty (velvollisuus)
-
Servo
- Ota käyttöön (kanava)
- Poista käytöstä (kanava)
- SetPosition (kanava, sijainti)
-
ADC
ADCsample = Näyte (kanava)
-
DAC
- ota käyttöön
- Poista käytöstä
- SetOutput (jännite)
-
WIFI
- SetSSID (SSID)
- Aseta salasana (salasana)
- Tila = CheckConnectionStatus ()
- IP = GetIPAddress ()
Parametrit näkyvät suluissa ja palautukset ennen yhtäsuuruusmerkkiä.
Ennen kuin aloitan koodauksen, annan kullekin toiminnolle komentokoodin, joka alkaa 128: sta (binääri 0b10000000) ja toimii ylöspäin. Dokumentoin protokollan täysin varmistaakseni, että kun pääni on koodissa, minulla on mukava asiakirja, johon voin palata. Tämän projektin koko protokollaasiakirja on liitteenä ja sisältää saapuvat komentokoodit ja bittileveydet.
Vaihe 3: Laiteohjelmiston suunnittelu
Kun protokolla on luotu, kyse on laitteiston toiminnallisuuden toteuttamisesta.
Otan käyttöön yksinkertaisen tilakonetyyppisen lähestymistavan, kun kehitän orjajärjestelmiä yrittäen maksimoida mahdollisen komennon ja tiedonsiirron samalla, kun laiteohjelmisto on helppo ymmärtää ja korjata. Sen sijaan voidaan käyttää kehittyneempää järjestelmää, kuten Modbus, jos tarvitset parempaa vuorovaikutusta muiden liitettyjen laitteiden kanssa, mutta tämä lisää yleiskustannuksia, jotka hidastavat asioita.
Tilakone koostuu kolmesta tilasta:
1) Odotetaan komentoja
2) Parametrien vastaanottaminen
3) Vastaa
Kolme valtiota ovat vuorovaikutuksessa seuraavasti:
1) Käymme puskurin saapuvia tavuja läpi, kunnes meillä on tavu, jolla on merkittävin bittiasetus. Kun olemme saaneet tällaisen tavun, tarkistamme sen tunnettujen komentojen luettelon kanssa. Jos löydämme osuman, määritämme parametritavujen määrän ja palautamme tavuja vastaamaan protokollaa. Jos parametritavuja ei ole, voimme suorittaa komennon täällä ja joko hypätä tilaan 3 tai käynnistää uudelleen tilan 1. Jos parametritavuja on, siirrymme tilaan 2.
2) Käymme läpi tulevat tavut tallentamalla ne, kunnes olemme tallentaneet kaikki parametrit. Kun olemme saaneet kaikki parametrit, suoritamme komennon. Jos palautustavuja on, siirrytään vaiheeseen 3. Jos palautettavia tavuja ei ole, palaamme vaiheeseen 1.
3) Käymme läpi saapuvat tavut ja kirjoitamme jokaiselle tavulle kaiku tavun kelvollisella paluutavulla. Kun olemme lähettäneet kaikki palautustavat, palaamme vaiheeseen 1.
Käytin Flowcodea laiteohjelmiston suunnittelussa, koska se osoittaa hienosti visuaalisesti, mitä teen. Sama asia voitaisiin tehdä yhtä hyvin Arduinolla tai muilla sulautetuilla ohjelmointikielillä.
Ensimmäinen askel on muodostaa yhteys tietokoneen kanssa. Tätä varten mikro on määritettävä toimimaan oikealla nopeudella ja meidän on lisättävä koodi USB- ja UART -oheislaitteiden ajamiseen. Flowcode -ohjelmassa tämä on yhtä helppoa kuin vetää projektiin USB -sarja- ja UART -komponentti Comms -komponentti -valikosta.
Lisäämme RX -keskeytyksen ja puskurin UART -komentojen sieppaamiseen ja kyselemme säännöllisesti USB: ltä. Voimme sitten puskurin vapaa -ajan prosessissamme.
Flowcode -projekti ja luotu C -koodi on liitteenä.
Vaihe 4: Liitäntä virtauskoodin kautta
Flowcode -simulaatio on erittäin tehokas ja sen avulla voimme luoda komponentin, joka voi keskustella hallituksen kanssa. Luodessamme komponenttia voimme nyt yksinkertaisesti vetää komponentin projektiin ja saada heti käyttöön piirilevyn toiminnot. Lisäbonuksena mitä tahansa olemassa olevaa komponenttia, jossa on SPI-, I2C- tai UART -oheislaite, voidaan käyttää simulaatiossa ja kommunikointitiedot voidaan ohjata liitäntäkortille ruiskutuskomponentin kautta. Liitetyissä kuvissa näkyy yksinkertainen ohjelma tulostaa viesti näyttöön. Tiedonsiirtotiedot, jotka lähetetään liitäntäkortin kautta varsinaiseen näyttölaitteistoon ja komponenttiasetuksiin, joissa on I2C -näyttö, I2C -ruisku ja liitäntäkortin komponentit.
Flowcode 8.1: n uusi SCADA -tila on ehdoton lisäbonus siinä mielessä, että voimme sitten ottaa ohjelman, joka tekee jotain Flowcode -simulaattorissa, ja viedä sen niin, että se toimii itsenäisesti millä tahansa tietokoneella ilman lisenssiongelmia. Tämä voisi olla loistava hankkeille, kuten koelaitteille tai anturiryhmille.
Käytän tätä SCADA -tilaa luodakseni WIFI -määritystyökalun, jolla voidaan määrittää SSID ja salasana sekä kerätä moduulin IP -osoite. Tämän avulla voin asettaa kaiken USB -liitännän avulla ja siirtää sitten WIFI -verkkoyhteyteen, kun asiat ovat käynnissä.
Liitteenä on esimerkkejä projekteista.
Vaihe 5: Muut liitäntämenetelmät
Flowcoden lisäksi voit melko paljon käyttää valitsemasi ohjelmointikieltä kommunikoidaksesi liitäntäkortin kanssa. Käytimme Flowcodea, koska siinä oli jo kirjasto osista, jotka voisimme saada heti käyttöön, mutta tämä koskee myös monia muita kieliä.
Tässä on luettelo kielistä ja tavoista kommunikoida liitäntäkortin kanssa.
Python - Sarjakirjaston käyttäminen datan suoratoistoon COM -porttiin tai IP -osoitteeseen
Matlab - Tiedoston komentojen käyttäminen datan suoratoistoon COM -porttiin tai IP -osoitteeseen
C ++ / C# / VB - Käytä joko valmiiksi kirjoitettua DLL -tiedostoa, käytä suoraan COM -porttia tai Windowsin TCP / IP -sovellusliittymää
Labview - Käytä joko valmiiksi kirjoitettua DLL -tiedostoa, VISA -sarjakomponenttia tai TCP/IP -komponenttia
Jos joku haluaa nähdä yllä olevien kielten toteutuvan, ilmoittakaa minulle.
Vaihe 6: Valmis tuote
Valmis tuote on todennäköisesti näkyvä piirre upotetussa työkalusarjassani tulevina vuosina. Se on jo auttanut minua kehittämään komponentteja eri Grove -näytöille ja antureille. Voin nyt saada koodin kokonaan naulattuna ennen kuin ryhdyn mihinkään kokoelmiin tai ohjelmointivirheisiin.
Olen jopa jakanut joitakin tauluja kollegoille, jotta he voivat parantaa työnkulkuaan, ja nämä ovat saaneet erittäin hyvän vastaanoton.
Kiitos, että luit Instructable -ohjelman, toivottavasti siitä oli sinulle hyötyä, ja toivottavasti se innostaa sinua luomaan omia työkaluja tuottavuuden nopeuttamiseksi.
Suositeltava:
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen
Arduinosi sisäänrakennettu EEPROM: 6 vaihetta
Arduinon sisäänrakennettu EEPROM: Tässä artikkelissa tarkastelemme Arduino -korttiemme sisäistä EEPROMia. Mitä EEPROM jotkut teistä saattavat sanoa? EEPROM on sähköisesti pyyhittävä ohjelmoitava, vain luku -muisti. Se on haihtumattoman muistin muoto, joka muistaa