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

Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM

Composants et fournitures

Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Arduino Nano R3
× 1
Module radio Si4730
× 1
Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Adafruit LCD standard - 16x2 Blanc sur bleu
× 1
Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Encodeur rotatif avec bouton-poussoir
× 1
Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Carte de développement, module amplificateur audio classe D
× 1
Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Haut-parleur : 0,25 W, 8 ohms
× 1
Bâton de ferrite d'ancienne radio PO
× 1
Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Interrupteur à glissière
× 1

Outils et machines nécessaires

Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Fer à souder (générique)

Applications et services en ligne

Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM
Arduino IDE

À propos de ce projet

Quand on parle de radio Arduino, on pense radio FM moderne (88-108 MHz en Europe). Les bandes GO, PO et OC couvrent 0,2 à 30 MHz. L'OC est particulièrement intéressant : les ondes courtes peuvent être réfléchies par l'ionosphère, permettant des communications intercontinentales.

Voici le développement d'une radio couvrant toutes ces bandes. Le « cœur » est le CI Si4730 de Silicon Labs, disponible sur AliExpress sous forme de petite carte de développement pour quelques dollars.

Construisez une radio toutes bandes avec Si4730 et Arduino Nano – GO, PO, OC, FM

Cette carte est contrôlée par un Arduino via I2C. Le code est de Julio C. Rosa, basé sur la bibliothèque Si4735-I2C-R4 fournie ci-dessous avec le code et le schéma. Bien que le fabricant annonce le Si4730 pour AM/FM seulement, il fonctionne aussi en OC. Pour la sortie audio, j'utilise un mini amplificateur numérique 2×3 W PAM8403 classe D, très bon marché et fonctionnel.

L'appareil est assemblé dans un boîtier adapté et constitue une petite radio ondes mondiales complète. J'habite au rez-de-chaussée en zone dense et utilise une antenne de 10 m ; la réception est faible mais comparable à mes radios de poche commerciales.

Ce CI est utilisé par de nombreuses marques de radios portables connues : TECSUN, DEGEN, SANGEAN, etc.

Code

Code C/C++
/************************************************************************************************** JCR Si4730/5 Récepteur GO/PO/OC/FM - Version à partager. Voir schémas pour 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.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); *****************************************************************************************************/ // Bibliothèques #include <Si4735.h> #include <LiquidCrystal.h> #include <rotary.h> #include "Wire.h" // Réglages I/O Rotary r = Rotary(2, 3); LiquidCrystal lcd(12, 13, 7, 6, 5, 4); const byte band = A0; // Réglages variables 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; // Instance Si4730/5 nommée radio. Si4735 radio; void setup() { lcd.begin(16, 2); PCICR |= (1 << PCIE2); PCMSK2 |= (1 << PCINT18) | (1 << PCINT19); sei(); // Bouton sélecteur de bandes pinMode(band, INPUT_PULLUP); // Initialisation radio. Modes possibles : AM, FM, SW, LW. radio.begin(); radio.setMode(AM); command_am(); // Fréquence initiale radio.tuneFrequency(freq); lcd.setCursor(0, 2); lcd.print("JCR Multiband Rx"); lcd.setCursor(0, 0); lcd.print("F>>"); lcd.setCursor(3, 0); lcd.print(":"); lcd.setCursor(13, 0); lcd.print("kHz"); } // Interruption encodeur ISR(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(); } freqold = freq; lcd.setCursor(5, 0); lcd.print(freq); lcd.print(" "); buttonstate = digitalRead(band); // Sélecteur de bandes if (buttonstate == LOW) { inc_preset(); while (digitalRead(band) == 0); } // S-Mètre (dBu) et SNR (dB) - décommenter si désiré 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 INC void inc_preset() { count++; if (count > 15) count = 1; bandpresets(); delay(100); } // Presets Sélecteur de Bandes void bandpresets() { lcd.setCursor(0, 0); switch (count) { case 1: freq = 370; radio.setMode(LW); radio.tuneFrequency(freq); command_am(); fstep = 5; lcd.print("LW1"); break; case 2: freq = 620; radio.setMode(AM); radio.tuneFrequency(freq); fstep = 5; lcd.print("MW1"); break; case 3: freq = 840; radio.setMode(AM); radio.tuneFrequency(freq); fstep = 5; lcd.print("MW2"); break; case 4: freq = 3700; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW0"); break; case 5: freq = 4985; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW1"); break; case 6: freq = 6010; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 1; lcd.print("SW2"); break; case 7: freq = 7200; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 1; lcd.print("SW3"); break; case 8: freq = 10000; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW4"); break; case 9: freq = 11940; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW5"); break; case 10: freq = 13710; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW6"); break; case 11: freq = 15400; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW7"); break; case 12: freq = 17560; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW8"); break; case 13: freq = 21505; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("SW9"); break; case 14: freq = 27015; radio.setMode(SW); radio.tuneFrequency(freq); fstep = 5; lcd.print("CB1"); break; case 15: freq = 9700; radio.setMode(FM); radio.tuneFrequency(freq); fstep = 10; lcd.print("FM1"); break; } } // Syntoniseur void tune() { radio.tuneFrequency(freq); } // Commandes soft mute off / AVC gain max void 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èques C/C++
Aperçu non disponible (téléchargement uniquement).

Schémas

Voir les fichiers joints.

Processus de fabrication

  1. Circuits Radio à Cristal et Transistor : Du Détecteur de Base aux Récepteurs AM/FM Intégrés
  2. L'évolution et l'ingénierie de la technologie radio
  3. L'évolution et la production des élastiques
  4. Thermocam DIY : de l'idée en classe au produit mondial
  5. Kit Stérilisateur UVC DIY – Boîte UV Faible Coût, Facile à Construire pour Objets Médicaux et Personnels
  6. Construire une radio Internet Wi-Fi avec Raspberry Pi et Arduino : diffuser des stations mondiales
  7. JX Wave Generator – Générateur DDS compatible Arduino avec affichage OLED
  8. Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth
  9. Scie à ruban verticale : utilité, caractéristiques et applications