Taula de continguts:

Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI: 6 passos
Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI: 6 passos

Vídeo: Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI: 6 passos

Vídeo: Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI: 6 passos
Vídeo: Материнские платы объяснил 2024, De novembre
Anonim
Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI
Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI
Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI
Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI

Sovint trobo que creo biblioteques per a nous mòduls incrustats des de zero basant-me en el full de dades del dispositiu. En generar la biblioteca, em trobo atrapat en un cicle de codi, compilo, programa i provo quan asseguro que les coses funcionen i que no tenen errors. Sovint, els temps de compilació i programa poden ser molt més llargs que el temps que es triga a editar el codi i, per tant, seria molt útil una manera de retallar aquests passos quan es desenvolupa.

Sovint també trobo que vull connectar un mòdul incrustat amb un PC. Si el mòdul no té una connexió USB específica, cosa que sol passar, en general haureu de comprar un convertidor USB car que faci un sol treball, com ara només SPI o I2C.

És per aquestes raons que vaig decidir crear la placa d'interfície universal. Està dissenyat per permetre comunicacions fàcils basades en PC amb mòduls incrustats.

Inclouen les característiques de la interfície incrustada del tauler.

  • E / S digital
  • I2C
  • SPI
  • UART
  • PWM
  • Servomotor
  • Entrada ADC
  • Sortida DAC

Tot això es pot utilitzar de forma totalment independent.

La placa d'interfície es pot controlar mitjançant una connexió USB a l'ordinador, però també té connexions opcionals de mòduls WIFI o Bluetooth per permetre que la placa es pugui utilitzar remotament o en un escenari tipus IoT.

Mitjançant l'ús de capçaleres SIL de pas 2,54 mm estàndard, és possible connectar directament cables dupont femenins entre la placa i el mòdul incrustat, cosa que permet connexions ràpides, fiables i sense soldadura.

També vaig pensar a afegir coses com CAN, LIN, H-bridge, etc, però potser podrien venir després amb una revisió de v2.

Pas 1: Dissenyar el PCB

Disseny del PCB
Disseny del PCB
Disseny del PCB
Disseny del PCB
Disseny del PCB
Disseny del PCB
Disseny del PCB
Disseny del PCB

A l’hora de dissenyar el PCB, m’agrada intentar que les coses siguin el més senzilles possibles. Quan construireu taules a mà, és important afegir components només quan facin un propòsit específic i utilitzin tantes funcions internes del microcontrolador com sigui possible.

En mirar el meu proveïdor d’electrònica preferit, vaig trobar un xip amb què estava a gust, que tenia les funcions que buscava i tenia un cost raonable. El xip on vaig aterrar va ser el PIC18F24K50.

Amb els 23 pins d'E / S disponibles, això em va permetre aquestes funcions

  • E / S Digtal
  • I2C
  • SPI
  • UART
  • PWM x 2
  • Servomotor x 6
  • Entrada ADC x 3
  • Sortida DAC x 1
  • E / S impulsat des de 5V o 3V3
  • LED d'estat

Un dels inconvenients de l’IC que vaig triar és que només té un perifèric UART i, per tant, si utilitzeu el mètode de control Bluetooth o Wifi, podreu utilitzar la connexió UART.

A les imatges anteriors es mostren l’esquema acabat i el PCB.

Pas 2: disseny del protocol

Disseny del protocol
Disseny del protocol

El primer pas per dissenyar el protocol és decidir què necessiteu específicament per a la junta. Separar les coses afegeix un millor nivell de control, mentre que combinar-les simplifica la interfície i redueix el trànsit de comunicacions entre la placa i el PC. És un joc d’equilibri i difícil de perfeccionar.

Per a cada funció del tauler, heu d’indicar els paràmetres i els retorns. Per exemple, una funció per llegir una entrada ADC pot tenir un paràmetre per especificar quina entrada es mostra i un valor de retorn que conté el resultat.

Al meu disseny, aquí teniu la llista de funcions que volia incloure:

  • E / S digital

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

    • Inicialitzar (mode SPI)
    • DataIn = Transferència (DataOut)
    • ControlChipSelect (canal, estat)
    • SetPrescaler (taxa)
  • I2C

    • Inicialitzar ()
    • Començar ()
    • Reinicia ()
    • Atura ()
    • SlaveAck = Envia (DataOut)
    • DataIn = Receive (Last)
  • UART

    • Inicialitzar ()
    • Byte TX (DataOut)
    • BytesAvailable = Recompte RX ()
    • DataIn = RX Byte ()
    • SetBaud (Baud)
  • PWM

    • Activa (canal)
    • Desactiva (canal)
    • SetFrequency (canal, freqüència)
    • GetMaxDuty (Duty)
    • SetDuty (Duty)
  • Servo

    • Activa (canal)
    • Desactiva (canal)
    • SetPosition (canal, posició)
  • ADC

    ADCsample = Mostra (canal)

  • DAC

    • Activa
    • Inhabilitar
    • SetOutput (voltatge)
  • WIFI

    • SetSSID (SSID)
    • Estableix la contrasenya (contrasenya)
    • Estat = CheckConnectionStatus ()
    • IP = GetIPAddress ()

Els paràmetres es mostren entre claudàtors i els retorns es mostren abans del símbol igual.

Abans de començar a codificar, assigno a cada funció un codi d'ordres que comença a partir de 128 (0b10000000 binari) i treballa cap amunt. Documento el protocol completament per assegurar-me que, un cop el cap estigui al codi, tinc un bon document al qual tornar a referir-me. S'adjunta el document de protocol complet per a aquest projecte que inclou codis d'ordres entrants i amplades de bits.

Pas 3: Dissenyar el firmware

Disseny del firmware
Disseny del firmware
Disseny del firmware
Disseny del firmware
Disseny del firmware
Disseny del firmware

Un cop establert el protocol, es tracta d'implementar la funcionalitat al maquinari.

Adopto un enfocament de tipus màquina d’estat senzill quan desenvolupo sistemes esclaus per intentar maximitzar el potencial d’ordres i rendiment de dades tot mantenint el microprogramari senzill d’entendre i depurar. Es podria utilitzar un sistema més avançat, com ara Modbus, si necessiteu una millor interacció amb altres dispositius connectats, però això afegeix despeses generals que frenaran les coses.

La màquina d'estats consta de tres estats:

1) Esperant comandes

2) Paràmetres de recepció

3) Respon

Els tres estats interactuen de la següent manera:

1) Passem pels bytes entrants a la memòria intermèdia fins que tinguem un byte que tingui el bit més significatiu establert. Un cop rebem aquest byte, el comparem amb una llista d’ordres conegudes. Si trobem una coincidència, assignem el nombre de bytes de paràmetres i retornem bytes perquè coincideixin amb el protocol. Si no hi ha bytes de paràmetre, podem realitzar l'ordre aquí i saltar a l'estat 3 o reiniciar l'estat 1. Si hi ha bytes de paràmetres, passem a l'estat 2.

2) Passem pels bytes entrants desant-los fins que hem desat tots els paràmetres. Un cop tenim tots els paràmetres realitzem l'ordre. Si hi ha bytes de retorn, passem a la fase 3. Si no hi ha bytes de retorn a enviar, tornem a la fase 1.

3) Passem pels bytes entrants i per a cada byte sobreescrivim el byte eco amb un byte de retorn vàlid. Un cop hem enviat tots els bytes de retorn, tornem a l’etapa 1.

He utilitzat Flowcode per dissenyar el firmware, ja que demostra visualment el que estic fent. Es podria fer el mateix amb Arduino o en altres llenguatges de programació incrustats.

El primer pas és establir comunicacions amb el PC. Per fer-ho, cal configurar el micro perquè funcioni a la velocitat adequada i hem d’afegir codi per conduir els perifèrics USB i UART. A Flowcode, és tan fàcil com arrossegar al projecte un component de sèrie USB i un component UART des del menú de components de comunicacions.

Afegim una interrupció i una memòria intermèdia RX per captar les ordres entrants a la UART i enquestem regularment l’USB. A continuació, podem processar la memòria intermèdia.

S'adjunta el projecte Flowcode i el codi C generat.

Pas 4: Interfície mitjançant Flowcode

Interfície mitjançant Flowcode
Interfície mitjançant Flowcode
Interfície mitjançant Flowcode
Interfície mitjançant Flowcode
Interfície mitjançant Flowcode
Interfície mitjançant Flowcode

La simulació de Flowcode és molt potent i ens permet crear un component per parlar amb el tauler. En crear el component, ara podem simplement arrossegar el component al nostre projecte i tenir a l’instant les funcions del tauler disponibles. Com a avantatge addicional, qualsevol component existent que tingui un perifèric SPI, I2C o UART es pot utilitzar en la simulació i les dades de comunicacions es poden enviar a la placa d'interfície mitjançant un component d'injector. Les imatges adjuntes mostren un programa senzill per imprimir un missatge a la pantalla. Les dades de comunicacions que s’envien a través de la placa d’interfície al maquinari de visualització real i a la configuració dels components amb components I2C Display, I2C Injector i Interface Board.

El nou mode SCADA per a Flowcode 8.1 és un avantatge afegit absolut, ja que podem agafar un programa que faci alguna cosa al simulador de Flowcode i exportar-lo perquè s’executi independentment en qualsevol PC sense problemes de llicència. Això pot ser fantàstic per a projectes com equips de proves o clústers de sensors.

Utilitzo aquest mode SCADA per crear l'eina de configuració WIFI que es pot utilitzar per configurar el SSID i la contrasenya, així com per recollir l'adreça IP del mòdul. Això em permet configurar-ho tot mitjançant la connexió USB i després transferir-lo a una connexió de xarxa WIFI un cop les coses s’executin.

S'adjunten alguns exemples de projectes.

Pas 5: altres mètodes d'interfície

A més de Flowcode, podeu utilitzar pràcticament el llenguatge de programació que vulgueu per comunicar-vos amb la placa d’interfície. Vam utilitzar Flowcode, ja que ja tenia una biblioteca de parts que podríem posar en marxa immediatament, però això també s'aplica a molts altres idiomes.

Aquí teniu una llista d’idiomes i mètodes per comunicar-vos amb la placa d’interfície.

Python: utilitzar una biblioteca sèrie per transmetre dades a un port COM o adreça IP

Matlab: utilitzar comandes File per transmetre dades a un port COM o adreça IP

C ++ / C # / VB: utilitzant una DLL preescrita, accedint directament al port COM o a l'API de Windows TCP / IP

Labview: utilitzant una DLL preescrita, el component sèrie VISA o el component TCP / IP

Si algú vol veure implementats els idiomes anteriors, feu-m'ho saber.

Pas 6: producte acabat

Producte final
Producte final
Producte final
Producte final
Producte final
Producte final

El producte acabat probablement serà una característica destacada del meu kit d’eines incrustat durant els propers anys. Ja m'ha ajudat a desenvolupar components per a diverses pantalles i sensors Grove. Ara puc obtenir el codi completament clavat abans de recórrer a qualsevol recopilació o programació d’enganys.

Fins i tot he repartit alguns taulers per als companys perquè puguin millorar el seu flux de treball i aquests han tingut una gran acollida.

Gràcies per llegir el meu Instructable. Espero que us sigui útil i espero que us inspiri a crear les vostres pròpies eines per accelerar la vostra productivitat.

Recomanat: