Taula de continguts:
- Pas 1: Dissenyar el PCB
- Pas 2: disseny del protocol
- Pas 3: Dissenyar el firmware
- Pas 4: Interfície mitjançant Flowcode
- Pas 5: altres mètodes d'interfície
- Pas 6: producte acabat
Vídeo: Taula d’interfície universal incrustada: control USB / Bluetooth / WIFI: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
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
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
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
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
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
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:
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32: 8 passos
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32s: en aquest tutorial, aprendreu tot sobre com iniciar, connectar-se i aconseguir que el dispositiu I2C (acceleròmetre) funcioni amb el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Model de control de teclat Disseny ferroviari V2.5 - Interfície PS / 2: 12 passos
Model de control de teclat Disseny ferroviari V2.5 | Interfície PS / 2: mitjançant microcontroladors Arduino, hi ha moltes maneres de controlar els dissenys del model ferroviari. Un teclat té un gran avantatge de tenir moltes tecles per afegir moltes funcions. Aquí veiem com podem començar amb un disseny senzill amb locomotora i
Com crear i inserir una taula i afegir columnes i / o files addicionals a aquesta taula al Microsoft Office Word 2007: 11 passos
Com es crea i s'insereix una taula i s'afegeixen columnes i / o files addicionals a aquesta taula a Microsoft Office Word 2007: alguna vegada heu tingut moltes dades amb les quals esteu treballant i pensades per a vosaltres mateixos … "com puc fer tot d'aquestes dades es veuen millor i són més fàcils d'entendre? " Si és així, és possible que la vostra resposta sigui una taula del Microsoft Office Word 2007
Joc de bàsquet intel·ligent amb cèrcols de comptatge de puntuacions mitjançant la plataforma incrustada Evive- Arduino: 13 passos
Joc bàsic intel·ligent de bàsquet amb cèrcols de comptatge de puntuacions mitjançant la plataforma incrustada Evive-Arduino: de tots els jocs que hi ha, els més divertits són els jocs arcades. Per tant, vam pensar per què no fer-ne un a casa! I aquí estem, el joc de bricolatge més entretingut que mai havíeu jugat fins ara: el bricolatge Arcade Basketball Game. No només és
EAL - Programació incrustada: Candy Mixer 1000: 9 passos
EAL - Programació incrustada: Candy Mixer 1000: per al nostre projecte a Arduino hem decidit fer un mesclador per a dolços. La idea és que l’usuari pugui prémer un botó i llavors els motors comencin a expulsar els dolços en un bol i, quan el programa hagi seguit el seu curs, s’aturarà