WeMos D1 (esp8266): HardwareSerial shield Ebyte LoRa (e32, e22 e e220)

Spread the love

EByte LoRa E32 TTL 100 Wemos D1 shield PCB main page
EByte LoRa E32 TTL 100 Wemos D1 shield PCB main page.

Ho creato una libreria per il dispositivo EByte LoRa ed anche uno shield. Tuttavia, quando l’ho usato in un altro progetto ho avuto il problema del ridotto numero di pins visto che 2 erano usati dal SoftwareSerial. Per risolvere queste problematiche sono passatto all’HardwareSerial. Gli ampere potrebbero essere insufficienti quindi aggiungo un regolatore di tensione per alimentare l’EByte e32 in uno e nell’altro shield direttamente dai 5v.

sx1278 sx1276 wireless lora uart module serial 3000m Arduino 433 rf

SoftwareSerial shield

Quindi questo shield è abbastanza diverso da quello mostrato su “Ebyte LoRa E32 per Arduino, esp32 o esp8266: WOR (wake on radio) anche il microcontrollore ed il nuovo WeMos D1 shield” lo schema precedente è questo

LoRa E32-TTL-100 and Wemos D1 fully connected shield old version
LoRa E32-TTL-100 and Wemos D1 fully connected shield old version

E il risultato è

WeMos D1 mini shield photo UP with description
WeMos D1 mini shield photo UP with description

WeMos LoRa shield con SoftwareSerial PCBWay
PCB from PCBWay

HardwareSerial shield con regolatore di tensione 3.3vge regulator

Il nuovo shield è simile al precedente, ma ha più funzionalità, ma ha il limite di 3,3v per l’alimentazione al dispositivo LoRa, di conseguenza limitandone la potenza.

EByte LoRa E32 Wemos D1 shield to hardwareserial
EByte LoRa E32 Wemos D1 shield to hardwareserial

Come puoi vedere ora, c’è un regolatore di tensione per alimentare il dispositivo e32 e RX, TX è collegato a TX e RX del microcontrollore, un pin è libero per collegare Serial to USB per eseguire il debug su Serial1.

Quindi lo schema PCB diventa così

EByte LoRa E32 Wemos D1 shield PCB to hardwareserial
EByte LoRa E32 Wemos D1 shield PCB to hardware serial

Più complesso e con più pin e pulsanti, ora AUX, M0 e M1 sono selezionabili e hai due opzioni per ogni ingresso e32.

Ecco il prototipo fresato.

EByte LoRa E32 Wemos D1 shield PCB milled
EByte LoRa E32 Wemos D1 shield PCB milled.

Ed ecco tutte le opzioni

EByte LoRa E32 Wemos D1 shield PCB up description
EByte LoRa E32 Wemos D1 shield PCB up description

Ecco il BOM

ObjectDesc
2Electrolytic Capacitorcapacitance 10µF
2Generic female header – 8 pins2.54mm ♀
1Generic female header – 7 pins2.54mm ♀
7Generic male header – 2 pins2.54mm ♂
3Generic male header – 3 pins2.54mm ♂
1DIP SWITCHpackage dipswitch-03; channels 1
1Lora E32voltage 3-5V; type Basic
34.7kΩ Resistor
210kΩ Resistor
1LD1117V33package 78xxl; voltage regulator 3.3V; chip LD1117VXX
1WeMos D1 MiniCPU ESP-8266EX

WeMos D1 su WeMos D1 mini - NodeMCU V2 V2.1 V3 - esp01 - esp01 programmer

EBYTE e32 su AliExpress (433MHz 5Km) - AliExpress (433MHz 8Km) - AliExpress (433MHz 16Km) - AliExpress (868MHz 915MHz 5.5Km) - AliExpress (868MHz 915MHz 8Km)

3.3v voltage regulator su AliExpress SMD (AMS1117) - AliExpress 3.3v (LM1117) - AliExpress 5v (7805) - AliExpress 9v (7809)AliExpress 12v (7812) - AliExpress 3.3v TO-92 (78L33)

Dip Switch su AliExpress

Video della saldatura

Ecco dove reperire il PCB


WeMos LoRa shield con regolatore di tensione a 3.3v PCBWay
PCB from PCBWay

HardwareSerial shield versione 5v

Dopo un po capisco che per raggiungere una buona distanza devo alimentare il dispositivo LoRa con 5v, e rifare lo shield come da foto.

EByte LoRa Exx Wemos D1 shield PCB up with 5v 3v3 switch
EByte LoRa Exx Wemos D1 shield PCB up with 5v 3v3 switch

I passaggi di saldatura sono gli stessi, ma rimuovo il regolatore di tensione e aggiungo un interruttore da 3,3V all’alimentazione USB da 5 V.

Ebyte LoRa Exx WemosD1 shield hw 5v pcb
Ebyte LoRa Exx WemosD1 shield hw 5v PCB

Ecco l’elenco delle parti.

ObjectDesc
2Generic female header – 8 pins2.54mm ♀
1Generic female header – 7 pins2.54mm ♀
7Generic male header – 2 pins2.54mm ♂
3Generic male header – 3 pins2.54mm ♂
1DIP SWITCHpackage dipswitch-03; channels 1
1Lora E32voltage 3-5V; type Basic
34.7kΩ Resistor
210kΩ Resistor
1WeMos D1 MiniCPU ESP-8266EX

