How to use Relay on Ltouch43

In our Ltouch43 Android HMI  there are 4 Relays and all the relays are in exchange contact. They have 24Vdc coil and max 5A contact current. All RELAY outputs are high quality relay and protected by varistors, all connectors are removable.

BMTouchGP12 – Relay R2

BMTouchGP13 – Relay R4

BMTouchGP14 – Relay R1

BMTouchGP15 – Relay R3

Before using them we must in the onCreate method :

instantiate the library BMtouch::

  • tmp = BMTouch.LIBsetup(BMTouch.EN12 + BMTouch.EN13 + BMTouch.EN14 + BMTouch.EN15);

Set PIN (GP–) as output, sets the pin (pin) indicated as output and sets its logical level as value::

    • val[0]= 0;
    • BMTouch.GPIOSetupOut(BMTouch.GP12, val[0]);
    • BMTouch.GPIOSetupOut(BMTouch.GP13, val[0]);
    • BMTouch.GPIOSetupOut(BMTouch.GP14, val[0]);
    • BMTouch.GPIOSetupOut(BMTouch.GP15, val[0]);

To switch the output by activating it or not, use this command::

    • tmp=BMTouch.GPIOWrite(BMTouch.GP13, val[0]);

where val [0] corresponds to:

  • 0 relay OFF
  • 1 relay ON

Salviamo dei dati nella memoria interna Android (variabili ritentive)

Capita alle volte di voler salvare dei dati così da non perdere il loro valore in un secondo momento.
Android dispone di un comando molto semplice per scrivere dei valori in formato testo nella memoria interna del dispositivo, in questo caso all’interno dei nostri pannelli Ltouch e pLtouch e successivamente recuperarli.

Premetto che questa procedura rende i dati che andiamo a salvare privati, ciò vuol dire che solamente la nostra app potrà accedervi e nessun’altra e nel momento in cui la disinstalleremo tutti i dati verranno persi.

Troverete molto utile questo Tutorial

Android dispone delle classi openFileInput e openFileOutput per scambiare dei pacchetti alla memoria interna.

  •  openFileOutput : è il metodo per creare e salvare un file
FileOutputStream fOut = openFileOutput("file name",Context.MODE_PRIVATE);

Il metodo restituisce un’istanza FileOutputStream, così è possibile richiamarla e scrivere i dati sul file:

String str = "test data";
fOut.write(str.getBytes());
fOut.close();
  • openFileInput () : Questo metodo viene utilizzato per aprire un file e leggerlo. Tale restituisce un’istanza di FileInputStream.
FileInputStream fin = openFileInput(file)

Dopodichè chiamamiamo quest’isanza per leggere un carattere alla volta e rappresentarlo:

int c;
String temp="";
while( (c = fin.read()) != -1){
temp = temp + Character.toString((char)c);
}
fin.close();

Vediamo ora un esempio pratico:

Supponiamo che si voglia salvare un dato e renderlo nel gergo tecnico dei plc ” ritentivo “, in poche parole che al riavvio della nostra app il dato non si perda, ma che si possa recuperarlo.
Salviamo il dato alla pressione di un bottone:

@Override
	public void onClick(View v) {
             if (v.getId()==R.id.btnWrite){
                 // add-write text into file
        try {
            FileOutputStream fileout=openFileOutput("BieMmeItalia.txt", MODE_PRIVATE);
            OutputStreamWriter outputWriter=new OutputStreamWriter(fileout);
            outputWriter.write("250");
            outputWriter.close();

            //display file saved message
            Toast.makeText(getBaseContext(), "File saved successfully!",
                    Toast.LENGTH_SHORT).show();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

All’avvio dell’app andiamo a leggere il valore nel file di testo allocato nella memoria del dispostivo e poi lo rappresentiamo a video tramite una texView:

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

			TextView valreadtoMemory = (TextView)findViewById(R.id.editText1);
		try {
	            FileInputStream fileIn=openFileInput("BieMmeItalia.txt");
	            InputStreamReader InputRead= new InputStreamReader(fileIn);

	            char[] inputBuffer= new char[READ_BLOCK_SIZE];
	            String s1="";
	            int charRead;

	            while ((charRead=InputRead.read(inputBuffer))>0) {
	                // char to string conversion
	                String readstring=String.copyValueOf(inputBuffer,0,charRead);
	                s1 +=readstring;
	           }
	            InputRead.close();
	            valreadtoMemory.setText(s1);

	        } catch (Exception e) {
	            e.printStackTrace();
	        }

    }

Per maggior informazioni troverete del materiale anche nel nostro WiKi

Convertitore di ingressi analogici per Arduino e non solo: bmANA

La scheda bmANA risulta essere un elemento indispensabile quando si acquisisce ingressi analogici con Arduino.

convertitore input analogici 4-20ma arduino bmAna

Convertitore Input Analogici 0-10V, NTC/PTC e 4-20ma per Arduino

Vi vogliamo presentare una semplice, ma utilissima scheda di acquisizione segnali analogici di nostra fornitura ed acquistabile nel nostro store.

Sappiamo che nel mondo della domotica ed in particolar modo in quello industriale, aver a che fare con ingressi in corrente 0-20 mA / 4-20 mA oppure in tensione 0-10 Volt o termocopie Ptc/Ntc è all’ordine del giorno. Chiunque utilizza Arduino sà che le board acquisiscono solamente ingressi analogici in tensione con risoluzione 10bit. Per questo abbiamo pensato e costruito una piccola scheda che converte i segnali analogici in tensione 0..5 Volt sempre con la stessa risoluzione.

Con delle semplici operazioni è possibile acquisire 4 distinti ingressi analogici e convertirli in tensione 0..5 Volt con una risoluzione di 10 bit.

Inserendo degli switch è possibile scegliere tra tre modalità di acquisizione:

  • in Corrente: 0..20 mA
  • in Tensione: 0..10 V
  • termocopie: PTC o NTC

Con una doppia alimentazione, 5 Vdc oppure 24 Vdc, si presta benissimo in tutti i campi di applicazione.

I morsetti a vite posti dalla parte di acquisizione rendono facile e sicuro il collegamento degli ingressi analogici.

Attraverso una flat con a capo una spina RJ45 è possibile collegarla alla nostra scheda Bmini semplicemente inserendo il connettore alla presa J8.

Avendo la possibilità di acquisire 4 ingressi distinti, con una sola scheda bmANA riusciamo ad acquisire gran parte di sensori presenti nell’automazione industriale e domotica.

Nel prossimo post andremo a vedere nel dettaglio come collegare le varie tipologie di ingresso.

Automazione Industriale Sviluppi Futuri

Industrial Automation remote I/O module

C’è un forte dibattito in merito alla fattibilità di utilizzare Android in installazioni industriali. Le grandi aziende che si contendono il mercato molto spesso costringono i propri clienti ad utilizzare software proprietario.

Il mondo sta cambiando ed Internet è uno dei fattori che permette agli utenti di beneficiare della disponibilità pressochè infinita di informazioni, specifiche tecniche ed anche di persone che gratuitamente condividono la propria esperienza.

La nostra visione è che a breve, sempre più applicazioni industriali beneficeranno dei suggerimenti e sforzi di communità on line e questo sarà la base per una nuova idea di automazione.

In questo post, vi mosterò come l’integrazione di Android in progetti industriali è possibile, e di facile realizzazione.

Continue reading