Node autònom amb alimentació solar, antena DIY, Arduino Pro Micro i transceiver RFM95

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció

(TBD)

Construcció de l'antena

Mirar també:

El disseny que es proposa és utilitzar el mòdul RFM95 (transceiver), amb Arduino Pro Mini, i una placa PCB expressa que et permet soldar el connector de l'antena directament a la placa, i també les connexions del RFM95 al MCU.

Una altra possibilitat, la més ràpida, és utilitzar directament el TTGO que ja tinc.

Calculadora d'antenes:

Les dimensions de la meva antena:

Freqüència: 868 MHz
Velocity Factor = 0.95 vf

A. Vertical Monopole Radiating Element (λ*0.25)*vf: 8.2 cm
B. Radials (λ*0.28)*vf: 9.2 cm (hi ha 4 radials)
Actual wavelength: 34.6 cm	

NOTA: The quarter wave vertical antenna is the simplest form of vertical antenna. It provides good performance combined with an omnidirectional radiation pattern and simplicity of construction. Per tant, l'antena que he construït és omnidireccional, i per l'aplicació que vull fer (projecte Tancalaporta), és millor un disseny d'antena unidireccional: una Yagi antenna, per exemple.

Conceptes d'antenes

RSSI: Received Signal Strength Indicator

El RSSI de l'antena es pot veure en els missatges de TTN. És a dir, dins de la trama que envia un node, el que interessa és el payload. Però també es pot veure informació interessant com el RSSI, que dóna idea de la qualitat del senyal.

El indicador de fuerza de la señal recibida (RSSI por las siglas del inglés Received Signal Strength Indicator), es una escala de referencia (en relación a 1 mW) para medir el nivel de potencia de las señales recibidas por un dispositivo en las redes inalámbricas (típicamente WIFI o telefonía móvil).

La escala tiene al valor 0 (cero) como centro; representa 0 RSSI, o 0 dBm. Aunque teóricamente puede darse el caso de medirse valores positivos, generalmente la escala se expresa dentro de valores negativos; cuanto más negativo, mayor pérdida de señal.

El RSSI indica intensidad recibida, no calidad de señal, ya que esta última se determina contrastando la intensidad de la señal respecto de la relación señal/ruido (Eb/No).

Nota: En esta escala, un nivel de 0 dBm es igual a 1 mW (milivatio).

Interpretación de los valores. En una escala de 0 a -80 RSSI:

    0: señal ideal, difícil de lograr en la práctica.
    -40 a -60: señal idónea con tasas de transferencia estables. dependiendo.
    -60: enlace bueno; ajustando TX y basic rates se puede lograr una conexión estable al 80%.
    -70: enlace normal -bajo; es una señal medianamente buena, aunque se pueden sufrir problemas con lluvia y viento.
    -80: es la señal mínima aceptable para establecer la conexión; puede ocurrir caídas, que se traducen en corte de comunicación (pérdida de llamada, perdida de datos, mensajes (sms) corruptos (ilegibles).

Esta escala se aplica a algunos dispositivos. Según el tipo de modulación y receptor el valor saldrá indicado de esta manera o de otra similar. No siempre es una escala logarítmica. El fabricante es el que indica que significa la escala. (si son dbm dbuV...) y en función de la modulación se saben los márgenes aceptables

Tabla de equivalencias aproximada para averiguar el nivel de cobertura en función de los dbm en aire recibidos:

    Más de -71 dBm = Excelente
    Entre -87 y -71 = Muy buena
    Entre -97 y -87 = Buena
    Entre -111 y -97= Baja cobertura
    A partir de -113 dBm = Sin cobertura

SWR (Stationary Wave Ratio, o Relació d'Ona Estacionària, ROE)

Videos per aclarir conceptes

Andreas Spiess videos:

Antenes direccionals: Yagi Antenna

Es troba per intermet calculadores de Yagi antenes. S'ha de posar 868MHz, i s'ha de decidir quants elements vols.

In summary to increase range:

Articles:

Mòdul RFM95/RFM96

Chip marking confusion between RFM95 and RFM96 RFM95 and RFM96 can be confused because they both have a chip marked with “RF96“. They are in fact different, as can be noticed in the photo above. Although the chip is the same, the components are mounted differently, reflecting their different frequency operation. The markings on the back of the module also makes this distinction.

el de 868MHz és el RF95 (però compte! perquè els dos xips estan marcats com a RF96). Revisar el video de l'enllaç (https://lowpowerlab.com/guide/moteino/transceivers/).

Footprint:

DIO2 -		-   GND
DIO1 -		-  MISO
3.3V -		-   SCK
DIO4 -		-   NSS
DIO3 -		- RESET
GND  -		-  DIO5
ANA  -		-   GND

Compres

TP4056.png

5pcs TP4056 1A 5V Lithium Battery Charging Module Mini/Micro USB Interface. Cost: 3.50e

Com es veu en la imatge, a IN+/In- connectaré la meva placa solar, i la meva bateria 18650 la connectaré a Batt+/Batt-. A més, el circuit global l'alimentaré aquí, amb la bateria. Evidentment, l'objectiu del mòdul TP4056 és carregar la bateria Li-io. Hi ha dos leds: un de càrrega, i un altre de full.

El meu node és un Wemos TTGO LORA32 amb OLED. Les especificacions diuen que es pot alimentar entre 3.3 i 7V. Intentaré alimentar-lo amb una sola bateria Li-io de 3.7V.

He comprat 4 unitats (8e)

També necessito les porta-piles per a les bateries 18650 de 3.7V

Panell solar: 8DE4 5W 5V USB Portátil Solar Panel De Viaje Camping Escalada Teléfono Móvil 7DE3

Allò interessant és que ja té la sortida USB (5V), que alimentarà directament el carregador TP4056. Cost: 3.6e.

Fins ara he treballat amb el Wemos TTGO (pantalla OLED). De cara al meu projecte té un desavantatge, i és que el connector d'antena tan petit que té segur que no és la millor opció. De cara a fer una antena pròpia, el que té sentit és poder soldar directament l'antena, i fer servir connectors més fiables. Per tant, el millor és utilitzar un RFM95 xino, que estarà connectat a un micro-arduino. A aquest RFM95 el podré soldar directament.

5,85e la unitat (2 unitats).

Els connectors per l'antena:

Efectivament, existeix el PL259 Macho a SMA Macho que és el que havia d'haver comprat:

Boost Converter: 3.7V -> 6V (4.35e)

LM2587 DC-DC Boost Converter 3-30V Step up to 4-35V Power Supply Module MAX 5A

La idea era que amb la pila de 3.7V alimentar-ho tot. Però és una mica crític. Si em fixo bé en el projecte original (https://omkarjr.in/posts/projects/LoraTCL/), de la pila tinc un boost converter a 5-6V, i amb aquests volts alimento el pin RAW del Arduino Pro Mini, assegurat-me que el Vcc del Arduino Mini són 3.3V. Fent-ho d'aquesta manera no hi ha d'haver problema.

Microcontrolador: Arduino Pro Mini (versió 3.3V)

Compte perquè hi ha dues versions: el de 5V i el de 3.3V. Ara mateix no sé quin és el que tinc. Com s'identifica?

The regulator should be marked K850(5.0V) or K833(3.3V).

The 16MHz resonator may be marked with "A1" or "A'N"
The 8MHz resonator may be marked with "80'0"

As others have indicated, you can apply up to 12V at the RAW pin, and measure the output of the regulator.

El tema és que els clons xinos (com el que tinc) no tenen perquè tenir aquestes referències. En el rellotge puc mirar si puc llegir 8 o 16. Però el més pràctic és aplicar 6-12V a RAW, i llegir el valor de Vcc.

Per al meu projecte necessito el de 3,3V, doncs la idea és alimentar el conjunt amb una sola pila de 3,7V.

Evidentment, no s'ha de confondre el Arduino Mini amb el Arduino Micro i el Arduino Nano. A més, l'Arduino Mini té una versió més petita, la Arduino Pro Mini, i és aquesta la que té dues versions (5V i 3.3V), i és la que m'interessa.

Construcció. KiCAD

Arduino pro mini.png
Architecture node lora.gif

Com a microcontrolador utilitzaré un Arduino pro mini (3.3V, 8MHz) compatible:


Pins: Veure info més detallada a: https://cdn.sparkfun.com/r/600-600/assets/learn_tutorials/1/0/4/graphicalDatasheet.png

  DTR TXO RXI VCC GND GND 
TXO	    	       RAW
RXI		       GND
RST		       RST
GND		       VCC
2		       A3
3		       A2
4		       A1
5		       A0
6		       13 (CLK)
7		       12 (MISO)
8		       11 (MOSI)
9		       10
             GND A6 A7

Faig una llibreria per a KiCAD amb aquesta geometria i pinout. Separació entre pins: 2,54mm. Separació de les dues files: 15mm. Les files de dalt i baix no cal ficar-les, no les necessito.

Els 6 pins de dalt (DTR...GND) són els pins que necessito per al programador USB/FTDI.

Interface Arduino Pro Mini - RFM95

Segueixo els pins de:

Arduino	Ard.Pin RFM95
RST     RST	RESET
VCC	 	3.3V
GND	 	GND	 
D4	4	DIO0	 
D5	5	DIO1	 
D6	6	DIO5	 
D7	7	DIO2	 
D10-SS	10	NSS	 
MOSI	11	MOSI	 
MISO	12	MISO	 
CLK	13	SCK

Però compte, que aquest pinatge ha d'estar d'acord amb el codi del sketch (té a veure amb la llibreria LMIC). Sobretot pel que fa referència als DIOs (a quins pins digitals de l'Arduino van connectats).

placa v1

(TBD)

Software (sketch arduino)

Com que tinc un Arduino Pro Mini, necessitaré un FTDI-USB per programar l'Arduino.

article1:

(codi d'exemple)

fòrum1:

que ens porta a l'article2 i article3:

De tota la documentació que he mirat, implementaré l'exemple que es proposa en l'article3:

Creo l'aplicació dins de TTN, i dins de l'aplicació creo un Device:

A TheThingsNetwork creem una nova aplicació:
application ID: lora_node_rfm95
Description: Node autònom amb Arduino Pro Mini, RFM95, alimentat per placa solar i pila

Application EUIS: 70B3D57ED001464D { 0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x01, 0x46, 0x4D }

Dins de l'aplicació registrem un Device:
REGISTER DEVICE
Device ID: sensor01
Activation Method: OTAA
Device EUI: 00AB372545ED3DA9
{ 0x00, 0xAB, 0x37, 0x25, 0x45, 0xED, 0x3D, 0xA9 }

Application EUI: 70B3D57ED001464D
{ 0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x01, 0x46, 0x4D }

App Key: 9077CF3E3E2FD06A4769D6AED54555EB
{ 0x90, 0x77, 0xCF, 0x3E, 0x3E, 0x2F, 0xD0, 0x6A, 0x47, 0x69, 0xD6, 0xAE, 0xD5, 0x45, 0x55, 0xEB }

Example code:
const char *appEui = "70B3D57ED001464D";
const char *appKey = "9077CF3E3E2FD06A4769D6AED54555EB";

static const u1_t DEVEUI[8]  = { 0x00, 0xAB, 0x37, 0x25, 0x45, 0xED, 0x3D, 0xA9 };
static const u1_t APPEUI[8] = { 0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x01, 0x46, 0x4D };
static const u1_t APPKEY[16] = { 0x90, 0x77, 0xCF, 0x3E, 0x3E, 0x2F, 0xD0, 0x6A, 0x47, 0x69, 0xD6, 0xAE, 0xD5, 0x45, 0x55, 0xEB };

Dins del sketch, a més, he de tenir la configuració correctta de com he implementat el protocol SPI, que té a veure com he connectat els pins del MCU amb el transceiver: (veure més amunt)

// Pin mapping is hardware specific.
// Pin mapping Doug Larue PCB
const lmic_pinmap lmic_pins = {
.nss = 10,
.rxtx = 0, //LMIC_UNUSED_PIN,
.rst = 0,
.dio = {4, 5, 7},
};

Llegir amb calma:

Per què necessito el protocol SPI? Doncs perquè aquesta és la manera de comunicar el MCU amb el transceiver (MOSI, MISO,...).

Control del consum

Volt amp.png

Un cop funcioni, com que l'objectiu és que sigui un mode autònom i que duri molt de temps, s'haurà de controlar el consum.

El primer aspecte de disseny per minimitzar el consum és l'el·lecció del MCU. El Arduino Pro Mini és de 8MHz (versió de 3.3V). La versió de 5V va a 16MHz.

Per controlar el consum res millor que un amperímetre. En el model que jo tinc, els cables són groc, verd i negre.

Com s'explica en l'article3 (https://www.thethingsnetwork.org/labs/story/creating-a-ttn-node), en l'apartat Low Power the ProMini (Optional - experienced users only), es pot desconnectar el regulador de tensió i els leds de l'Arduino per tal de minimitzar el consum.

A més, l'exemple que estic utilitzant té en ment minimitzar l'enviament de dades, i posa el MCU en mode sleep la major part del temps. El diagrama de blocs del codi seria el següent:

LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

En aquest codi s'envia una dada cada minut. Això s'aconsegueix

int sleepcycles = 7;  // every sleepcycle will last 8 secs, total sleeptime will be sleepcycles * 8 sec
...
i en el loop principal:
      sleeping = false;
      for (int i=0;i<sleepcycles;i++)
      {
          LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);    //sleep 8 seconds
      }

Per tant, si vull enviar menys dades, la única cosa que he de fer és augmentar el número de cicles.


creat per Joan Quintana Compte, novembre 2018

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines