Სარჩევი:

Lora Gateway დაფუძნებული MicroPython ESP32: 10 ნაბიჯი (სურათებით)
Lora Gateway დაფუძნებული MicroPython ESP32: 10 ნაბიჯი (სურათებით)

ვიდეო: Lora Gateway დაფუძნებული MicroPython ESP32: 10 ნაბიჯი (სურათებით)

ვიდეო: Lora Gateway დაფუძნებული MicroPython ESP32: 10 ნაბიჯი (სურათებით)
ვიდეო: #124 Cheap LoRa Gateway: Tutorial on how to Build with one with Raspberry Pi and Dragino 2024, ნოემბერი
Anonim
Lora Gateway დაფუძნებული MicroPython ESP32
Lora Gateway დაფუძნებული MicroPython ESP32
Lora Gateway დაფუძნებული MicroPython ESP32
Lora Gateway დაფუძნებული MicroPython ESP32

ლორა ბოლო წლებში ძალიან პოპულარული გახდა. უკაბელო საკომუნიკაციო მოდული ამ ტექნოლოგიის გამოყენებით, როგორც წესი, იაფია (თავისუფალი სპექტრის გამოყენებით), მცირე ზომის, ენერგოეფექტური და აქვს გრძელი საკომუნიკაციო მანძილი და ძირითადად გამოიყენება IoT ტერმინალებს შორის ურთიერთკავშირისთვის ან მასპინძელთან მონაცემთა გაცვლისთვის. ბაზარზე ბევრი LoRa მოდულია, მაგალითად RFM96W, რომელიც აღჭურვილია SX1278 (თავსებადი) ჩიპით, რაც ძალიან მცირეა. მე მას ვიყენებ MakePython ESP32– ით, როგორც კარიბჭე.

შემდეგი, მე გამოვიყენებ ორ LoRa კვანძს ტემპერატურისა და ტენიანობის მონაცემების გასასვლელად კარიბჭეში, შემდეგ კი ინტერნეტში ატვირთვა კარიბჭის გავლით. აქ თქვენ შეისწავლით თუ როგორ უნდა ატვირთოთ მრავალი LoRa კვანძის დისტანციური მონაცემები ღრუბელში კარიბჭის გავლით.

ნაბიჯი 1: მარაგი

მარაგები
მარაგები

1*MakePython ESP32

MakePython ESP32 არის ESP32 დაფა ინტეგრირებული SSD1306 OLED დისპლეით.

2*მადუინო ლორა რადიო

მადუინო ლორა რადიო არის IoT (ნივთების ინტერნეტი) გადაწყვეტა, რომელიც დაფუძნებულია Atmel's Atmega328P MCU და Lora მოდულზე. ეს შეიძლება იყოს რეალური პროექტი IoT პროექტებისთვის (განსაკუთრებით გრძელვადიანი, დაბალი სიმძლავრის პროგრამა)

2*DHT11

1*MakePython ლორა

ნაბიჯი 2: LoRa კვანძი

ლორა კვანძი
ლორა კვანძი
ლორა კვანძი
ლორა კვანძი

ეს არის მადუინო ლორას რადიოს სქემა.

Arduino Lora რადიო მოდული, როგორც LoRa კვანძი, ჩვენ ვიყენებთ მას ტემპერატურისა და ტენიანობის მონაცემების გასაგზავნად კარიბჭეში.

(ეს WiKi წარმოგიდგენთ როგორ გამოიყენოთ მადუინო ლორა რადიო და გაგზავნოთ და მიიღოთ მონაცემები)

ნაბიჯი 3: კვანძისა და სენსორის კავშირი

კვანძისა და სენსორის კავშირი
კვანძისა და სენსორის კავშირი
კვანძისა და სენსორის კავშირი
კვანძისა და სენსორის კავშირი

VCC და GND DHT11 უკავშირდება 3V3 და GND Maduino– ს, ხოლო DATA pin უკავშირდება D4 of Maduino– ს.

კვანძი 0 არის პარკში, კვანძი 1 არის საოფისე შენობაში კომპანიის მახლობლად, ისინი ერთმანეთისგან დაახლოებით 2 კილომეტრია დაშორებული, შემდეგ კი მე ვიღებ მათ ტემპერატურასა და ტენიანობას სახლში.

ნაბიჯი 4: გაგზავნეთ მონაცემები კარიბჭეში

ჩამოტვირთეთ TransmitterDHT11.ino, გახსენით Arduino IDE– ზე.

კვანძის დამატებისას შეცვალეთ კვანძის ნომერი შესაბამისად. მაგალითად, ახლა გამოიყენეთ 2 კვანძი, პირველი კვანძი შეცვლის კვანძს = 0 პროგრამის გასაშვებად, მეორე კვანძი შეცვლის კვანძს = 1 პროგრამის გასაშვებად და ასე შემდეგ, შეგიძლიათ დაამატოთ მეტი კვანძი.

int16_t packetnum = 0; // პაკეტის მრიცხველი, ჩვენ ვზრდით თითო გამოშვებაზე

int16_t კვანძი = 0; // კვანძის ნომრის შეცვლა

შეაგროვეთ მონაცემები და დაბეჭდეთ

სიმებიანი შეტყობინება = "#"+(სიმებიანი) კვანძოვანი+"ტენიანობა:"+(სიმებიანი) ტენიანობა+"% ტემპერატურა:"+(სიმებიანი) ტემპერატურა+"C"+"num:"+(სიმებიანი) packetnum; 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 ლორა
MakePython ლორა
MakePython ლორა
MakePython ლორა
MakePython ლორა
MakePython ლორა

ეს არის 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 (ლორა, დატვირთვა) ფუნქცია LoRaDuplexCallback.py ფაილში, სადაც შეგიძლიათ ESP32- ს უთხრათ რა უნდა გააკეთოს მონაცემების მიღების შემდეგ. შემდეგი კოდი აანალიზებს და აჩვენებს მიღებული ტემპერატურისა და ტენიანობის მონაცემებს.

def on_receive (ლორა, დატვირთვა):

lora.blink_led () rssi = lora.packetRssi () სცადეთ: length = len (payload) -1 myStr = str ((payload [4: length]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(სიგრძე 1+1):(სიგრძე 1+6)] myNum2 = myStr [(სიგრძე 1+20):(სიგრძე 1+25)] ბეჭდვა ("*** მიღებული შეტყობინება *** / n {}". ფორმატი (დატვირთვა)) თუ config_lora. IS_LORA_OLED: lora.show_packet (("{}". ფორმატი (დატვირთვა [4: სიგრძე])), rssi) თუ wlan.isconnected (): გლობალური msgCount print ("გაგზავნა ქსელში …") node = int (str (payload [5: 6], 'utf-8')) if node == 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 Key, ჩვენ მას გამოვიყენებთ პროგრამაში.

ნაბიჯი 10: შედეგი

შედეგი
შედეგი
შედეგი
შედეგი
შედეგი
შედეგი

თქვენ შეგიძლიათ ნახოთ კვანძის 0 და 1 კვანძის მონაცემები ეკრანზე, თუმცა ისინი ერთმანეთისგან 2 კილომეტრშია.

შედით თქვენს ThingSpeak ანგარიშზე და დააწკაპუნეთ თქვენს მიერ შექმნილ არხზე, თქვენ იხილავთ ატვირთვის ტემპერატურისა და ტენიანობის მონაცემებს.

ველის 1 დიაგრამა და ველი 2 დიაგრამა არის ლორას კვანძის ტენიანობის და ტემპერატურის მონაცემები, ხოლო ველის 3 დიაგრამა და ველის 4 დიაგრამა არის ლორას კვანძის 1 ტენიანობისა და ტემპერატურის მონაცემები.

გირჩევთ: