Sisukord:

Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine: 6 sammu
Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine: 6 sammu

Video: Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine: 6 sammu

Video: Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine: 6 sammu
Video: 40 отборных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #1 2024, November
Anonim
Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine
Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine
Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine
Sisseehitatud universaalne liideseplaat - USB/Bluetooth/WIFI juhtimine

Ma leian sageli, et loon uute manustatud moodulite jaoks raamatukogud seadme andmelehe põhjal nullist. Teeki luues leian, et jään koodide, kompileerimise, programmeerimise ja testimise tsüklisse, tagades asjade toimimise ja olen veatu. Kompileerimis- ja programmiajad võivad sageli olla palju pikemad kui koodi redigeerimiseks kuluv aeg ja seega oleks nende sammude väljatöötamisel väljaarendamine väga mugav.

Samuti leian sageli, et tahan ühendada sisseehitatud mooduli arvutiga. Kui moodulil pole spetsiaalselt USB -ühendust, mis sageli juhtub, peate tavaliselt ostma ülehinnatud USB -muunduri, mis teeb ühe töö, näiteks SPI või lihtsalt I2C.

Nendel põhjustel otsustasin luua universaalse liidese. Selle eesmärk on võimaldada sisseehitatud moodulitega hõlpsat arvutipõhist suhtlust.

Tahvli sisseehitatud liidese funktsioonid, millele ma otsustasin, hõlmavad.

  • Digitaalne sisend/väljund
  • I2C
  • SPI
  • UART
  • PWM
  • Servomootor
  • ADC sisend
  • DAC väljund

Kõiki neid saab kasutada täiesti iseseisvalt.

Liideseplaati saab juhtida arvutiga USB -ühenduse kaudu, kuid sellel on ka valikulised WIFI- või Bluetooth -mooduliühendused, mis võimaldavad plaati kasutada eemalt või IoT -tüüpi stsenaariumi korral.

Kasutades standardseid 2,54 mm sammuga SIL -päiseid, on võimalik otse ühendada naissoost dupontkaablid plaadi ja sisseehitatud mooduli vahele, võimaldades kiireid, usaldusväärseid ja jooteteta ühendusi.

Mõtlesin ka selliste asjade lisamisele nagu CAN, LIN, H-bridge jne, kuid need võivad hiljem tulla koos v2 versiooniga.

Samm: trükkplaadi kujundamine

PCB projekteerimine
PCB projekteerimine
PCB projekteerimine
PCB projekteerimine
PCB projekteerimine
PCB projekteerimine
PCB projekteerimine
PCB projekteerimine

PCB kujundamisel meeldib mulle proovida asju võimalikult lihtsana hoida. Kui kavatsete käsitsi ehitusplaate ehitada, on oluline lisada komponente ainult siis, kui need täidavad kindlat eesmärki ja kasutavad võimalikult palju mikrokontrolleri sisemisi funktsioone.

Vaadates oma eelistatud elektroonikatarnijat, leidsin mulle sobiva kiibi, millel olid otsitavad omadused ja mis oli mõistliku hinnaga. Kiip, millele ma sattusin, oli PIC18F24K50.

Olemasolevate 23 sisend-/väljundpistikutega võimaldas see neid funktsioone

  • Digitaalne sisend/väljund
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servomootor x 6
  • ADC sisend x 3
  • DAC väljund x 1
  • Sisend-/väljundpinge töötab 5 V või 3 V3
  • Olek LED

Üks minu valitud IC puudus on see, et sellel on ainult üks UART -välisseade ja seega peatab Bluetoothi või Wifi juhtimismeetodi kasutamine UART -ühenduse kasutamise.

Ülaltoodud piltidel on näidatud valmis skeem ja trükkplaat.

2. samm: protokolli koostamine

Protokolli kujundamine
Protokolli kujundamine

Esimene samm protokolli väljatöötamisel on otsustada, mida konkreetselt vajate tahvlit. Asjade lõhkumine lisab paremat kontrolli, samas kui asjade kombineerimine lihtsustab liidest ja vähendab kommunikeerimisliiklust plaadi ja arvuti vahel. See on tasakaalustav mäng ja seda on raske täiustada.

Tahvli iga funktsiooni puhul peaksite näitama kõik parameetrid ja tagastused. Näiteks ADC -sisendi lugemise funktsioonil võib olla parameeter, mis määrab, millist sisendit proovist võtta, ja tagasiväärtus, mis sisaldab tulemust.

Minu disainis on siin funktsioonide loend, mida tahtsin lisada:

  • Digitaalne sisend/väljund

    • SetPin (PIN -number, osariik)
    • Olek = GetPin (PinNumber)
  • SPI

    • Initsialiseerimine (SPI -režiim)
    • DataIn = Edastamine (DataOut)
    • ControlChipSelect (kanal, osariik)
    • SetPrescaler (määr)
  • I2C

    • Initsialiseerimine ()
    • Alusta ()
    • Taaskäivita ()
    • Peata ()
    • SlaveAck = Saada (DataOut)
    • DataIn = saada (viimane)
  • UART

    • Initsialiseerimine ()
    • TX bait (DataOut)
    • BytesAvailable = RX Count ()
    • DataIn = RX bait ()
    • SetBaud (Baud)
  • PWM

    • Luba (kanal)
    • Keela (kanal)
    • SetFrequency (kanal, sagedus)
    • GetMaxDuty (tollimaks)
    • SetDuty (tollimaks)
  • Servo

    • Luba (kanal)
    • Keela (kanal)
    • SetPosition (kanal, positsioon)
  • ADC

    ADCsample = Näide (kanal)

  • DAC

    • Luba
    • Keela
    • SetOutput (pinge)
  • WIFI

    • SetSSID (SSID)
    • Määra parool (parool)
    • Olek = CheckConnectionStatus ()
    • IP = GetIPAddress ()

Parameetrid on näidatud sulgudes ja tagasitulekud on näidatud võrdusmärgi ees.

Enne kodeerimise alustamist määran igale funktsioonile käsukoodi, mis algab 128 -st (binaarne 0b10000000) ja töötab ülespoole. Ma dokumenteerin protokolli täielikult, tagamaks, et kui mu pea on koodis, on mul tore dokument, millele tagasi pöörduda. Selle projekti täielik protokollidokument on manusesse lisatud ja see sisaldab sissetulevaid käsukoode ja bitilaiused.

3. samm: püsivara kujundamine

Püsivara projekteerimine
Püsivara projekteerimine
Püsivara projekteerimine
Püsivara projekteerimine
Püsivara projekteerimine
Püsivara projekteerimine

Kui protokoll on loodud, on vaja riistvara funktsionaalsust rakendada.

Alam -süsteemide väljatöötamisel kasutan lihtsat olekumasina tüüpi lähenemisviisi, et proovida potentsiaalset käsu ja andmete läbilaskevõimet maksimeerida, hoides püsivara lihtsalt arusaadavana ja silumiseks. Selle asemel võiks kasutada arenenumat süsteemi, näiteks Modbus, kui vajate paremat suhtlemist teiste ühendatud seadmetega, kuid see lisab üldkulusid, mis aeglustab asju.

Olekumasin koosneb kolmest olekust:

1) Käskude ootamine

2) Parameetrite vastuvõtmine

3) Vasta

Kolm osariiki suhtlevad järgmiselt:

1) Me läbime puhvrisse saabuvad baidid, kuni meil on bait, millel on kõige olulisem bitt. Kui oleme sellise baidi saanud, kontrollime seda teadaolevate käskude loendi alusel. Kui leiame vaste, määrame protokollile vastavaks parameetrite baitide arvu ja tagastame baidid. Kui parameetrite baite pole, saame siin käsu täita ja kas hüpata olekusse 3 või taaskäivitada olek 1. Kui parameetrite baite on, liigume olekusse 2.

2) Me läbime sissetulevad baidid, salvestades need seni, kuni oleme salvestanud kõik parameetrid. Kui meil on kõik parameetrid, täidame käsu. Kui tagastusbaite on, liigume 3. etappi. Kui tagasisaatmise baite pole, siis naaseme 1. etappi.

3) Me läbime sissetulevad baidid ja kirjutame iga baidi kohta kajabaidi üle kehtiva tagastusbaidiga. Kui oleme kõik tagasipööratud baidid saatnud, naaseme 1. etappi.

Püsivara kujundamiseks kasutasin Flowcode'i, kuna see näitab visuaalselt kenasti, mida ma teen. Sama asja saab teha võrdselt hästi Arduino või teistes manustatud programmeerimiskeeltes.

Esimene samm on luua side arvutiga. Selleks tuleb mikro seadistada õige kiirusega töötamiseks ning peame lisama koodi USB ja UART välisseadmete juhtimiseks. Flowcode'is on see sama lihtne kui USB -jadakomponendi ja UART -komponendi lohistamine projekti Comms -komponentide menüüst.

UART -i sissetulevate käskude püüdmiseks lisame RX -katkestuse ja puhvri ning küsitleme regulaarselt USB -d. Seejärel saame puhkeprotsessis puhverdada.

Flowcode'i projekt ja loodud C -kood on lisatud.

Samm: liidestamine vookoodi kaudu

Liidesed voolukoodi kaudu
Liidesed voolukoodi kaudu
Liidesed voolukoodi kaudu
Liidesed voolukoodi kaudu
Liidesed voolukoodi kaudu
Liidesed voolukoodi kaudu

Flowcode'i simulatsioon on väga võimas ja võimaldab meil luua tahvliga rääkimiseks vajaliku komponendi. Komponendi loomisel saame komponendi lihtsalt oma projekti lohistada ja tahvli funktsioonid on kohe saadaval. Lisaboonusena saab simulatsioonis kasutada mis tahes olemasolevat komponenti, millel on SPI, I2C või UART välisseade, ja kommuuni andmed saab pihustuskomponendi kaudu liidese pardale suunata. Lisatud piltidel on lihtne programm sõnumi ekraanile printimiseks. Kommunikatsiooniandmed, mis saadetakse liideseplaadi kaudu tegelikule ekraaniriistvarale ja komponentide seadistamisele koos I2C kuvari, I2C pihusti ja liideseplaadi komponentidega.

Flowcode 8.1 uus SCADA -režiim on absoluutne lisaboonus, kuna saame seejärel võtta programmi, mis teeb Flowcode -simulaatoris midagi, ja eksportida see nii, et see töötab iseseisvalt mis tahes arvutis ilma litsentsimisprobleemideta. See võib olla suurepärane selliste projektide jaoks nagu testimisseadmed või anduriklastrid.

Kasutan seda SCADA -režiimi WIFI seadistustööriista loomiseks, mida saab kasutada SSID ja parooli konfigureerimiseks ning mooduli IP -aadressi kogumiseks. See võimaldab mul USB -ühenduse abil kõik seadistada ja seejärel WIFI -võrguühendusele üle kanda, kui asjad töötavad.

Lisatud on mõned näidisprojektid.

5. samm: muud liidese meetodid

Lisaks Flowcode'ile saate liideseplaadiga suhtlemiseks üsna palju kasutada oma valitud programmeerimiskeelt. Kasutasime Flowcode'i, kuna selle osade raamatukogu oli juba kaasas ja mille saime kohe tööle panna, kuid see kehtib ka paljude teiste keelte kohta.

Siin on loetelu keeltest ja meetoditest, kuidas liideseplaadiga suhelda.

Python - jadaraamatukogu kasutamine andmete voogesitamiseks COM -porti või IP -aadressile

Matlab - faili käskude kasutamine andmete voogesitamiseks COM -porti või IP -aadressile

C ++ / C# / VB - Kasutades kas eelnevalt kirjutatud DLL -i, pääsete otse juurde COM -pordile või Windowsi TCP / IP API -le

Labview - Kas eelnevalt kirjutatud DLL -i, VISA jadakomponendi või TCP/IP komponendi kasutamine

Kui keegi soovib ülaltoodud keeli rakendada, andke mulle sellest teada.

6. samm: valmistoode

Lõpetatud toode
Lõpetatud toode
Lõpetatud toode
Lõpetatud toode
Lõpetatud toode
Lõpetatud toode

Valmis toode on tõenäoliselt minu sisseehitatud tööriistakomplekti silmapaistev omadus veel aastaid. Juba see on aidanud mul arendada komponente erinevatele Grove näidikutele ja anduritele. Nüüd saan koodi täielikult naelutada, enne kui kasutan kompileerimist või programmeerimishäireid.

Olen kolleegidele isegi mõned tahvlid kätte andnud, et ka nemad saaksid oma töövoogu parandada ja need on väga hästi vastu võetud.

Täname, et lugesite minu juhendit. Loodan, et see oli teile kasulik ja loodetavasti inspireerib see teid tootlikkuse kiirendamiseks oma tööriistu looma.

Soovitan: