Odp: DS1820 przez USB bez interfejsu DS2490??
To ile będziesz miał tego przewodu bo u mnie wszystkie czujniki na jednym przewodzie 50 mb i problemu nie ma przy 4.7 k
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Termometr → DS1820 przez USB bez interfejsu DS2490??
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
To ile będziesz miał tego przewodu bo u mnie wszystkie czujniki na jednym przewodzie 50 mb i problemu nie ma przy 4.7 k
będę miał pewnie mniej niż Ty. dopiero się przekonam, czy będę miał problem z tym opornikiem, czy muszę szukać innej wartości.
o tych problemach wyczytałem w necie, że już przy kilku metrach niektórzy musieli kombinować z rezystorami.
zobaczymy. jutro lutuję
Dobry przewód nie skrętka i problemów nie będzie np przewód do alarmów
kupiłem dwużyłowy przewód do podpięcia telefonu stacjonarnego
drut
tylko, że Ty masz to na 3 żyłach, ja będę miał na dwóch, pasożyty jedne
tu mogą się rodzić problemy.
jak pobierasz dane z arduino?? skryptem php?? czy pisałeś coś w innym języku?
Dane pobieram poprzez skrypt bash na ruterze który uruchamiany jest przez crona co 10 min i wysyła za pytanie do arduino o dane z czujników, po otrzymaniu danych zapisuje je do pliku txt a później dane z pliku ładuje do bazy MySQL dodając jeszcze datę i godzinę a by móc wygenerować wykresy.
a nie mogłeś tego od razu do mySQL ładować?? z pominięciem pliku txt? to po pierwsze,
a po drugie:
Zauważyłem, że kod który myślałem, że działa, sprawuje się nie do końca tak jak powinien.
polecenie "odczyt" powoduje wysłanie danych uzyskanych przy poprzedniej komendzie "odczyt" - czyli są to dane nieaktualne.
// Program odczytuje temperaturę kilku czujników
#include <OneWire.h>
#include <DS18B20.h>
// Numer pinu do którego podłaczasz czujnik
#define ONEWIRE_PIN 2
// Ilość czujników
#define SENSORS_NUM 2
// Adresy czujników
const byte address[SENSORS_NUM][8] PROGMEM = {
0x28, 0xA8, 0xE3, 0x2B, 0x6, 0x0, 0x0, 0x42,
0x28, 0x2C, 0xE3, 0x2A, 0x6, 0x0, 0x0, 0xFB
};
OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);
String odebraneDane = "";
void setup() {
while(!Serial);
Serial.begin(9600);
sensors.begin();
sensors.request();
}
void loop() {
if (Serial.available() > 0) {
odebraneDane = Serial.readStringUntil('\n');
if (odebraneDane == "odczyt") {
if (sensors.available()) {
for (byte i=0; i<SENSORS_NUM; i++) {
float temperature = sensors.readTemperature(FA(address[i]));
Serial.print(F("#"));
Serial.print(i);
Serial.print(F(": "));
Serial.print(temperature);
Serial.println(F(" 'C"));
}
sensors.request();
}
}
}
}nie wiem co zmienić, by dane były odczytywane i wysyłane na bieżąco?
Wywal
if (Serial.available() > 0) {
odebraneDane = Serial.readStringUntil('\n');
if (odebraneDane == "odczyt") {
...
}
}
Cezary, tylko w ten sposób wracam do stanu pierwotnego - arduino podaje mi co 0,5s odczyt z czujnikow.
a ja chcę uzyskiwać te dane na wyraźne żądanie (czyli na komendę "odczyt").
Właśnie doczytałem, że źle mogłem się wyrazić
niezbyt dokładnie.
Na bieżąco, to nie znaczy bym był zasypywany danymi co pół sekundy.
Na bieżąco oznacza, że po wysłaniu komendy chcę otrzymywać aktualny pomiar, a nie ten, którego dokonano przy odbiorze poprzedniej komendy.
Przecież masz tak zrobione właśnie. Przenieś ten sensors.request(); gdzieś do góry, bo pewnie on odczytuje czujniki.
Cezary własnie nie.
sensor.request(); wysyła żądanie obliczenia temperatury, nie odczytania, obliczenia. dopiero metoda sensors.readTemperature odczytuje obliczoną wcześniej temperaturę.
To w końcu co to robi? I co właściwie wg ciebie robi "żądanie obliczenia temperatury"? Skoro readTemperature odczytuje obliczoną wcześniej temperaturę." to coś to wcześniej musi zrobić jak sam napisałeś.
Wywal to while(!Serial); bo to nie potrzebne po co ma czekać na otwarcie serial portu i sensors.request(); wywal z void setup() zostaw zaraz po wysłaniu zapytania o odczyt:
a to
if (sensors.available()) {
for (byte i=0; i<SENSORS_NUM; i++) {
float temperature = sensors.readTemperature(FA(address[i]));
Serial.print(F("#"));
Serial.print(i);
Serial.print(F(": "));
Serial.print(temperature);
Serial.println(F(" 'C"));daj w void setup()
U mnie program wygląda tak i działa bezproblemowo zerknij sobie może Ci to coś pomoże: www.dominikowice.one.pl/arduino+openwrt.php
manguscik, masz może GG? skype'a? FB? albo chociaż maila? będzie łatwiej się tak kontaktować niż przez forum ![]()
Siutek i jak tam działa wszystko ? maila wysłałem Ci poprzez PW
manguscik, widziałem, z arduino sobie niestety nie poradziłem, ale teraz nad tym nie siedzę. piszę crona, który będzie pobierał aktualną pogodę z Yahoo dla mojej miejscowości i zapisywał do bazy.
o ile temperaturę mogę sobie zmierzyć, o tyle nie jestem w stanie sam zmierzyć zachmurzenia. stąd pomysł na pogodę z Yahoo.
Idziesz do obi, kupujesz najtańszy oświetlacz z małym ogniwem słonecznym (2,99 pewnie), podłączasz go do przetwornika a/c. I masz pomiar zachmurzenia (oświetlenia).
to nad ranem, zanim słońce w pełni wstanie będzie mi pokazywało zachmurzenie ![]()
A jakiej funkcjonalności oczekiwałeś? żeby podawało stan zachmurzenia? Możesz zbudować na radiu sdr odbiornik komunikatów meteorologicznych ![]()
no właśnie chcę znać stan nieba, czy jest zachmurzone, czy właśnie trwają opady (chociaż to akurat wystarczy spojrzeć za okno
). chcę te dane zapisywać do bazy. łatwiej mi będzie pobrać je z Yahoo, niż inwestować w stację meteo.
Może kiedyś zrobię sobie dwa czujniki, z których będę pobierał aktualną temperaturę. Teraz mam bezprzewodową czujkę, ale od godz 11 jest w miejscu nasłonecznionym więc pomiar jest mało wiarygodny.
Mimo wszystko, nie jestem w stanie uzyskać wiarygodnych danych na temat zachmurzenia.
A ja dysponując czterema czujnikami ds18b20 jestem w stanie z ich danych odczytać, czy jest zachmurzenie, czy świeci słońce oraz czy pada (ale tylko latem).
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Termometr → DS1820 przez USB bez interfejsu DS2490??
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc