• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
lte su python rasp dati e 3g

Rasp, Python e dati su 3G/LTE
#1
Buongiorno a tutti,

mi sto imbarcando in (non tanto) piccolo progetto basato sull'accoppiata Rasp Pi3 / Python. Si tratta di una piccola "stazione di comunicazione mobile" con una webcam, microfono/cuffia e qualche sensore.

Ciò che dovrebbe essere trasmesso è per lo più un video ripreso costantemente da una camera (anche un becero 320x240 mpeg o meglio H264 all'inizio), un audio, la posizione GPS e qualche dato proveniente da qualche sensore (temperatura, umidità).

Il solo constraint, date le enormi distanze in gioco, è purtroppo il mezzo di tramissione/ricezione dati: un modulo 3G (o LTE al limite). Per far questo avevo pensato a dei moduli 3G/LTE, (come il MultiConnect Dragonfly) ma su questo campo, ahimè, sono completamente impreparato.

Ho visto che per comunicare con questi dispositivi, per lo più basati sul chip Telit 910, si utilizzano dei comandi seriali noti come "Comandi AT". Ma ho qualche dubbio che, oltre alla normale chiamata dati o invio di SMS, si possa comunicare continuamente qualche "pacchetto dati" come quello sopra, o aprire più flussi dati distinti (video, audio, dati analogici dei sensori, ecc).

Perdonate la mia ignoranza ma, come detto, sono completamente a secco di reti e sistemi 3g/LTE e loro funzionamento.

Secondo voi, la cosa è fattibile o sono completamente fuori portata per il Rasp 3? 
C'è qualche progetto di esempio, basato su questi moduli, che potreste indicarmi?

Grazie infinite!
Risposta
#2
Un modulo 3G / LTE non è nient'altro che un modem. Una volta connesso, avrai una connessione internet, al sistema operativo non interessa di che tipo è.
qui una guida in inglese
Risposta
#3
Zzed,
ti ringrazio perchè già così qualche nube si sta diradando!

Come ti dicevo, il mio dovrebbe poter essere un'applicativo Python in cui "impacchettare", spedire e ricevere pacchetti (oggetti?) con contenuti audio/video e numerici. In particolare i flussi , a meno di qualche ritardo inevitabile, sono "continui". Come potrebbe esserlo ad esempio, l'informazione inviata da una telecamera di sicurezza.

Nella guida da te postata, nella parte finale in cui viene trattato il file di configurazione ci sono proprio delle sequenze di comandi AT, tra cui "AT+CGDCONT", che appunto configura la connessione.

Nel momento in cui scrivo, sto provando un modulo python seriale e riesco a comunicare con il Telit 910 ed inviare dei comandi AT.

Miro meglio la domanda: secondo te/voi è fattibile inviare verso un interlocutore in rete dei pacchetti come sopra in "real time" tramite la triade RASP3-Python-modulo3g o mi conviene sostituire qualcosa nella triade?

E, soprattutto, per chi si intende di moduli 3g/LTE, sono i comandi AT ed eventualmente il relativo set per la connessione dati la via giusta?

Grazie!
Risposta
#4
Il tuo errore, secondo me, è pensare al RaspberryPi come a un microcontrollore. Prova a pensare a lui come a un computer. Cone faresti con un computer? Secondo me non serve gestire a basso livello l'invio di questi dati, perché ci pensa il sistema operativo. Python lo puoi usare per mandare i dati su un servizio in rete, come thingspeak o simili. Il video, con la sua camera puoi fare in modo che il RaspberryPi sia esattamente come una Ipcam, con tanto di pagina web, se vuoi, dove viene presentato in streaming quanto ripreso live.
Risposta
#5
E' vero Zzed,
purtroppo il mio approccio nasce dalle "pessime" abitudini del passato (microcontrollori, processori ed FPGA) e "sprecare" così le risorse di una single board computer è un vizio di cui mi debbo liberare.

Magari se avrò bisogno della "portabilità" di questo applicativo che sto per scrivere, ci penserò in un secondo momento, ma per il momento facciamo le cose facili.

Ne approfitto per un consiglio sull'approccio. 
Dato per assodato che il modulo 3G/LTE agirà come un dongle, all'inizio dovrei gestirei seguenti elementi di I/O:
  • Video 320x240 mpeg o h264 (out)
  • posizione GPS da modulo 3G (out)
  • audio da microfono (out)
  • dati dai sensori temperatura e sensori igrometrici (out)
  • dati da switch digitali (out)
  • audio da cuffia (in)


Quindi in pratica si tratta di tutti flussi in uscita e di un solo flusso in ingresso.

Considerando che questi dati verranno inviati verso un servizio di rete (vorrei inizialmente vederli su una semplice pagina html), come organizzeresti i dati?

Ossia, creeresti un solo flusso di uscita sull'indirizzo IP, contenente un oggetto che li raggruppa tutti, o creeresti più flussi dati, uno per I/O?

Inizialmente potrei ovviamente sperimentarli in locale senza bisogno del dongle (127.0.0.1 o indirizzo della rete locale sul quale è connesso il Rasp.)
Come detto, non ho mai operato con le reti e relativi servizi, quindi perdona la banalità o l'incorrettezza delle domande.

Grazie!
Risposta
#6
I flussi in uscita.. Io terrei il video separato su una sua porta, anche perché seguirei una delle tante guide per mettere sul web il video della raspi Cam. Gli altri dati li manderei online con Python.
Anche perché non puoi pensare di mandare in continuo tutti i flussi, visto che le connessioni dati mobili hanno un limite di traffico.
Risposta
#7
Ciao Zzed
come da te suggerito ho provato a sfruttare la connessione del modulo 3G utilizzandolo come un dongle.

Tuttavia, come temevo, questo genera un conflitto di risorse con l'applicazione Python che invece sfrutta i comandi AT per interrogare il sistema sulla posizione GPS.

Infatti avevo dimenticato di spiegare che:

 - devo a gestire delle comunicazioni dati (per il momento a 2 meg in upload che sono sufficienti alla mia applicazione) 
 - devo anche acquisire il GPS.

Quindi, sono costretto a gestire anche la connessione ad internet con i comandi AT nello stesso applicativo Python... qualche suggerimento in merito ai comandi/moduli/librerie da usare?

Grazie mille!
Risposta
#8
Temo di non aver capito.
Risposta
#9
Mi spiego meglio  Big Grin

Allora, per attivare il modulo 3G (Multitech Dragonfly 3G) ed utilizzarlo come un dongle 3G seguo pedissequamente la guida da te postata. Arrivo quindi all'ultimo comando dato da shell 'sudo wvdial 3gconnect' che di fatto fa partire la connessione, utilizzando la risorsa /dev/ttyACM0.

Fin qui tutto bene. Riesco a connettermi ad internet ed utilizzare tutti i servizi.

Poi passo all'applicativo Python. Questo dispositivo, basato sul Telit 910, è di fatto anche un ricevitore GPS.
Ma quando passo a configurare la seriale e, quindi, chiedere  

Codice:
   ser = serial.Serial(port=/dev/ttyACM0, baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=1, rtscts=False, dsrdtr=False)
   return ser

Python mi restituisce un errore, dicendo che la risorsa ttyACM0 è già utilizzata da un altro processo...ovviamente, da wvdial che sta ancora girando sotto shell.


Non conosco bene bash, quindi l'alternativa è riportare anche la gestione della comunicazione (utilizzo del ttyACM0) tutto sotto Python.

Oppure, c'è qualche alternativa?
Risposta
#10
Alternative ci sono sicuramente. Non conosco il dispositivo che stai utilizzando (datasheet?) , e sono a zero su utilizzo della seriale. Ma credo che se è composto (modem + GPS) debba avere due "risorse" distinte (ttyACM0 e...?)
Risposta
  


Vai al forum:


Navigazione: 4 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect