Collegamento dell’EByte E70 ai dispositivi Raspberry Pi Pico (rp2040) ed un semplice sketch di esempio


Raspberry Pi Pico, rp2040 e Ebyte LoRa E70 CC1310
Raspberry Pi Pico, rp2040 e Ebyte RF E70 CC1310

Benvenuti di nuovo nella nostra serie su come collegare l’EByte E70 a vari dispositivi! In questo articolo, ti guideremo attraverso un semplice esempio di sketch che ti aiuterà a stabilire una connessione tra l’EByte E70 e i tuoi dispositivi rp2040. Quindi, iniziamo subito!

Comprendere l’EByte E70

L’EByte E70 è un modulo ricetrasmettitore ad alte prestazioni, noto per le sue capacità di comunicazione a lungo raggio e per il basso consumo energetico. Opera nelle bande di frequenza sub-GHz ed è progettato per la comunicazione wireless su lunghe distanze, rendendolo ideale per applicazioni IoT che richiedono comunicazioni affidabili ed efficienti su ampie aree.

Prerequisiti

Prima di iniziare, assicurati di avere i seguenti elementi:

  • Un dispositivo Raspberry Pi Pico
  • Il modulo EByte E70 con un adattatore per breadboard
  • L’IDE di Arduino installato sul tuo computer
  • I cavi USB necessari per collegare il dispositivo Raspberry Pi Pico e il modulo EByte E70 al tuo computer
  • Breadboard

Qui le varianti rp2040 adatte Official Pi Pico - Official Pi Pico W - Waveshare rp2040-zero - WeAct Studio rp2040

Qui le varianti E70 RF E70 433/915 T S/S2 - E70 433/915 MT S

Configurazione dell’Hardware

Pinout E70 xxxT14S2

Utilizzerò una versione E70 S2 per il mio test perché ha un fattore di forma comodo con un’antenna SMA integrata.

Socket stampato in 3D per breadboard

Ho creato un semplice socket con la mia stampante 3D per prototipare rapidamente (e gestire) l’E70 S2; ecco il modello 3D e il risultato su una breadboard.

È molto semplice e utilizza la stessa tecnica di altri socket che ho già creato.

Dopo la stampa, devi aggiungere la scrittura all’interno del foro.

Socket E70 

Inseriscilo nei fori più interni e spingilo fuori per circa 3 mm

Piega il filo verso l’esterno dell’adattatore.

Taglia la parte esterna del filo ed estraila.

quindi reinseriscilo nei fori interni ed esterni.

Ora verifica se è necessario tagliare ulteriormente il filo del foro interno e piegarlo.

Ripeti per tutti i pin. Il risultato è molto soddisfacente.

Cablatura

Raspberry Pi Pico

Il Raspberry Pi Pico è l’ultimo concorrente MCU di base in questa gamma di mercato.

Cablatura.

E70Raspberry Pi Pico
M010
M111
M212
TXRX2
RXTX2
AUX2
VCC3.3v
GNDGND

Costruttore

RF_E70 e70ttl(&Serial2, 2, 10, 11, 12); 

Configurare l’IDE di Arduino

Ho scritto alcuni articoli a riguardo, che puoi trovare qui.

  1. Schede Raspberry Pi Pico e rp2040: pinout, specifiche e configurazione IDE Arduino
  2. Schede Raspberry Pi Pico e rp2040: filesystem LittleFS integrato
  3. Scheda Raspberry Pi Pico e rp2040: ethernet w5500 e requests HTTP e HTTPS (SSL)
  4. Schede Raspberry Pi Pico e rp2040: WiFiNINA con coprocessore WiFi ESP32
  5. Schede Raspberry Pi Pico e rp2040: come utilizzare una scheda SD
  6. Dallas ds18b20
  7. Collegamento dell’EByte E70 ai dispositivi Raspberry Pi Pico (rp2040) ed un semplice sketch di esempio

Con l’IDE di Arduino configurato, possiamo procedere con l’esempio di sketch.

Installazione della Libreria

Potete trovare la libreria su GitHub.

Ma per semplicità, l’ho aggiunta al gestore delle librerie di Arduino.

Sketch di esempio

La libreria offre molti esempi, e devi solo decommentare il costruttore corretto.

/*
 * EByte RF E70
 * send a transparent message, you must check that the transmitter and receiver have the same
 * CHANNEL ADDL and ADDH
 *
 * You must uncommend the correct constructor.
 *
 * by Renzo Mischianti <https://www.mischianti.org>
 *
 * https://www.mischianti.org
 *
 * E70		  ----- WeMos D1 mini	----- esp32			----- Arduino Nano 33 IoT	----- Arduino MKR	----- Raspberry Pi Pico   ----- stm32               ----- ArduinoUNO
 * M0         ----- D6 				----- 19 			----- 4 					----- 2 			----- 9 			      ----- PB0 		       	----- 8 Volt div
 * M1         ----- D7 				----- 21 			----- 5 					----- 3 			----- 10 			      ----- PB1 		       	----- 7 Volt div
 * M1         ----- D8 				----- 22 			----- 6 					----- 4 			----- 11 			      ----- PB10 		      	----- 6 Volt div
 * TX         ----- D3 (PullUP)		----- RX2 (PullUP)	----- RX1 (PullUP)			----- 14 (PullUP)	----- 8 (PullUP)	      ----- PA2 RX2 (PullUP)    ----- 4 (PullUP)
 * RX         ----- D4 (PullUP)		----- TX2 (PullUP)	----- TX1 (PullUP)			----- 13 (PullUP)	----- 9 (PullUP)	      ----- PA3 TX2 (PullUP)    ----- 5 Volt div (PullUP)
 * AUX        ----- D5 (PullUP)		----- 15  (PullUP)	----- 2  (PullUP)			----- 0  (PullUP)	----- 2  (PullUP)	      ----- PA0  (PullUP)       ----- 3 (PullUP)
 * VCC        ----- 3.3v/5v			----- 3.3v/5v		----- 3.3v/5v				----- 3.3v/5v		----- 3.3v/5v		      ----- 3.3v/5v             ----- 3.3v/5v
 * GND        ----- GND				----- GND			----- GND					----- GND			----- GND			      ----- GND                 ----- GND
 *
 *	Sub-packet can be emulated by set
 *	M0 = LOW
 *	M1 = HIGH
 *	M2 = LOW
 *	Continuous
 *	M0 = HIGH
 *	M1 = LOW
 *	M2 = LOW
 *
 */

#include "Arduino.h"
#include "RF_E70.h"

// ---------- esp8266 pins --------------
//RF_E70 e70ttl(RX, TX, AUX, M0, M1, M2);  // Arduino RX <-- e70 TX, Arduino TX --> e70 RX
//RF_E70 e70ttl(D3, D4, D5, D7, D6, D7); // Arduino RX <-- e70 TX, Arduino TX --> e70 RX AUX M0 M1
//RF_E70 e70ttl(D2, D3); // Config without connect AUX and M0 M1

//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(D2, D3); // Arduino RX <-- e70 TX, Arduino TX --> e70 RX
//RF_E70 e70ttl(&mySerial, D5, D6, D7, D8); // AUX M0 M1
// -------------------------------------

// ---------- Arduino pins --------------
//RF_E70 e70ttl(4, 5, 3, 8, 7, 6); // Arduino RX <-- e70 TX, Arduino TX --> e70 RX AUX M0 M1
//RF_E70 e70ttl(4, 5); // Config without connect AUX and M0 M1

//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(4, 5); // Arduino RX <-- e70 TX, Arduino TX --> e70 RX
//RF_E70 e70ttl(&mySerial, 3, 8, 7, 6); // AUX M0 M1
// -------------------------------------

// ------------- Arduino Nano 33 IoT -------------
//RF_E70 e70ttl(&Serial1, 2, 4, 5, 6); //  RX AUX M0 M1
// -------------------------------------------------

// ------------- Arduino MKR WiFi 1010 -------------
// RF_E70 e70ttl(&Serial1, 0, 2, 3, 4); //  RX AUX M0 M1
// -------------------------------------------------

// ---------- esp32c3 pins --------------
// RF_E70 e70ttl(&Serial1,  1, 2, 3, 4,); //  RX AUX M0 M1

//RF_E70 e70ttl(4, 5, &Serial1, 6, 1, 2, 3, UART_BPS_RATE_9600); //  esp32 RX <-- e70 TX, esp32 TX --> e70 RX AUX M0 M1
// -------------------------------------

// ---------- esp32 pins --------------
//RF_E70 e70ttl(&Serial2, 15, 19, 21, 22); //  RX AUX M0 M1

//RF_E70 e70ttl(&Serial2, 22, 4, 18, 21, 19, UART_BPS_RATE_9600); //  esp32 RX <-- e70 TX, esp32 TX --> e70 RX AUX M0 M1
// -------------------------------------

// ---------- Raspberry PI Pico pins --------------
RF_E70 e70ttl(&Serial2, 2, 10, 11, 12); //  RX AUX M0 M1
// -------------------------------------

// ---------------- STM32 --------------------
// HardwareSerial Serial2(USART2);   // PA3  (RX)  PA2  (TX)
// RF_E70 e70ttl(&Serial2, PA0, PB0, PB1, PB10); //  RX AUX M0 M1
// -------------------------------------------------

 void setup() {
  Serial.begin(9600);
#if defined(ARDUINO_ARCH_STM32) || defined(__STM32F1__) || defined(__STM32F4__)
	Serial.dtr(false);
#endif

  delay(500);

  // Startup all pins and UART
  e70ttl.begin();

//  e70ttl.setMode(MODE_CONTINUOUS_1);

//  If you have ever change configuration you must restore It

  Serial.println("Hi, I'm going to send message!");
  // Send message
  ResponseStatus rs = e70ttl.sendMessage("Hello, world?");
  // Check If there is some problem of succesfully send
  Serial.println(rs.getResponseDescription());
}

void loop() {
	// If something available
  if (e70ttl.available()>1) {
	  // read the String message
	ResponseContainer rc = e70ttl.receiveMessage();
	// Is something goes wrong print error
	if (rc.status.code!=1){
		Serial.println(rc.status.getResponseDescription());
	}else{
		// Print the data received
		Serial.println(rc.status.getResponseDescription());
		Serial.println(rc.data);
	}
  }
  if (Serial.available()) {
	  String input = Serial.readString();
	  e70ttl.sendMessage(input);
  }
}

Caricamento dello Sketch

Prima di caricare lo sketch sul tuo dispositivo, assicurati di aver selezionato la scheda e la porta corrette nell’Arduino IDE. Quindi, fai clic sul pulsante “Carica” per compilare e caricare lo sketch.

Una volta completato il caricamento, apri il Monitor Seriale andando su “Strumenti” > “Monitor Seriale” o premendo “Ctrl+Shift+M”. Imposta il baud rate a 9600, e dovresti vedere i dati ricevuti dal modulo EByte E70 visualizzati nel Monitor Seriale.

Grazie


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *