Go Down

Topic: Come testare il funzionamento di transceiver HC-12? (Read 178 times) previous topic - next topic

electronics_project

Ciao a tutti! :)
Apro questo topic per chiedervi consigli riguardo al transceiver HC-12 che mi è stato consigliato da utenti nel forum.
Link Amazon dove ho acquistato i transceiver: AZDelivery modulo radio HC -12

La cosa che mi preme di più quando compro qualcosa di nuovo è testarne perlomeno il funzionamento (prima ancora di capire tutti i dettagli e le istruzioni che compongono il modulo). Quindi ho cercato un tutorial su internet che mi introducesse il funzionamento del transceiver accompagnato da un codice, a quanto pare, funzionante: video Youtube con test comandi AT

Come nel video ho proceduto con il test dei comandi AT per capire se la seriale riuscisse a comunicare con il transceiver.. e fin lì tutto ok, risponde con OK oppure con le varie conferme di avvenuta impostazione.

I collegamenti sono i seguenti:
PIN VCC -> PIN 5V ARDUINO
PIN GND -> PIN GND ARDUINO
PIN TX -> PIN 2 ARDUINO (impostato come RX)
PIN RX -> PIN 3 ARDUINO (impostato come TX)
PIN SET -> PIN GND ARDUINO

Il codice di test dei comandi AT è il seguente
Code: [Select]
#include <SoftwareSerial.h>;
#define RX 2 //Connect to the TX pin of the HC-12
#define TX 3 //Connect to the RX pin of the HC-12
SoftwareSerial mySerial(RX, TX);

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);

}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}


Sono allora passato al tutorial successivo, in cui avviene una comunicazione tra due dispositivi: video Youtube comunicazione moduli radio

Qui non sono invece stato in grado di mettere in piedi la comunicazione.
Siccome la mia inesperienza con i moduli radio si fa sentire  :-X c'è qualche modo per testare il funzionamento del transceiver senza che ci sia un modulo ricevitore? Del tipo che mando un comando di scrittura sul transceiver e verifico che sia avvenuta con successo.

Grazie in anticipo!

electronics_project

Confermo di essere riuscito a testarne il funzionamento in modo alquanto veloce, avevo semplicemente fatto confusione con i collegamenti TX-RX che si devono incrociare!
Che voi sappiate, il pin di SET come deve essere utilizzato? So che lo posso utilizzare in modo tale che dalla seriale posso impostare vari parametri del transceiver, ma dopo che li ho correttamente impostati cosa devo farne? Posso lasciarlo scollegato (e ho visto che tutto funziona comunque) o devo collegarlo in qualche modo?

AuAnWeb

Confermo di essere riuscito a testarne il funzionamento in modo alquanto veloce, avevo semplicemente fatto confusione con i collegamenti TX-RX che si devono incrociare!
Che voi sappiate, il pin di SET come deve essere utilizzato? So che lo posso utilizzare in modo tale che dalla seriale posso impostare vari parametri del transceiver, ma dopo che li ho correttamente impostati cosa devo farne? Posso lasciarlo scollegato (e ho visto che tutto funziona comunque) o devo collegarlo in qualche modo?
puoi lasciare scollegato il pin SET, serve solo per entrare in modalità AT.

electronics_project

puoi lasciare scollegato il pin SET, serve solo per entrare in modalità AT.
Quindi mi confermi che il pin SET si potrebbe utilizzare per impostare in modo dinamico il funzionamento del transceiver?
Per esempio se con Arduino gli volessi dare un certo comando lo tengo a livello basso, se invece voglio che funzioni da antenna (riceve e trasmette) lo devo mettere a livello alto?

electronics_project

Ho provato a collegare il pin di set e il codice è il seguente:
Code: [Select]
void loop() {
  switch(stato){
   
    case INIZIALIZZAZIONE:
    digitalWrite(SETPIN, HIGH);
    stato = LETTURA;
    break;

    case LETTURA:
    digitalWrite(SETPIN, LOW);
    delay(40);
    HC12.println("AT");
    digitalWrite(SETPIN, HIGH);
    delay(80);
    temp = temp_umid(0);
    umid = temp_umid(1);
    pres = press_alt(0);
    stato = SCRITTURA;
    break;

    case SCRITTURA:
    trasmis(Nsens, temp, umid, pres);
    stato = LETTURA;
    digitalWrite(SETPIN, LOW);
    delay(40);
    HC12.flush();
    HC12.println("AT+SLEEP");
    digitalWrite(SETPIN, HIGH);
    delay(20000);
    break;

    default:
    stato = INIZIALIZZAZIONE;
    break;
  }
}


Riporto solo la sezione loop.
Faccio notare che HC12 è il nome della Software Serial assegnata al HC-12.
La mia idea è la seguente: in LETTURA sveglio il modulo HC-12 (qualora sia in sleep mode), per farlo abbasso il pin set, mando comando "AT" (con il delay richiesto nel manuale), alzo nuovamente il set pin, eseguo le varie opeazioni (in particolare la funzione trasmis effettua la trasmissione con il transceiver), poi sempre in SCRITTURA abbasso il set pin, libero la seriale del modulo con un flush, mando il comando di sleep, alzo il set pin e mi metto in pausa (con un delay di 20 secondi).
Il tutto si ripete ciclicamente.
Tuttavia la Seriale (quella che comunica con il PC) è abilitata ma non sono in grado di vedere se effettivamente sia entrato in modalità sleep, ovvero non vedo le risposte ai comandi AT.
Può funzionare o mi devo preoccupare visto che non ricevo risposta sulla seriale?

Go Up