Pages: [1]   Go Down
Author Topic: Arduino ethernet/sensore di umidità/ventola 12v  (Read 1261 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti, volevo innanzi tutto ringraziare coloro che hanno contribuito allo sviluppo di arduino e tutte le persone che ci danno consigli e ci aiutano nei forum!
Volevo chiederle un aiuto per quanto riguarda un progettino che sto provando a fare con arduino.
Ho comprato la versione Arduino Ethernet (http://arduino.cc/en/Main/ArduinoBoardEthernet) senza Poe, un sensore di umidità (http://www.regaliedesideri.it/hobby-equip/electronics/components/sensors/humidity-and-temperature-sensor.html) che si collega e alimenta direttamente con arduino e una ventola da pc classica da 12 v. Il mio scopo era quello di far accendere la ventola al superamento di una determinata soglia di umidità e spegnerla quando l'umidità scende al di sotto di un certo livello. Purtoppo trovo delle difficoltà a collegare la ventola ad arduino il quale fornisce solo 5v e la ventola ne consuma 12. Ho cercato delle guide in internet ma non c'erano esempi simili o comunque quel poco che c'era era spiegato male. Ho cercato anche nel forum ma non ho trovato nulla che potesse aiutarmi a parte questo topic (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1290539065). Devo avvertire che ho più conoscenze informatiche che elettroniche smiley
Ringrazio fin da subito tutti coloro che mi risponderanno!

Ale
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 2231
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao e benvenuto

Quote
purtoppo trovo delle difficoltà a collegare la ventola ad arduino il quale fornisce solo 5v e la ventola ne consuma 12

per pilotare la tua ventola, puoi usare un mosfet :
http://reibot.org/2011/09/06/a-beginners-guide-to-the-mosfet/
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, leggo la guida provo a fare il tutto e posto i risultati!
Nel frattempo grazie mille .
Ale
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho usato il mosfet come consigliato e riesco a far girare la ventola a comando. Grazie per il suggerimento!!!!
Ora però ho un altro problema... il codice da caricare su arduino per leggere la temperatura e umidità non funziona... ho usato questo codice:
#include <Ports.h>
#include "PortsSHT21.h"     
#include <Wire.h>
#include <LibHumidity.h>
//3 sensors
SHT21 hsensor1 (1);
SHT21 hsensor2 (2);
SHT21 hsensor3 (3);
float h, t;
LibHumidity humidity = LibHumidity(0);

void setup()
{
  Serial.begin(9600);
  Serial.println("Power On");
  pinMode(16, OUTPUT);
  digitalWrite(16, LOW);  //GND pin
  pinMode(17, OUTPUT);
  digitalWrite(17, HIGH); //VCC pin
  pinMode(13, OUTPUT);
}

void loop()
{
   
   // Get data from first sensor   
  hsensor1.measure(SHT21::HUMI);
  hsensor1.measure(SHT21::TEMP);
  hsensor1.calculate(h, t); 
  float hum1 = (h);
  float temp1 = (t);
  Serial.println(temp1); 
   
   
  // Get data from second sensor
  hsensor2.measure(SHT21::HUMI);
  hsensor2.measure(SHT21::TEMP);
  hsensor2.calculate(h, t);
    float hum2 = (h);
    float temp2 = (t);
  Serial.println(temp2);     
 
   // Get data from third sensor
  hsensor3.measure(SHT21::HUMI);
  hsensor3.measure(SHT21::TEMP);
  hsensor3.calculate(h, t);
    float hum3 = (h);
    float temp3 = (t);
  Serial.println(temp3);     
     
  // Get data from fourth sensor
    float hum4 = (humidity.GetHumidity());
    float temp4 = (humidity.GetTemperatureC());
  Serial.println(temp4);     
}
e ho scaricato le librerie ports e portsSTH21 da https://github.com/mrjonny2/PortsSHT21
la libreriaLibHumidity da  https://github.com/liquidware/LibHumidity

ma compliando mi da un errore: sketch_apr19a.cpp: In function 'void loop()':
sketch_apr19a:52: error: 'class LibHumidity' has no member named 'GetTemperatureC'

quacuno sa dirmi da cosa può dipendere???
Grazie in anticipo!
Logged

Rovereto
Offline Offline
Full Member
***
Karma: 0
Posts: 152
La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se guardi in LibHumidity.h il metodo si chiama GetTemperature() e non GetTemperatureC() come inserito nella penultima riga di codice.

Ciao
QP
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Purtroppo mi ero accorto di questo errore subito dopo aver pubblicato il post...  smiley-cry
e mi da sempre errore...questa volta scrive:

C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\Ports\Ports.cpp: In static member function 'static void Sleepy::powerDown()':
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\Ports\Ports.cpp:615: error: 'PRR0' was not declared in this scope


 smiley-eek
Logged

Rovereto
Offline Offline
Full Member
***
Karma: 0
Posts: 152
La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Purtroppo mi ero accorto di questo errore subito dopo aver pubblicato il post...  smiley-cry
e mi da sempre errore...questa volta scrive:

C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\Ports\Ports.cpp: In static member function 'static void Sleepy::powerDown()':
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\Ports\Ports.cpp:615: error: 'PRR0' was not declared in this scope


 smiley-eek

L'errore indicato ti informa che nel file Ports.cpp è utilizzato PRR0 e che questo simbolo non è dichiarato. PRR0 (Power Reduction Register 0, ma esiste anche PRR1) è un registro che riguarda l'atmega2560 (Arduino Mega) e non atmega328p che ha solo il registro PRR.
Puoi provare a modificare if file Ports.cpp sostituendo PRR0 con PRR ma potrebbero esserci altre magagne.

Ciao
QP
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ringrazio ancora per tutti i consigli... ho sostituito i PPR0 con PPR in ports.cpp però mi da questi errori:

C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:27:20: error: wiring.h: No such file or directory
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp: In constructor 'LibHumidity::LibHumidity(uint8_t)':
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:39: error: 'OUTPUT' was not declared in this scope
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:39: error: 'pinMode' was not declared in this scope
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:40: error: 'LOW' was not declared in this scope
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:40: error: 'digitalWrite' was not declared in this scope
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:42: error: 'HIGH' was not declared in this scope
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp: In member function 'uint16_t LibHumidity::readSensor(uint8_t)':
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:114: error: 'class TwoWire' has no member named 'send'
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:115: error: 'delay' was not declared in this scope
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:124: error: 'class TwoWire' has no member named 'receive'
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:125: error: 'class TwoWire' has no member named 'receive'

Un po di errori li ho risolti cercando su internet il file wiring.h (presa da: http://arduino.googlecode.com/svn-history/r22/trunk/core/wiring.h )e mettendolo nella cartella LibHumidity.. Ora lanciando la verifica mi scrive:

C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp: In member function 'uint16_t LibHumidity::readSensor(uint8_t)':
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:114: error: 'class TwoWire' has no member named 'send'
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:124: error: 'class TwoWire' has no member named 'receive'
C:\Documents and Settings\Santo_ale\Desktop\arduino-1.0\libraries\LibHumidity\LibHumidity.cpp:125: error: 'class TwoWire' has no member named 'receive'

Che abbia sbagliato libreria LibHumidity?! smiley-slim
Grazie
Ale
Logged

Rovereto
Offline Offline
Full Member
***
Karma: 0
Posts: 152
La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non saprei che dirti.
L'unica cosa che mi viene in mente è di provare con l'IDE 0023.

Ciao
QP
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non saprei che dirti.
L'unica cosa che mi viene in mente è di provare con l'IDE 0023.

Ciao
QP

Ok ora provo!
Grazie
Ale
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non saprei che dirti.
L'unica cosa che mi viene in mente è di provare con l'IDE 0023.

Ciao
QP

Ok ora provo!
Grazie
Ale


Adesso mi da 108 righe di errori  smiley smiley smiley smiley ahaha
grazie lo stesso, vedrò se riesco a trovare altre soluzioni!
Ciao
Ale
Logged

0
Offline Offline
Sr. Member
****
Karma: 2
Posts: 303
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,

l'errore ultimo che hai (send e receive) e' dovuto al fatto che con Arduino IDE 1.0 per l'I2C "send" e' diventato "write" e "receive" e' diventato "read". .

Ad ogni modo potevi correggere il problema della libreria LibHumidity sostituendo wiring.h con Arduino.h

Ad ogni modo non capisco perche' stai utilizzando due librerie diverse per leggere lo stesso tipo di sensore, in totale tenti di leggere 4 diversi sensori (tre con la libreria Ports di Jeelabs modificata e uno con la libreria di LiquidWare).

Se utilizzi la libreria Ports di Jeelabs (modificata per utilizzare il sensore SHT21) tieni conto che e' una implementazione del I2C che non utilizza l'I2C hardware del ATmega, ma e' utilizza la tecnica del bit-bang.

Code:
//3 sensors
SHT21 hsensor1 (1);
SHT21 hsensor2 (2);
SHT21 hsensor3 (3);

I numeri 1, 2 e 3 fra parentesi si riferiscono al numero del port utilizzato (nel JeeNode, un clone di Arduino vi sono 4 connettori, denominati port 1, 2, 3 e 4.
Per vedere la corrispondenza coi nomi dei pin Arduino (e ATmega) vedi questo link.
http://jeelabs.net/projects/hardware/wiki/JeeNode#bfheader-8c4c7dcbc21fd8d0d4f6494595def0ba

Per semplificare l'utilizzo della libreria Ports, l'autore ha introdotto una modifica al codice, per cui ha introdotto un "port" in piu', chiamato 0, che utilizza i pin analogici Arduino 4 e 5 come pin per l'I2C (pur utilizzand osempre il bit-bang.
Vedi http://jeelabs.org/2010/03/15/software-and-hardware-i2c/

Per vedere che prestazioni ha questa implementazione dell'I2C puoi vedere
http://jeelabs.org/2012/01/03/bit-banged-i2c-timing/

Vi e' una versione nativa per SHT11 nella libreria Port originale (che trovi qui).
https://github.com/jcw/jeelib

Ciao,
Marco.



Logged

Pages: [1]   Go Up
Jump to: