Go Down

Topic: Arduino comandato da Processing via web tramite pc o smartphone Android (Read 31106 times) previous topic - next topic

testato

ed i serbatoi hanno un galleggiante potenziometrico ? li hai connessi agli ingressi analogici di un arduino ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

camperos

il nuovo progetto web e android non è ancora integrato nel camper, appena ho tempo faccio il lavoro.

per quanto riguarda i litri, attualmente i sensori di pressione (MPX)nel camper ci sono e sono collegati ad arduino ed LCD  verde.
come per i  valori elettrici uso un allegro 758 http://forum.arduino.cc/index.php?topic=107724.0
come per le temperature degli NTC da 10K,

per le luci invece devo ancora modificare la parte comando del camper, cambiando sistema dagli attuali classici comandi ad interruttore a pulsanti inserendo relè bistabili,
credo... sia il modo migliore per interfacciare le luci ad arduino

comunque degli MPX non sono contento, nel senso che viaggiando, cambiando quota (montagna), vibrazioni ecc..
a destinazione per misurare valori veritieri devo levare la cannettina che va nel serbatoio e riimmerge di nuovo...
ora sto pensando agli ultrasuoni e mi devo ancora informare bene.

camperos

#77
Dec 18, 2013, 10:05 pm Last Edit: Dec 18, 2013, 10:13 pm by camperos Reason: 1
attualmente collegati tutti i sensori agli ingressi analogici di un arduino MEGA, col LCD.
comunque l'idea è di farmi un camper domotico ma funzionante anche senza domotica  ;) ;)

testato

Yes, anche io sostengo fondamentale appoggiarsi ad un impianto, non sostituirlo. Per le attuazioni il classico rele finder con pulsanti e sul micro un normale rele monostabile che simula la pressione di un pulsante.
Ci fai sia luci che prese se vuoi. Se poi vuoi anche rilevare lo stato scegli un finder con due contatti ed uno lo usi come rilevazione.
Mettere in campo eventuali opto pilotati dalla 230v per poi spedire l uscita al micro non ha senso secondo me, ma l ho visto fare speesso
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ZioWally

ciao Camperos - Testato,

Molto bella la tua interfaccia, non ho capito però il fatto che sia a pagine, come la gestisci?

Intanto ho provato anch'io a farne una versione che abbia la funzione pan cercando di bypassare la riduzione in scala come mi hai insegnato.
Ho trovato il comando PGrapichs() che è l'ideale per fare questo, sono riuscito ad adattare l'originale 1024x768 in 800x480 e posso fare pan (per il momento solo con i tasti freccia) e mi sembra abbastanza veloce....
Tu avevi fatto delle prove ma il risultato dicevi che era molto lento, cosa avevi usato?

ps
titolo aggiornato  8)

camperos

PGrapichs che è PGrapichs?  :smiley-yell:
non lo ho ancora usato ..
ti posto il mio pan e zoom, ma non credo sia nelle specifiche di Processing  :smiley-red: :smiley-red:
provalo, vai a DX per lo zoom, clicca e muovi la figura e a dimostrazione che funziona passa sui quadrati.

Code: [Select]
float zoom =1;
float panX;
float panY;
int stato;
void setup() {
  size (1200, 600);
}
void draw()
{
  background(0);  //sfondo ;
  noFill();
  fill (255, 0, 0);
  strokeWeight (4);
  stroke (255, 0, 0);
  ////////bar
  line (1150, 10, 1150, 590);
  for (int i =0; i<10; i++) {
    text (10+i*10, 1100, 70+60 *i);
  }
  text ("Click &", 1100, 30);
  text ("ZOOM", 1100, 50);
  ////////////////  scale
  if (mouseY < height && mouseY >0 && mouseX < width && mouseX > 1100) {
    line ( 1100, mouseY, 1150, mouseY);
  }
  if (mouseY < height && mouseY >0 && mouseX < width && mouseX > 1100 && mousePressed ) {
    zoom = map(mouseY, 0, width, 0.5, 5.5);
    scale(zoom);
  }
  else {
    scale(zoom);
  }
  ///////////move
  if (  mouseX /zoom-panX >50  && mouseX /zoom-panX < 90 && mouseY /zoom-panY>50 && mouseY /zoom-panY< 90 && mousePressed) {
    stato =1;
  }
  if (mouseY < width   && mouseY >0 && mouseX < width/1.2  && mouseX  >0  && mousePressed && stato ==1 ) { 
    panX =  map(mouseX/zoom -75, 0, width, 0, width  ); 
    panY =  map(mouseY/zoom -75, 0, width, 0, width); 
    translate (panX, panY);
  }
  else {
    translate (panX, panY);
    stato =0;
  }
  //Mio sketch qui xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx!!!!!!!!!!!!!!!!
  text ("click", 120, 120);
  text ("click", 70, 65);
  text ("& move", 60, 105);
  noFill();
  if (mouseX/zoom - panX >20 && mouseX/zoom - panX <40 && mouseY/zoom - panY >20 && mouseY/zoom - panY< 40) {// /zoom - pan
    fill (0, 255, 0);
  }
  strokeWeight (1);
  rect (20, 20, 20, 20);
  noFill();
  if (mouseX/zoom - panX >120 && mouseX/zoom - panX <140 && mouseY/zoom - panY >20 && mouseY/zoom - panY< 40) {
    fill (0, 255, 0);
  }
  rect (120, 20, 20, 20);
  noFill();
  if (mouseX/zoom - panX >20 && mouseX/zoom - panX <40 && mouseY/zoom - panY >120 && mouseY/zoom - panY< 140) {
    fill (0, 255, 0);
  }
  rect (20, 120, 20, 20);
  noFill();
  if (mouseX/zoom - panX >120 && mouseX/zoom - panX <140 && mouseY/zoom - panY >120 && mouseY/zoom - panY< 140 && mousePressed) {
    fill (0, 255, 0);
  }
  rect (120, 120, 20, 20);
  noFill();
  ellipse (80, 80, 25, 25);
}

 

