def get_message(self):
        device_pins = {
            'miso':19,
            'mosi':27,
            'ss':18,
            'sck':5,
            'dio_0':26,
            'reset':14 
        }

#         device_spi = SPI(baudrate = 10000000, 
#                 polarity = 0, phase = 0, bits = 8, firstbit = SPI.MSB,
#                 sck = Pin(device_pins['sck'], Pin.OUT, Pin.PULL_DOWN),
#                 mosi = Pin(device_pins['mosi'], Pin.OUT, Pin.PULL_UP),
#                 miso = Pin(device_pins['miso'], Pin.IN, Pin.PULL_UP))

        device_spi = SPI(baudrate = 10000000, 
                polarity = 0, phase = 0, bits = 8, firstbit = SPI.MSB,
                sck = Pin(device_pins['sck'], Pin.OUT, Pin.PULL_DOWN),
                mosi = Pin(device_pins['mosi'], Pin.OUT, Pin.PULL_UP),
                miso = Pin(device_pins['miso'], Pin.IN, Pin.PULL_UP))

        lora = SX127x(device_spi, pins=device_pins)
        print("Waiting for LoRa message.....")

        while True:
            if(lora.received_packet()):
                payload = lora.read_payload()
                status=str(payload)[18:-1]
                return (status)
Exemple #2
0
	def __init__(self, header=None, period=0):
		#Se especifica la cabecera en caso de que solo se quiera procesar algo en especifico
		#y tambien un periodo por si se quiere hacer cierta accion de manera periodica

		self.header = header
		self.period = float(period)
		self.status = 1
		self.cb = None

		self.controller = ESP32Controller()
		self.lora = self.controller.add_transceiver(SX127x(name = 'LoRa'),
								pin_id_ss = ESP32Controller.PIN_ID_FOR_LORA_SS,
								pin_id_RxDone = ESP32Controller.PIN_ID_FOR_LORA_DIO0)
Exemple #3
0
def get_lora():
    ''' Setup and return a LoRa Esp32 controller'''
    params = {
        'frequency': 868E6,  # 169E6, 433E6, 434E6, 866E6, 868E6*, 915E6
        'tx_power_level': 5,  # 2
        'signal_bandwidth':
        20.8E3,  # 7.8E3, 10.4E3, 15.6E3, 20.8E3, 31.25E3, 41.7E3, 62.5E3, 125E3*, 250E3
        'spreading_factor': 5,
        'coding_rate': 5,
        'preamble_length': 12,
        'implicitHeader': False,
        'sync_word': 0x12,
        'enable_CRC': False
    }
    controller = ESP32Controller()
    return controller.add_transceiver(
        SX127x(name='LoraTx', parameters=params),
        pin_id_ss=ESP32Controller.PIN_ID_FOR_LORA_SS,
        pin_id_RxDone=ESP32Controller.PIN_ID_FOR_LORA_DIO0)
         total_discharge):
    for i in range(0, 5):
        payload = '{} {} {} {} {} {} {}'.format(ds18_temp, pH_final, discharge,
                                                tdsValue, temp_dht22,
                                                hum_dht22, total_discharge)

        # Mensagem a enviar pelo sx127x.py:
        lora.println(payload)

        sleep(5)


#####----- LoRa -----#####
controller = ESP32Controller()
lora = controller.add_transceiver(
    SX127x(name='LoRa'),
    pin_id_ss=ESP32Controller.PIN_ID_FOR_LORA_SS,
    pin_id_RxDone=ESP32Controller.PIN_ID_FOR_LORA_DIO0)

#####----- DS18X20 -----#####
ds18_pin = Pin(5)
ds18_sensor = DS18X20(OneWire(ds18_pin))

addrs = ds18_sensor.scan()
addr = addrs.pop()

ds_read = ds18_sensor.convert_temp()
sleep_ms(750)
ds18_temp = ds18_sensor.read_temp(addr)
# ds18_temp_print = str('%3.2f C  DS18X20' %temp_ds)
Exemple #5
0
__DEBUG__ = True

print("Setting TTNconfig")
ttn_config = TTN(ttn_config['devaddr'], ttn_config['nwkey'], ttn_config['app'], country=ttn_config['country'])
print("TTN Country:", TTN.country)

print("Setting device_spi")
device_spi = SPI(device_config['spi_unit'], baudrate = 10000000, 
        polarity = 0, phase = 0, bits = 8, firstbit = SPI.MSB,
        sck = Pin(device_config['sck'], Pin.OUT, Pin.PULL_DOWN),
        mosi = Pin(device_config['mosi'], Pin.OUT, Pin.PULL_UP),
        miso = Pin(device_config['miso'], Pin.IN, Pin.PULL_UP))

print("Setting lora")
lora = SX127x(device_spi, pins=device_config, lora_parameters=lora_parameters, ttn_config=ttn_config)
frame_counter = 0

def on_receive(lora, outgoing):
    payload = lora.read_payload()
    print("RX>>>", payload)

lora.on_receive(on_receive)
lora.receive()

print("Lora Configuration:")
print("Freq: ",TTN_FREQS_STR[0])
print(lora_parameters)

while True:
    __SAMPLE_DATA__ = False
Exemple #6
0
    device_spi = SoftSPI(baudrate = 10000000, 
            polarity = 0, phase = 0, bits = 8, firstbit = SoftSPI.MSB,
            sck = Pin(device_config['sck'], Pin.OUT, Pin.PULL_DOWN),
            mosi = Pin(device_config['mosi'], Pin.OUT, Pin.PULL_UP),
            miso = Pin(device_config['miso'], Pin.IN, Pin.PULL_UP))
else:
    print("Configuring ESP8266")
    device_spi = SoftSPI(baudrate = 10000000, 
            polarity = 0, phase = 0, bits = 8, firstbit = SoftSPI.MSB,
            sck = Pin(device_config['sck'], Pin.OUT),
            mosi = Pin(device_config['mosi'], Pin.OUT, Pin.PULL_UP),
            miso = Pin(device_config['miso'], Pin.IN, Pin.PULL_UP))

wdt.feed()
    
lora = SX127x(device_spi, pins=device_config, parameters=lora_parameters)

wdt.feed()

# Sending to LoRa
def send(lora,topic,message):
    payload = '{"topic":"'+topic+'", "msg":'+message+'}'
    print("To LoRa -->  {}".format(payload))
    if module_config['has_oled']==1:
        oled.fill(0)
        oled.text("TX to LoRa:",0,0)	
        oled.text("{}".format(topic),0,10)
        pos=20
        x=12 
        res=[message[y-x:y] for y in range(x, len(message)+x,x)]
        for y in res:
Exemple #7
0
"""Los siguientes parametros se encuentran por defecto para configurarlos modifique el diccionario parametros despues de este ejemplo(por defecto)"""
# parameters = {'frequency': 866E6, 'tx_power_level': 2, 'signal_bandwidth': 125E3,
#                                'spreading_factor': 8, 'coding_rate': 5, 'preamble_length': 8,
#                                'implicitHeader': False, 'sync_word': 0x12, 'enable_CRC': False}
"""La estos parametros deben ser iguales Entre Esclavo y Maestro a continuación se muestran los rangos disponibles(pensado en modulo sx1276)"""
# BW (7.8E3, 10.4E3, 15.6E3, 20.8E3, 31.25E3, 41.7E3, 62.5E3, 125E3, 250E3)
# spreading_factor (6 to 12)
# coding_rate (5 to 8)
"""IMPORTANTE REVIZAR Payload pag 31 data sx127x """
#parametros = {'frequency': 869E6, 'tx_power_level': 2, 'signal_bandwidth': 125E3,'spreading_factor': 8, 'coding_rate': 5, 'preamble_length': 8,'implicitHeader': False, 'sync_word': 0x12, 'enable_CRC': False}
objeto = SX127x(name='LoRa1',
                parameters={
                    'frequency': 866E6,
                    'tx_power_level': 14,
                    'signal_bandwidth': 125E3,
                    'spreading_factor': 10,
                    'coding_rate': 5,
                    'preamble_length': 8,
                    'implicitHeader': False,
                    'sync_word': 0x12,
                    'enable_CRC': True
                })
controller = ESP32Controller(
)  #Configuracion de Pines y SPI para modificarlos realizarlo en
#En esta seccion ocurre una herencia multiple del objeto lora
lora = controller.add_transceiver(
    objeto,
    pin_id_ss=ESP32Controller.PIN_ID_FOR_LORA_SS,
    pin_id_RxDone=ESP32Controller.PIN_ID_FOR_LORA_DIO0)

#  # Transceiver permite agregar numero del pin chip SELECT y  pines de interrupciones para mas funciones del Modulo LoRa
#      def add_transceiver(self,
Exemple #8
0
import config_lora
from machine import Pin, SPI
from sx127x import SX127x

device_pins = {
    'miso':19,
    'mosi':27,
    'ss':18,
    'sck':5,
    'dio_0':26,
    'reset':16,
    'led':2, 
}

device_spi = SPI(baudrate = 10000000, 
        polarity = 0, phase = 0, bits = 8, firstbit = SPI.MSB,
        sck = Pin(device_pins['sck'], Pin.OUT, Pin.PULL_DOWN),
        mosi = Pin(device_pins['mosi'], Pin.OUT, Pin.PULL_UP),
        miso = Pin(device_pins['miso'], Pin.IN, Pin.PULL_UP))

lora = SX127x(device_spi, pins=device_pins)


#example = 'sender'
example = 'receiver'

if __name__ == '__main__':
    if example == 'sender':
        LoRaSender.send(lora)
    if example == 'receiver':
        LoRaReceiver.receive(lora)
Exemple #9
0
#import LoRaDuplexCallback
#import LoRaPingPong
import LoRaSender
import LoRaReceiver
import config_lora
from sx127x import SX127x
from controller_esp32 import ESP32Controller

controller = ESP32Controller()
lora = controller.add_transceiver(
    SX127x(name='LoRa1'),
    pin_id_ss=ESP32Controller.PIN_ID_FOR_LORA_SS,
    pin_id_RxDone=ESP32Controller.PIN_ID_FOR_LORA_DIO0)

#LoRaDuplexCallback.duplexCallback(lora)
#LoRaPingPong.ping_pong(lora)
LoRaSender.send(lora)
#LoRaReceiver.receive(lora)
Exemple #10
0
    print("LoRa Receiver")

    display = Display()

    while True:
        ident = "LoRa Receiver"

        lora.receivedPacket()

        lora.blink_led()

        try:
            payload = lora.read_payload()

            display.show_text_wrap("{0}                   {1}                   RSSI: {2}".format(
                ident, payload.decode(), lora.packetRssi()), 2)
            #print("*** Received message ***\n{}".format(payload.decode()))

        except Exception as e:
            print(e)
        #display.show_text("RSSI: {}\n".format(lora.packetRssi()), 10, 10)
        #print("with RSSI: {}\n".format(lora.packetRssi))


controller = ESP32Controller()
lora = controller.add_transceiver(SX127x(name='LoRa'),
                                  pin_id_ss=ESP32Controller.PIN_ID_FOR_LORA_SS,
                                  pin_id_RxDone=ESP32Controller.PIN_ID_FOR_LORA_DIO0)

receive(lora)
Exemple #11
0
    'ss':18,
    'reset':16,
    'sck':5,
    'miso':19,
    'mosi':27,
}

lora_spi = SPI(
    baudrate=10000000, polarity=0, phase=0,
    bits=8, firstbit=SPI.MSB,
    sck=Pin(lora_pins['sck'], Pin.OUT, Pin.PULL_DOWN),
    mosi=Pin(lora_pins['mosi'], Pin.OUT, Pin.PULL_UP),
    miso=Pin(lora_pins['miso'], Pin.IN, Pin.PULL_UP),
)

lora = SX127x(lora_spi, pins=lora_pins, parameters=lora_default)


# type = 'sender'
# type = 'receiver'
# type = 'ping_master'
# type = 'ping_slave'
type = 'receiver_callback'

if __name__ == '__main__':
    if type == 'sender':
        LoRaSender.send(lora)
    if type == 'receiver':
        LoRaReceiver.receive(lora)
    if type == 'ping_master':
        LoRaPing.ping(lora, master=True)
Exemple #12
0
########## CONSTANTS ##########
IS_BEACON = False  # Used for testing range
BLE_ENABLED = True  # Used for testing
BLE_NAME = 'ulora2' if IS_BEACON else 'ulora'  # Name BLE will use when advertising
# BLE_NAME = 'ulora2' if get_nodename() == "ESP_30aea4bfbe88" else "ulora"  # NOTE: USE ONLY FOR DEV
SYNC_INTERVAL = 5000  # How often (ms) to send sync packet after last packet was sent
NODE_NAME = get_nodename()

########## LORA ##########
from config_lora import parameters, device_spi, device_pins
from sx127x import SX127x

# Restart machine if we get the 'invalid version' error
try:
    lora = SX127x(device_spi, pins=device_pins, parameters=parameters)
except:
    time.sleep(1)  # this try/except can get caught in an uninterruptible loop, sleep gives us a chance
    machine.reset()


def on_lora_rx():
    global previous_sync_time
    if lora.received_packet():
        lora.blink_led()
        payload = lora.read_payload()

        print('[LORA] received payload: ', payload)
        try:
            payload_obj = json.loads(payload)
        except (Exception, TypeError) as error: