guía de instalación y despliegue de la plataforma motam · 3 en esta guía se describen los pasos...
Post on 26-Jul-2020
0 Views
Preview:
TRANSCRIPT
1
PROYECTOMOTAMGUÍADEINSTALACIÓNYDESPLIEGUEDELAPLATAFORMA
TABLADECONTENIDOGuíadeinstalaciónydesplieguedelaplataforma..............................................................1Controldeversionesdeldocumento..................................................................................2Instalacióndelapasarela–RaspberryPi............................................................................3Conexióndeloscomponenteshardware.............................................................................3Instalacióndelsistemaoperativo(Raspbian).......................................................................4Configuracióndelapantallatactil........................................................................................4InstalacióndeNode.JS..........................................................................................................4Instalacióndelasdependencias(paquetessoftware)..........................................................5Copiadelosficheros/componentesdelaplataformamotam..............................................5Permisosnecesariosparalaejecución..................................................................................6InstalacióndelosmódulosNode.JS......................................................................................6InstalacióndelospaquetesPython......................................................................................6Creacióndeaccesodirectoenescritorio..............................................................................6
InstalacióndelaplataformahardwareArduino/Genuino101............................................6Conexióndeloscomponenteshardware.............................................................................7InstalacióndelentornodedesarrolloArduino.....................................................................8Programacióndelmicrocontrolador.....................................................................................8Ponerenfuncionamientolosactuadores.............................................................................9
InstalacióndelossensoresRFduino...................................................................................9InstalaciónyconfiguracióndelentornodedesarrolloparaRFduino...................................9ProgramacióndelmicrocontroladordelossensoresRFduino...........................................10Sensordeclimatología........................................................................................................10Sensorsilladebebés...........................................................................................................11Sensorcalidaddelaire........................................................................................................12Sensordelucesdesemáforo..............................................................................................12Sensordepresenciadebicicleta.........................................................................................13ModificacióndesensoresRFduino.....................................................................................14
InstalacióndelmóduloNB-IoT.........................................................................................15ProgramacióndelaplacaArduinoconlashieldNB-IoT.....................................................16
2
CONTROLDEVERSIONESDELDOCUMENTO30nov.2017 Añadidoapartado“ModificacióndesensoresRFduino”eíndice8ene.2018 AñadidasinstruccionesparaevitarconflictoconWifiDirectsurgidotras
actualizarlospaquetesen“InstalacióndelasDependencias”5feb.2018 Añadidoapartado“InstalacióndelmóduloNB-Iot”.
ActualizadaURLdelrepositoriodeSensoresMOTAM.15feb.2018 ActualizadainformaciónplacasArduinocompatiblesconelmóduloSODAQ
NB-IOTSHIELD.
3
Enestaguíasedescribenlospasosaseguirparainstalarydesplegarlosdistintoscomponentes-softwareyhardware-queconformanlaplataformaMOTAM.
INSTALACIÓNDELAPASARELA–RASPBERRYPILapasarela,consistenteenlaplataformahardwareRaspberryPi,eslabasesobrelaquesedespliegantantolossensoresMOTAMcomolapasareladecomunicaciónentrepuertoserieyBLE.
Acontinuación,sepresentanlospasosnecesariosparallevaracabolaconfiguraciónyeldesplieguedelapasarelaydelrestodecomponentesMOTAMaejectuarsobrelamisma.
RASPBERRYPI3B
TOUCHSCREENLCD
GPSRECEIVER
INTERFAZOBDII
ILUSTRACIÓN2:ELEMENTOSDELAPASARELA:PLATAFORMAHARDWARERASPBERRYPI
CONEXIÓNDELOSCOMPONENTESHARDWARE
ILUSTRACIÓN1:PLATAFORMAHARDWARERASPBERRYPI(PASARELA)CONACTUADORESCONECTADOSPORPUERTOSERIE
4
LaconexióndelreceptorGPSydel lectorOBD-II,dispositivosUSBenlosquesebasanlossensoresdeposiciónyvelocidaddelaplataformaMOTAM,estansimplecomoconectarlosalospuertosUSBlibresdelaRaspberryPi.Elordenenelqueseconectenesindiferente,ypuedenserconectadostantoconlaRaspberryPiapagadacomoencendida.
LatransmisiónmedianteBLEdesdelapasarelaserealizamedianteunchipintegradoenelactualmodelodelaRaspberryPi(Model3B),porloquenotenemosquepreocuparnosenconectarloniconfigurarlo.
INSTALACIÓNDELSISTEMAOPERATIVO(RASPBIAN)Sedeberánseguirlossiguientespasos:
1. Descargar la última versión del sistema operativo Raspbian desde la web(https://www.raspberrypi.org/downloads/raspbian/).Elegirlaopción“RaspbianwithDesktop”parapodertenerunescritorioennuestroentorno.Laversiónusadaennuestrocasohasidola“RaspbianStretchwithDesktop”.
2. Descargarelprograma“Win32DiskImager”:https://sourceforge.net/projects/win32diskimager/3. Extraerelfichero.zipunavezdescargadoelarchivo.4. Formatear la tarjeta SD. Se recomienda el uso de la herramienta SD Formatter 5.0
(https://www.sdcard.org/downloads/formatter_4/)5. Volcar la imagendeRaspbian en la tarjeta SD. Para ello introducimos la tarjeta SDenel PC,
abrimos Win32DiskImager, seleccionamos el fichero .img descomprimido, seleccionamos latarjetaSDen“Device”ypulsamosen“Write”.
6. Conectamosteclado,ratónymonitor.EnchufamoslaRaspberryPiy la instalaciónserealizaráautomáticamente, mostrándonos por pantalla el escritorio Raspbian. Ahora podemosconectarnos a la red mediante un cable de red o mediante Wifi haciendo clic en el iconocorrespondiente.
NOTA:Lascredencialesparaentrarson“pi:raspberry”.
CONFIGURACIÓNDELAPANTALLATACTILEsposiblequecuandoseinicieelsistemaoperativodeRaspberryPi,lapantallaseencuentrerotada180º.Parasolucionaresto,debemosejecutar:
$ sudo su -c 'echo lcd_rotate=2 >> /boot/config.txt'
INSTALACIÓNDENODE.JSParalainstalacióndeNode.JS,entornosobreelcualseapoyaelsoftwaredelapasarela,sedebenseguirlossiguientespasosenlaterminal:
1. ElprimerpasoesactualizarlosrepositoriosyelsoftwaredenuestraversióndeRaspbian.Paraelloejecutamos:$ sudo apt-get update && sudo apt-get upgrade
2. AñadimoselrepositorioDebiande“nodesource.com”enelsistema.Paraellohayquedescargarelscriptyejecutarloenelsistema:$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
3. InstalamosNode.JSversión6enelsistema:$ sudo apt-get install nodejs
5
NOTA:Sehaelegidolaversión6deNode.JSyaqueestádestinadaaserlaversiónactualLTS.INSTALACIÓNDELASDEPENDENCIAS(PAQUETESSOFTWARE)ParainstalaryconfigurarcorrectamentecadaunadelasdependenciasnecesariasparalaejecucióndetodosloscomponentesdelaplataformaMOTAM,deberemosseguirlossiguientespasos:
1. EnprimerlugardeberemosinstalarlospaquetessoftwarequegestionanelreceptorGPS.$ sudo apt-get install gpsd gpsd-clients
2. Elpaqueteinstalaunservicioqueescuchacontinuamenteunsocketlocalyejecutagpsdcuandoalgúnclienteseconectaalsocket.Dichoserviciointerfiereconotrasejecucionesdegpsd(comolasdelsoftwareMOTAM),porloquesehacenecesariodesactivarlo.$ sudo systemctl stop gpsd.socket $ sudo systemctl disable gpsd.socket
3. InstalarelsimuladordeinterfazOBDII.Paraelloejecutamos:$ sudo apt-get install obdgpslogger
4. Instalar lautilidad“socat”,necesarioparausarpuertosserievirtualesparaelsimuladorde lainterfazOBDII.$ sudo apt-get install socat
5. Instalarudhcpd,necesarioparacrearlareddeWifiDirectconlaquecomunicaremospasarelayterminalmóvil.$ sudo apt-get install udhcpd
6. DeshabilitarelservicioclientedeDHCPparaelcorrectofuncionamientodeWifiDirect.Conlaactualización 6.11.5 del paquete DHCPCD5 se produce un conflicto entre la creación de unainterfazvirtualdeWifiDirectyelclienteDHCPCD.Portanto,esnecesariodeshabilitarlo.$ sudo systemctl disable dhcpcd.service
7. Reiniciarel sistema.Esnecesario reiniciarparaque loscambios surtanefecto–enespecial ladeshabilitacióndeDHCPCD.$ sudo reboot
NOTA: En las nuevas versiones de Raspbian, ya vienen instalados los paquetes software relativos aBluetooth,porloquenoesnecesarioinstalarlos.NOTA2:Sisenecesitaconexiónainternet,lamejoropciónesporEthernet,puestoqueelinterfazWiFiintegradoenlaRaspberryPiseusaráparacrearlaconexiónWifiDirect.SiserequiereasignarunaIPfijaalapasarelaparaesto,noseharáatravésdelclienteDHCP,puestoquehasidodeshabilitado.Serealizarámedianteelficherodeconfiguración/etc/network/interfaces.NOTA3:(soloparaprobarelfuncionamiento).SiqueremosejecutarunclienteGPS,deberemosintroducirlossiguientescomandos,donde“/dev/ttyUSB0”eselpuertoasignadoalreceptorGPS.$ sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock $ cgps -s
COPIADELOSFICHEROS/COMPONENTESDELAPLATAFORMAMOTAMTodoslosficheros/componentesdelaplataformaMOTAMaejecutarsobrelaplataformaRaspberryPiseencuentranenelsiguienterepositorioGit:
https://github.com/nicslabdev/MOTAM-Gateway
6
Porlotanto,tansólohacefaltacopiarelcontenidodeesterepositorioaldirectorioquevamosacrear,yenelcualestarántodoslosficherosrelacionadosconelproyectoMOTAM“/home/pi/MOTAM”
$ git clone https://github.com/nicslabdev/MOTAM-Gateway /home/pi/MOTAM
PERMISOSNECESARIOSPARALAEJECUCIÓNAlgunosscriptsenlosqueseapoyaelcódigoprincipalnecesitanpermisosdeejecuciónparapoderserejecutados.Paraelloejecutamos:
$ sudo chmod +x /home/pi/MOTAM/util/usbDiscovery $ sudo chmod +x /home/pi/MOTAM/util/startGateway.sh $ sudo chmod +x /home/pi/MOTAM/util/zenity
INSTALACIÓNDELOSMÓDULOSNODE.JSLos módulos necesarios para el funcionamiento de nuestro código de Node.JS se encuentranespecificadosenelfichero“package.json”.Portanto,parainstalarlos,soloesnecesarioejecutar:
$ cd /home/pi/MOTAM $ npm install
INSTALACIÓNDELOSPAQUETESPYTHONSeránecesarioinstalarlospaquetesnecesariosparaelfuncionamientodelosscriptsauxiliaresdePython.Losinstalaremosparaelsuper-usuario(sudo),yaqueelcódigoNode.JSseejecutarácomosuper-usuario.
$ sudo pip install obd bluepy
CREACIÓNDEACCESODIRECTOENESCRITORIOSeprocedeacolocarunaccesodirectoenelescritorioconelobjetivodequenoseanecesarioelusoderatónytecladoparaejecutarelprogramaprincipal.Unavezcolocado,bastaráconpulsardosvecesdesdelapantallatáctildelaRaspberryPiparaejecutarlo.
$ mv /home/pi/MOTAM/MOTAM /home/pi/Desktop
INSTALACIÓNDELAPLATAFORMAHARDWAREARDUINO/GENUINO101La plataforma hardware Genuino 101 es la base sobre la que se despliegan los actuadores visual,luminosoysonorodelaplataformaMOTAM.LaconexiónentreestaplataformaylapasarelaserealizamediantepuertoserieatravésdeuncableUSB,aunquesehaproyectadoqueenfuturasversionesestaconexiónsearealizadamediantetecnologíasinalámbricas.
Loscomponentesempleadosenestaplataformasonlossiguientes:
7
GENUINO101
INTERFAZGROOVE
LCDRGBBACKLIGHT
LED
BUZZER
ILUSTRACIÓN3:COMPONENTESDELAPLATAFORMAHARDWAREARDUINO/GENUINO101
A continuación, se presentan los pasos necesarios para llevar a cabo la instalación, configuración ydesplieguedeloscomponentesMOTAMaejecutarenestaplataformahardware.
CONEXIÓNDELOSCOMPONENTESHARDWARELa conexión de los distintos actuadores de la plataformaMOTAM acoplados a la placa de desarrolloArduino/Genuino101sehallevadoacaboatravésdelaplataformaGrove(deSeeed-Studio),queofreceunsistemadeconexiónmodular(ylistoparausar)conunagranvariedaddecomponenteselectrónicos.
LacitadainterfazGrovevainsertadaenlospinesdelaplacadedesarrolloArduino/Genuino101.
El esquema de conexión usado para conectar los distintos actuadores a la plataforma hardwareArduino/Genuino101
ILUSTRACIÓN4:PLATAFORMAHARDWAREARDUINO/GENUINO101
8
ILUSTRACIÓN5:ESQUEMADECONEXIÓNENTRELOSCOMPONENTESGROVEYLAPLATAFORMAARDUINO/GENUINO101
INSTALACIÓNDELENTORNODEDESARROLLOARDUINOParalaprogramaciónenArduinodenuestraplataforma,seránecesarioinstalarelArduinoIDE
1. Descargar e instalar el IDE oficial de Arduino desde laweb de Arduino. En este caso hemosempleadolaversión1.8.4.https://www.arduino.cc/en/main/software
2. Descargamos los sketchs y las librerías necesarias desde el repositorio de MOTAM-Arduino_RFduino:https://github.com/nicslabdev/MOTAM-Arduino_RFduino
3. Instalamos las librerías descargadas en nuestro entorno de desarrollo Arduino. Para ello,copiamoselcontenidodelacarpeta“libreries”enlacarpetadelaslibreríasinstaladasdenuestroArduinoIDE,normalmentesituadaen“C:\Users\usuario\Documents\Arduino\libraries”
4. Instalamos losdriversparaArduino/Genuino101.Paraello,arrancamoselArduino IDEynosvamosa “Herramientas –Placa–Gestorde tarjetas…”. Enel buscadorponemos “Intel CurieBoards”yseleccionamoseinstalamoselpaquetequeincluyelastarjetasArduino/Genuino101.
PROGRAMACIÓNDELMICROCONTROLADOR
1. ConectamosporUSBelArduino/Genuino101alPC.2. AbrimoselIDEdeArduinohaciendodobleclickenelsketchquequeremosinstalar.Ennuestro
caso“Display_Light_Sound_Actuators_Genuino101.ino”3. ConfiguramoselIDE.Esposiblequeestotengamosquehacerlocadavezqueconectemoslaplaca
porUSBalPC:a. NosvamosaHerramientas/Placayseleccionamos“Arduino/Genuino101”.
9
b. NosvamosaHerramientas/Puertoyseleccionamosaquelenelquesehayadetectado“Arduino/Genuino101”.
4. Pulsamos sobre el botón “Subir” para iniciar la compilación y subida del software almicrocontroladordelaplacadedesarrollo.
PONERENFUNCIONAMIENTOLOSACTUADORESParaponerenfuncionamientoestaplataformahardware,bastaconconectarlamedianteuncableUSBaunpuertoUSBlibredelapasarela.Cuandoseejecuteelprogramaprincipaldelapasarela,seestableceráautomáticamenteunaconexiónmediantepuertoserie.
INSTALACIÓNDELOSSENSORESRFDUINOLaplataformahardwareRFduinoeslabasesobrelaquesedesplieganelrestodesensoresybalizasdelaplataformaMOTAM.
Enestosmomentosseencuentrandesarrollados5tiposdesensoresdiferentes:sensordeclimatología,sensorparasilladebebés,sensordecalidaddelaire,sensordelucesdesemáforoysensordepresenciadebicicleta.
TodoslossensoresybalizasestánbasadosenlaplataformadedesarrolloRFduino.Estetipodeplacassebasan en “shields”, de forma que se pueden ir agregando unas shields encima de otras para añadirfuncionalidad.
ExistentresshieldsbásicasusadasenMOTAM:
MICROCONTROLADORRFDUINO
BATTERYSHIELD
USBSHIELD
ILUSTRACIÓN6:SHIELDSRFDUINOUSADASENMOTAM
INSTALACIÓNYCONFIGURACIÓNDELENTORNODEDESARROLLOPARARFDUINOPara poder llevar a cabo la programación del microcontrolador RFduino, es necesario configurarpreviamenteelequipomedianteestospasos:
1. DescargareinstalarloscontroladorescorrespondientesparaelsistemaoperativodelPCdesdeelquesevaarealizarlaprogramación:http://www.ftdichip.com/Drivers/VCP.htm
2. Abrirel IDEdeArduino.IraArchivo,Preferencias.Añadir lasiguientedirecciónen“GestordeURLsadicionalesdetarjetas”:http://rfduino.com/package_rfduino_index.json
10
3. IraHerramientas,Placa,Gestordetarjetas…InstalarelpaqueteRFduinoBoardsbyRFduino.
PROGRAMACIÓNDELMICROCONTROLADORDELOSSENSORESRFDUINOPara realizar la programación de los RFDuino deberemos acoplar el USB Shield a el shield delmicrocontroladorRFduino.ElconectorUSBdelUSBShieldsedeberáconectaraunpuertoUSBdelequipodesdeelquesevayaarealizarlaprogramacióndelmicrocontrolador.
Deberemosseguirlossiguientespasospararealizarlaprogramacióndelmicrocontrolador:
1. ConectamosporUSBelRFduinoalPC.2. AbrimoselIDEdeArduinohaciendodobleclickenelsketchquequeremosinstalar.Hayunsketch
porcadatipodebaliza-sensor.3. ConfiguramoselIDE.Esposiblequeestotengamosquehacerlocadavezqueconectemoslaplaca
porUSBalPC:a. NosvamosaHerramientas/Placayseleccionamos“RFduino”.b. NosvamosaHerramientas/Puertoyseleccionamosaquelenelquesehayadetectado.
4. Pulsamos sobre el botón “Subir” para iniciar la compilación y subida del software almicrocontroladordelaplacadedesarrollo.
SENSORDECLIMATOLOGÍAElsensordeclimatologíaseencargadedetectarlatemperatura,humedadylapresenciadeagua.EstácompuestoporunaplacadedesarrolloRFduino,unsensordetemperaturayhumedad,unsensordeaguayunaplacadeconexiónelaboradaporlaUMA.
Elsensordeaguaseconectaalpin5deRFduino,elsensordetemperaturayhumedadseconectaalpin6deRFduino.
ILUSTRACIÓN7:SHIELDUSBCONECTADAALMICROCONTROLADORRFDUINOPARAPROGRAMAR
11
ILUSTRACIÓN8:COMPONENTESDELSENSORDECLIMATOLOGÍA
ILUSTRACIÓN9:SENSORDECLIMATOLOGÍAMONTADOENCAJADEPROTECCIÓN
SENSORSILLADEBEBÉSEl sensorde silladebebéses capazdedetectar si unniñoestá sentadoen la silla y si el cinturón seencuentraabrochado.EstácompuestoporunaplacadedesarrolloRFduino,uninterruptormagnético,unsensordepresiónyunaplacadeconexiónelaboradaporlaUMA.Lacitadaplacadeconexiónconstadeunpotenciómetroquesirveparaajustarlasensibilidaddelsensordepresión.
MICROCONTROLADOR
RFDUINO
SHIELDDEBATERÍA
INTERRUPTORMAGNÉTICO
SENSORDEPRESIÓN
PLACADECONEXIÓN
ILUSTRACIÓN10:COMPONENTESDELSENSORSILLADEBEBÉS
Elsensordepresiónseconectaalpin5deRFduino,elsensormagnéticoseconectaalpin6deRFduino.Las conexiones tantoel sensordepresióncomoelmagnéticocon la cajadeproteccióndel sensor serealizamedianteunconectorRJ11conelfindefacilitarlainstalación.
SENSOR DE TEMPERATURAYHUMEDAD
SENSORDEAGUA MICROCONTROLADORRFDUINO
SHIELDDEBATERÍA PLACACONEXIÓN
12
MONTAJEPLACADESARROLLO
RFDUINO
COLOCACIÓNENLACAJADE
PROTECCIÓN
MONTAJEFINALEXTERNO
ILUSTRACIÓN11:SENSORDESILLADEBEBÉSMONTADOENCAJADEPROTECCIÓN
SENSORCALIDADDELAIREElsensordeclimatologíadetectalacalidaddelaireylapresenciadegases.EstácompuestoporunaplacadedesarrolloRFduino,unsensordecalidaddelaire,unsensordegasesyunaplacadeconexiónelaboradaporlaUMA.
MICROCONTROLADORRFDUINO
SHIELDDEBATERÍA
SENSORDECALIDADDEL
AIRE
SENSORDEGASES
PLACADECONEXIÓN
ILUSTRACIÓN12:COMPONENTESDELSENSORDECALIDADDELAIRE
El sensordecalidaddelaire seconectaalpin5deRFduinoyel sensordegas seconectaalpin6deRFduino.
ILUSTRACIÓN13:SENSORDECALIDADDELAIREMONTADOENSUCAJADEPROTECCIÓN
SENSORDELUCESDESEMÁFORO
13
ElsensordelucesdesemáforodetectaelestadoactualdeunsemáforoyestácompuestoporunaplacadedesarrolloRFduino,tresfotorresistenciasyunaplacadeconexiónelaboradaporlaUMA.Laplacadeconexióncuentaasuvezcontrespotenciómetrosparaajustarlasensibilidaddelasfotorresistencias.
MICROCONTROLADOR
RFDUINO
SHIELDDEBATERÍA
FOTORRESISTENCIA
PLACADECONEXIÓN
ILUSTRACIÓN14:COMPONENTESDELSENSORDELUCESDESEMÁFORO
Cadaunadelasfotorresistenciasseencuentraconectadaalospines4,5y6deRFduino.
ILUSTRACIÓN15:SENSORDELUCESDESEMÁFOROMONTADOENSUCAJADEPROTECCIÓN
SENSORDEPRESENCIADEBICICLETAElsensordepresenciadebicicletaescapazdedetectarlapresenciadeunabicicletaysuestado:bicicletaenmarchaobicicletaaccidentada.EstácompuestoporunaplacadedesarrolloRFduino,unaplacadeconexiónelaboradaporlaUMA,dossensoresdeinclinaciónyunsensormagnético.Elsensormagnéticoirácolocadoenlahorquilla,deformaqueseaactivadomedianteelpasoderuedaconunimánsituadoenunradio.
MICROCONTROLADOR
RFDUINO
SHIELDDEBATERÍA
SENSORDEINCLINACIÓN
INTERRUPTORMAGNÉTICO
PLACADECONEXIÓN
ILUSTRACIÓN16:COMPONENTESDELSENSORDEPRESENCIADEBICICLETA
Lossensoresdeinclinaciónseconectanalospines4y5.Elsensormagnéticoseconectaalpin6.
14
La conexióndel sensordepasode ruedacon la cajadeproteccióndel sensor se realizamedianteunconectorRJ11conelfindefacilitarlainstalación.Lossensoresdeinclinaciónseencuentranembutidosdentrodelacajadeprotección.
ILUSTRACIÓN17:SENSORDEPRESENCIADEBICICLETAMONTADOENSUCAJADEPROTECCIÓN
MODIFICACIÓNDESENSORESRFDUINOEsposiblemodificar el comportamientode los sensores y la informaciónque transmiten. Estopuederesultarútilpara,porejemplo,definirlaubicaciónGPSexactay/oelsentidodecirculaciónparaelquedebefuncionarelsensorquesevaadesplegar.
UnavezconfiguradoelPCparapodercompilarysubirlossketchesalosRFduino,soloquedamodificarelcódigodeestossketchesparaponerlaubicaciónyelrumboquesequiera.
Paraello,modificamoselsketchdelasiguienteforma:
ILUSTRACIÓN18:ARRAYDONDESESITÚALAINFORMACIÓNQUETRANSMITEELSENSORDESEÑALSTOP
EnelarrayadvDatasesitúalatramadelpaqueteadvertisingquetransmitenperiódicamentelosRFduino.
15
Enprimerlugartenemosqueobtenerlascoordenadasdellugardondevamosasituarelsensor.Paraello,serecomiendaelusodeGoogleMaps.Haciendoclicksobreellugardelmapaenelquesevaadesplegarelsensor,semostraránlascoordenadas.
EnBluetoothLowEnergy,losbytesdeinformaciónsetransmitenenformatoLittle-endian.Además,enlatramaBLEdeMOTAM,lascoordenadassetransmitenpasandoabinariodosnúmerosenformatofloat(latitudylongitud).Parahacermásfácilelmanejodeestosvalores,enelsketchseencuentranexpresadosenformatohexadecimal.Parafacilitarlatareadeincluirenlatramaestosdosvalores(latitudylongitud),seemplealasiguienteherramientaonline.
https://gregstoll.dyndns.org/~gregstoll/floattohex/
Enella,hayquehacerclicksobre“SwapEndiannes”paraactivarlarespresentacióndelosvaloresenLittle-endian.Comopodemosverenlailustración18,laprecisióndelosvaloresvienedeterminadaporquelatramareserva4bytesparalalatitudy4bytesparalalongitud.
Paraponerelrumboosentidodelamarchaparalaqueestádesplegadoelsensor(campo“fromdirectionthatapplies”enelsketch)noesválidoelusodelaherramientaanterior,puesestenuevovalorseexpresacomounentero.Ensulugar,serecomiendaelusodelasiguienteherramienta:
http://www.binaryhexconverter.com/decimal-to-hex-converter
NoolvidarqueestenúmerotambiénseexpresaenLittleEndian,porloquelosbytesmássignificativosvandespués.
Ejemplo: 35(decimal)=0x0023(hexadecimal)=0x2300(hexadecimallittleendian)
280(decimal)=0x0118(hexadecimal)=0x1801(hexadecimallittleendian)
INSTALACIÓNDELMÓDULONB-IOTElproyectoMOTAMincluyesoporteparadotaralaplataformadeconectividadNarrowBandInternetofThings (NB-IoT). Esta conectividad se realizamediante una shield compatible con el factor de formahabitualenArduino.
Hastaelmomento,laredNB-IoTdeEspañasolohasidodesplegadaporeloperadorVodafone.ParaelaccesoaestaredesnecesariotenerunatarjetaSIMcompatibleconNB-IoTdeesteoperador.
LashieldutilizadaenelproyectoMOTAMeslaSODAQNB-IoTShield, lacual incorporadosmódulosyvariossensores,loscualessedescribenacontinuación:
• MóduloNB-IoT:Setratadeunmódulodelfabricanteublox,modeloSARA-N211.ProporcionaconectividadNB-IoTenlasbandas8y20.CabedestacarquelaredNB-IoTdeVodafoneEspañautilizalabanda20.
• MóduloGPS:Tambiénfabricadoporublox,modeloSAM-M8Q.SetratadeunreceptorGPS.• Sensordetemperaturayhumedad:LashieldincorporaelsensorHTS221.• Sensordepresiónatmosférica:ModeloLPS22HB.
16
• Sensordeaceleraciónymagnetómetro:ModeloLSM303AGR.
PROGRAMACIÓNDELAPLACAARDUINOCONLASHIELDNB-IOTEs conveniente conocer un aspecto de esta shield. Es frecuente que la comunicación entremicrocontroladoressehagaatravésdelpuertoserie.YesasícomoocurreentreelmóduloNB-IoTdeestashieldyArduino.Esporestoque,dependiendodelArduinoutilizado,puedeexistirunconflictoentreelpuertoUSButilizadoparaconectarelPCalArduino(yqueusaestepuertoserie)yelpuertoserieconelquesecomunicanArduinoyNB-IoT.Portanto:
Unavezconocidoesto,lospasosaseguirparacargarunsketcheselsiguiente:
1. ConectamosporUSBlaplacaArduinoalPC.2. AbrimoselIDEdeArduinohaciendodobleclickenelsketchquequeremosinstalar.3. ConfiguramoselIDE.Esposiblequeestotengamosquehacerlocadavezqueconectemoslaplaca
porUSBalPC:
ConmodelosdeArduinocuyomicrocontroladortengamásdeunUARTypuedaelegirseusarcadaUARTen un puerto serie distinto no existe problema. Simplemente a nivel de software (sketch Arduino)deberádefinirseunpuertoserieparalaconexiónconelmóduloNB-IoTyotroparalaconexiónUSBconelPC.EstaconfiguraciónhacequeseaposibleeldebugmedianteunmonitordepuertoserieenelPC,comonormalmentesehaceconArduino.AlgunosmodelosArduinoquecumplenestosson:ArduinoLeonardo,Arduino101,ArduinoZero,ArduinoM0,SODAQExpLoRer.
ConmodelosdeArduinocuyomicrocontroladorsolotengaunUARTosolounpuertoSerienoesposiblela conexiónmediante USB al PCmientras se encuentremontada la shield NB-IoT. Los sketches deArduino deberán ser cargados en la placa con la shield desconectada, pues de lo contrario lacomunicaciónentrePCyArduinonoserácorrectayelIDEdeArduinonolocargará,notificándonosdeun error de conexión. Tras cargar el sketch ya podremos conectar la shield. El debugmediante unmonitordepuertoserieenelPCnoesposibledeformanativa.AlgunosmodelosdeplacaArduinoconestalimitaciónson:ArduinoUNO,ArduinoMEGAoIntelGalileo.
ILUSTRACIÓN19:SHIELDNB-IOTMONTADASOBREPLACAARDUINOLEONARDOCONUNATARJETASIMVODAFONENB-IOT
17
a. Nos vamos a Herramientas/Placa y seleccionamos elmodelo de placa que estemosusando.
b. NosvamosaHerramientas/Puertoyseleccionamosaquelenelquesehayadetectadolaplaca.
4. Pulsamos sobre el botón “Subir” para iniciar la compilación y subida del software almicrocontroladordelaplacadedesarrollo.
En el repositorio de GitHub de los sensores y balizas del proyectoMOTAM se pueden encontrar lossketchesparaelusodelashieldNB-IoT:https://github.com/nicslabdev/MOTAM-Arduino_RFduino
ATCOMMANDS:
Estesketchessolocompatibleconlasplacasconmásdeunpuertoserie/UART(ArduinoLeonardo).EstableceunbypassentreelpuertoseriealqueseconectaelPC–atravésdelpuertoUSB-yelpuertoseriealqueseconectaelNB-IoT.EstopermitecomunicarnosdirectamenteconelmódemNB-IoTmediantecomandosAT.
PararealizarestaconexiónesnecesarioabrirelmonitorseriedelIDEdeArduinoyseleccionarunbaudratede9600yconfigurarlafinalizacióndecadalíneaenviadacon“Retornodecarro”.
ComoejemplotenemoslasiguientesecuenciadecomandosAT:
AT+NRB à Reinicia el módulo AT+CEREG=2 à Se habilita el registro a la red AT+CSCON=1 à Se habilita el CSCON URC AT+CFUN=1 à Se establece el modo de máxima funcionalidad AT+CIMI à Devuelve el IMSI de la tarjeta SIM AT+CGDCONT=0,"IP","" à Se definen los parámetros de conexión AT+COPS=1,2,"21401" à Se selecciona el operador Vodafone. Devuelve
una serie de parámetros que indican es estado actual de la conexión. Tras un periodo de espera debe devolver algo similar a “+CEREG:5,102F,46CEA3D,7”. Si aparece 5 como la primera cifra indica que el registro en la red se ha realizado correctamente. Puede devolver otros parámetros ante de que el registro se complete.
AT+CGDCONT? à Devuelve los parámetros de la conexión una vez que se ha realizado el registro.
ILUSTRACIÓN 20: CONFIGURACIÓN DEL MONITOR SERIE PARA LA CONEXIÓNMEDIANTECOMANDOSAT
18
AT+CSQ à Devuelve la calidad de la señal. 99,99 si la conexión no se ha realizado correctamente.
AT+CGATT? à Devuelve 1 si el dispositivo se encuentra registrado en la red.
AT+CGPADDR à Devuelve la IP asignada por la red al dispositivo.
AT+NUESTATS à Devuelve información variada sobre la red y la conexión.
top related