camperos

@Testato
ho visto ci sono dei rele a 2 bobine, una start e uno relase.
devo collegarne 6 ad arduino, meglio rele passo passo a 1 bobina?
sono indeciso se prenderlia 5 volt e collegarli direttamente al MEGA (oltre c'è solo lo shield ethernet) o a 12 Ve cercare uno schema da Pighixx ( il camper in generale è a 12Volt), al massimo ho 10W di faretti LED a singolo rele.

camperos

@Zio Wally
qui ora mi saltano addosso, uso questo sistema perchè così se lo devo controllare tra un po di tempo riesco a ricordarmi qualcosa  :smiley-roll-blue:
esempio Tasto Litri...
da Processing funziona solo la schermata litri,
invio una "c" ogni 2 secondi

Code: [Select]
void litri() {
 if ((time+2000)<millis()) {
   udp.send( "c", ip, Port_Ard );
   time = millis();
//resto del codice
}
}


ad arduino arriva la "c" e mette in moto "litres"

Code: [Select]
void  rice(){  
 int packetSize = Udp.parsePacket();
 if(packetSize )
 {
   Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
   ss = packetBuffer;
   if (ss == "a") camper();
   if (ss == "b") temperature();
   if (ss == "c") litres();
   if (ss == "d") multifunzione();
}
//ecc..
}

arduino manda i valori a Processing, 2 byte per avere tutta l'escursione della misura

Code: [Select]
void litres(){
 Udp.beginPacket( Udp.remoteIP(),  Udp.remotePort());

 bagnoo = analogRead (A13);
 cucinaa = analogRead (A14);
 chiare = analogRead (A15);

 Udp.write (lowByte (bagnoo));
 Udp.write (highByte (bagnoo));

 Udp.write (lowByte (cucinaa));
 Udp.write (highByte (cucinaa));

 Udp.write (lowByte (chiare));
 Udp.write (highByte (chiare));

 Udp.endPacket();
}


Processing riceve e incolla i 2 Byte

Code: [Select]
 
void receive( byte[] data ) {       // <-- default handler
  //void receive( byte[] data, String ip, int port ) {  // <-- extended handler
if (state ==0) {

   litribagno   = (data[0] & 0xff) |  ((data[1] ) << 8);
   litricucina = (data[2] & 0xff) |  ((data[3] ) << 8);
   litrichiare = (data[4] & 0xff) |  ((data[5] ) << 8);
 }


litribagno, la variabile di una lancetta, poi mappata

un po macchinoso ma funziona    :)



testato

Come fai con i rele a due bobine ad usare poi i pulsanti presenti nel camper ? Dovresti usarli attaccandoli al micro, ma allora viene meno il concetto di appoggiarsi all impianto e non di mettersi in parallelo.
L'unica soluzione per state in parallelo e quindi poter senza problemi smontare il micro per aggiornamenti o guasti, senza intaccare il funzionsmento è di appoghiarsi su relè esterni passo passo, con un ulteriore tele lato micro che fa da pulsanye
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

camperos

gia, ho detto una cavolata non ci avevo pensato..
poi tra l'altroessendo un camper a rischio di incendio, nonostante i soli 10 w di assorbimento dei led conviene mettere un rele di u7na certa dimensione.....indipendente da arduino
quindi devo, sul rele luci camper avere un contatto libero per indicare ad arduino lo stato del rele
e su arduino dei micro rele che agiscono come  pulsante (ad impulso, quindi non vanno mai tutti assieme) del camper,
eviiterei se possibile circuiti elettronici aggiuntivi

camperos

ho finito i miei collaudi anche via sim
quindi non solo android via wifi ma anche via cell.

calcolando, ammettendo che  i tuoi byte sono 30 ogni 2 secondi e,
nel mio caso ogni 6 byte ogni 2 secondi, sono...

andando 24 ore su 24,
sono circa 69.000.000 (69 milioni) di byte, calcolando che un contratto sim dati danno circa
2 gigabyte (2.000.000.000) 2 miliardi di byte al mese...
c'è spazio per fare altre cose  :smiley-mr-green:
spero di non aver sbagliato i conti .


camperos

#86
Feb 14, 2014, 01:03 pm Last Edit: Feb 14, 2014, 01:39 pm by camperos Reason: 1

per ora il tutto  sembra andare a buon fine, mettendo  i "float" a   pulsanti spie ecc   i valori visualizzati sembrano ok,
domani sera provo meglio
:)

