- Mga Materyal na Kinakailangan
- Arduino LoRa Shield
- Fabricating PCB para sa LoRa Shield
- Pag-iipon ng PCB
- Pagkonekta ng module ng GPS sa LoRa Transmitter
- Programming Arduino LoRa bilang GPS Transmitter
- Programming Arduino LoRa bilang tatanggap ng GPS
- Gumagana ang Arduino LoRa GPS Tracker
Ang pag-alam sa kinaroroonan ng isang partikular na bagay / tao ay palaging nakaaaliw. Ngayon, ang GPS ay malawakang ginagamit sa mga aplikasyon ng pamamahala ng pag-aari tulad ng Pagsubaybay sa Sasakyan, Pagsubaybay sa Fleet, Pagsubaybay sa Asset, Pagsubaybay sa Tao, Alagang Pet Tracker atbp. Para sa anumang aparato sa pagsubaybay ang pangunahing pagsasaalang-alang sa disenyo ay tungkol sa pag-asa sa baterya at saklaw ng pagsubaybay. Isinasaalang-alang ang pareho, ang LoRa ay tila perpektong pagpipilian dahil mayroon itong napakababang pagkonsumo ng kuryente at maaaring mapatakbo sa mahabang distansya. Kaya, sa tutorial na ito magtatayo kami ng sistema ng pagsubaybay sa GPS gamit ang LoRa, ang system ay binubuo ng isang Transmitter na magbabasa ng impormasyon ng lokasyon mula sa NEO-6M GPS moduleat ipadala ito nang wireless sa ibabaw ni Lora. Ang bahagi ng tatanggap ay makakatanggap ng impormasyon at ipapakita ito sa isang 16x2 LCD display. Kung bago ka sa LoRa alamin ang tungkol sa LoRa at LoRaWAN Technology at kung paano ito maaaring i-interfaced sa Arduino bago magpatuloy.
Upang mapanatili ang mga bagay na simple at epektibo sa gastos para sa proyektong ito, hindi kami gagamit ng isang LoRa gateway. Sa halip ay gaganap ang peer to peer na komunikasyon sa pagitan ng transmitter at tatanggap. Gayunpaman, kung nais mo ang isang pandaigdigang saklaw maaari mong palitan ang tatanggap ng isang LoRa Gateway. Gayundin dahil nagmula ako sa India ay gagamitin namin ang module na 433MHz LoRa na ligal na ISM band dito, kaya maaari kang pumili ng isang module batay sa iyong bansa. Sinabi na, magsimula na tayo…
Mga Materyal na Kinakailangan
- Arduino Lora Shield - 2Nos (magagamit ang disenyo ng PCB para sa pag-download)
- Arduino Uno - 2No
- SX1278 433MHz LoRa Module - 2
- 433MHz Lora Antenna
- NEO-6M GPS Module
- Module ng Display sa LCD
- Mga kumokonekta na mga wire
Arduino LoRa Shield
Upang gawing mas madali ang pagbuo ng mga bagay sa LoRa, nagdisenyo kami ng isang LoRa Arduino Shield para sa Project na ito. Ang kalasag na ito ay binubuo ng SX1278 433MHz na may isang 3.3V regulator na dinisenyo gamit ang LM317 Variable regulator. Direktang uupo ang Shield sa tuktok ng Arduino na nagbibigay dito ng mga kakayahan ng LoRa. Ang LoRa Shield na ito ay madaling gamitin kapag kailangan mong mag-deploy ng mga LoRa sensing node o lumikha ng isang LoRa mesh network. Ang kumpletong diagram ng circuit para sa LoRa Arduino Shield ay ibinibigay sa ibaba
Ang Shield ay binubuo ng isang 12V jack na kung saan ay pinalakas ay gagamitin upang makontrol ang 3.3V para sa module ng LoRa gamit ang LM317 regulator. Gagamitin din ito upang paandarin ang Arduino UNO sa pamamagitan ng Vin pin at ang kinokontrol na 5V mula sa Arduino ay ginagamit upang paandarin ang LCD sa kalasag. Ang output boltahe ng LM317 ay naayos na maging 3.3V gamit ang risistor R1 at R2 ayon sa pagkakabanggit, ang halaga ng mga resistors na ito ay maaaring makalkula gamit ang LM317 Calculator.
Dahil ang module ng LoRa ay kumonsumo ng napakababang lakas, maaari din itong direktang mapalakas mula sa 3.3V pin ng Arduino, ngunit gumamit kami ng isang panlabas na disenyo ng regulator dahil ang LM317 ay mas maaasahan kaysa sa on-board voltage regulator. Ang kalasag ay mayroon ding potensyomiter na maaaring magamit upang ayusin ang ningning ng LCD. Ang koneksyon ng module ng LoRa sa Arduino ay katulad ng ginawa namin sa nakaraang tutorial ng Interfacing Arduino kay Lora.
Fabricating PCB para sa LoRa Shield
Ngayon na handa na ang aming circuit, maaari kaming magpatuloy sa pagdidisenyo ng aming PCB. Binuksan ko sa pamamagitan ng software ng disenyo ng PCB at nagsimulang bumuo ng aking mga track. Sa sandaling nakumpleto ang disenyo ng PCB ang aking board ay tumingin ng tulad nito na ipinakita sa ibaba
Maaari mo ring i-download ang mga file ng disenyo sa format na GERBER at gawa-gawa ito upang makuha ang iyong mga board. Ang link ng Gerber file ay ibinibigay sa ibaba
Mag-download ng Gerber File para sa Arduino LoRa Shield
Ngayon, na handa na ang aming Disenyo ay oras na upang sila ay gawa-gawa. Upang magawa ang PCB ay medyo madali, sundin lamang ang mga hakbang sa ibaba
Hakbang 1: Pumasok sa www.pcbgogo.com, mag-sign up kung ito ang iyong unang pagkakataon. Pagkatapos, sa tab na PCB Prototype ipasok ang mga sukat ng iyong PCB, ang bilang ng mga layer at ang bilang ng PCB na kailangan mo. Ipagpalagay na ang PCB ay 80cm × 80cm maaari mong itakda ang mga sukat tulad ng ipinakita sa ibaba.
Hakbang 2: Magpatuloy sa pamamagitan ng pag-click sa pindutan ng Quote Now . Dadalhin ka sa isang pahina kung saan magtatakda ng ilang karagdagang mga parameter kung kinakailangan tulad ng materyal na ginamit na spacing ng track atbp. Ngunit karamihan sa mga default na halaga ay gagana nang maayos. Ang tanging bagay lamang na dapat nating isaalang-alang dito ay ang presyo at oras. Tulad ng nakikita mo na ang Build Time ay 2-3 araw lamang at nagkakahalaga lamang ito ng $ 5 para sa aming PSB. Maaari mo ring piliin ang isang ginustong paraan ng pagpapadala batay sa iyong kinakailangan.
Hakbang 3: Ang pangwakas na hakbang ay i-upload ang Gerber file at magpatuloy sa pagbabayad. Upang matiyak na ang proseso ay maayos Ang pag- verify ng PCBGOGO kung ang iyong Gerber file ay wasto bago magpatuloy sa pagbabayad. Sa ganitong paraan makasisiguro ka na ang iyong PCB ay katha na gawa at maaabot ka bilang nakatuon.
Pag-iipon ng PCB
Matapos ang order ng board, naabot ito sa akin makalipas ang ilang araw kahit na ang courier sa isang maayos na naka-label na kahon na naka-pack na maayos at tulad ng palaging ang kalidad ng PCB ay kahanga-hanga.
Binuksan ko ang aking soldering rod at nagsimulang tipunin ang Lupon. Dahil ang mga Footprints, pad, vias at silkscreen ay perpekto ng tamang hugis at laki wala akong problema sa pag-assemble ng board. Kapag nakumpleto na ang paghihinang ang board ay ganito sa ibaba, dahil nakikita mong umaangkop ito sa aking Arduino Uno Board.
Dahil ang aming proyekto ay may isang Arduino LoRa transmitter at isang Arduino LoRa receiver kakailanganin namin ng dalawang kalasag isa para sa tatanggap at ang isa pa para sa transmiter. Kaya't nagpatuloy ako sa paghihinang ng isa pang PCB, kapwa ang PCB na may module na LoRa at LCD ay ipinapakita sa ibaba.
Tulad ng makikita mo lamang ang tatanggap na LoRa shied (kaliwa ang isa) ay may konektadong isang LCD, ang transmiter na bahagi ay binubuo lamang ng module na LoRa. Lalo naming ikonekta ang isang module ng GPS sa bahagi ng transmiter tulad ng tinalakay sa ibaba.
Pagkonekta ng module ng GPS sa LoRa Transmitter
Ang module ng GPS na ginamit dito ay ang NEO-6M GPS module, ang module ay maaaring gumana sa napakababang kapangyarihan na may isang maliit na form factor na ginagawang angkop para sa pagsubaybay ng mga application. Gayunpaman maraming mga magagamit na mga module ng GPS na ginamit namin dati sa iba't ibang uri ng pagsubaybay sa sasakyan at mga application ng pagtuklas ng lokasyon.
Ang module ay nagpapatakbo sa 5V at nakikipag-usap gamit ang Serial na komunikasyon sa 9600 baud rate. Samakatuwid pinapagana namin ang module sa + 5V pin ng Arduino at ikinonekta ang Rx at Tx pin sa digital pin D4 at D3 ayon sa ipinakita sa ibaba
Ang mga pin na D4 at D3 ay mai-configure bilang software serial pin. Kapag pinapagana ang NEO-6M GPS module ay hahanapin ang koneksyon sa satellite at awtomatiko nitong ilalabas ang lahat ng impormasyon nang serial. Ang data ng output na ito ay nasa format ng pangungusap na NMEA na kumakatawan sa National Marine Electronics Association at ang karaniwang format para sa lahat ng mga aparatong GPS. Upang matuto nang higit pa tungkol sa paggamit ng GPS sa Arduino, sundin ang link. Ang data na ito ay magiging malaki at sa karamihan ng oras kailangan nating i-parirala ito nang manu-mano upang makuha ang nais na resulta. Masuwerte para sa amin mayroong isang silid-aklatan na tinatawag na TinyGPS ++ na gumagawa ng lahat ng mabibigat na pag-aangat para sa amin. Kailangan mo ring idagdag ang library ng LoRa kung hindi mo pa nagagawa ito. Kaya i-download natin ang parehong library mula sa link sa ibaba
I-download ang TinyGPS ++ Arduino Library
I-download ang Arduino LoRa Library
Mag-download ang link ng isang ZIP file na maaaring idagdag sa Arduino IDE sa pamamagitan ng pagsunod sa utos na Sketch -> Isama ang Library -> Add.ZIP library. Kapag handa ka na sa hardware at library maaari kaming magpatuloy sa Programming ang aming Arduino boards.
Programming Arduino LoRa bilang GPS Transmitter
Tulad ng alam naming ang LoRa ay isang transceiver device, nangangahulugang maaari itong magpadala at tumanggap ng impormasyon. Gayunpaman sa proyekto ng tracker ng GPS na ito gagamitin namin ang isang module bilang transmitter upang basahin ang co-ordinate na impormasyon mula sa GPS at ipadala ito, habang ang iba pang module bilang isang tatanggap na tatanggap ng mga co-ordinate na halaga ng GPS at mai-print ito sa LCD. Ang programa para sa parehong module ng Transmitter at Receiver ay matatagpuan sa ilalim ng pahinang ito. Tiyaking na-install mo ang mga aklatan para sa module ng GPS at module ng LoRa bago magpatuloy sa code. Sa seksyong ito titingnan namin ang code ng transmiter.
Tulad ng laging sinisimulan namin ang programa sa pamamagitan ng pagdaragdag ng kinakailangang mga aklatan at mga pin. Dito ginagamit ang library ng SPI at LoRa para sa komunikasyon ng LoRa at ginagamit ang TinyGPS ++ at SoftwareSerial library para sa komunikasyon sa GPS. Ang module ng GPS sa aking hardware ay konektado sa pin 3 at 4 at sa gayon tinukoy din namin ang mga sumusunod
# isama
Sa loob ng pag- andar ng pag- setup sinisimulan namin ang serial monitor at pinasimulan din ang serial ng software bilang "gpsSerial " para sa komunikasyon sa aming NEO-6M GPS module. Tandaan din na ginamit ko ang 433E6 (433 MHz) bilang aking dalas ng pagpapatakbo ng LoRa maaari mong baguhin ito batay sa uri ng modyul na iyong ginagamit.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); habang (! Serial); Serial.println ("LoRa Sender"); kung (! LoRa.begin (433E6)) { Serial.println ("Nabigo ang Simula ng LoRa!"); habang (1); } LoRa.setTxPower (20); }
Sa loob ng pag- andar ng loop sinusuri namin kung ang module ng GPS ay naglalagay ng ilang data, kung oo pagkatapos ay nabasa namin ang lahat ng data at parirala ito gamit ang gps.encode function. Pagkatapos ay suriin namin kung nakatanggap kami ng isang wastong data ng lokasyon gamit ang function na gps.location.isValid () .
habang (gpsSerial.available ()> 0) kung (gps.encode (gpsSerial.read ())) kung (gps.location.isValid ()) {
Kung nakatanggap kami ng wastong lokasyon maaari naming simulan ang paglilipat ng mga halagang latitude at longitude. Ang pagpapaandar gps.location.lat () ay nagbibigay ng latitude co-ordinate at ang function gps.location.lng () ay nagbibigay ng longitude co-ordinate. Dahil i-print namin ang mga ito sa 16 * 2 LCD kailangan naming banggitin kung kailan mag-shit sa pangalawang linya, samakatuwid ay ginagamit namin ang keyword na "c" upang mai-intimate ang tatanggap upang mai-print ang sumusunod na impormasyon sa linya 2.
LoRa.beginPacket (); LoRa.print ("Lat:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Mahaba:"); LoRa.print (gps.location.lng (), 6); Serial.println ("Ipinadala sa pamamagitan ng LoRa"); LoRa.endPacket ();
Programming Arduino LoRa bilang tatanggap ng GPS
Ang transmitter code ay nagpapadala na ng halaga ng latitude at longitude co-ordinates, ngayon ay kailangang basahin ng tatanggap ang mga halagang ito at i-print sa LCD. Katulad dito ay idinagdag namin ang silid aklatan para sa module ng LoRa at pagpapakita ng LCD at tinukoy kung aling mga pin ang konektado sa LCD at isinisimulan din ang module na LoRa tulad ng dati.
# isama
Sa loob ng pag- andar ng loop nakikinig kami para sa mga packet ng data na bumubuo ng transmiter na module ng LoRa at ang laki nito gamit ang pagpapaandar na LoRa.parsePacket () at iimbak ito sa variable na " packetSize ". Kung natanggap ang mga packet pagkatapos ay nagpapatuloy kami sa pagbabasa ng mga ito bilang mga character at i-print ang mga ito sa LCD. Sinusuri din ng programa kung ang module ng LoRa ay nagpapadala ng keyword na "c", kung oo pagkatapos ay mai-print ang natitirang impormasyon sa pangalawang linya.
kung (packetSize) {// Kung natanggap ng packet ang Serial.print ("Natanggap na packet '"); lcd.clear (); habang (LoRa.available ()) { char papasok = (char) LoRa.read (); kung (papasok == 'c') { lcd.setCursor (0, 1); } iba pa { lcd.print (papasok); } }
Gumagana ang Arduino LoRa GPS Tracker
Kapag handa na ang hardware at programa maaari naming mai-upload ang parehong mga code sa kani-kanilang mga module ng Arduino at paganahin ang mga ito gamit ang isang 12V adapter o USB cable. Kapag pinapagana ang Transmitter maaari mong mapansin ang asul na LED sa module na GPS na kumukurap, ipinapahiwatig nito na ang module ay naghahanap ng koneksyon sa satellite upang makakuha ng mga co-ordinate. Samantala ang modyul ng Tagatanggap ay magpapagana at magpapakita ng isang maligayang mensahe sa LCD screen. Kapag ang nagpapadala ay nagpapadala ng impormasyon ang module ng tatanggap ay ipapakita ito sa LCD nito tulad ng ipinakita sa ibaba
Ngayon ay maaari kang lumipat sa module ng transmiter GPS at mapapansin mo ang pag-update ng tatanggap sa lokasyon nito. Upang malaman kung saan eksakto ang module ng transmiter ay maaari mong basahin ang mga halagang latitude at longitude na ipinapakita sa LCD at ipasok ito sa mga mapa ng Google upang makuha ang lokasyon sa mapa tulad ng ipinakita sa ibaba.
Ang kumpletong pagtatrabaho ay maaari ding matagpuan sa video na ibinigay sa ilalim ng pahinang ito. Inaasahan kong naintindihan mo ang tutorial at nasiyahan sa pagbuo ng isang bagay na kapaki-pakinabang dito. Kung mayroon kang anumang mga pagdududa maaari mong iwanan ang mga ito sa seksyon ng komento sa ibaba o gamitin ang aming mga forum para sa iba pang mga teknikal na query.