Visualitzadors. Pantalles OLED vs LCD
A més del monitor sèrie, que obliga a tenir obert l'IDE, podem mostrar informació amb altres dispositius, com les pantalles:
Visualitzadors. Pantalles OLED vs LCD
A més del monitor sèrie, que obliga a tenir obert l'IDE, podem mostrar informació amb altres dispositius, com les pantalles:
és una tecnologia de comunicació sense fils, igual que WiFi, Bluetooth ...
També utilitza l'espectre sense llicència de la banda de ràdio ISM.
A Europa, s'utilitza un pla de freqüències sense llicència al voltant dels 868Mhz, mientre que als EUA és 915Mhz, i a Àsia 433Mhz.
LoRa utilitza un tipus de modulació en radiofreqüència anomenat CSS (Chirp Spread Spectrum). Aquesta tecnologia de modulació s'utilitza en comunicacions militars y espacials des de fa molt temps.
El seu gran avantatge és que permet la comunicació de llarg abast de petites quantitats de dades (amplada de banda baixa), alta immunitat a interferències, i mínim consum d'energia.
Topologies
Podem utilitzar LoRa en comunicació punt a punt o per construir una xarxa LoRa (utilitzant el protocol LoraWAN per exemple).
En la comunicació punt a punt, dos dispositius habilitats per a LoRa es comuniquen entre si mitjançant senyals de RF.
Això pot ser útil per a intercanviar dades entre dues plaques ESP32 equipades amb xips transceptors (emissor-receptor) LoRa que estiguin relativament lluny entre si o en entorns sense cobertura WiFi, on un dels dos (el receptor) pot fer de pont amb Internet.
Els nostres mòduls:
Tenim 2 mòduls de 868Mhz ESP32 LoRa amb pantalla OLED de 0,96" (128x64 px). Overview
Els hem comprat aqui, ens han costat 10,53 € cada un
Crec que no tenen suport per targeta micro SD. N'hi ha mòduls que en tenen. Val la pena?
Características:
-
Voltaje de funcionamiento: 3,3 V a 7V
-
Potencia: 1 W
-
Frecuencia: área de aplicación 868 MHz
-
Rango de temperatura de funcionamiento: -40 °C a + 90 °C
-
Tamaño: 53*27*8 mm. Color: negro
-
Velocidad de datos del modo directo: 150Mbps a 11n HT40, 72Mbps a 11nHT20, 54Mbps a 11g y 11Mbps a 11b
-
Potencia de transmisión: 19,5 dBm a 11,5 dB, 16,5 dBm a 11,5 dB, 15.5dBm a 11.5dB
-
Sensibilidad del receptor: hasta-98 dBm
-
UDP dura 135 Mbps
-
La antena tiene que estar conectada a la interfaz IPEX (si la antena no está conectada, el chip LoRa se puede dañar).
-
Circuito de carga y descarga de la batería de litio. Cuando la batería esté llena, el LED azul dejará de funcionar.
-
Presta atención a los polos positivos y negativos de la batería al usarlo, de lo contrario se dañará.
-
Al usar la entrada de señal táctil de la pantalla táctil del puerto IO, debe agregar un condensador extraíble de 100nF a este pin.
-
Soporta análisis de protocolo de software Sniffer, estación, SoftAP y Wi-Fi
-
Paquete incluido: 1 módulo Bluetooth wifi, 2 conector pin, 1 cable de alimentación, 1 antena
Pautes de programació
Les llibreries
Per la OLED calen les llibreries que ja coneixem: Adafruit_SSD1306 library i Adafruit_GFX library.
A més, cal afegir la llibreria LoRa:
Exemple
Com a exemple, crearem un remitent LoRa simple i un receptor LoRa.
El remitent enviarà un mensaje de "hola" seguit d'un comptador amb finalitat de proba cada 10 segons.
Aquest missatge es pot canviar fàcilment amb dades útils com lectures de sensors o notificacions.
Remitent
// llibreries per LoRa:
#include <SPI.h>
#include <LoRa.h>
// llibreries per pantalla OLED:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// definició dels pins SPI utilitzats pel mòdul LoRa:
#define SCK 5
#define MISO 19
#define MOSI 27
#define SS 18
#define RST 14
#define DIO0 26
// definició de la freqüència:
#define BAND 866E6 // Europa: 866E6, Nord Amèrica: 915E6, Asia: 433E6
// definició de la pantalla OLED:
#define OLED_SDA 4
#define OLED_SCL 15
#define OLED_RST 16
#define ample 128 // amplada pantalla, en pixels
#define alt 64 // alçada pantalla, en pixels
// variable comptador per fer seguiment del num d'enviaments:
int comptador = 0;
// creació de l'objecte pantalla (en aquest cas hi ha pin reset):
Adafruit_SSD1306 oled (ample, alt, &Wire, OLED_RST);
El resultat:
Un cop carregat el codi a la placa, aquesta hauria de començar a enviar paquets LoRa i mostrar els missatges a la pantalla OLED.
void setup ( )
{
// resetejat inicial de l'OLED
pinMode (OLED_RST, OUTPUT);
digitalWrite (OLED_RST, LOW);
delay (20);
digitalWrite (OLED_RST, HIGH);
// inicia la comunicació I2C amb l'OLED
Wire.begin (OLED_SDA, OLED_SCL);
// inicialització de l'OLED
if (! oled.begin (SSD1306_SWITCHCAPVCC, 0x3C, false, false))
// Els paràmetres establerts com a falsos asseguren
que la llibreria no utilitzi els pins I2C per defecte, sinò els
pins definits al codi (GPIO 4 i GPIO 15)
{
Serial.println (F ("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
// mostra missatge inicial a l'OLED
oled.clearDisplay ( );
oled.setTextColor (WHITE);
oled.setTextSize (1);
oled.setCursor (0,0);
oled.print ("LORA SENDER ");
oled.display ( );
// per mostrar missatges de testeig pel monitor sèrie:
Serial.begin (115200);
Serial.println ("LoRa Sender Test");
// inicialització del mòdul LoRa
SPI.begin (SCK, MISO, MOSI, SS); // pins SPI del mòdul
LoRa.setPins (SS, RST, DIO0); // configuració del mòdul transceptor
if (! LoRa.begin (BAND))
{
Serial.println ("Starting LoRa failed!");
while (1);
}
// si la inicialització és correcta, mostra missatges
Serial.println ("LoRa Initializing OK!");
oled.setCursor (0,10);
oled.print ("LoRa Initializing OK!");
oled.display ( );
delay (2000);
}
void loop ( )
{
Serial.print ("Sending packet: ");
Serial.println (comptador);
// Send LoRa packet to receiver:
LoRa.beginPacket ( );
LoRa.print ("hello ");
LoRa.print (comptador);
LoRa.endPacket ( );
oled.clearDisplay ( );
oled.setCursor (0,0);
oled.println ("LORA SENDER");
oled.setCursor (0,20);
oled.setTextSize (1);
oled.print ("LoRa packet sent.");
oled.setCursor (0,30);
oled.print ("Comptador:");
oled.setCursor (50,30);
oled.print (comptador);
oled.display ( );
comptador++;
delay (10000);
}