rimetto passo passo come attivare android
------------
Code: [Select]
caricare sketch Processing su Android

dicembre 2013
spero di non avere saltato qualche passo
provato su un pc portatile [b]vergine[/b]

preparazione per  tablet o cell:
nel tablet si deve spuntare "debug USB", ma l'opzione non è visibile , qui sotto istruzioni per il 4.2 (per altri android cercare in internet)
http://www.thesmarthacks.com/2013/04/enabling-usb-debugging-mode-on-android.html

preparazione PC:
Processing 2.0.3 scaricabile dal sito (altri non so, pare che la 2.1 abbia problemi)

click ,aprire processing
click, tendina con "java"
click, add mode
click, install "android mode"
attendere il download
click, chiudere tutti i processing

click, riaprire processing
click, tendina con java
click, android
errore manca "SDK"
click, NO
siete reindirizzati sul sito download (nel caso non venite indirizzati, https://developer.android.com/sdk/index.html)

click, "use an existing ide"
click, download SDK for Windows (sono circa84 mega)
estrarre il file compresso

installare e segnarsi dove viene installata "SDK manager" = (punto importante!!)

si apre da solo "SDK manager"
click,install x (10?) package (gia spuntati da loro)
click,accept license
30 minuti il download

scaricare ancora:
spuntare "android 2.3.3 (API 10) (4 file, non servono tutti...ma alcuni indispensabili)
click,accept license
20 minuti il download

click, close
click,chiudere "android SDK manager"
click, chiudere tutti i processing se aperti

click, aprire processing
errore manca SDK
click, si
si apre esplora file (chiede dove è la cartella SDK)
cercare cartella SDK (segnata precedentemente) (android SDK contenente dei file e cartelle)
OK
click, chiudere tutti i processing se aperti


click,aprire processing
collegare il tablet o cell con cavetto USB

provare se il tutto è andato a buon fine

ad esempio:

click,file
click,esempi
click,basic
click,array
ci vogliono circa 50 secondi

se dovete comunicare con arduino ricordarsi di spuntare i relativi permessi
Processing --> android --> sketch permission -->
spunta "internet" se si ha ethernet shield
due spunte "bluetooth" per bluetooth
ecc..


non lo consiglio, ma comunque per chi vuole provare con Processing 2.1.1
Code: [Select]
ho provato con Processing 2.1.1 e con
Arduino 1.5.5r2
su un nuovo hardDisk per non intaccare qualcosa in Processing 2.0.3.

ebbene, senza far altro oltre quello descritto sopra, per farli funzionare con android si deve aggiungere il percorso "javac" nella Path di windows.
nel mio caso, windows 8:
-click destro nell' angolo in basso sx dello schermo (start)
-click "pannello di controllo"
-click "sistema"
-click -impostazione di sistema avanzate (a sinistra)
-click "avanzate"
-click "variabili d'ambiente"
in "variabili di sistema" fare scorrere fino a trovare  "Path"
due click su "path"
senza cancellare nulla  ]:D  andare in fondo alla stringa e aggiungere:
nel mio caso....
;C:\Program Files\Java\jdk1.7.0_25\bin\
praticamente inserire il vostro percorso dove si trova "javac" che quasi sicuramente è diverso dal mio.
click "ok"
click "ok"
click "ok"

a me funziona, devo comunque collaudare bene.

fonte:utente calsign
http://forum.processing.org/two/discussion/2928/has-anybody-had-success-with-procesing-2-0-3-and-android-


Go Up