Satura rādītājs:

Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība: 6 soļi
Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība: 6 soļi

Video: Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība: 6 soļi

Video: Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība: 6 soļi
Video: wifi пульт для IR и RF кодов Broadlink RM4C Pro, работа в Home Assistant - управляем кондиционером 2024, Jūlijs
Anonim
Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība
Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība
Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība
Iebūvēta universālā interfeisa plate - USB/Bluetooth/WIFI vadība

Es bieži uzskatu, ka es izveidoju bibliotēkas jauniem iegultiem moduļiem, pamatojoties uz ierīces datu lapu. Radot bibliotēku, es uzskatu, ka es iestrēdzu koda, apkopošanas, programmēšanas un pārbaudes ciklā, nodrošinot, ka lietas darbojas, un bez kļūdām. Bieži vien kompilēšanas un programmas laiks var būt daudz garāks nekā laiks, kas nepieciešams koda rediģēšanai, tāpēc veids, kā šīs darbības pārtraukt izstrādes laikā, būtu ļoti ērts.

Es arī bieži atklāju, ka vēlos savienot iegulto moduli ar datoru. Ja modulim nav īpaši USB savienojuma, kas bieži notiek, tad jums parasti ir jāiegādājas pārāk dārgs USB pārveidotājs, kas veiks vienu darbu, piemēram, tikai SPI vai tikai I2C.

Šo iemeslu dēļ es nolēmu izveidot universālo interfeisa plati. Tā ir izstrādāta, lai ar iebūvētiem moduļiem varētu ērti sazināties ar datoru.

Tā dēļa iegultās saskarnes funkcijas, par kurām es apmetos, ietver.

  • Digitālā I/O
  • I2C
  • SPI
  • UART
  • PWM
  • Servo motors
  • ADC ievade
  • DAC izeja

To visu var izmantot pilnīgi neatkarīgi.

Interfeisa paneli var kontrolēt, izmantojot USB savienojumu ar datoru, bet tam ir arī papildu WIFI vai Bluetooth moduļa savienojumi, lai varētu izmantot plati attālināti vai IoT tipa scenārijā.

Izmantojot standarta 2,54 mm piķa SIL galvenes, ir iespējams tieši savienot sieviešu dupontkabeļus starp plati un iegulto moduli, nodrošinot ātrus, uzticamus un bez lodēšanas savienojumus.

Es arī domāju par tādu lietu pievienošanu kā CAN, LIN, H-bridge utt., Bet tās var nākt vēlāk ar v2 pārskatīšanu.

1. solis: PCB projektēšana

PCB projektēšana
PCB projektēšana
PCB projektēšana
PCB projektēšana
PCB projektēšana
PCB projektēšana
PCB projektēšana
PCB projektēšana

Izstrādājot PCB, man patīk censties padarīt lietas pēc iespējas vienkāršākas. Ja jūs gatavojat būvēt dēļus ar rokām, ir svarīgi pievienot komponentus tikai tad, ja tie veic noteiktu mērķi un izmanto pēc iespējas vairāk mikrokontrollera iekšējo funkciju.

Aplūkojot savu vēlamo elektronikas piegādātāju, es atradu mikroshēmu, ar kuru es biju apmierināta un kurai bija funkcijas, kuras es meklēju, un tā bija par saprātīgām izmaksām. Mikroshēma, uz kuras es nokļuvu, bija PIC18F24K50.

Ar pieejamajām 23 I/O tapām tas ļāva man izmantot šīs funkcijas

  • Digitālais I/O
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servomotors x 6
  • ADC ieeja x 3
  • DAC izeja x 1
  • I/O darbina no 5V vai 3V3
  • Statusa gaismas diode

Viens no manis izvēlētā IC trūkumiem ir tas, ka tam ir tikai viena UART perifērija, un tāpēc, izmantojot Bluetooth vai Wifi vadības metodi, jūs nevarēsit izmantot UART savienojumu.

Iepriekš redzamajos attēlos ir redzama gatavā shēma un PCB.

2. darbība. Protokola izstrāde

Protokola izstrāde
Protokola izstrāde

Pirmais solis, izstrādājot protokolu, ir izlemt, kas tieši jums būs nepieciešams, lai tā varētu rīkoties. Sadalot lietas, tiek nodrošināts labāks kontroles līmenis, turpretī lietu apvienošana vienkāršo saskarni un samazina komiksu trafiku starp plati un datoru. Tā ir līdzsvarojoša spēle, kuru ir grūti pilnveidot.

Katrai tāfeles funkcijai jānorāda visi parametri un atdeve. Piemēram, funkcijai ADC ievades nolasīšanai var būt parametrs, kas norāda paraugu, un ievades vērtība, kas satur rezultātu.

