Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

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

Componenten en benodigdheden

Arduino Nano R3
× 1
Si4730 Radiomodule
× 1
Adafruit Standaard LCD - 16x2 Wit op Blauw
× 1
Roterende encoder met drukknop
× 1
Ontwikkelingsbord, klasse D audioversterkermodule
× 1
Luidspreker:0,25 W, 8 ohm
× 1
ferietstaaf van oude MW-radio
× 1
Schuifschakelaar
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE

Over dit project

Als je het over Arduino-radio hebt, denk je altijd aan moderne FM-radio (88-108 MHz in Europa). De LW-, MW- en SW-band bestrijken het bereik van 0,2 tot 30 MHz. Vooral SW is interessant. Radiogolven in de kortegolfband kunnen worden gereflecteerd of gebroken door een laag elektrisch geladen atomen in de atmosfeer die de ionosfeer wordt genoemd. Zo kan kortegolfradio worden gebruikt voor communicatie over zeer lange afstand, soms hele continenten of daarbuiten.

Hieronder zal ik u de ontwikkeling van een radio presenteren die alle bovengenoemde banden dekt. Het "hart" van deze radio is Si4730 IC van Silicon Labs die voor een paar dollar bij AliExpress kan worden gekocht in de vorm van een klein ontwikkelbord.

Dit bord wordt bestuurd door een Arduino met behulp van het I2C-protocol. De code is geschreven door Julio C. Rosa en is gebaseerd op de Si4735-I2C-R4-bibliotheek die hieronder wordt weergegeven, samen met de code en het schema. Hoewel de fabrikant zegt dat deze chip (Si4730) alleen voor AM/FM is, werkt hij eigenlijk ook in SW. Voor audio-uitvoer gebruik ik mini digitale versterkerkaart 2 * 3W PAM8403 Klasse D, wat erg goedkoop en functioneel is.

Het apparaat is gemonteerd in een geschikte behuizing en vertegenwoordigt een complete kleine World Band-radio. Verder woon ik op de begane grond in een relatief dichtbevolkt gebied en gebruik ik een tien meter lange antenne, dus de ontvangst is vrij zwak, maar nog steeds vergelijkbaar met zakradio's van commerciële kwaliteit die ik bezit.

En als laatste om te vermelden dat deze chip wordt gebruikt door veel bekende merken draagbare radio's zoals TECSUN, DEGEN, SANGEAN en anderen.

Code

  • Code
  • Bibliotheken
CodeC/C++
/************************************************** ********************************************** ** JCR Si4730/5-ontvanger LW/MW/SW/FM - versie om te delen. Zie schema's voor bedradingsdetails. Geschreven door Julio C. Rosa - The CesarSound - mei/2019 Opdrachten: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.zoekbaar); 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(programmaType); Serieel.schrijven (programmatype); (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 byteband =A0;// Variabele instellingunsigned 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;// Maak een instantie van de Si4730/5 met de naam 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 (resultaat) {if (resultaat ==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(); } freqoud =freq; lcd.setCursor (5, 0); lcd.print(freq); lcd.print(" "); buttonstate =digitalRead (band); // Selecteer de bandas if (buttonstate ==LAAG) {inc_preset(); while (digitalRead(band) ==0); } // Medidor - S-Meter (dBu) e SNR (dB) - verwijder commentaar als u RSQMetrics rsq wilt gebruiken; 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);}// Voorinstellingen INCvoid inc_preset() { count++; als (telling> 15) telling =1; bandvoorinstellingen(); delay(100);}// Presets Selector de Bandasvoid bandpresets() { lcd.setCursor(0, 0); schakelaar (tel) { geval 1:freq =370; radio.setMode(LW); radio.tuneFrequency(freq); command_am(); fstap =5; lcd.print("LW1"); pauze; geval 2:freq =620; radio.setMode(AM); radio.tuneFrequency(freq); fstap =5; lcd.print("MW1"); pauze; geval 3:freq =840; radio.setMode(AM); radio.tuneFrequency(freq); fstap =5; lcd.print("MW2"); pauze; geval 4:freq =3700; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW0"); pauze; geval 5:freq =4985; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW1"); pauze; geval 6:freq =6010; radio.setMode(SW); radio.tuneFrequency(freq); fstap =1; lcd.print("SW2"); pauze; geval 7:freq =7200; radio.setMode(SW); radio.tuneFrequency(freq); fstap =1; lcd.print("SW3"); pauze; geval 8:freq =10000; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW4"); pauze; geval 9:freq =11940; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW5"); pauze; geval 10:freq =13710; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW6"); pauze; geval 11:freq =15400; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW7"); pauze; geval 12:freq =17560; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW8"); pauze; geval 13:freq =21505; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("SW9"); pauze; geval 14:freq =27015; radio.setMode(SW); radio.tuneFrequency(freq); fstap =5; lcd.print("CB1"); pauze; geval 15:freq =9700; radio.setMode(FM); radio.tuneFrequency(freq); fstap =10; lcd.print("FM1"); pauze; }}//Sintonizador - tunervoid tune() { radio.tuneFrequency(freq);}// Commando's soft mute uit / AVC max gainvoid command_am() { radio.setProperty(PROP_AM_SOFT_MUTE_MAX_ATTENUATION, 0); // 0 (UIT) - 63 radio.setProperty (PROP_AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN, 0x3A98); // 1000 - 7800}
BibliothekenC/C++
Geen voorbeeld (alleen downloaden).

Schema's


Productieproces

  1. Radiocircuits
  2. Radio
  3. Elastiekje
  4. Bouw een doe-het-zelf Thermocam
  5. UVC Box een doe-het-zelf UV-sterilisator
  6. Pi-Arduino internetradio
  7. JX Wave Generator
  8. DIY Virtual Reality Skateboard
  9. Op Arduino gebaseerde FM-radio voor douchecabine
  10. J.A.R.V.I.S met DIY Arc Reactor
  11. Wat is een verticale lintzaag?