Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

DIY Si4730 All Band Radio (LW, MW, SW, FM)

Componentes e suprimentos

Arduino Nano R3
× 1
Módulo de rádio Si4730
× 1
Adafruit LCD padrão - 16x2 branco em azul
× 1
Codificador rotativo com botão de pressão
× 1
Placa de desenvolvimento, Módulo amplificador de áudio Classe D
× 1
Alto-falante:0,25 W, 8 ohms
× 1
haste de ferite do antigo rádio MW
× 1
Slide Switch
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto




Quando você menciona o rádio Arduino, sempre pensa no rádio FM moderno (88-108 MHz na Europa). As bandas LW, MW e SW cobrem a faixa de 0,2 a 30 MHz. SW é especialmente interessante. As ondas de rádio na banda de ondas curtas podem ser refletidas ou refratadas de uma camada de átomos eletricamente carregados na atmosfera chamada ionosfera. Assim, o rádio de ondas curtas pode ser usado para comunicação de longa distância, às vezes em continentes inteiros ou além.

A seguir apresentarei a vocês o desenvolvimento de uma rádio que cobre todas as bandas citadas acima. O "coração" deste rádio é o Si4730 IC da Silicon Labs, que pode ser adquirido no AliExpress na forma de uma pequena placa de desenvolvimento por alguns dólares.





Esta placa é controlada por um Arduino usando o protocolo I2C. O código foi escrito por Julio C. Rosa e é baseado na biblioteca Si4735-I2C-R4 fornecida abaixo junto com o código e o esquema. Embora o fabricante diga que este chip (Si4730) é apenas para AM / FM, ele também funciona em SW. Para saída de áudio eu uso placa de amplificador digital mini 2 * 3W PAM8403 Classe D que é muito barata e funcional.

O dispositivo é montado em uma caixa adequada e representa um pequeno rádio World Band completo. Fora isso, eu moro no andar térreo em uma área relativamente densamente povoada e uso uma antena de dez metros de comprimento, então a recepção é bem fraca, mas ainda comparável aos rádios de bolso de qualidade comercial que eu possuo.

E por último, para mencionar que este chip é usado por muitas marcas conhecidas de rádios portáteis como TECSUN, DEGEN, SANGEAN e outros.

Código

  • Código
  • Bibliotecas
Código C / C ++
 / ********************************************** *************************************************** ** Receptor JCR Si4730 / 5 LW / MW / SW / FM - Versão para compartilhar. Veja os esquemas para detalhes de fiação. Escrito por Julio C. Rosa - O CesarSound - Maio / 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); print_number (rsq.stereoBlend); print_number (rsq.SNR); (rsq.seekable); print_number (rsq.RSSI); print_mode (); print_station_freq (); print_volume (); print_mute (); print_home (); radio.getCallSign (callSign); printp (rds1); Serial.write (callSign); radio.getProgramTypeStr (programType); Serial.write (programType); (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); banda de bytes const =A0; // Configuração da variável sem sinal freq int =880; sem sinal freqmax =10800; sem sinal int freqmin =50; sem sinal int fstep =10; unsigned int freqold; unsigned int buttonstate; unsigned int count =15; // Cria uma instância do Si4730 / 5 chamada radio.Si4735 radio; void setup () {lcd.begin (16, 2); PCICR | =(1 <>"); lcd.setCursor (3, 0); lcd.print (":"); lcd.setCursor (13, 0); lcd.print ("kHz");} // Encoder InterruptISR (PCINT2_vect) {resultado de caractere não assinado =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 (freq); lcd.print (""); buttonstate =digitalRead (banda); // Seletor de bandas if (buttonstate ==LOW) {inc_preset (); enquanto (digitalRead (banda) ==0); } // Medidor - S-Meter (dBu) e SNR (dB) - descomente se quiser usar 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 ++; if (contagem> 15) contagem =1; presets de banda (); delay (100);} // Presets Seletor de Bandasvoid bandpresets () {lcd.setCursor (0, 0); switch (contagem) {caso 1:freq =370; radio.setMode (LW); radio.tuneFrequency (freq); command_am (); fstep =5; lcd.print ("LW1"); pausa; caso 2:freq =620; radio.setMode (AM); radio.tuneFrequency (freq); fstep =5; lcd.print ("MW1"); pausa; caso 3:freq =840; radio.setMode (AM); radio.tuneFrequency (freq); fstep =5; lcd.print ("MW2"); pausa; caso 4:freq =3700; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW0"); pausa; caso 5:freq =4985; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW1"); pausa; caso 6:freq =6010; radio.setMode (SW); radio.tuneFrequency (freq); fstep =1; lcd.print ("SW2"); pausa; caso 7:freq =7200; radio.setMode (SW); radio.tuneFrequency (freq); fstep =1; lcd.print ("SW3"); pausa; caso 8:freq =10000; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW4"); pausa; caso 9:freq =11940; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW5"); pausa; caso 10:freq =13710; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW6"); pausa; caso 11:freq =15400; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW7"); pausa; caso 12:freq =17560; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW8"); pausa; caso 13:freq =21505; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("SW9"); pausa; caso 14:freq =27015; radio.setMode (SW); radio.tuneFrequency (freq); fstep =5; lcd.print ("CB1"); pausa; caso 15:freq =9700; radio.setMode (FM); radio.tuneFrequency (freq); fstep =10; lcd.print ("FM1"); pausa; }} // 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 (OFF) - 63 radio.setProperty (PROP_AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN, 0x3A98); // 1000 - 7800} 
Bibliotecas C / C ++
 Sem visualização (somente download). 

Esquemas


Processo de manufatura

  1. Circuitos de Rádio
  2. Rádio
  3. Elástico
  4. Construa uma Thermocam DIY
  5. Caixa UVC um esterilizador UV DIY
  6. Rádio da Internet Pi-Arduino
  7. JX Wave Generator
  8. Faça você mesmo skate de realidade virtual
  9. Rádio FM com cabine de banho baseada em Arduino
  10. O que é uma serra de fita vertical?