LoPy LoRaWAN IoT WorkshopLoPy LoRaWAN IoT Workshop University of Edinburgh Pycom October 2016 The...
Transcript of LoPy LoRaWAN IoT WorkshopLoPy LoRaWAN IoT Workshop University of Edinburgh Pycom October 2016 The...
LoPy LoRaWAN IoTWorkshopUniversityofEdinburgh
PycomOctober2016
ThePlanforToday
• Twohourworkshop• weareworkinginpairs,eachpairneedsalaptop.
• We’llgiveabitofbackgroundonLoRaWAN• Thewe’llgetstuckintoPycom LoPy programming• Gettingsetup• SimpleLoRaWAN communication• HookingupaLightSensor
• At4pmpresentationbyFreddeHaro CEOofPycom• Alldoneby5pm
LoRaWANforLowPowerWideAreaNetworking
LoRaWAN SpecificationEuropeLoRaWAN™forEuropeLoRaWAN definestenchannels,eightofwhicharemultidataratefrom250bpsto5.5kbps,asinglehighdatarateLoRa®channelat11kbps,andasingleFSKchannelat50kbps.ThemaximumoutputpowerallowedbyETSIinEuropeis+14dBM,withtheexceptionoftheG3bandwhichallows+27dBm.TherearedutycyclerestrictionsunderETSIbutnomaxtransmissionorchanneldwelltimelimitations.
LoRaWAN Architecture
LoRaWAN performancecharacteristics
Green=5kmRed=10kmradiuscoveragecentred onGeorgeSquare
UniversityofEdinburghisputtinginplace5Kerlink gateways.
Multiplegatewaysalsoenabletriangulationofpositionofsensors(LoRaWAN 2.0).
LoRaWAN DeviceClasses
“Aloha”
KeyLoRaWAN NetworkingConcepts• Dataisencryptedatthenetworklayer(metadata)andseparatelyattheapplicationlayer(payload).• Application
• AnApplicationisidentifiedbyaunique64-bitApplicationEUI.• DevicesmustberegisteredwithaspecificApplication.
• Device• Adevicehasaunique64-bitDeviceEUIassignedbythemanufacturer.• Thenetworkwillrefertothedevicebyassigningita32-bitDeviceAddress.
• ActivationByPersonalisation (ABP)[insecure]• Requiresyouknowyourassigned32-bitDeviceAddress,and128-bitApplicationSessionKeyand128-bitNetworkSession
Key– astaticconfiguration.• OverTheAirActivation(OTAA)[secure]
• RequiresyouknowyourApplication’sKey(whichisassignedwhentheApplicationiscreated),ApplicationEUIandDeviceEUI.
• Sessionkeysareassigneddynamicallybythenetworkaspartofthejoinprocedure.• Framecountsaremaintainedbythenetworkanddeviceforuplink(devicetogateway)anddownlink(gatewaytodevice).Thenetworkwillrejectnewframesreceivedthathaveanearlierframecount.
WewillonlybeusingABPtoday.
Whatweareaimingtobuildtoday
Thisisourfirsttime!Pleasebepatient…Thisisreallynewtechnologyandyouhavetheverylatestfirmwarereleaseinyourhandsbeforeanyoneelse(!),andtherewillbelotsforallofustolearntodayJ
Initialsetup
• DownloadandinstallthePymakr IDE• PlugyourLoPy inviatheUSBcabletoyourlaptop• Ifworking,youshouldseeaperiodicflashingbluelight
• RunPymakr IDE• TheLoPy willbeconnectedtoviaUSBserialport
• IfnottryexitingandrestartingPymakr…
TurnofftheflashingblueLED
AttheMicro-Pythonprompttype:
import pycompycom.heartbeat(False)
Let’ssendamessageviaLoRaWAN
• OpenanewsourcecodefileinPymakr tosaveyourcodein.• Youcansimplyrunthecontentsofthisfile(greenplaybutton)ontheLoPy.• Youwillneedtosetthevariousauth keystothoseforyourLoPy.
from network import LoRaimport timeimport socketlora = LoRa(mode=LoRa.LORAWAN)# ABP auth tuple (NwkSKey, AppSKey, DevAddr)auth = (bytes([…]), bytes([…]), …)lora.join(activation=LoRa.ABP, auth=auth)while not lora.has_joined():time.sleep(2.5)
s = socket.socket(socket.AF_LORA, socket.SOCK_RAW)s.setblocking(False)s.send(“hello-X”) # X = your group number
AndnowfortheLightSensor
• LightSensor drivercodewillbedistributedviaemail/USBstick.• Pleasetakecarewiringuptheboard,andusetheantistaticwriststrapprovided.• Therestisuptoyou!
• Thegoalistotransfertheluxlightreadingonceevery30secondstotheUoE LoRaWAN backend.
WiringuptheLightSensorboard
• Pleasenoteontheexpansionboardpinout:G16=SDAG17=SCL
• Wewillconnect3V3ontheexpansionboardtoVINonthesensor,andGNDtoGNDasyouwouldexpect.
That’sallfolks!Thankssomuchforyourparticipationandpleasesendusyourfeedbackbyemail,good/baditallhelpsimprovethetechandourworkshopdelivery,andpleasedoalsotelluswhatwouldyoulikeafutureworkshoptocoverwiththeLoPy?