Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

DIY Si4730 Radio para todas las bandas (LW, MW, SW, FM)

Componentes y suministros

Arduino Nano R3
× 1
Módulo de radio Si4730
× 1
LCD estándar Adafruit - 16x2 blanco sobre azul
× 1
Codificador rotatorio con pulsador
× 1
Placa de desarrollo, módulo amplificador de audio de clase D
× 1
Altavoz:0,25 W, 8 ohmios
× 1
varilla de ferita de la antigua radio MW
× 1
Interruptor deslizante
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Cuando mencionas la radio Arduino, siempre piensas en la radio FM moderna (88-108 MHz en Europa). Las bandas LW, MW y SW cubren el rango de 0,2 a 30 MHz. SW es ​​especialmente interesante. Las ondas de radio en la banda de onda corta pueden reflejarse o refractarse de una capa de átomos cargados eléctricamente en la atmósfera llamada ionosfera. Por lo tanto, la radio de onda corta se puede utilizar para comunicaciones de muy larga distancia, a veces continentes enteros o más allá.

A continuación les presentaré el desarrollo de una radio que cubre todas las bandas mencionadas anteriormente. El "corazón" de esta radio es Si4730 IC de Silicon Labs, que se puede comprar en AliExpress en forma de una pequeña placa de desarrollo por unos pocos dólares.

Esta placa está controlada por un Arduino usando el protocolo I2C. El código está escrito por Julio C. Rosa y se basa en la biblioteca Si4735-I2C-R4 que se proporciona a continuación junto con el código y el esquema. Aunque el fabricante dice que este chip (Si4730) es solo para AM / FM, en realidad también funciona en SW. Para la salida de audio utilizo una placa amplificadora digital mini 2 * 3W PAM8403 Clase D que es muy económica y funcional.

El dispositivo está montado en una carcasa adecuada y representa una pequeña radio World Band completa. De lo contrario, vivo en la planta baja en un área relativamente densamente poblada y uso una antena de diez metros de largo, por lo que la recepción es bastante débil, pero aún comparable a las radios de bolsillo de calidad comercial que tengo.

Y por último mencionar que este chip es utilizado por muchas marcas reconocidas de radios portátiles como TECSUN, DEGEN, SANGEAN y otras.

Código

  • Código
  • Bibliotecas
Código C / C ++
 / ******************************************** *********************************************** ** Receptor JCR Si4730 / 5 LW / MW / SW / FM - Versión para compartir. Consulte los esquemas para conocer los detalles del cableado. Escrito por Julio C. Rosa - El CesarSound - Mayo / 2019 Comandos:radio.volumeUp (); radio.volumeDown (); radio.seekDown (); radio.seekUp (); radio.mute (); radio.unmute (); radio.setMode (FM); radio.tuneFrequency (9490); radio.getStatus (); radio.getVolume (); radio.getMode (); radio.getMute (); radio.toggleMute (); RSQMetrics rsq; radio.getRSQ (&rsq); (rsq.stereo); número_impresión (rsq.stereoBlend); número_impresión (rsq.SNR); (rsq.seekable); número_impresión (rsq.RSSI); modo_impresión (); print_station_freq (); print_volume (); print_mute (); print_home (); radio.getCallSign (callSign); printp (rds1); Serial.write (callSign); radio.getProgramTypeStr (programType); Serial.write (tipo de programa); (rds1); (rds2); (rds3); (rds4); (rds5); ******************************************* *********************************************** ***** /// Library # include  #include  #include  #include "Wire.h" // I / O SettingsRotary r =Rotary (2, 3 ); LiquidCrystal lcd (12, 13, 7, 6, 5, 4); const byte band =A0; // Ajuste variable unsigned int freq =880; unsigned int freqmax =10800; unsigned int freqmin =50; unsigned int fstep =10; unsigned int freqold; unsigned int buttonstate; unsigned int count =15; // Cree una instancia de la radio Si4730 / 5 llamada radio.Si4735; void setup () {lcd.begin (16, 2); PCICR | =(1 <>"); lcd.setCursor (3, 0); lcd.print (":"); lcd.setCursor (13, 0); lcd.print ("kHz");} // Codificador InterruptISR (PCINT2_vect) {unsigned char result =r.process (); if (resultado) {if (resultado ==DIR_CW) {freq =freq + fstep; if (freq> =freqmax) {freq =freqmax; }} else {freq =freq - fstep; if (freq <=freqmin) {freq =freqmin; }}}} void loop () {if (freqold! =freq) {tune (); } freqold =freq; lcd.setCursor (5, 0); lcd.print (frecuencia); lcd.print (""); buttonstate =digitalRead (banda); // Selector de bandas if (buttonstate ==LOW) {inc_preset (); while (lectura digital (banda) ==0); } // Medidor - S-Meter (dBu) e SNR (dB) - descomente si desea utilizar RSQMetrics rsq; radio.getRSQ (&rsq); lcd.setCursor (0, 2); lcd.print ("dBu:"); lcd.print (rsq.RSSI); lcd.setCursor (9, 2); lcd.print ("dB:"); lcd.print (rsq.SNR);} // Presets INCvoid inc_preset () {count ++; si (cuenta> 15) cuenta =1; bandpresets (); delay (100);} // Presets Seletor de Bandasvoid bandpresets () {lcd.setCursor (0, 0); switch (count) {caso 1:freq =370; radio.setMode (LW); radio.tuneFrequency (freq); comando_am (); fstep =5; lcd.print ("LW1"); descanso; caso 2:frecuencia =620; radio.setMode (AM); radio.tuneFrequency (freq); fstep =5; lcd.print ("MW1"); descanso; caso 3:frecuencia =840; radio.setMode (AM); radio.tuneFrequency (freq); fstep =5; lcd.print ("MW2"); descanso; caso 4:frecuencia =3700; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW0"); descanso; caso 5:frecuencia =4985; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW1"); descanso; caso 6:frecuencia =6010; radio.setMode (SW); radio.tuneFrequency (freq); fstep =1; lcd.print ("SW2"); descanso; caso 7:frecuencia =7200; radio.setMode (SW); radio.tuneFrequency (freq); fstep =1; lcd.print ("SW3"); descanso; caso 8:frecuencia =10000; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW4"); descanso; caso 9:frecuencia =11940; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW5"); descanso; caso 10:frecuencia =13710; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW6"); descanso; caso 11:frecuencia =15400; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW7"); descanso; caso 12:frecuencia =17560; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW8"); descanso; caso 13:frecuencia =21505; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW9"); descanso; caso 14:frecuencia =27015; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("CB1"); descanso; caso 15:frecuencia =9700; radio.setMode (FM); radio.tuneFrequency (freq); fstep =10; lcd.print ("FM1"); descanso; }} // Sintonizador - tunervoid tune () {radio.tuneFrequency (freq);} // Comandos soft mute off / AVC max gainvoid command_am () {radio.setProperty (PROP_AM_SOFT_MUTE_MAX_ATTENUATION, 0); // 0 (APAGADO) - 63 radio.setProperty (PROP_AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN, 0x3A98); // 1000 - 7800} 
Bibliotecas C / C ++
 Sin vista previa (solo descarga). 

Esquemas


Proceso de manufactura

  1. Circuitos de radio
  2. Radio
  3. Banda elástica
  4. Cree una Thermocam de bricolaje
  5. Caja UVC un esterilizador UV DIY
  6. Radio por Internet Pi-Arduino
  7. Generador de ondas JX
  8. Patineta de realidad virtual DIY
  9. Radio FM de cabina de ducha basada en Arduino
  10. J.A.R.V.I.S con reactor de arco DIY
  11. ¿Qué es una sierra de cinta vertical?