Savā dizainā šeit ir to funkciju saraksts, kuras vēlējos iekļaut:

  • Digitālā I/O

    • SetPin (PinNumber, State)
    • Statuss = GetPin (PinNumber)
  • SPI

    • Inicializēt (SPI režīms)
    • DataIn = pārsūtīšana (DataOut)
    • ControlChipSelect (kanāls, valsts)
    • SetPrescaler (likme)
  • I2C

    • Inicializēt ()
    • Sākt ()
    • Restartēt ()
    • Apturēt ()
    • SlaveAck = Sūtīt (DataOut)
    • DataIn = saņemt (pēdējais)
  • UART

    • Inicializēt ()
    • TX baits (DataOut)
    • BytesAvailable = RX skaits ()
    • DataIn = RX baits ()
    • SetBaud (Baud)
  • PWM

    • Iespējot (kanāls)
    • Atspējot (kanāls)
    • SetFrequency (kanāls, frekvence)
    • GetMaxDuty (nodeva)
    • SetDuty (nodeva)
  • Servo

    • Iespējot (kanāls)
    • Atspējot (kanāls)
    • SetPosition (kanāls, pozīcija)
  • ADC

    ADC paraugs = paraugs (kanāls)

  • DAC

    • Iespējot
    • Atspējot
    • Iestatītā izeja (spriegums)
  • BEZVADU INTERNETS

    • SetSSID (SSID)
    • Iestatīt paroli (paroli)
    • Statuss = CheckConnectionStatus ()
    • IP = GetIPAddress ()

Parametri ir norādīti iekavās, un atdeve tiek parādīta pirms simbola “vienāds”.

Pirms sākt kodēšanu, es katrai funkcijai piešķiru komandas kodu, sākot no 128 (binārais 0b10000000) un strādājot uz augšu. Es pilnībā dokumentēju protokolu, lai nodrošinātu, ka, tiklīdz mana galva ir ievadīta kodā, man ir jauks dokuments, uz kuru atsaukties. Pilns šī projekta protokola dokuments ir pievienots un ietver ienākošos komandu kodus un bitu platumus.

3. solis: programmaparatūras projektēšana

Programmaparatūras projektēšana
Programmaparatūras projektēšana
Programmaparatūras projektēšana
Programmaparatūras projektēšana
Programmaparatūras projektēšana
Programmaparatūras projektēšana

Kad protokols ir izveidots, ir jāīsteno aparatūras funkcionalitāte.

Izstrādājot vergu sistēmas, es izmantoju vienkāršu stāvokļa mašīnas tipa pieeju, lai mēģinātu maksimāli palielināt iespējamo komandu un datu caurlaidspēju, vienlaikus saglabājot programmaparatūras vienkāršu izpratni un atkļūdošanu. Tā vietā, ja jums ir nepieciešama labāka mijiedarbība ar citām pievienotajām ierīcēm, tā vietā var izmantot modernāku sistēmu, piemēram, Modbus, taču tas rada papildu izmaksas, kas palēninās darbību.

Stāvokļa mašīna sastāv no trim stāvokļiem:

1) Gaida komandas

2) Parametru saņemšana

3) Atbildēt

Trīs valstis mijiedarbojas šādi:

1) Mēs ejam cauri ienākošajiem baitiem buferī, līdz mums ir baits, kuram ir visnozīmīgākais bitu komplekts. Kad esam saņēmuši šādu baitu, mēs to salīdzinām ar zināmo komandu sarakstu. Ja mēs atrodam atbilstību, mēs piešķiram parametru baitu skaitu un atdodam baitus, lai tie atbilstu protokolam. Ja nav parametru baitu, mēs varam izpildīt komandu šeit un vai nu pāriet uz 3. stāvokli, vai restartēt 1. stāvokli. Ja ir parametru baiti, mēs pārietam uz 2. stāvokli.

2) Mēs ejam cauri ienākošajiem baitiem, tos saglabājot, līdz esam saglabājuši visus parametrus. Kad mums ir visi parametri, mēs izpildām komandu. Ja ir atgriešanās baiti, mēs pārietam uz 3. posmu. Ja nav nosūtāmu atgriešanās baitu, mēs atgriežamies 1. posmā.

3) Mēs ejam cauri ienākošajiem baitiem un katram baitam pārrakstām atbalss baitu ar derīgu atgriešanās baitu. Kad esam nosūtījuši visus atgriešanās baitus, mēs atgriežamies pirmajā posmā.

Es izmantoju Flowcode, lai izstrādātu programmaparatūru, jo tā vizuāli labi parāda, ko es daru. To pašu varētu izdarīt arī Arduino vai citās iegultās programmēšanas valodās.

