Alimentazione esterna Arduino

Ciao a tutti,
è da pochissimo che ho messo il naso nel mondo di arduino e dell'elettronica in generale.

Sto sperimentando un progetto casalingo per la misurazione della percentuale di umidità.

L'idea è quella di collezionare dati nell'arco della giornata usando un modulo sd (data logger) + DHT22 (sensore umidità) e un RTP 3231 (real time clock).

Mi chiedevo se fosse possibile alimentare il tutto collegado l'Arduino UNO con il suo cavo USB ad un caricabatterie per cellulari con specifiche di OUTPUT 5V e 1,3A cosi che la board possa registrare dati senza la connessione diretta al PC.

Grazie

Essendo il tuo primo post Ti invitiamo a presentarti QUI
(dicci quali conoscenze hai di elettronica e di programmazione) e a leggere il regolamento QUI
se non lo hai già fatto.

Comunque benvenuto sul forum.

Attilio

ultimo_53:
Essendo il tuo primo post Ti invitiamo a presentarti QUI
(dicci quali conoscenze hai di elettronica e di programmazione) e a leggere il regolamento QUI
se non lo hai già fatto.

Comunque benvenuto sul forum.

Attilio

Ciao Attilio, grazie... provvedo subito!

go3mon:
Mi chiedevo se fosse possibile alimentare il tutto collegado l'Arduino UNO con il suo cavo USB ad un caricabatterie per cellulari con specifiche di OUTPUT 5V e 1,3A cosi che la board possa registrare dati senza la connessione diretta al PC.

Si, è possibile ...
... verifica solo che sia un alimentatore di buona qualità, stabilizzato e che dia VERAMENTE 5V e non di più :wink:

Guglielmo

Ciao e grazie.

Userei quello dell'iphone in questo caso.

go3mon:
Userei quello dell'iphone in questo caso.

Non dovresti avere problemi :slight_smile:

Guglielmo

Comunque sappi anche se l' alimentatore é di 1,3A puoi prendere da Arduino (Pin usciata compreso pin 5V) solo 500mA perché c'é un fusibile autoripristinante da 500mA.
Ciao Uwe

Ciao, mi riaggancio a questo mio post per chiedere ulteriori info.

Finalmente sono riuscito a completare il mio progetto di stazione metereologica "casalinga".

I componenti impiegati sono:

-Arduino Nano
-DHT22
-SSD1306 Oled 128x64 I2C Display
-DS3231 RTC (Time clock)
-SD Card module

Tutti i componenti sono sulla breadboard.

Il funzionamento è questo: Sul display sono visualizzate le informazioni del sensore DHT22 e sulla scheda SD vengono registrate ogni 10minuti (per fini statistici).

Ecco il mio problema.

Collegato il tutto alla USB del PC, il file txt all'interno della SD viene scritto correttamente.

Collegando il cavo usb ad un alimentatore Nokia (5V da 1,3A), nel file txt non viene scritto nulla.

Qualcuno può spiegarmi perchè???

Difficile che possiamo dirti perche', specie non avendo ne il programma che usi tu sulla MCU, ne i tuoi schemi elettrici e di connessione delle varie parti ... :wink:

(o come dice sempre uwe, "ho la sfera di cristallo con le batterie scariche" ... :D)

Provo a creare uno schema con Fritzing e posterò il codice.

Schema disponibile qui: File

Il problema sussiste SOLO quando il tutto viene collegato all'alimentatore esterno.

Non viene scritto nulla nel file txt.

Il codice usato:

#include <DS3231.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include "DHT.h"
#include "U8glib.h"


File myFile;
char filename[] = "LOGGER01.txt";

DS3231 Clock;

DHT dht(2, DHT22); //DataPin D2
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C / TWI

bool Century = false;
bool h12;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits;
bool ADy, A12h, Apm;
char buffer[20];
float h;
float t;
int  count = 0;

void draw(void) {
  //u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_freedoomr10r);
  //u8g.setFont(u8g_font_gdr12);
  u8g.setFont(u8g_font_fur14);
  u8g.setPrintPos(0, 15);
  u8g.print("H:");
  // u8g.setPrintPos(30, 10);
  u8g.print(" ");
  u8g.print(dht.readHumidity());
  //u8g.setPrintPos(80, 10);
  u8g.print(" %");
  u8g.setPrintPos(0, 50);
  u8g.print("T:");
  //u8g.setPrintPos(30, 40);
  u8g.print(" ");
  u8g.print(dht.readTemperature());
  //u8g.setPrintPos(80, 40);
  u8g.print(" ");
  u8g.write(0xB0); //write degree characher
  u8g.print("C");
}


void setup() {
  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255); // white

  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3); // max intensity

  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1); // pixel on

  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255, 255, 255);

  }
  // put your setup code here, to run once:
  Wire.begin();
  Serial.begin(9600);
  SD.begin();
  //Serial.println(buffer);

}


char *timeStamp()
{
  int year = 2017;
  int month = Clock.getMonth(Century);
  int day = Clock.getDate();
  int hour = Clock.getHour(h12, PM);
  int minute = Clock.getMinute();
  int second = Clock.getSecond();

  sprintf(buffer, "%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
  return buffer;
}



void loop() {

  u8g.firstPage();
  do {
    draw();
  } while ( u8g.nextPage() );
  delay(2000);
  count++;
  
  if (count == 120) {
    myFile = SD.open(filename, FILE_WRITE);

    myFile.print(timeStamp());
    myFile.print(" ");
    myFile.print(dht.readHumidity());
    myFile.print(" ");
    myFile.println(dht.readTemperature());
    // close the file:
    myFile.close();
    Serial.println(" done.");
    count = 0;
  }

  

}

metti lo schema in un formato comunemente usato (jpg, pdf o simile)

Allego PDF

DHT_SD_RTP_DISPLAY_bb.pdf (705 KB)

Il pin CS della scheda SD dov'è collegato ?

brunello22:
Il pin CS della scheda SD dov'è collegato ?

Ciao, effettivamente il CS non era collegato.

Ora l'ho messo sul PIN4 (D4) e in main() ho cambiato SD.begin() con SD.begin(4);

Lo lascio andare un po attaccato all'alimentatore e vediamo se ora scrive nel file.... vi aggiorno a breve.

Ciao, ora funziona!

che sbadato, avevo proprio rimosso il pin CS!

I dati vengono correttamente scritti sulla sd anche attaccata all'alimentazione esterna.

2017-11-01 14:26:54 59.40 18.30
2017-11-01 14:31:43 59.60 18.30
2017-11-01 14:36:32 59.90 18.30