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

Créer un émetteur radio AM avec Arduino Nano

Composants et fournitures

Arduino Nano R3 × 1
Résistance 10 kΩ × 2
Condensateur 10 µF × 1
Plaque d'essai (générique) × 1

Applications et services en ligne

À propos du projet

On peut réaliser des choses étonnantes avec les MCU ATmega. J'ai eu l'idée de construire un émetteur AM avec un Arduino Nano (tout autre Arduino convient).

La question : comment réaliser une modulation d'amplitude (AM) sur un dispositif numérique ? L'AM consiste à faire varier l'amplitude d'une porteuse selon l'amplitude du signal d'entrée à transmettre. Mathématiquement, on multiplie la porteuse par le signal d'entrée. Mais un ATmega n'a que des sorties numériques : seulement deux états, haut et bas. Franchement, il est impossible d'obtenir une vraie AM avec un Arduino.

Néanmoins, il est possible de produire un signal de sortie audible clairement sur un récepteur AM ordinaire !

La solution consiste à transformer le signal analogique d'entrée en signal PWM, en utilisant l'ADC et le timer/compteur 16 bits (timer1) de l'ATmega.

Le timer/compteur 2 génère le signal de porteuse, variable dans une large plage entre 31 kHz et 8 MHz.

Ce signal de porteuse est sorti sur la broche D11 au rythme du signal PWM. Le récepteur AM se comporte comme un filtre passe-bas sur le PWM, restituant ainsi le signal audio original.

Ceci n'est qu'une preuve de concept, maintenue simple. Pour une utilisation réelle comme émetteur RF, ajoutez :

Code

Émetteur AM Arduino C/C++

/* Ce travail est sous licence Creative Commons Attribution-ShareAlike 4.0 International.
   Voir https://creativecommons.org/licenses/by-sa/4.0/ */

#define ANTENNA_PIN PB3  // Arduino Nano/Uno D11

void setup() {
  Serial.begin(115200);
  
  // Génération fréquence porteuse
  uint32_t fTransmit = 600;  // kHz
  DDRB |= (1 << ANTENNA_PIN);
  TCCR2A = (0 << COM2A1) + (1 << COM2A0);  // Toggle OC2A on Compare Match
  TCCR2A |= (1 << WGM21) + (0 << WGM20);   // Mode CTC
  TCCR2B = (0 << CS22) + (0 << CS21) + (1 << CS20);  // Pas de prédiviseur
  OCR2A = F_CPU / (2000 * fTransmit) - 1;
  
  char strbuf[255];
  sprintf(strbuf, "Will broadcast at %d KHz", (F_CPU / (2 * (1 + OCR2A)) / 1000));
  Serial.println(strbuf);
  
  // Génération signal PWM
  // TCCR1A |= (0 << WGM11) + (1 << WGM10);  // Fast PWM 8 bits
  // TCCR1A |= (1 << WGM11) + (0 << WGM10);  // Fast PWM 9 bits
  TCCR1A |= (1 << WGM11) + (1 << WGM10);    // Fast PWM 10 bits
  TCCR1B = (1 << WGM12);
  TCCR1B |= (0 << CS12) + (0 << CS11) + (1 << CS10);  // Pas de prédiviseur
  TIMSK1 = (1 << OCIE1A) + (1 << TOIE1);
  
  // Configuration ADC
  ADMUX = (1 << REFS1) + (1 << REFS0);  // Référence interne 1,1V
  ADCSRA = (1 << ADEN) + (1 << ADSC) + (1 << ADATE);  // Auto-trigger, free-running
  ADCSRA |= (1 << ADPS2) + (1 << ADPS1) + (0 << ADPS0);  // Division par 64 -> ~18,5 kHz échantillonnage
  DIDR0 = (1 << ADC0D);
}

ISR(TIMER1_OVF_vect) {
  uint8_t adcl = ADCL;
  uint8_t adch = ADCH;
  OCR1A = (adch << 8) + adcl;
  DDRB |= (1 << ANTENNA_PIN);
}

ISR(TIMER1_COMPA_vect) {
  DDRB &= ~(1 << ANTENNA_PIN);
}

void loop() {
  // Tout se passe dans les interruptions
}

Schémas

Créer un émetteur radio AM avec Arduino Nano

Processus de fabrication

  1. L'héritage et l'évolution du jukebox classique
  2. La partition : Des manuscrits médiévaux à l'édition moderne — Aperçu de l'industrie
  3. Feux de signalisation : ingénierie, histoire et innovations futures
  4. Construisez votre propre LUMAZOID : Visualiseur musical DIY Arduino
  5. Construire un Spybot Arduino piloté par Bluetooth
  6. Décoder les signaux PPM d'un récepteur RC avec Arduino : Guide pas à pas
  7. FlickMote : Télécommande IR à gestes pour maison connectée
  8. TV-B-Gone DIY Arduino : Télécommande universelle pour toutes les TV
  9. Utiliser une thermistance facilement : Guide étape par étape Arduino