Lora Gateway, базиран на MicroPython ESP32: 10 стъпки (със снимки)
Lora Gateway, базиран на MicroPython ESP32: 10 стъпки (със снимки)
Anonim
Lora Gateway, базиран на MicroPython ESP32
Lora Gateway, базиран на MicroPython ESP32
Lora Gateway базиран на MicroPython ESP32
Lora Gateway базиран на MicroPython ESP32

Lora е много популярна през последните години. Модулът за безжична комуникация, използващ тази технология, обикновено е евтин (използва свободен спектър), малък по размер, енергийно ефективен и има голямо разстояние за комуникация и се използва главно за взаимна комуникация между IoT терминали или обмен на данни с хост. На пазара има много модули LoRa, като RFM96W, който е оборудван със SX1278 (съвместим) чип, който е много малък. Използвам го с MakePython ESP32 като шлюз.

След това ще използвам два възела LoRa, за да изпратя данните за температурата и влажността до шлюза и след това да ги кача в интернет през шлюза. Тук ще научите как да качвате отдалечени данни от множество LoRa възли в облака през шлюза.

Стъпка 1: Консумативи

Консумативи
Консумативи

1*MakePython ESP32

MakePython ESP32 е платка ESP32 с вграден SSD1306 OLED дисплей.

2*Радио Maduino LoRa

Maduino Lora Radio е IoT (Интернет на нещата) решение, базирано на Atmega328P MCU и модул Lora. Това може да бъде истински проект за IoT проекти (особено дългосрочни приложения с ниска мощност)

2*DHT11

1*MakePython Lora

Стъпка 2: LoRa възел

LoRa възел
LoRa възел
LoRa възел
LoRa възел

Това е схемата на радиото Maduino Lora.

Arduino Lora Radio модул като възел LoRa, ние го използваме за изпращане на данни за температурата и влажността към шлюза.

(Този WiKi представя как да използвате радиото Maduino Lora и да изпращате и получавате данни)

Стъпка 3: Свързване на възел и сензор

Свързване на възел и сензор
Свързване на възел и сензор
Свързване на възел и сензор
Свързване на възел и сензор

VCC и GND на DHT11 са свързани към 3V3 и GND на Maduino, а щифтът DATA е свързан към D4 на Maduino.

Възел 0 е в парка, възел 1 е в офис сградата в близост до компанията, те са на около 2 километра един от друг и след това получавам техните данни за температурата и влажността у дома

Стъпка 4: Изпратете данни към шлюза

Изтеглете TransmitterDHT11.ino, отворете го в Arduino IDE.

Когато добавяте възел, променете съответно номера на възела. Например, сега използвайте 2 възли, първият възел за промяна на nodenum = 0 за изпълнение на програмата, вторият възел за промяна на nodenum = 1 за изпълнение на програмата и т.н., можете да добавите още възел.

int16_t пакетно число = 0; // брояч на пакети, увеличаваме на xmission

int16_t ноден = 0; // Промяна на номера на възела

Съберете данни и ги отпечатайте

Низово съобщение = "#"+(String) nodenum+"Влажност:"+(String) влажност+"% Температура:"+(String) температура+"C"+"num:"+(String) пакетно число; Serial.println (съобщение); packetnum ++;

Изпратете съобщение до rf95_server

uint8_t radioPacket [message.length ()+1];

message.toCharArray (radioPacket, message.length ()+1); radioPacket [message.length ()+1] = '\ 0'; rf95.send ((uint8_t *) radioPacket, message.length ()+1);

Отворете серийния монитор, можете да видите събраните данни за температурата и влажността и да ги изпратите.

#0 Влажност: 6.00% Температура: 27.00C брой: 0

Предаване: Изпращане до rf95_server Изпращане … Изчакване за завършване на пакета … Изчакване на отговор … Няма отговор, има ли слушател наоколо?

Оставете го настрана, сега трябва да направим портата на Лора.

Стъпка 5: MakePython Lora

MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora

Това е съответният щифт на модула RFM96W и MakePython ESP32. За да улесня връзката с MakePython ESP32, направих платка с модул RFM96W. Да, на него има два RFM96W, които могат да изпращат и получават данни едновременно, но сега ми трябва само един.

Стъпка 6: LoRaWAN Gateway

LoRaWAN шлюз
LoRaWAN шлюз

LoRaWAN е широкообхватна мрежа с ниска мощност, базирана на LoRa, която може да осигури такава: ниска консумация на енергия, мащабируемост, високо качество на услугата и безопасна безжична мрежа на дълги разстояния.

Сглобете MakePython Lora и ESP32, за да направите шлюз, който да получава отдалечени данни и да ги качва в Интернет.

Стъпка 7: Изтеглете кода

Изтеглете всички файлове „xxx.py“от WiKi и ги качете в ESP32.

Отворете файла LoRaDuplexCallback.py, Трябва да направите някои корекции, така че вашият ESP32 да може да се свърже с мрежата и да качи данни на сървъра.

Променете API_KEY, който сте получили в ThingSpeak (ще ви представя по -късно как да го получите)

#https://thingspeak.com/channels/1047479

API_KEY = 'UBHIRHVV9THUJVUI'

Променете SSID и PSW, за да свържете WiFi

ssid = "Makerfabs"

pswd = "20160704"

Стъпка 8: Получаване на данни

Намерете функцията on_receive (lora, полезен товар) във файла LoRaDuplexCallback.py, където можете да кажете на ESP32 какво да прави след получаване на данните. Следният код анализира и показва получените данни за температурата и влажността.

def on_receive (lora, полезен товар):

lora.blink_led () rssi = lora.packetRssi () try: length = len (полезен товар) -1 myStr = str ((полезен товар [4: дължина]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1+1):(length1+6)] myNum2 = myStr [(length1+20):(length1+25)] print ("*** Получено съобщение *** / n {}". формат (полезен товар)), ако config_lora. IS_LORA_OLED: lora.show_packet (("{}". формат (полезен товар [4: дължина])), rssi), ако wlan.isconnected (): глобален msgCount печат ('Изпращане до мрежата …') възел = int (str (полезен товар [5: 6], 'utf-8')), ако възел == 0: URL = "https://api.thingspeak.com/update?api_key="+API_KEY+"& field1 = "+myNum1+" & field2 = "+myNum2 res = urequests.get (URL) печат (res.text) elif node == 1: URL =" https://api.thingspeak.com/update?api_key= "+API_KEY+" & field3 = "+myNum1+" & field4 = "+myNum2 res = urequests.get (URL) печат (res.text) с изключение на Изключение като e: print (e) print (" с RSSI {} n ".format (rssi))

Преценявайки броя за разграничаване на възлите и качвайки данните в интернет чрез URL адреса, можем по всяко време да наблюдаваме отдалечените данни на различни възли. Можете да добавите още възли и да направите подобни промени в кода.

ако възел == 0:

URL = "https://api.thingspeak.com/update?api_key="+API_KEY+"& field1 ="+myNum1+"& field2 ="+myNum2 res = urequests.get (URL) печат (res.text)

Стъпка 9: Използвайте ThingSpeak IoT

Използвайте ThingSpeak IoT
Използвайте ThingSpeak IoT
Използвайте ThingSpeak IoT
Използвайте ThingSpeak IoT
Използвайте ThingSpeak IoT
Използвайте ThingSpeak IoT

Стъпки:

  1. Регистрирайте акаунт на https://thingspeak.com/. Ако вече имате такъв, влезте директно.
  2. Щракнете върху Нов канал, за да създадете нов канал ThingSpeak.
  3. Въведете име, описание, изберете поле 1. След това запишете канала в долната част.
  4. Щракнете върху опцията API Keys, копирайте API ключа, ние ще го използваме в програмата.

Стъпка 10: Резултат

Резултат
Резултат
Резултат
Резултат
Резултат
Резултат

Можете да видите данните на възел 0 и възел 1 на екрана, въпреки че са на 2 километра една от друга.

Влезте в профила си в ThingSpeak и кликнете върху канала, който сте създали, можете да видите качените данни за температурата и влажността.

Графиката field1 и field2 графиките са данните за влажността и температурата на възел Lora 0, а графиката field3 и графиката field4 са данните за влажността и температурата на възел Lora 1.

Препоръчано: