Domanda:
Come può Arduino inviare un segnale RF a 433 MHz?
Tono Nam
2020-04-17 01:06:50 UTC
view on stackexchange narkive permalink

Faccio questa domanda principalmente per imparare.

Ho imparato che Hz è il numero di cicli in un secondo.

Prendendo in considerazione ciò, ho provato i seguenti esempi.

Esempio 1

  void loop () {
  digitalWrite (3, HIGH); // fa in modo che il pin 3 abbia una tensione di ~ 5V
  ritardo (500); // aspetta 0,5 secondi
  digitalWrite (3, LOW); // fa in modo che il pin 3 abbia una tensione di ~ 0V
  ritardo (500); // aspetta 0,5 secondi
}
 

Questo codice ha una frequenza di 1 Hz perché la tensione aumenta di 0,5 secondi e diminuisce di 0,5 secondi. Il mio voltmetro mostra .99999 Hz

enter image description here

Il ciclo di lavoro è del 50% perché la tensione aumenta per la metà e per metà verso il basso.

Esempio 2

  void loop () {
  digitalWrite (3, HIGH); // fa in modo che il pin 3 abbia una tensione di ~ 5V
  ritardo (90); // aspetta 0,09 secondi
  digitalWrite (3, LOW); // fa in modo che il pin 3 abbia una tensione di ~ 0V
  ritardo (10); // aspetta 0,01 secondi
}
 

Questo codice ha una frequenza di 10 Hz perché ogni ciclo è di 0,1 secondi (90 ms + 10 ms). In 10 cicli raggiungerai 1 secondo. Il ciclo di lavoro di questo codice è del 10%.


I seguenti esempi sono fondamentalmente la domanda:


Esempio 3

  void loop () {
  digitalWrite (3, HIGH); // fa in modo che il pin 3 abbia una tensione di ~ 5V
  // Non ritardare
  digitalWrite (3, LOW); // fa in modo che il pin 3 abbia una tensione di ~ 0V
  // Non ritardare
}
 

Se eseguo questo codice, il mio voltmetro mostra una frequenza di 112.000 Hz o 112 kHz:

enter image description here

Credo che sia la frequenza più alta che posso ottenere. Non sto ritardando tra i cicli. Perché quando cerco su Google la frequenza di Arduino Uno dice:

enter image description here

Esempio 4

Google probabilmente ha ragione e la frequenza è di 16 MHz per Arduino. Se questo è vero, come può un Arduino inviare una frequenza di 433 MHz? Voglio comprare questo:

enter image description here

Quando ora ho impostato il ritardo come in Esempio 3 , la frequenza più alta che potevo ottenere era 112 kHz (con k).Com'è possibile inviare una frequenza di 433 MHz (con una M)?

Perché Arduino non invia 433 MHz.Quel modulo lo fa da solo.
https://en.wikipedia.org/wiki/Modulation
A proposito, se vuoi ottenere una frequenza più alta di `112kHz` nell'esempio 3 senza cose esterne, dovresti usare manipolazioni dirette delle porte (` PORTx`)
Risposta breve: il kit radio crea i 433MHz, non l'arduino.
Penso che tu stia fraintendendo i risultati di Google che hai pubblicato sopra.Dice "490,196 Hz" non MHz!Sei fuori di 1.000.000 qui.
se usi il linguaggio assembly per esempio 3, puoi andare più veloce.
se la mia macchina è costruita in giappone, come può il conducente parlare russo?Una cosa non ha niente a che fare con l'altra.
Sei risposte:
Edin Fifić
2020-04-17 01:21:35 UTC
view on stackexchange narkive permalink

La risposta breve: non è così.
Arduino non invia nulla di così alto. Può inviare solo un segnale di frequenza inferiore (bitrate inferiore) su una frequenza 433 MHz CARRIER (o qualsiasi altra frequenza per quella materia) utilizzando un altro dispositivo / modulo che genera una frequenza molto alta (radiofrequenza) per comunicare tramite onde radio.
Il 433MHz in questo caso è NOT THE RATE OF DATA / BITS, ma una frequenza del segnale radio su cui i dati vengono trasmessi / ricevuti.
La tua domanda mostra una mancanza di conoscenza del significato e della differenza tra le frequenze del clock del processore, la velocità di elaborazione, la velocità dei dati e le frequenze "portanti" come mezzi di comunicazione radio, quindi dovresti leggi e impara di più sull'elaborazione informatica di base e sui termini correlati e sui mezzi e le modalità di trasmissione delle informazioni tramite onde radio.
Fondamentalmente, la frequenza portante / radio è modulata / modificata dalle informazioni / dati che si desidera trasmettere, quindi sono quei cambiamenti che rappresentano le informazioni.
In base al tipo di cambio, esistono 3 tipi fondamentali di modulazione.
Modulazione di ampiezza (AM), modulazione di frequenza (FM), modulazione di fase (PM).
Con AM, la frequenza portante viene mantenuta stabile / uguale, mentre l'ampiezza / potenza della frequenza portante viene variata per trasmettere informazioni.
FM mantiene l'ampiezza della portante la stessa (al massimo) mentre la frequenza cambia su e giù di una certa quantità per rappresentare le informazioni.
PM è simile a FM e trasporta le informazioni spostando la frequenza della portante.

Un esempio estremo: se si utilizza l'arduino per accendere un LED rosso, quel LED trasmetterebbe onde elettromagnetiche a una frequenza di circa 430 THz.Ma questo non ha nulla a che fare con Arduino, il LED lo farebbe anche se lo alimentassi direttamente da una batteria.
@ Åsmund - bella analogia
E se si programma il LED di lettura in modo che lampeggi a 1 Hz, il segnale effettivo sarebbe 430 Thz moltiplicato per un'onda di blocco di 1 Hz.
Un altro esempio, la tua luce lampeggia con una frequenza di 120Hz a causa della frequenza di rete, puoi ancora usare la luce per comunicare con alcuni semplicemente spegnendola o accendendola ogni secondo, la frequenza portante è 120Hz, ma stai inviando dati a 1Hz
@MSalters beh, sarebbe effettivamente un pasticcio di segnale, dato che un LED non emette mai nulla di simile a un'onda monocromatica ...
@Ferrybig che non è frequenza portante in questo caso, ma piuttosto rumore ad alta frequenza (che possiamo facilmente filtrare, data la nostra larghezza di banda del segnale di 1 Hz).Le frequenze portanti effettive sono da qualche parte tra circa 400 THz e 700 THz, ciascuna delle frequenze in questo intervallo trasporta in modo ridondante le stesse informazioni (incluso il rumore a 120 Hz).
user1850479
2020-04-17 01:15:43 UTC
view on stackexchange narkive permalink

Perché quando cerco su Google la frequenza di arduino uno dice:

16 MHz è la frequenza di clock del processore, in pratica la velocità di esecuzione del core della CPU.

Se questo è vero, come può un Arduino inviare una frequenza di 433 MHz?

Compreresti una radio che trasmette alla frequenza centrale di 433 MHz. La velocità della CPU non ha alcuna relazione con la frequenza a cui la radio trasmette. Ad esempio, nel caso estremo di una fibra ottica, la frequenza ottica è di 300.000 GHz, ma la tua CPU sarebbe ancora 16 MHz.

Quando ho impostato ora il ritardo sull'Esempio 3, la frequenza più alta che ho potuto ottenere era 112 kHz (con una k). Come è possibile inviare una frequenza di 433 MHz (con una M)?

La scheda tecnica della radio dovrebbe darti un'idea di come collegarti ad essa, ma fondamentalmente si collegherebbe su qualche bus (es. USB) o ti fornirà un segnale di dati che dovresti leggere. Cosa dice la scheda tecnica della radio a fare?

Justme
2020-04-17 01:27:20 UTC
view on stackexchange narkive permalink

Questi "esempi" sembrano essere domande a cui è possibile rispondere:

3) La commutazione di un pin in un loop con la funzione DigitalWrite è lenta.Ecco perché ottieni solo 112 kHz.Il microcontrollore funziona ancora con un clock da 16 MHz.

4) Il trasmettitore genera la propria onda portante RF.È possibile inviare dati lenti da trasmettere al modulo.

analogsystemsrf
2020-04-17 01:43:05 UTC
view on stackexchange narkive permalink

Il modulo radio può implementare semplicemente la codifica on / off.Per 433 MHz, la velocità dei dati deve essere bassa, quindi le bande laterali si adattano all'assegnazione di 1 MHz.

Gli apriporta da garage sono di questo tipo.

Pratik Kunkolienkar
2020-04-18 22:41:21 UTC
view on stackexchange narkive permalink

Arduino funziona a 16 MHz. Ciò significa che se l'hai programmato in assembly, ogni istruzione richiederebbe \ $ \ frac {1} {16 \ times10 ^ {6}} = 62.5 \ mathrm {nS} \ $ . Probabilmente non vuoi fare il montaggio. Il compilatore è abbastanza efficiente da convertire il codice in assembly e quindi in esadecimale.

Credo che sia la frequenza più alta che posso ottenere

Il motivo per cui stai ottenendo una frequenza inferiore a 8 MHz (16/2; 1 istruzione per accendere il pin 1, istruzione per spegnerlo) è che Arduino ha molto overhead che rende più facile per i principianti avvia la codifica ma rende il programma relativamente più lento.

Copia e incolla il seguente codice per sostituire la tua funzione loop ():

  loop ()
{
    PORTD ^ = (1<<PD3);
}
 

Nessun ritardo, solo quella riga. L'ultima volta che l'ho provato, ho ottenuto un'onda quadra a 3MHz. Questo non è ancora l'8MHz previsto. Ora proviamo a bypassare la funzione loop () aggiungendo un ciclo while infinito al suo interno.

  loop ()
{
    mentre (1)
    {
      PORTD ^ = (1<<PD3);
    }
}
 

Tadaa !!! Ora dovresti ricevere il segnale a 8 MHz.

Molte persone hanno già spiegato la domanda a 433 MHz. Ho solo pensato di dover aggiungere il mio discorso sulla frequenza. Sarei felice di spiegare cosa sta succedendo nel codice, se lo desideri

Probabilmente non otterrai ancora un segnale a 8 MHz, perché PORTS ^ = (1 << PD3) probabilmente richiede più di 1 ciclo.
Probabilmente hai ragione.Ma è vicino
Schultzie
2020-04-18 05:58:43 UTC
view on stackexchange narkive permalink

Il 433 MHz è la frequenza prodotta dalla radio.

I dati trasferiti sulla banda laterale della radio non saranno mai veloci come il segnale portante.

Se metti un oscilloscopio alla radio, otterrai il segnale a 433 MHz.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...