Powiadomienia
Wyczyść wszystko
UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Domoticz
170
Wpisów
3
Użytkownicy
3
Reactions
7,037
Wyświetleń
Obsługa tego czujnika w nowych wersjach ESPEasy jest tu ESP_Easy_mega_20221224_collection_A_ESP8266_4M1M.bin
Dodane : 23/02/2023 9:00 pm
Autor tematu
ok wtedy nie było w najnowszych,
mogę wgrać tą wersję na której próbowałeś i spróbować może zadziała
Dodane : 23/02/2023 9:03 pm
Tylko też poczekaj bo u mnie było opóźnienie. Ale działo potem ok. A i jeszcze jedno trzeba by dopracować to wysłanie wartości na serial. Bo teraz możemy zapychać przez przypadek port bo za szybko się wykonuje polecenie serial.
jak wysyłam od siebie to "TaskValueSet,2,1,21.2" polecenie to dostaję takie coś.
>TaskValueSet,2,1,21.2 OK
można np co ileś tam pętli dopiero wysyłać wartość do ESP.
if (loops > 1000){ String waga = String(scale.get_units(), 3); mySerial.print("TaskValueSet,3,1," + waga); //podstawiłem ręcznie 1111111 loops = 0; } loops++;
Dodane : 23/02/2023 9:07 pm
Autor tematu
ok niech cokolwiek zadziała to potem będzie się dostrajać
Ty próbowałeś na tej wersji którą mi podałeś?
ESP_Easy_mega_20221224_collection_A_ESP8266_4M1M.bin
Dodane : 23/02/2023 9:12 pm
Tak. teraz. Tylko ja łaczę sobie dwa ESP przez port Serial i sobie wysyłam z jednego na drugi polecenia. Popatrz co wyżej jeszcze napisałem.
Dodane : 23/02/2023 9:16 pm
Tylko też poczekaj bo u mnie było opóźnienie. Ale działo potem ok. A i jeszcze jedno trzeba by dopracować to wysłanie wartości na serial. Bo teraz możemy zapychać przez przypadek port bo za szybko się wykonuje polecenie serial.
jak wysyłam od siebie to "TaskValueSet,2,1,21.2" polecenie to dostaję takie coś.
>TaskValueSet,2,1,21.2 OKmożna np co ileś tam pętli dopiero wysyłać wartość do ESP.
na początku zdefiniuj
#define txPin 6 //zdefiniowanie innych pinów TX na arduino wysyłanie danych int loops = 0;potem zmień na
if (loops > 1000){ String waga = String(scale.get_units(), 3); mySerial.print("TaskValueSet,3,1," + waga); //podstawiłem ręcznie 1111111 loops = 0; } loops++;
Dodane : 23/02/2023 9:17 pm
Autor tematu
dokładnie tak, nie ma potrzeby wysyłać każdego odczytu tylko np co 1 -2 sekundy czy coś koło tego, domoticz i tak rejestruje dane na wykresie co 5 minut
Dodane : 23/02/2023 9:19 pm
Autor tematu
dobra, biorę się za zmianę softu i dalsze próby na razie wielkie dzięki na pewno się odezwę znowu, ale to już nie dziś 🙂
Dodane : 23/02/2023 9:22 pm
Autor tematu
wgrałem nowy soft ESPEASY do modułu vemos D1 mini (Build: ESP_Easy_mega_20221224_normal_ESP8266_4M1M Dec 24 2022)
wydaje się że poustawiałem wszystko tak jak mi pisałeś i niestety efekt jest taki sam, wartość wagi nie jest przekazywana do modułu ESP
u mnie to nieco inaczej wygląda (nie ma miejsca na wpisanie IDX, ale to może dlatego że na razie nie konfigurowałem ścieżki do domoticza)
połączenie arduino z ESP mam tylko jedna linią arduino TX-->ESP RX - bo tylko wysyłam dane więc komunikacja dwukierunkowa chyba nie jest potrzebna
a jeszcze mam takie głupie pytanie, bo jak mi podałeś żeby dodać te wpisy do skryptu dotyczące wysyłania danych do ESP (#include <SoftwareSerial.h> //biblioteka do wysyłaniawartości wagi na esp, zmiana pinów RX i TX arduino) to ja żadnej biblioteki w związku z tym nie dogrywałem, niby poszło bez tego i skrypt się nie burzył, miałem dograć czy ona już jest z automatu ?
zweryfikowałem wpisy do skryptu, teraz to wygląda tak:
#include "HX711.h" #include <SoftwareSerial.h> //biblioteka do wysyłaniawartości wagi na esp, zmiana pinów RX i TX arduino #define calibration_factor -21053.00 //This value is obtained using the SparkFun_HX711_Calibration sketch //-20941.00 to moja wartośc kalibracji czujników uzyskana w innym skrypcie #include <LiquidCrystal_I2C.h> //biblioteka obsługująca typ wyświetlacza LiquidCrystal_I2C lcd(0x27,20,4); //adres i typ wyświetlacza #define DOUT 4 //przypisanie pinu dla danych z układu HX711 #define CLK 5 //przypisanie pinu dla danych z układu HX711 #define rxPin 3 //zdefiniowanie innych pinów RX na arduino odbieranie danych #define txPin 6 //zdefiniowanie innych pinów TX na arduino wysyłanie danych int loops = 0; SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin); HX711 scale; void setup() { Serial.begin(9600); mySerial.begin(9600); //dodane funkcje wysyłania danych na wyświetlacz lcd.init(); // inicjalizacja wyświetlacza lcd.backlight(); //aktywacja podświetlenia wyświetlacza lcd.setCursor(1,0); lcd.print("-- projekt nr.3_1 --"); lcd.setCursor(0,1); lcd.print("-- waga --"); delay(5000); lcd.clear(); Serial.println("HX711 scale demo"); scale.begin(DOUT, CLK); scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch //Ta wartość jest uzyskiwana za pomocą szkicu SparkFun_HX711_Calibration //scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0 //Zakładając, że podczas uruchamiania waga nie jest obciążona, zresetuj wagę do 0 - zablokowałem tą funkcję żeby waga się nie resetowała po zaniku zasilania scale.set_offset(-78906); //Serial.println("Readings:"); Serial.println("aktualna waga:"); } void loop() { //Serial.print("Reading: "); Serial.print("aktualna waga: "); Serial.print(scale.get_units(), 3); //scale.get_units() returns a float //ustawienie ile ma być pokazywanych miejsc po przecinku Serial.print(" kg"); //You can change this to kg but you'll need to refactor the calibration_factor //zmieniłem z lbs na kg Serial.println();//funkcja przejścia do następnego wiersza - działa jak ENTER mySerial.print(scale.get_units(), 3);// wysyłanie do ESP //if (mySerial.available()){ //komunikacja z ESP if (loops > 1000){ String waga = String(scale.get_units(), 3); mySerial.print("TaskValueSet,3,1," +waga); loops = 0; } loops++; lcd.setCursor(0,0); lcd.print("-- waga --"); lcd.setCursor(1,2); lcd.print("nr.1 = "); lcd.setCursor(11,2); lcd.print(scale.get_units(), 3); //scale.get_units() returns a float //scale.get_units() zwraca liczbę zmiennoprzecinkową z ustawieniem ile ma być pokazywanych miejsc po przecinku lcd.print("kg "); //You can change this to kg but you'll need to refactor the calibration_factor //zmieniłem z lbs na kg //lcd.println(); //zablokowałem tą "funkcję lcd.println();" bo mi wyświetlała poziome kreski na wyświetlaczu }
Dodane : 25/02/2023 11:35 am
W TaskValueSet pierwszy parametr określa miejsce kontrolki, tutaj dummy devices, w tabeli. Teraz zmień 3 na 1. Jak zmienisz jej pozycję to też musisz zmodyfikować polecenie.
Dodane : 25/02/2023 11:44 am
Autor tematu
toto:
if (loops > 1000){ String waga = String(scale.get_units(), 3); mySerial.print("TaskValueSet,1,1," +waga); loops = 0; } loops++;
Dodane : 25/02/2023 11:49 am
Autor tematu
bez zmian, nadal zera w ESP
Dodane : 25/02/2023 11:52 am
To zostaje teraz do sprawdzenia połączenie andruino z ESP. Oraz jakie wartości przesyłamy do niego. Zauważ raz że wysyłasz no 1000 pętlę oraz zauważyłem, że by ESP odbierało przez serial trzeba mu dać chwilę na ustabilizowanie pracy. Może spróbuj całe es podłączyć TX jak i RX.
Dodane : 25/02/2023 11:56 am
Autor tematu
co chwilę odświeżam odczyt z ESP i nic
ok spróbuję
Dodane : 25/02/2023 11:57 am
Zobacz czy parametr waga ma jakąś wartość. Pokaż jaka. Najlepiej ustaw Serial.print(waga).
Dodane : 25/02/2023 12:09 pm
Tu się dubluje. I wysyłasz cały czas do ESP wartości jakieś.
mySerial.print(scale.get_units(), 3);// wysyłanie do ESP
//if (mySerial.available()){ //komunikacja z ESP
if (loops > 1000){
String waga = String(scale.get_units(), 3);
mySerial.print("TaskValueSet,3,1," +waga);
loops = 0;
}
loops++;
Dodane : 25/02/2023 12:12 pm
Autor tematu
a jak to mam zrobić bo nie bardzo mi wychodzi
tak to ma być ?
//mySerial.print(scale.get_units(), 3);// wysyłanie do ESP //if (mySerial.available()){ //komunikacja z ESP if (loops > 1000){ String waga = String(scale.get_units(), 3); mySerial.print("TaskValueSet,1,1," +waga);//pierwsza liczba oznacza nr wiersza w ESP na którym mamy odczyt loops = 0; } loops++;
Dodane : 25/02/2023 12:16 pm
Autor tematu
dalej bez zmian
Dodane : 25/02/2023 12:22 pm
Autor tematu
dopisałem takie coś, nie wiem czy dobrze, ale zamysł był taki żeby tą wartość co jakiś czas wysyłał na serial monitor niby tak samo jak do ESP i na serial monitorze leci tylko aktualna waga a ta wartość sie tam nie pojawia - nie wiem czy o to Ci chodziło
//if (mySerial.available()){ //komunikacja z ESP if (loops > 1000){ String waga = String(scale.get_units(), 3); mySerial.print("TaskValueSet,1,1," +waga);//pierwsza liczba oznacza nr wiersza w ESP na którym mamy odczyt loops = 0; Serial.print("waga"); Serial.print(waga); Serial.print("waga"); } loops++;
Dodane : 25/02/2023 12:32 pm
To pewnie tu jest winny. Musi tu być wartość.
Zmień ten 1000 na coś mniejszego np 100. Ta liczbę ustawiasz według potrzeb.
Dodane : 25/02/2023 12:44 pm