Arduino wi-fi czujniki, pompa wody

Arduino wi-fi czujniki, pompa wody
VA
  • Rejestracja:ponad 8 lat
  • Ostatnio:11 miesięcy
  • Postów:127
0

Witam

Ostatnio zacząłem projekt w embedded przy użyciu Arduino. Ogólnie rzecz biorąc to nie bardzo wiem jak to wszystko popodłączać. Jak podłącze jeden czujnik to ok, ale jak dodam do tego drugi to drugi działa natomiast pierwszy przestaje. Próbowałem na różne sposoby. Może ktoś będzie mógł mnie nakierować/podpowiedzieć. Ogólnie to z embedded jestem trochę zielony :)

Projekt ma wyglądać tak że arduino komunikuje się z serwerem w celu przesłania informacji z czujników oraz uruchomienia światła lub pompy wody. Serwer otrzymuje te dane i na ich podstawie stwierdza czy pompę/diodę włączyć czy też wyłączyć. Dane ze wszystkich czujników serwer zapisuje. Komunikację planuję RESTem natomiast nie wiem jak się do tego zabrać po stronie Arduino.

Sprzęt

Najbardzie mi zależy na tym jak to podpiąć aby wszystko działało. Kod opcjonalnie ale też nie zaszkodzi. Przydało by się też nakierowanie jak w takim Arduino ogarnąć komunikację z serwerem za pomocą REST lub inaczej.

Na zdjęciach podpięte dwa czujniki (temperatury, wilgotności).
Obecnie wygląda u mnie to tak:

IMG_20240114_010302.jpg
IMG_20240114_010316.jpg

edytowany 3x, ostatnio: vakil
RE
Mam te moduły ethernet itp. spojrzę chyba późnym wieczorem to podrzuce tipy
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:9 miesięcy
  • Postów:6610
1

Jeśli masz jakiekolwiek pojęcie o elektronice to "zabawa" z arduino jest stosunkowo prosta i łatwa. Podstawowa rzecz, jaką musisz zrozumieć to typy i przeznaczenie nóżek arduino. Powinieneś zacząć od przestudiowania teg https://content.arduino.cc/assets/Pinout-UNOwifirev2_latest.pdf
Teraz musisz wiedzieć dwie rzeczy

  1. ile i jakich portów potrzebujesz (to zależy od peryferii, które chcesz podłączyć, np. DS18B20 potrzebuje linii 1-wire
  2. ile i jakie porty ma twoje arduino (do niektórych interfejsów możesz podłączyć wiele peryferii (np. do 1-wire) a do innych tylko jedno

Potem musisz połączyć klocki i narysować sobie gdzie co ma być podłączone. Jak narysujesz to podłączasz. Polecam na początek podłączyć każdy czujnik/item osobno, napisać dla niego prosty program testowy (np. dla czujnika jego odczyt a dla diody/pompki coś jak włącz/wyłącz w pętli) żeby sprawdzić czy wybrana konfiguracja połączenia jest poprawna. Jak masz już wszystkie pojedyncze elementy przetestowane to zaczynasz to składać do kupy.

Dla mnie bardzo pomocne jest podłączenie także RS232 i przesyłanie kluczowych stanów aplikacji przez Serial.print / Serial.println


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 1x, ostatnio: abrakadaber
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:3561
1
vakil napisał(a):

Witam

Ostatnio zacząłem projekt w embedded przy użyciu Arduino. Ogólnie rzecz biorąc to nie bardzo wiem jak to wszystko popodłączać. Jak podłącze jeden czujnik to ok, ale jak dodam do tego drugi to drugi działa natomiast pierwszy przestaje.

W mainstreamie Arduino nie znajdziesz dobrych wzorców. Tam wszystko jest nastawione na jednozadaniową pracę z jednym urządzeniem przez loop()
Mainstream mam na myśli 95%

Lekarstwo (podstawowe, level 1) idące w stronę synchronicznej obsługi wielu urządzeń, to odejście od fabrycznego loop() na rzecz programowania z funkcją milis()

Te 5%, które kuma, zna fundamenty mikroprocesora (rejestry, przerwania itd), to - stawiam tezę - ludzie którzy znali uP wcześniej, a Arduino dolożyli do swojego portfela kwalifikacji potem.

Ze sposobem myślenia "mainstream arduino" nie zostaniesz dobrym programistą mikroprocesorowym, najwyżej sprawnym copywriterem.


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
99xmarcin
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:2420
1

Arduino to bardzo prosty sprzęt masz max 3 timery w klasycznym Arduino. Często jest tak że biblioteki do różnych peryferii potrafią korzystać z tego samego timer'a lub przerwania. Wtedy efektem jest że coś "nie działa", a dowiedzieć tego się można tylko zgłębiając dokumentację danej biblioteki.

Być może jest też tak że nie konfigurujesz poprawnie biblioteki (ustawienie pinów IN/OUT)?

Bez kodu ciężko cokolwiek powiedzieć...


Holy sh*t, with every month serenityos.org gets better & better...
VA
  • Rejestracja:ponad 8 lat
  • Ostatnio:11 miesięcy
  • Postów:127
0

Proszę kod:

Kopiuj
#define A0 A0
#define LM35 A5

int waterLevel;
int ledGreen = 13;

void setup() {
  // dioda wbudowana na plytce
  pinMode(LED_BUILTIN, OUTPUT);

  // dioda zielona
  pinMode(ledGreen, OUTPUT);

  // czujnik wilgotności gleby
  pinMode(A0, INPUT);
  Serial.begin(9600);
}

void loop() {
  waterLevel = 1023 - analogRead(A0);

  // digitalWrite(ledGreen, HIGH);
  // delay(500);
  // digitalWrite(ledGreen, LOW);
  // delay(500);

  if (waterLevel > 10) {
    digitalWrite(ledGreen, HIGH);
  } else {
    digitalWrite(ledGreen, LOW);
  }

  Serial.println(waterLevel);
  delay(1000);

  float temperatura = ((analogRead(LM35) * 3.5) / 1024.0) * 100;
  
  // Wypisywanie temperatury
  Serial.println("Aktualna temperatura: ");
  Serial.print(temperatura);
  Serial.print(" *C");
}
VA
  • Rejestracja:ponad 8 lat
  • Ostatnio:11 miesięcy
  • Postów:127
0

Ale dobra ogarnołem aby te dwa czujniki aby działały. Biorę się za trzeci. A powiedzcie mi tylko jak ma się tutaj sprawa z wi-fi i RESTem? Można w Arduino wystawić end Point?

edytowany 3x, ostatnio: vakil
RE
  • Rejestracja:ponad 18 lat
  • Ostatnio:27 minut
1

coś tam na necie do endpointów w arduino jest.
Spojrzałem w sprzęt. Powiem tak lepiej znam avr w czystym C niż arduino ale czemu nie używasz przerwań? Wiem że w arduino można. Przerwanie np. od przetwornika adc jak zakończy pomiar, 1 wire z czujnikiem temp. to faktycznie będzie chyba tylko timer.


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.