Segurament que en alguns projectes necessitis treballar amb radiofreqüència amb el teu Arduino, o amb qualsevol altra placa de desenvolupament o circuit DIY. Doncs bé, si aquest és el teu cas, hauries de conèixer què és el transceptor de radiofreqüència (RF) CC1101. I això és el que intentarem explicar-te en aquest article.
I és que amb aquest altre component electrònic que s'uneix a la nostra llista, podràs treballar amb diferents freqüències de senyal…
Què és la RF?
Amb radiofreqüència (RF) estem referint-nos a una part de l'espectre electromagnètic que s'utilitza per transmetre informació a través de l'aire. Les ones de RF són un tipus de radiació electromagnètica, i es produeixen sempre que lenergia elèctrica es transmet a través dun conductor, com un cable. El terme RF s'aplica a la porció menys energètica de l'espectre electromagnètic que et mostro a la imatge anterior, i que se situa entre els 3 hercis (Hz) i 300 gigahercis (GHz).
Velocitat de la llum = Longitud d'ona · freqüència
La velocitat de la llum (aproximadament 3.000.000 m/s) mai no canvia, per la qual cosa com que la longitud d'ona del senyal de RF augmenta, la freqüència disminueix de manera proporcional i viceversa. Un senyal de RF de freqüència relativament alta té una longitud d'ona curta i un senyal de RF de freqüència més baixa té una longitud d'ona més gran. Per aquest mateix motiu, els senyals de freqüències més baixes són més penetrants o poden cobrir més cobertura. Per exemple, si tens WiFi a 2.4 Ghz, pot arribar més lluny i travessar millor les barreres en comparació amb WiFi a 5 Ghz, encara que aquest últim permet més velocitats de transmissió…
Les ones electromagnètiques d'aquesta regió de l'espectre es poden transmetre aplicant el corrent altern originat en un generador a una antena. Les ones de radiofreqüència, en ser ones electromagnètiques, es desplacen a la velocitat de la llum. En el seu aspecte més bàsic, un senyal elèctric variant en una antena pot produir oscil·lacions electromagnètiques (és a dir, ones de RF). Aquestes poden ser no intencionals (cosa que potencialment causa interferència amb altres dispositius) o intencionals: senyals modulats acuradament que altres antenes poden rebre i es poden interpretar com a informació útil.
Dins aquest rang RF, podem transmetre dades a alta velocitat, per exemple, com es fa a comunicacions Wi-Fi i cel·lulars, així com a la ràdio AM i FM tradicional.
Què és un transceptor?
Un transceptor és un dispositiu que combina les capacitats d'un transmissor i un receptor en circuits compartits. Això vol dir que pot enviar i rebre senyals, sense necessitat de tenir per un costat un transmissor i per un altre un receptor. Una cosa força pràctica per a molts projectes DIY.
Els transceptors poden ser de dos tipus generals: dúplex complet i semidúplex. En un transceptor dúplex complet, el dispositiu pot transmetre i rebre alhora. Un exemple comú dun transceptor dúplex complet és un telèfon mòbil. D'altra banda, un transceptor semidúplex silencia una banda mentre l'altra transmet.
Els transceptors són la pedra angular de la comunicació sense fil i s'utilitzen en una varietat d'aplicacions, des de telèfons mòbils fins a satèl·lits de comunicacions, passant per moltes altres xarxes i maneres de transmetre informació, com per a la ràdio, TV, etc.
Aplicacions d'un transceptor
Un transceptor de radiofreqüència (RF) és un dispositiu multifuncional que pot tenir una gran quantitat d'usos. Per exemple, com he dit anteriorment, la seva presència és fonamental en diverses aplicacions que requereixen comunicació sense fil. En l'àmbit de les telecomunicacions mòbils, els transceptors s'utilitzen en telèfons mòbils per a la transmissió i la recepció de senyals. A més, són essencials en tecnologies com WiFi i Bluetooth, desplegades en dispositius com routers, ordinadors i dispositius dInternet de les coses (IoT), que depenen de la comunicació sense fils per al seu funcionament.
En l'àmbit professional, els transceptors RF són fonamentals en sistemes de ràdio bidireccionals, com a ràdios de dues vies emprades en aplicacions professionals, seguretat i serveis d'emergència. Aquests dispositius també troben aplicació en sistemes de detecció, com ara radars utilitzats per a la detecció d'objectes, navegació i control de trànsit aeri, així com en sistemes de sonar per a aplicacions submarines.
La radiodifusió, tant de ràdio com televisió, depèn de transceptors RF per a la transmissió de senyals a través de diferents mitjans, ja sigui terrestre o satelital. A més, a nivell espacial, els transceptors són crucials per a la comunicació entre satèl·lits i estacions terrestres en sistemes de comunicacions per satèl·lit.
En aplicacions de control remot i telemetria, els transceptors RF s'utilitzen per a la transmissió de dades des de dispositius electrònics, drones o vehicles aeris no tripulats (UAV). També són essencials en sistemes de navegació, com ara en receptors GPS, on contribueixen a la determinació d'ubicació i navegació. En resum, la versatilitat dels transceptors de RF els converteix en components essencials en una varietat de tecnologies modernes que depenen de la comunicació sense fil i la transmissió de dades.
Evidentment, hi ha algunes d'aquestes aplicacions que no són a l'abast del CC1101, ja que tenen les seves limitacions i opera en uns rangs de freqüències determinats. No obstant això, has de saber que hi ha més dispositius al mercat com aquest transceptor per treballar amb altres freqüències, distàncies, etc.
Què és el CC1101?
El CC1101 és un transceptor de radiofreqüència (RF) dissenyat per operar en freqüències inferiors a 1 GHz. Aquest dispositiu es pot utilitzar juntament amb un processador com Arduino per enviar o rebre dades per radiofreqüència. El CC1101 pot treballar en qualsevol freqüència dins de les bandes següents:
- 300-348 MHz
- 387-464 MHz
- 779-928 MHz
Aquestes característiques fan que el CC1101 sigui una opció versàtil per a una varietat de projectes que requereixen comunicació sense fils, incloent projectes d'Arduino i ESP8266/ESP321, i altres projectes d'electrònica dins l'àmbit de les comunicacions a distància.
A més, el CC1101 permet ajustar la velocitat dels bits per a diferents usos, el que permet una major velocitat de transmissió, des de 0.6 Kbps a 600 Kbps. I també suporta modulacions 2-FSK, GFSK i MSK3.
Si t'interessa, pots trobar-lo a botigues especialitzades d'electrònica, o també a plataformes de venda en línia com Amazon, Aliexpress i eBay. Aquí en tens una recomanació de compra:
La potència de sortida també és programable, per a totes les freqüències de suport de fins a + 10 dBm. El abast és de fins a 100-150 metres, en funció de la freqüència. I per funcionar necessita un voltatge de 1.8 a 3.6V. La comunicació de dades es realitza a través del bus SPI, per la qual cosa és senzill fer-lo servir al costat d'una MCU o plaques com Arduino…
Usar el CC1101 amb Arduino
Ara bé, un cop has comprès què és el CC1101, si vols fer-lo servir amb Arduino, és fàcil de fer. Per això, el primer és connectar de forma correcta el dispositiu o mòdul de RF a la teva placa de desenvolupament. Aneu amb compte, ja que el CC1101 no tolera voltatges de 5v i pots danyar-lo, així que no es connectarà a la presa de 5v d'Arduino com hem fet amb molts altres dispositius. La connexió perquè funcioni adequadament és la següent:
- Vcc: anirà connectat a 3v3 d'Arduino en got de tenir aquesta presa, si no en té i només disposes de 5v, llavors hauràs de connectar-lo a una pila o font externa que pugui subministrar aquest voltatge o es farà malbé el CC1101.
- SI: anirà connectat a SCK d'Arduino, que pot canviar de pin segons el model, però que generalment és D13.
- SO: en aquest cas es connectarà amb GO2, que sol ser el pin D12 d'Arduino.
- CSN: l'has de portar fins al pin GO0, que és el D9 d'Arduino.
- GND: i per finalitzar, GND anirà connectat a GND d'Arduino o de la teva font d'alimentació.
Un cop fet això, toca escriure el codi per provar-ho a Arduino IDE. Per això, aquí et mostro un exemple molt bàsic, però que podràs modificar al teu gust. En aquest cas el CC1101 estarà operant com receptor de senyal RF:
#include <ELECHOUSE_CC1101_SRC_DRV.h> void setup(){ Serial.begin(9600); if (ELECHOUSE_cc1101.getCC1101()){ // Comprobar la conexión SPI del CC1101. Serial.println("Connection OK"); }else{ Serial.println("Connection Error"); } ELECHOUSE_cc1101.Init(); // Inicializa el CC1101 ELECHOUSE_cc1101.setCCMode(1); // Configuración del modo de transferencia interna. ELECHOUSE_cc1101.setModulation(0); // Modulación: 0 = 2-FSK, 1 = GFSK, 2 = ASK/OOK, 3 = 4-FSK, 4 = MSK. ELECHOUSE_cc1101.setMHZ(300,15); // Pon la frecuencia que quieras usar para la transmisión (por defecto es 433,92 Mhz) ELECHOUSE_cc1101.setSyncMode(2); // Modo de sync: 0 = No preamble/sync. 1 = 16 sync word bits detected. 2 = 16/16 sync word bits detected. 3 = 30/32 sync word bits detected. 4 = No preamble/sync, carrier-sense above threshold. 5 = 15/16 + carrier-sense above threshold. 6 = 16/16 + carrier-sense above threshold. 7 = 30/32 + carrier-sense above threshold. ELECHOUSE_cc1101.setCrc(1); // 1 = CRC calculado en TX y comprobación CRC en RX habilitada. 0 = CRC deshabilitado en TX y RX. Serial.println("Rx Mode"); } byte buffer[61] = {0}; void loop(){ //Comprueba si se ha recibido algo en un tiempo marcado por (time in millis) if (ELECHOUSE_cc1101.CheckRxFifo(100)){ if (ELECHOUSE_cc1101.CheckCRC()){ //Prueba CRC. Si "setCrc(false)" CRC devuelve un OK siempre. Serial.print("Rssi: "); Serial.println(ELECHOUSE_cc1101.getRssi()); Serial.print("LQI: "); Serial.println(ELECHOUSE_cc1101.getLqi()); int len = ELECHOUSE_cc1101.ReceiveData(buffer); buffer[len] = '\0'; Serial.println((char *) buffer); for (int i = 0; i < len; i++){ Serial.print(buffer[i]); Serial.print(","); } Serial.println(); } } }
El CC1101 operant com transmissor de senyal RF té un codi semblant a l'anterior.