twitter
facebook
instagram
linkedin
youtube

Edited by Antonio Costantini

D

2320116e5f8a60ee49f26130eb8a9cd2ef12fd54

Modulatore FSK con Arduino

04/10/2023 17:44

Antonio Costantini

Elettronica, sistemi, logiche programmabili, telecomunicazioni,

Modulatore FSK con Arduino

(Per la classe V)

F. Tamigi

| Un'esercitazione Tinkercad sulla modulazione FSK.



Aiutandosi con i commenti all’interno del codice, modificare il comportamento del circuito come segue:



1) portare la cadenza di emissione dei simboli, attualmente pari a 50 bps (bit per secondo), al valore di 33 bps. 



2) simulare il circuito, premendo il relativo pulsante, per verificare che il comportamento del circuito sia quello previsto. Effettuare uno screenshot del codice modificato e spiegare che cosa è cambiato nella simulazione modificando la cadenza;



3) modificare il codice affinché i toni corrispondenti ai bit 0 e 1 siano rispettivamente 1250 Hz e 1650 Hz. Anche in questo caso commentare opportunamente nel codice le modifiche apportate. Simulare ancora e quindi effettuare uno screenshot del codice. Che cosa è cambiato questa volta nella simulazione?



4) modificare il codice in modo che venga trasmesso il messaggio Hello world!. Simulare nuovamente. Commentare adeguatamente e catturare anche in questo caso lo screenshot del codice. Che cosa ricorda il suono emesso da questo modulatore? Commentare.



Per la codifica del messaggio da trasmettere al punto 3) consultare la


tabella ASCII

NB: Se non disponete dell'account Tinkercad, registratevi gratis e fate il lavoro da zero, senza copiare il mio file.




Ecco codice del modulatore:




#define UTP 2



#define OUT 4




#define FREQ_0 1250



#define FREQ_1 1650




#define DUR 33



#define PAUSE 1000




// sequenza di bit da trasmettere



char seq[] = "10101101 00111101 01000010 11100010 10111011 00010010";




void setup() {



  pinMode(UTP, OUTPUT);



  pinMode(OUT, OUTPUT);



    // definisci i piedini UTP e OUT come uscite



}




void loop() {



  for (int n = 0; n     // scorri la stringa di bit dall'inizio alla fine



   



    if (seq[n] == '0') {



      tone(UTP, FREQ_0);



        // se il bit in posizione n è zero



        // emetti sul piedino UTP



        // un tono con frequenza FREQ_0



   



      digitalWrite(OUT, LOW);



        // poni bassa l'uscita



        // per indicare che il bit trasmesso è zero



    }




    else if (seq[n] == '1') {



      tone(UTP, FREQ_1);



        // se invece il bit in posizione n è uno



        // emetti sul piedino UTP



        // un tono con frequenza FREQ_1




      digitalWrite(OUT, HIGH);



        // poni alta l'uscita



        // per indicare che il bit trasmesso è uno



    }



 



    else continue;



      // se alla posizione n non c'è un bit salta avanti



   



    delay(DUR);



      // tono di durata DUR (millisecondi)



  }



 



  noTone(UTP);



    // arresta l'emissione del tono




  delay(PAUSE);



    // pausa di durata PAUSE (millisecondi)



    // prima di ripetere la trasmissione



}



Informativa LegaleInformativa sulla PrivacyInformativa sui Cookie