Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DIY Si4730 Allbandradio (LW, MW, SW, FM)

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Si4730 Funkmodul
× 1
Adafruit Standard LCD - 16x2 Weiß auf Blau
× 1
Drehgeber mit Druckknopf
× 1
Entwicklungsplatine, Klasse-D-Audioverstärkermodul
× 1
Lautsprecher:0,25 W, 8 Ohm
× 1
Ferite-Stab aus altem MW-Radio
× 1
Schiebeschalter
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Wenn Sie Arduino-Radio erwähnen, denken Sie immer an modernes UKW-Radio (88-108 MHz in Europa). Das LW-, MW- und SW-Band decken den Bereich von 0,2 bis 30 MHz ab. SW ist besonders interessant. Radiowellen im Kurzwellenband können von einer Schicht elektrisch geladener Atome in der Atmosphäre, der Ionosphäre, reflektiert oder gebrochen werden. Somit kann der Kurzwellenfunk für die Kommunikation über sehr lange Distanzen verwendet werden, manchmal über ganze Kontinente oder darüber hinaus.

Im Folgenden stelle ich Ihnen die Entwicklung eines Radios vor, das alle oben genannten Bands abdeckt. Das "Herzstück" dieses Radios ist der Si4730 IC von Silicon Labs, der bei AliExpress in Form eines kleinen Entwicklungsboards für wenige Dollar erworben werden kann.

Dieses Board wird von einem Arduino mit dem I2C-Protokoll gesteuert. Der Code wurde von Julio C. Rosa geschrieben und basiert auf der unten angegebenen Si4735-I2C-R4-Bibliothek zusammen mit dem Code und dem Schema. Obwohl der Hersteller sagt, dass dieser Chip (Si4730) nur für AM / FM gedacht ist, funktioniert er tatsächlich auch in SW. Für die Audioausgabe verwende ich eine Mini-Digitalverstärkerplatine 2 * 3 W PAM8403 Klasse D, die sehr billig und funktional ist.

Das Gerät ist in einem passenden Gehäuse montiert und stellt ein komplettes Small World Band Radio dar. Ansonsten wohne ich im Erdgeschoss in einer relativ dicht besiedelten Gegend und benutze eine zehn Meter lange Antenne, daher ist der Empfang ziemlich schwach, aber immer noch vergleichbar mit handelsüblichen Taschenradios, die ich besitze.

Und zuletzt zu erwähnen, dass dieser Chip von vielen bekannten Marken tragbarer Funkgeräte wie TECSUN, DEGEN, SANGEAN und anderen verwendet wird.

Code

  • Code
  • Bibliotheken
CodeC/C++
/************************************************ ************************************************* ** JCR Si4730/5 Empfänger LW/MW/SW/FM - Version zum Teilen. Siehe Schaltpläne für Verdrahtungsdetails. Geschrieben von Julio C. Rosa - The CesarSound - Mai/2019 Befehle: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.suchbar); 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 (Programmtyp); (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;// Variable settingunsigned 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;// Erstellen Sie eine Instanz des Si4730/5 namens 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 (result) { if (result ==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 (); } freqalt =freq; lcd.setCursor(5, 0); lcd.print (Freq); lcd.print(" "); buttonstate =digitalRead (Band); // Seletor de bandas if (buttonstate ==LOW) { Inc_preset (); während (digitalRead (Band) ==0); } // Medidor - S-Meter (dBu) e SNR (dB) - Kommentar entfernen, wenn RSQMetrics verwendet werden soll 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);} // Voreinstellungen INCvoid inc_preset() { count++; wenn (Anzahl> 15) Anzahl =1; Bandvoreinstellungen(); delay (100);} // Presets Seletor de Bandasvoid bandpresets () { lcd.setCursor (0, 0); Schalter (Zählung) {Fall 1:Freq =370; radio.setMode (LW); radio.tuneFrequency(Freq); Befehl_am(); fSchritt =5; lcd.print("LW1"); brechen; Fall 2:Frequenz =620; radio.setMode (AM); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("MW1"); brechen; Fall 3:Frequenz =840; radio.setMode (AM); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("MW2"); brechen; Fall 4:Frequenz =3700; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW0"); brechen; Fall 5:Frequenz =4985; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW1"); brechen; Fall 6:Frequenz =6010; radio.setMode (SW); radio.tuneFrequency(Freq); fstep =1; lcd.print("SW2"); brechen; Fall 7:Frequenz =7200; radio.setMode (SW); radio.tuneFrequency(Freq); fstep =1; lcd.print("SW3"); brechen; Fall 8:Frequenz =10000; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW4"); brechen; Fall 9:Frequenz =11940; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW5"); brechen; Fall 10:Freq =13710; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW6"); brechen; Fall 11:Freq =15400; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW7"); brechen; Fall 12:Frequenz =17560; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW8"); brechen; Fall 13:Frequenz =21505; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("SW9"); brechen; Fall 14:Frequenz =27015; radio.setMode (SW); radio.tuneFrequency(Freq); fSchritt =5; lcd.print("CB1"); brechen; Fall 15:Frequenz =9700; radio.setMode (FM); radio.tuneFrequency(Freq); fSchritt =10; lcd.print("FM1"); brechen; }} // Sintonizador - tunervoid tune () { radio.tuneFrequency (freq);} // Befehle weiche Stummschaltung aus / 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}
BibliothekenC/C++
Keine Vorschau (nur Download).

Schaltpläne


Herstellungsprozess

  1. Funkstrecken
  2. Radio
  3. Gummiband
  4. Bauen Sie eine DIY-Thermocam
  5. UVC-Box einen DIY-UV-Sterilisator
  6. Pi-Arduino Internetradio
  7. JX-Wellengenerator
  8. DIY Virtual Reality Skateboard
  9. Arduino-basiertes FM-Radio in Duschkabine
  10. Was ist eine vertikale Bandsäge?