Tartalomjegyzék:

Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés: 6 lépés
Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés: 6 lépés

Videó: Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés: 6 lépés

Videó: Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés: 6 lépés
Videó: Hardver alapismeretek: memóriák 2024, Július
Anonim
Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés
Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés
Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés
Beépített univerzális interfész kártya - USB/Bluetooth/WIFI vezérlés

Gyakran tapasztalom, hogy könyvtárakat hozok létre az új beágyazott modulokhoz a semmiből az eszköz adatlapja alapján. A könyvtár létrehozásakor azt tapasztalom, hogy elakadok egy kód-, fordítási, programozási és tesztciklusban, amikor biztosítom a dolgok működését és hibamentes vagyok. Gyakran előfordul, hogy a fordítási és programozási idő sokkal hosszabb lehet, mint a kód szerkesztése, és így nagyon hasznos lenne ezen lépések kivágása a fejlesztés során.

Gyakran tapasztalom azt is, hogy szeretnék egy beágyazott modult összekapcsolni egy számítógéppel. Ha a modulnak nincs kifejezetten USB -kapcsolata, ami gyakran előfordul, akkor általában túl drága USB -átalakítót kell vásárolnia, amely egyetlen munkát végez, például csak SPI -t vagy csak I2C -t.

Ezen okok miatt döntöttem úgy, hogy létrehozom az univerzális interfészlapot. Úgy tervezték, hogy lehetővé tegye a könnyű PC -alapú kommunikációt beágyazott modulokkal.

A tábla beágyazott interfész -szolgáltatásai, amelyekre számítottam, a következők.

  • Digitális I/O
  • I2C
  • SPI
  • UART
  • PWM
  • Szervómotor
  • ADC bemenet
  • DAC kimenet

Mindezek teljesen függetlenül használhatók.

Az interfészkártya USB -kapcsolaton keresztül vezérelhető a számítógéppel, de opcionális WIFI- vagy Bluetooth -modulcsatlakozásokkal is rendelkezik, amelyek lehetővé teszik a kártya távoli vagy IoT -típusú forgatókönyvben történő használatát.

A szabványos 2,54 mm -es SIL fejlécekkel közvetlenül csatlakoztathatók a női dupont kábelek a kártya és a beágyazott modul közé, lehetővé téve a gyors, megbízható és forrasztásmentes csatlakozást.

Arra is gondoltam, hogy hozzáadhatok olyan dolgokat, mint a CAN, LIN, H-bridge stb., De ezek később jöhetnek egy v2-es verzióval.

1. lépés: A NYÁK tervezése

A NYÁK tervezése
A NYÁK tervezése
A NYÁK tervezése
A NYÁK tervezése
A NYÁK tervezése
A NYÁK tervezése
A NYÁK tervezése
A NYÁK tervezése

A NYÁK tervezésekor szeretnék a lehető legegyszerűbb dolgokat tartani. Amikor kézzel fog építeni deszkákat, fontos, hogy csak akkor adjon hozzá alkatrészeket, ha meghatározott célra szolgálnak, és a lehető legtöbb belső funkciót használják fel a mikrokontrollerben.

Az előnyben részesített elektronikai beszállítómat tekintve találtam egy olyan chipet, amellyel elégedett voltam, és rendelkeztem a keresett funkciókkal, és elfogadható áron. A chip, amelyen leszálltam, a PIC18F24K50 volt.

A rendelkezésre álló 23 I/O érintkezővel ez lehetővé tette számomra ezeket a funkciókat

  • Digtal I/O
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Szervomotor x 6
  • ADC bemenet x 3
  • DAC kimenet x 1
  • I/O hajtott 5V vagy 3V3
  • Állapot LED

A kiválasztott IC egyik hátránya, hogy csak egy UART -perifériával rendelkezik, így a Bluetooth vagy a Wifi vezérlési módszer használata leállítja az UART -kapcsolat használatát.

A fenti képeken látható a kész vázlat és a NYÁK.

2. lépés: A protokoll megtervezése

A protokoll tervezése
A protokoll tervezése

A protokoll kialakításának első lépése annak eldöntése, hogy konkrétan mire lesz szüksége a táblának. A dolgok felbontása jobb szintű irányítást tesz lehetővé, míg a dolgok összefésülése egyszerűsíti a kezelőfelületet, és csökkenti a kommunikációs forgalmat az alaplap és a számítógép között. Ez egy kiegyensúlyozó játék, és nehéz tökéletesíteni.

A tábla minden funkciójához meg kell adni a paramétereket és a visszatéréseket. Például egy ADC bemenet olvasására szolgáló függvény rendelkezhet egy paraméterrel, amely meghatározza, hogy melyik bemenetet kell mintába venni, és egy visszatérési értéket, amely tartalmazza az eredményt.

A tervezésemben itt található azoknak a funkcióknak a listája, amelyeket fel akartam venni:

  • Digitális I/O

    • SetPin (PinNumber, State)
    • Állapot = GetPin (PinNumber)
  • SPI

    • Inicializálás (SPI mód)
    • DataIn = Átvitel (DataOut)
    • ControlChipSelect (csatorna, állapot)
    • SetPrescaler (arány)
  • I2C

    • Inicializálás ()
    • Rajt ()
    • Újrakezd ()
    • Álljon meg ()
    • SlaveAck = Küldés (DataOut)
    • DataIn = Fogadás (utolsó)
  • UART

    • Inicializálás ()
    • TX bájt (DataOut)
    • BytesAvailable = RX Count ()
    • DataIn = RX bájt ()
    • SetBaud (Baud)

  • PWM

    • Engedélyezés (csatorna)
    • Letiltás (csatorna)
    • SetFrequency (csatorna, frekvencia)
    • GetMaxDuty (kötelesség)
    • SetDuty (kötelesség)
  • Szervo

    • Engedélyezés (csatorna)
    • Letiltás (csatorna)
    • SetPosition (csatorna, pozíció)
  • ADC

    ADCsample = Minta (csatorna)

  • DAC

    • Engedélyezze
    • Letiltás
    • SetOutput (feszültség)
  • WIFI

    • SetSSID (SSID)
    • Jelszó beállítása (jelszó)
    • Állapot = CheckConnectionStatus ()
    • IP = GetIPAddress ()

A paraméterek zárójelben, a visszatérések pedig az egyenlő szimbólum előtt láthatók.

Mielőtt elkezdeném a kódolást, minden funkcióhoz rendelök egy parancskódot 128 -tól kezdve (bináris 0b10000000), és felfelé halad. Teljes mértékben dokumentálom a protokollt annak biztosítása érdekében, hogy miután a fejem belekerült a kódba, legyen egy szép dokumentumom, amelyre vissza kell hivatkoznom. A projekt teljes protokolldokumentuma csatolva van, és tartalmazza a bejövő parancskódokat és bitszélességeket.

3. lépés: A firmware tervezése

A firmware tervezése
A firmware tervezése
A firmware tervezése
A firmware tervezése
A firmware tervezése
A firmware tervezése

A protokoll létrehozása után a hardver funkcionalitását kell megvalósítani.

Egy egyszerű állapotgép típusú megközelítést alkalmazok a szolgarendszerek fejlesztésekor, hogy megpróbáljam maximalizálni a lehetséges parancs- és adatátvitelt, miközben a firmware -t egyszerűen érthetővé és hibakereshetővé kell tenni. Ehelyett egy fejlettebb rendszer, például a Modbus is használható, ha jobb kölcsönhatásra van szüksége más csatlakoztatott eszközökkel, de ez többletköltséget jelent, ami lelassítja a dolgokat.

Az állapotgép három állapotból áll:

1) Várakozás a parancsokra

2) Paraméterek fogadása

3) Válasz

A három állam a következőképpen hat egymásra:

1) Végigmegyünk a puffer bejövő bájtain, amíg nem lesz egy bájtunk, amely a legjelentősebb bitkészlettel rendelkezik. Miután megkaptuk az ilyen bájtot, összehasonlítjuk az ismert parancsok listájával. Ha találunk egyezést, akkor a protokollnak megfelelő paraméterbájtok számát és visszatérési bájtokat rendelünk hozzá. Ha nincsenek paraméterbájtok, akkor itt végrehajthatjuk a parancsot, és vagy átugorhatunk a 3. állapotba, vagy újraindíthatjuk az 1. állapotot. Ha vannak paraméterbájtok, akkor a 2. állapotba lépünk.

2) Végignézzük a bejövő bájtokat, amíg el nem tároljuk az összes paramétert. Ha minden paraméter megvan, végrehajtjuk a parancsot. Ha visszatérő bájtok vannak, akkor a 3. szakaszba lépünk. Ha nincsenek elküldendő visszatérési bájtok, akkor visszatérünk az 1. szakaszba.

3) Végignézzük a bejövő bájtokat, és minden bájt után felülírjuk az echo bájtot egy érvényes visszatérő bájttal. Miután elküldtük az összes visszatérő bájtot, visszatérünk az 1. szakaszba.

A firmware tervezéséhez a Flowcode -ot használtam, mivel vizuálisan jól mutatja, mit csinálok. Ugyanezt jól meg lehetne tenni az Arduino vagy más beágyazott programozási nyelveken is.

Az első lépés a kommunikáció létrehozása a számítógéppel. Ehhez be kell állítani, hogy a mikro megfelelő sebességgel működjön, és kódot kell hozzáadnunk az USB és UART perifériák meghajtásához. A Flowcode -ban ez olyan egyszerű, mint egy USB soros komponens és egy UART -összetevő behúzása a projektbe a Comms összetevő menüjéből.

Hozzáadunk egy RX megszakítást és puffert, hogy elkapjuk a bejövő parancsokat az UART -on, és rendszeresen lekérdezzük az USB -t. Ezután szabadidős folyamatunk során használhatjuk a puffert.

A Flowcode projekt és a generált C kód csatolva van.

4. lépés: Csatlakozás Flowcode -on keresztül

Interfész a Flowcode -on keresztül
Interfész a Flowcode -on keresztül
Interfész a Flowcode -on keresztül
Interfész a Flowcode -on keresztül
Interfész a Flowcode -on keresztül
Interfész a Flowcode -on keresztül

A Flowcode szimuláció nagyon erőteljes, és lehetővé teszi számunkra, hogy hozzunk létre egy komponenst a táblával való beszélgetéshez. Az összetevő létrehozásakor most egyszerűen behúzhatjuk az összetevőt a projektünkbe, és azonnal elérhetővé tehetjük a fórum funkcióit. További bónuszként bármely meglévő, SPI-, I2C- vagy UART -perifériával rendelkező komponens használható a szimulációban, és a comms -adatok egy befecskendező komponensen keresztül vezethetők az interfészkártyához. A mellékelt képeken egy egyszerű program látható, amely üzenetet nyomtat a kijelzőre. Az interfészkártyán keresztül a tényleges kijelző hardverre és az I2C kijelző, az I2C befecskendező és az interfészkártya komponensekkel küldött comms adatok.

Az új SCADA mód a Flowcode 8.1 -hez abszolút hozzáadott bónusz, mivel ezután vehetünk egy olyan programot, amely valamit csinál a Flowcode szimulátorban, és exportálhatjuk, így minden számítógépen önállóan, engedélyezési problémák nélkül fog futni. Ez nagyszerű lehet az olyan projektekhez, mint a tesztberendezések vagy az érzékelőcsoportok.

Ezt a SCADA módot használom a WIFI konfigurációs eszköz létrehozásához, amellyel konfigurálható az SSID és a jelszó, valamint begyűjthető a modul IP címe. Ez lehetővé teszi, hogy mindent beállítsak az USB -kapcsolaton keresztül, majd a dolgok futása után áttölthessek egy WIFI hálózati kapcsolatra.

Néhány példa projektet csatolunk.

5. lépés: Egyéb illesztési módszerek

A Flowcode mellett nagyjából használhatja a választott programozási nyelvet az interfészpanellel való kommunikációhoz. A Flowcode -ot használtuk, mivel már tartalmazott egy könyvtárat az alkatrészekből, amelyeket azonnal fel tudtunk indítani, de ez sok más nyelvre is vonatkozik.

Itt található az Interface táblával való kommunikációhoz használt nyelvek és módszerek listája.

Python - Soros könyvtár használata adatok COM -portra vagy IP -címre történő továbbítására

Matlab - Fájlparancsok segítségével adatokat továbbíthat COM -portra vagy IP -címre

C ++ / C# / VB - Előre megírt DLL használatával, közvetlenül elérve a COM portot vagy a Windows TCP / IP API -t

Labview - Előre megírt DLL, VISA Serial vagy TCP/IP összetevő használatával

Ha valaki szeretné látni a fenti nyelveket, kérem ossza meg velem.

6. lépés: Késztermék

Késztermék
Késztermék
Késztermék
Késztermék
Késztermék
Késztermék

A késztermék valószínűleg a beágyazott szerszámkészletem kiemelkedő eleme lesz az elkövetkező években. Már ez segített abban, hogy különböző Grove kijelzőkhöz és érzékelőkhöz komponenseket fejlesszek ki. Most már teljesen le tudom szögezni a kódot, mielőtt bármilyen összeállításhoz vagy programozási hamisításhoz folyamodnék.

Még néhány táblát is kiosztottam a kollégáknak, hogy ők is javíthassanak munkafolyamatukon, és ezeket nagyon jól fogadták.

Köszönöm, hogy elolvasta az Instructable című könyvemet. Remélem, hasznosnak találta, és remélhetőleg ez inspirálja Önt arra, hogy saját eszközöket hozzon létre a termelékenység felgyorsítása érdekében.

Ajánlott: