Skocz do zawartości

Problem z MB102 - moduły nie współpracują z Arduino


lukasz125

Pomocna odpowiedź

Witam wszystkich ma pewien problem z płytą do zasilania płytki prototypowej. Model MB102 zasilanie na wyjściach prawidłowe 5.04 V ale po podłączeniu LCD1602 oraz RTC DS3231 podświetlenie na wyświetlaczu działa a w zegarze zapala się dioda ale Arduino nie może się połączyć z modułami, problem znika po podłączeniu  zasilania bezpośrednio z Arduino. Ma ktoś jakiś pomysł dlaczego tak się dzieje ?  

IMG_20191229_084229.jpg

Link do komentarza
Share on other sites

@lukasz125 witam na forum 🙂

Chętnie pomożemy, ale właściwie nic nie wiemy o Twoim układzie. Pokaż chociaż zdjęcie połączonych modułów to będzie można coś podpowiedzieć.

3 godziny temu, lukasz125 napisał:

Arduino nie może się połączyć z modułami, problem znika po podłączeniu  zasilania bezpośrednio z Arduino.

Połączyłeś masę Arduino z masą tego "zasilacza"? To jedyne co przychodzi mi do głowy "w ciemno" 🙂

Link do komentarza
Share on other sites

A wiec tak podłączyłem wszystko do nowa i o dziwo działa jedyna różnica podłączyłem zgodnie z sugestia masę Arduino z masą zasilacza. Poszczególne elementy to zegar DS3231, wyświetlacz 1602 z I2C oraz czujnik BME 280.

 IMG_20191229_140353.thumb.jpg.359699c482d4bd87e3fc722f5349218f.jpgIMG_20191229_140332.jpgIMG_20191229_140336_1.jpgIMG_20191229_140343.jpg

Aktualizacja:

Jeśli mógłby ktoś spojrzeć na kod i powiedzieć mi dlaczego nie wyświetlają mi się temperatura, wilgotność i ciśnienie

#include <Wire.h>
#include <DS3231.h>
#include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C
unsigned long delayTime;
 
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Ustawienie adresu ukladu na 0x27 
DS3231 clock;
RTCDateTime dt;
 
void setup()
{
  Serial.begin(9600);
 Serial.println(F("BME280 test"));
  // Inicjalizacja DS3231
  Serial.println("Initialize DS3231");;
  clock.begin();
 
  // Ustawiany date i godzine kompilacji szkicu
  clock.setDateTime(__DATE__, __TIME__);
  lcd.begin(16,2);   // Inicjalizacja LCD 2x16
  
  lcd.backlight(); // zalaczenie podwietlenia 

}
 
void loop()
{
  // Odczytujemy i wyswietlamy czas
  dt = clock.getDateTime();
	
  bme.takeForcedMeasurement(); 

  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
  lcd.print(dt.year); lcd.print("-"); lcd.print(dt.month); lcd.print("-"); lcd.print(dt.day); lcd.print(" ");
  delay(500);
  lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
  lcd.print(dt.hour); lcd.print(":");printDigits(dt.minute); lcd.print(":");printDigits(dt.second); lcd.print("");
  delay(2000);
  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
  lcd.print("T = "); lcd.print(bme.readTemperature()); lcd.print(" *C"); 
  delay(500);
  lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna)
  lcd.print("P = "); lcd.print(bme.readPressure() / 100.0F); lcd.print(" hPa");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
  lcd.print("H = "); lcd.print(bme.readHumidity()); lcd.print(" %"); 
  delay(2000);
  lcd.clear();
  delay(500);
  
}

void printDigits(int digits) {
    // procedura dodania zera 
    lcd.print(':');
    if (digits < 10) {
        lcd.print('0');
    }
    lcd.print(digits);

}

 

Link do komentarza
Share on other sites

1 godzinę temu, lukasz125 napisał:

o dziwo działa jedyna różnica podłączyłem zgodnie z sugestia masę Arduino z masą zasilacza.

To nic dziwnego 😉 Bez połączenia masy nie miało prawa zadziałać. Miałeś w układzie dwa źródła zasilania - USB podłączone do Arduino i zasilacz podłączony do płytki stykowej. Bez wspólnej masy układy nie mogły się poprawnie komunikować.

1 godzinę temu, lukasz125 napisał:

Jeśli mógłby ktoś spojrzeć na kod i powiedzieć mi dlaczego nie wyświetlają mi się temperatura, wilgotność i ciśnienie

A sam wyświetlacz działa poprawnie?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jak wgram go w tej formie to działa tylko godzina i data a jak odznacze

lcd.print(bme.readTemperature())

to wyświetla również T=*C więc błąd leży gdzieś w odczytywaniu wartości z czujnika, sprawdziłem w porcie szerogowym i czujnik działa poprawnie.  

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.