Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Radio toutes bandes DIY Si4730 (LW, MW, SW, FM)

Composants et fournitures

Arduino Nano R3
× 1
Module radio Si4730
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1
Encodeur rotatif avec bouton-poussoir
× 1
Carte de développement, module amplificateur audio de classe D
× 1
Haut-parleur :0,25 W, 8 ohms
× 1
tige de ferite de l'ancienne radio MW
× 1
Interrupteur à glissière
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Lorsque vous mentionnez la radio Arduino, vous pensez toujours à la radio FM moderne (88-108 MHz en Europe). Les bandes LW, MW et SW couvrent la gamme de 0,2 à 30 MHz. SW est particulièrement intéressant. Les ondes radio dans la bande des ondes courtes peuvent être réfléchies ou réfractées par une couche d'atomes chargés électriquement dans l'atmosphère appelée ionosphère. Ainsi, la radio à ondes courtes peut être utilisée pour des communications à très longue distance, parfois sur des continents entiers ou au-delà.

Ci-dessous, je vais vous présenter le développement d'une radio qui couvre toutes les bandes mentionnées ci-dessus. Le "cœur" de cette radio est le Si4730 IC de Silicon Labs qui peut être acheté sur AliExpress sous la forme d'une petite carte de développement pour quelques dollars.

Cette carte est contrôlée par un Arduino utilisant le protocole I2C. Le code est écrit par Julio C. Rosa et est basé sur la bibliothèque Si4735-I2C-R4 donnée ci-dessous avec le code et le schéma. Bien que le fabricant dise que cette puce (Si4730) est uniquement pour AM / FM, elle fonctionne également en SW. Pour la sortie audio, j'utilise une mini carte d'amplificateur numérique 2*3W PAM8403 classe D qui est très bon marché et fonctionnelle.

L'appareil est assemblé dans un boîtier approprié et représente une petite radio World Band complète. Sinon, j'habite au rez-de-chaussée dans une zone relativement densément peuplée et j'utilise une antenne de dix mètres de long, donc la réception est assez faible, mais reste comparable aux radios de poche de qualité commerciale que je possède.

Et enfin de mentionner que cette puce est utilisée par de nombreuses marques bien connues de radios portables telles que TECSUN, DEGEN, SANGEAN et autres.

Code

  • Code
  • Bibliothèques
CodeC/C++
/************************************************ ******************************************************** ** Récepteur JCR Si4730/5 LW/MW/SW/FM - Version à partager. Voir les schémas pour les détails de câblage. Écrit par Julio C. Rosa - The CesarSound - Mai/2019 Commandes :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.stéréo); print_number(rsq.stereoBlend); print_number(rsq.SNR); (rsq.cherchable); 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);const byte band =A0;// Réglage 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;// Créer une instance du Si4730/5 nommée 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) { unsigned char result =r.process(); if (résultat) { if (résultat ==DIR_CW) { freq =freq + fstep; if (freq>=freqmax) { freq =freqmax; } } else { freq =freq - fstep; if (freq <=freqmin) { freq =freqmin; } } }}boucle vide() { if (freqold !=freq) { tune(); } freqold =freq; lcd.setCursor(5, 0); lcd.print(freq); lcd.print(" "); buttonstate =digitalRead (bande); // Seletor de bandas if (buttonstate ==LOW) { inc_preset(); while (digitalRead(band) ==0); } // Medidor - S-Meter (dBu) e SNR (dB) - décommentez si vous souhaitez utiliser 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 (compte> 15) compte =1 ; préréglages de bande(); delay(100);}// Presets Selector de Bandasvoid bandpresets() { lcd.setCursor(0, 0); switch (count) { cas 1 :freq =370 ; radio.setMode(LW); radio.tuneFrequency(freq); commande_am(); fpas =5 ; lcd.print("LW1"); Pause; cas 2 :fréq =620; radio.setMode(AM); radio.tuneFrequency(freq); fpas =5 ; lcd.print("MW1"); Pause; cas 3 :freq =840; radio.setMode(AM); radio.tuneFrequency(freq); fpas =5 ; lcd.print("MW2"); Pause; cas 4 :fréq =3700; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW0"); Pause; cas 5 :freq =4985; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW1"); Pause; cas 6 :freq =6010; radio.setMode(SW); radio.tuneFrequency(freq); fpas =1 ; lcd.print("SW2"); Pause; cas 7 :freq =7200; radio.setMode(SW); radio.tuneFrequency(freq); fpas =1 ; lcd.print("SW3"); Pause; cas 8 :freq =10000; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW4"); Pause; cas 9 :freq =11940; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW5"); Pause; cas 10 :fréq =13710 ; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW6"); Pause; cas 11 :fréq =15 400 ; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW7"); Pause; cas 12 :fréq =17560 ; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW8"); Pause; cas 13 :freq =21505; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("SW9"); Pause; cas 14 :freq =27015 ; radio.setMode(SW); radio.tuneFrequency(freq); fpas =5 ; lcd.print("CB1"); Pause; cas 15 :freq =9700; radio.setMode (FM); radio.tuneFrequency(freq); fpas =10 ; lcd.print("FM1"); Pause; }}//Sintonizador - tunervoid tune() { radio.tuneFrequency(freq);}//Commandes 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}
BibliothèquesC/C++
Aucun aperçu (téléchargement uniquement).

Schémas


Processus de fabrication

  1. Circuits radio
  2. Radio
  3. Bande en caoutchouc
  4. Créer une thermocam DIY
  5. Boîte UVC d'un stérilisateur UV DIY
  6. Radio Internet Pi-Arduino
  7. Générateur d'ondes JX
  8. Planche à roulettes en réalité virtuelle DIY
  9. Qu'est-ce qu'une scie à ruban verticale ?