Acquisizione di ingressi analogici con il pLtouch 101g

Il video ed il progetto d’esempio che vi vogliamo presentare in questo post riguarda un esempio di Automazione Industriale con Android.

In particolare verrà spiegato come leggere valori analogici e rappresentarli a video utilizzazando il pLtouch 101gVi voglio ricordare appunto che il pLtouch 101g ha di serie 12 ingressi digitali, 8 uscite a relè, 2 uscite analogiche e 4 ingressi analogici.

Passiamo all’esempio pratico:
Colleghiamo il nostro dispositivo in corrente come in figura ( noi utlizziamo trasduttore di pressione mod. bmTR01), non esclude comunque il collegamento di tutti i dispositivi in corrente a due o tre fili (per il collegamento degli ingressi vedi pagina wiki).
Alimentiamo il pLtocuch 101g a 24Vdc tramite i morsetti estraibili nel retro del case.

Fatto questo apriamo l’IDE di eclipse.
Supponiamo abbiate già creato un progetto Android, se così non fosse prego di leggere il blog, importato e inizializzata la libreria Pltouch (leggete il nostro articolo in merito). Ciò serve a far implementare alla vostra Activity l’interfaccia PltouchListener. Grazie a questo potete mettere il vostro codice all’interno della callback onLogicExecution, come per esempio:

public class MainActivity extends Activity implements PlTouchListener, OnClickListener {
	private int val1,val2,val3,val4;
	private PltouchManager pManager;
	private TextView analog1,analog1_mA;
	private TextView analog2,analog2_mA;
	private int index;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		pManager = new PltouchManager(this);
		pManager.setDebug(true);
		pManager.initialize();
		pManager.addListener(this);

         };

Il codice inserito all’interno della callback onLogicExecution sarà eseguito in maniera sequenziale, un numero infinito di volte indipendentemente da tutto il resto. Una cosa importante da sapere è che tutte le chiamate inserite all’interno del metodo saranno eseguite in un thread diverso da quello della UI: Ciò implica che se volete aggiornare un qualche widget grafico dall’interno della onLogicExecution, dovete utilizzare una chiamata a runOnUiThread, come nell’esempio che segue:

@Override
	public void onLogicExecution() {
		Log.d("Pltouch", "on logic execution");

		runOnUiThread(new Runnable() {

		@Override
			public void run() {
				analog1= (TextView) findViewById(R.id.textView1);
				analog1_mA= (TextView) findViewById(R.id.textView2);

				analog2= (TextView) findViewById(R.id.textView6);
				analog2_mA= (TextView) findViewById(R.id.textView8);

				try {
					// read analog value
					val1 = pManager.analogRead(1);
					val2 = pManager.analogRead(2);
					val3 = pManager.analogRead(3);
					val4 = pManager.analogRead(4);

			} catch (IndexOutOfBounds e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (ConnectionError e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				analog1.setText(String.valueOf(val1));
				double mA1 = (val1/202.60)+0.02;
				DecimalFormat df = new DecimalFormat("#.00");
				analog1_mA.setText(String.valueOf(df.format((double)mA1/1.00)));

				analog2.setText(String.valueOf(val2));
				double mA2 = (val2/202.60);
				analog2_mA.setText(String.valueOf(df.format((double)mA2/1.00)));
			}
		});
	}

Ho volutamente scelto di non concentrarmi su aspetti di design delle interfacce, ma bensì sugli aspetti più tecnici del progetto. Potreste essere voi, lettori, che attraverso la vostra fantasia create la miglior interfaccia che risponda alle vostre necessità.

Andiamo ad analizzare il codice nel dettaglio:
Andiamo a leggere il valore degli ingressi analogici e li appoggiamo su quattro variabili val1, val2, val3, val4 che poi ci tornano utili per convertire il valore in corrente e rappresentarlo a video.

val1 = pManager.analogRead(1);
val2 = pManager.analogRead(2);
val3 = pManager.analogRead(3);
val4 = pManager.analogRead(4);

Come si vede basta semplicemente richiamare la libreria pManager.analogRead e assegnargli il riferimento dell’ingresso analogico.

Come da figura :

1 = primo ingresso analogico morsetto VA0
2 = secondo ingresso analogico morsetto VA1
3 = terzo ingresso analogico morsetto VA2
4 = quarto ingresso analogico morsetto VA3

Rappresentiamo a video il valore letto a 12 bit degli ingressi analogici:

analog1.setText(String.valueOf(val1));

Per convertirlo proporzionalmente al valore di corrente andiamo a dividerlo per 202,60 e poi lo rappresentiamo a video .

double mA2 = (val2/202.60);
analog2_mA.setText(String.valueOf(df.format((double)mA2/1.00)));

Da questo punto potete ampliare il progetto creando delle logiche in funzione degl ingressi analogici.
Nel prossimo blog vi presenteremo l’aquisizione degli ingressi digitali.

Come configurare l’Android Vnc Server

android vnc server from android clientIn questo post vi vorrei parlare della procedura di installazione e configurazione di un componente molto importante e utile: Android Vnc Server. Grazie a questa applicazione riuscirete a controllare da remoto un device Android. Questo tutorial è stato testato con i touch screen Ltouch, ma grazie a delle semplici modifiche è possibile estenderlo a quasi tutti i gli altri device Android.

Prerequisiti:
L’unico prerequisito è di avere un device rooted (i pannelli Ltouch lo sono già). Una conoscenza base del terminale di linux può aiutare a velocizzare la procedura di configurazione. Continue reading

Configurazione Ethernet Android attraverso comandi Shell

android network configurationIn questo post, vi vorrei parlare della configurazione Ethernet Android grazie alla potente Shell. I parametri che cambieremo saranno i seguenti: IP Address, Netmask, Gateway and DNS.

Come ben sapete, queste impostazioni possono essere cambiate direttamente dall’interfaccia Android, in particolare nel menu impostazioni del sistema. Alcune volte però è utile sapere come cambiarle utilizzando la shell di Android (alla quale si accede digitando il comando adb shell da un prompt dei comandi) soprattutto se avete necessità di cambiare gli script di inizializzazione del sistema.

I comandi che troverete nel seguito sono stati testati con i pannelli Ltouch F e pannelli Ltouch S, ma sono sicuro che possano funzionare in molti altri device quali tablet e smartphone.

Continue reading

Libreria Android IO per BieMme Pltouch

In uno dei nostri articoli precedenti, abbiamo presentato il Pltouch, un touch screen HMI basato su Android con uno speciale set di I/O direttamente indirizzabili dal codice Java. 

In questo articolo, vi vogliamo presentare quali sono i principi di funzionamento della libreria Pltouch, libreria fornita gratuitamente con ogni Pltouch. Questa libreria Android si pone come ponte tra il mondo Android e quello più a basso livello dell’I/O.

Entrando più in dettaglio, dopo aver importato la libreria nel workspace di Eclipse ci sono due modalità con cui il codice del progetto principale può essere strutturato. In entrambi i casi, bisogna:

  • Creare un’istanza della libreria I/O
  • Memorizzare questo riferimento per esempio in un campo privato/pubblico dell’activity Android
  • Inizializzazare la libreria fornendo i parametri necessari

Ora prendiamo in rassegna ogni singolo punto e lo analizziamo attraverso dei semplici esempi.

Continue reading

Come configurare Android adb senza mini-usb

android serial lines debugCome presentato in un post precente, il demone adb (nell’host device) può essere impostato in modo tale da accettare le richieste di connessione da wifi o ethernet invece che da usb. Questo procedimento è comune per la maggior parte degli smartphone/tablet Android e per ottenere tutto ciò bisogna almeno avere a disposizione la connessione serial usb grazie alla quale alcuni comandi di inizializzazione vengono spediti.

Il connettore mini-usb è molto buono e compatto, ma se siete nella situazione in cui avete la necessità di staccare il cavo e riattaccarlo moltissime molte, potrebbe succedere che nel lungo periodo questo si rompa e non funzioni più. Come conseguenza, avere un connettore che non funziona, vuol dire che non potete più caricare i vostri apk, fare il debug ed in generale controllare il device Android.
Continue reading

Come creare Android System app con i Pannelli Ltouch

Android software stackL’argomento di cui vi vogliamo parlare oggi riguarda il modo con cui è possibile creare Android System app con qualsiasi pannello touch Ltouch F, FW (Wifi) o development boards Ltouch S and SW (Wifi).
Un’ Android system app è una speciale applicazione che ha altri privilegi privilegi rispetto alle user apps e che non vivono nella sandbox standard delle applicazioni normali.

Esempi di azioni che possono essere ottenuti attraverso applicazioni Android di sistema sono:

  • Installare o rimuovere altre applicazioni
  • Eseguire comandi in modalità super user con il comando Java: Runtime.getRuntime.exec
  • Accesso ai permessi di basso livello per interagire con la piattaforma
  • Pieno accesso alle risorse del device

Continue reading

Automazione Industriale con Android: un’introduzione al Pltouch

Pltouch processors schemaI progetti di automazione industriale e domotica utilizzano un ampio spettro di prodotti, come per esempio sensori, pannelli touch screen, moduli esterni, PLC, moduli HMI per risolvere problemi specifici e gestire vincoli stringenti in termini di affidabilità e precisione. Il panorama attuale mostra una netta distinzione tra i componenti che gestiscono la logica e quelli che si preoccupano dell’interfaccia utente, molto spesso utilizzando un bus comune per la comunicazione e l’aggionamento di stato. 

Sulla base di questo stato dell’arte, il nostro research and development lab, ha creato e sviluppato un nuovo prodotto con l’intento di unire alcuni dei prodotti di cui sopra, con il fine di ridurre la complessità finale, proporre un’interfaccia utente avanzata ma soprattuto diminuire il costo. 

Continue reading

Automazione Industriale con Android: Acquisizione di 6 sonde pt100

Il video che vi vogliamo presentare in questo post riguarda un esempio di Automazione Industriale con Android. In particolare, vi faremo vedere un progetto che abbiamo realizzato in cui un touch HMI AndroidLtouch F, equipaggiato di un microprocessore Cortex A8 a 1Ghz controlla un’espansione RS485 analogica, nello specifico ho usato un modulo espansione bm6PTI.

Dall’interfaccia touch screen Android è possibile:

Acquisire distintamente 6 sonde di temperatura mod. PT100 classe B attraverso un’ espansione in RS485 utilizzando una comunicazione modbus ad una velocità di 19200 bps

Volendo è possibile estendere l’applicazione aggiungendo altri moduli di espansione fino ad un totale di 250 bm6PTI con un’ acquisizione di 1500 sonde di temperatura.

Continue reading

Nuovo Pannello Touch Android con Wifi

Android Touch Panel Rear CoverSiamo orgogliosi di annunciare che un nuovo prodotto è stato rilasciato nel nostro on line store. E’ un pannello touch Android per progetti HMI di automazione industriale e domotica.

Si caratterizza di un display multi touch capacitivo da 7″ con un processore SoC Samsung Cortex A8 ad 1Ghz, 512 MB DDR RAM dotato di molte interfaccie di comunicazione quali per esempio RS485, RS232, I2C, SD, Camera e molte altre.

La caratteristica addizionale che contraddistingue questo pannello touch è il pieno supporto a Ethernet come anche a reti WAN 802.11 b/g/n.

Il prodotto è disponibile in due versioni:

  • Ltouch FW ha una cornice frontale in alluminio anodizzato e brillantato di spessore 5mm e cover di protezione posteriore. Grazie a questi layer di protezione e ad un particolare processo di assemblaggio, il prodotto raggiunge un livello di protezione IP54 nella parte frontale (acqua e polvere).
  • Ltouch SW è una scheda di sviluppo che ha le stesse caratteristiche del pannello touch Ltouch FW ma non ha la cornice frontale e la cover di protezione posteriore. In questo caso, questo prodotto è utile nel caso di installazione in strutture già preesistenti.