WeMos D1 su WeMos D1 mini - NodeMCU V2 V2.1 V3 - esp01 - esp01 programmer

EBYTE e32 su AliExpress (433MHz 5Km) - AliExpress (433MHz 8Km) - AliExpress (433MHz 16Km) - AliExpress (868MHz 915MHz 5.5Km) - AliExpress (868MHz 915MHz 8Km) Dip Switch su AliExpress

Ed ecco il risultato finale.

EByte LoRa Exx Wemos D1 shield PCB 3v3 5v switch
EByte LoRa Exx Wemos D1 shield PCB 3v3 5v switch

Qui puoi reperire il PCB


WeMos LoRa shield con switch da 3.3v a 5v PCBWay
PCB from PCBWay

Esempio

Un esempio di configurazione dello shield è

LoRa_E32 e32ttl(&Serial, D3, D0, D8);

Ma ricorda, AUX con un ponticello di cambio può usare il pin D3 o D6, M0 può essere D0 o D5, M1 può essere D8 o D7.

Ecco un semplice scketch per recuperare la configurazione del dispositivo; fare riferimento al tutorial completo della libreria per maggiori dettagli sui “Dispositivi LoRa e32”.

/*
 * LoRa E32-TTL-100
 * Get configuration.
 * https://mischianti.org
 *
 */
#include "Arduino.h"
#include "LoRa_E32.h"

LoRa_E32 e32ttl(&Serial, D3, D0, D8);

void printParameters(struct Configuration configuration);
void printModuleInformation(struct ModuleInformation moduleInformation);

void setup() {
	Serial.begin(9600);
	delay(500);

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

	ResponseStructContainer c;
	c = e32ttl100.getConfiguration();
	// It's important get configuration pointer before all other operation
	Configuration configuration = *(Configuration*) c.data;
	Serial.println(c.status.getResponseDescription());
	Serial.println(c.status.code);

	printParameters(configuration);

	ResponseStructContainer cMi;
	cMi = e32ttl100.getModuleInformation();
	// It's important get information pointer before all other operation
	ModuleInformation mi = *(ModuleInformation*)cMi.data;

	Serial.println(cMi.status.getResponseDescription());
	Serial.println(cMi.status.code);

	printModuleInformation(mi);
}

void loop() {

}
void printParameters(struct Configuration configuration) {
	Serial.println("----------------------------------------");

	Serial.print(F("HEAD BIN: "));  Serial.print(configuration.HEAD, BIN);Serial.print(" ");Serial.print(configuration.HEAD, DEC);Serial.print(" ");Serial.println(configuration.HEAD, HEX);
	Serial.println(F(" "));
	Serial.print(F("AddH BIN: "));  Serial.println(configuration.ADDH, BIN);
	Serial.print(F("AddL BIN: "));  Serial.println(configuration.ADDL, BIN);
	Serial.print(F("Chan BIN: "));  Serial.print(configuration.CHAN, DEC); Serial.print(" -> "); Serial.println(configuration.getChannelDescription());
	Serial.println(F(" "));
	Serial.print(F("SpeedParityBit BIN    : "));  Serial.print(configuration.SPED.uartParity, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTParityDescription());
	Serial.print(F("SpeedUARTDataRate BIN : "));  Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getUARTBaudRate());
	Serial.print(F("SpeedAirDataRate BIN  : "));  Serial.print(configuration.SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println(configuration.SPED.getAirDataRate());

	Serial.print(F("OptionTrans BIN       : "));  Serial.print(configuration.OPTION.fixedTransmission, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getFixedTransmissionDescription());
	Serial.print(F("OptionPullup BIN      : "));  Serial.print(configuration.OPTION.ioDriveMode, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getIODroveModeDescription());
	Serial.print(F("OptionWakeup BIN      : "));  Serial.print(configuration.OPTION.wirelessWakeupTime, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getWirelessWakeUPTimeDescription());
	Serial.print(F("OptionFEC BIN         : "));  Serial.print(configuration.OPTION.fec, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getFECDescription());
	Serial.print(F("OptionPower BIN       : "));  Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println(configuration.OPTION.getTransmissionPowerDescription());

	Serial.println("----------------------------------------");

}
void printModuleInformation(struct ModuleInformation moduleInformation) {
	Serial.println("----------------------------------------");
	Serial.print(F("HEAD BIN: "));  Serial.print(moduleInformation.HEAD, BIN);Serial.print(" ");Serial.print(moduleInformation.HEAD, DEC);Serial.print(" ");Serial.println(moduleInformation.HEAD, HEX);

	Serial.print(F("Model no.: "));  Serial.println(moduleInformation.model, HEX);
	Serial.print(F("Version  : "));  Serial.println(moduleInformation.version, HEX);
	Serial.print(F("Features : "));  Serial.println(moduleInformation.features, HEX);
	Serial.println("----------------------------------------");
}

Grazie

  1. WeMos D1 (esp8266): shield i2c per la gestione di encoder, pulsanti multipli e led
  2. WeMos D1 (esp8266): relè shield
  3. WeMos D1 (esp8266): shield Ebyte LoRa (e32, e22 e e220)

Spread the love

Lascia un commento

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