Pirmais solis ir izveidot sakarus ar datoru. Lai to izdarītu, mikro ir jākonfigurē, lai tas darbotos pareizajā ātrumā, un mums ir jāpievieno kods, lai vadītu USB un UART perifērijas ierīces. Plūsmas kodā tas ir tik vienkārši, kā ievilkt projektā USB seriālo komponentu un UART komponentu no Comms komponenta izvēlnes.

Mēs pievienojam RX pārtraukumu un buferi, lai uztvertu ienākošās komandas UART, un mēs regulāri aptaujājam USB. Tad mēs varam savā atpūtas procesā izmantot buferšķīdumu.

Plūsmas koda projekts un ģenerētais C kods ir pievienoti.

4. darbība: saskarne, izmantojot plūsmas kodu

Saskarne caur plūsmas kodu
Saskarne caur plūsmas kodu
Saskarne caur plūsmas kodu
Saskarne caur plūsmas kodu
Saskarne ar plūsmas kodu
Saskarne ar plūsmas kodu

Plūsmas koda simulācija ir ļoti spēcīga un ļauj mums izveidot komponentu sarunai ar valdi. Izveidojot komponentu, mēs tagad varam vienkārši ievilkt komponentu mūsu projektā un uzreiz iegūt pieejamās tāfeles funkcijas. Kā papildu bonuss simulācijā var tikt izmantots jebkurš esošs komponents, kuram ir SPI, I2C vai UART perifērija, un komutācijas datus var ievadīt saskarnes panelī, izmantojot inžektora komponentu. Pievienotajos attēlos ir redzama vienkārša programma, lai displejā izdrukātu ziņojumu. Komunikācijas dati, kas tiek nosūtīti, izmantojot saskarnes paneli, uz faktisko displeja aparatūru un komponentu iestatīšanu, izmantojot I2C displeja, I2C inžektora un saskarnes paneļa komponentus.

Jaunais SCADA režīms Flowcode 8.1 ir absolūts papildu bonuss, jo pēc tam mēs varam uzņemties programmu, kas Flowcode simulatorā kaut ko dara, un eksportēt to, lai tā darbotos atsevišķi jebkurā datorā bez jebkādām licencēšanas problēmām. Tas varētu būt lieliski piemērots tādiem projektiem kā testa iekārtas vai sensoru kopas.

Es izmantoju šo SCADA režīmu, lai izveidotu WIFI konfigurācijas rīku, ko var izmantot, lai konfigurētu SSID un paroli, kā arī apkopotu moduļa IP adresi. Tas ļauj man visu iestatīt, izmantojot USB savienojumu, un pēc tam pārsūtīt uz WIFI tīkla savienojumu, kad viss darbojas.

Pievienoti daži projektu piemēri.

5. darbība. Citas saskarnes metodes

Tāpat kā Flowcode, jūs varat diezgan daudz izmantot savu izvēlēto programmēšanas valodu, lai sazinātos ar interfeisa paneli. Mēs izmantojām Flowcode, jo tajā jau bija iekļauta daļu bibliotēka, kuru mēs varētu nekavējoties sākt darbināt, bet tas attiecas arī uz daudzām citām valodām.

Šeit ir saraksts ar valodām un metodēm, kā sazināties ar interfeisa paneli.

Python - seriālās bibliotēkas izmantošana, lai straumētu datus uz COM portu vai IP adresi

Matlab - Failu komandu izmantošana, lai straumētu datus uz COM portu vai IP adresi

C ++ / C# / VB - izmantojot iepriekš ierakstītu DLL, tieši piekļūstot COM portam vai Windows TCP / IP API

Labview - izmantojot vai nu iepriekš uzrakstītu DLL, VISA sērijas komponentu vai TCP/IP komponentu

Ja kāds vēlas redzēt iepriekš minēto valodu ieviešanu, lūdzu, informējiet mani.

6. darbība. Gatavs produkts

Gatavs produkts
Gatavs produkts
Gatavs produkts
Gatavs produkts
Gatavs produkts
Gatavs produkts

Gatavais produkts, iespējams, būs ievērojama iezīme manā iegultajā instrumentu komplektā vēl vairākus gadus. Tas jau man ir palīdzējis izstrādāt komponentus dažādiem Grove displejiem un sensoriem. Tagad es varu pilnībā nokodēt kodu, pirms ķerties pie apkopošanas vai programmēšanas kļūdām.

Esmu pat izdalījis dažus dēļus kolēģiem, lai arī viņi varētu uzlabot savu darba plūsmu, un tie ir ļoti labi uzņemti.

Paldies, ka izlasījāt manu pamācību. Es ceru, ka tas jums šķita noderīgs, un cerams, ka tas iedvesmos jūs izveidot savus rīkus, lai paātrinātu produktivitāti.

Ieteicams: