Powiadomienia
Wyczyść wszystko
Domoticz
170
Wpisów
3
Użytkownicy
3
Reactions
6,608
Wyświetleń
W esp Easy jest opcja log w tools. Zobacz co się tam pojawia jak wysyłasz wartości z Arduino do ESP.
Dodane : 27/02/2023 8:16 pm
Autor tematu
takie coś sobie leci :
jak się przełączę i puszczę z putty TaskValueSet,1,1,1.435 na samo ESP po USB to w zasadzie jest to samo tylko wartość się pojawia
Dodane : 27/02/2023 8:46 pm
Ktoś pisze że zadziałało coś takiego.
mySerial.print("TaskValueSet,1,1"); mySerial.println(waga); delay(3000);
Dodane : 27/02/2023 9:14 pm
Autor tematu
niestety bez zmian dalej to samo
Dodane : 27/02/2023 9:21 pm
A to ?
mySerial.print("TaskValueSet,1,1,"); mySerial.println(waga); delay(3000);
Dodane : 27/02/2023 9:27 pm
Autor tematu
tak, tam brakowało przecinka
z arduino wychodziło tak:
a na ESP dalej zera
poprawiłem i dalej bez zmian
Dodane : 27/02/2023 9:29 pm
Wychodzi dobrze ale ESP źle to interpretuje. Dlaczego.. Co może być nie tak. Masz podpięte tx z rx i rx z tx urządzeń?
Dodane : 27/02/2023 9:41 pm
Autor tematu
dziwne jest to że :
- jak puszczam z arduino na kompa po usb i czytam w putty to wynik jest pokazywany
- jak puszczam z kompa po usb na ESP z putty TaskValueSet,1,1,1.435 to wynik na ESP jest
- a jak puszczam tą samą droga po usb z arduino na ESP to wyniku nie ma i sa zera a z logu widać że jest odcztywane to co arduino wysyła bo się w logu pojawiaja wpisy z tą samą częstotliwościa co arduino wypluwa tylko są zera
tak mam podpięte juz nawet zamienałem RX z TX i dalej to samo
Dodane : 27/02/2023 9:41 pm
Pokaż jeszcze program jaki masz w Arduino.
Dodane : 27/02/2023 9:46 pm
Autor tematu
#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(2400); mySerial.begin(2400); //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 > 10){ String waga = String(scale.get_units(), 3); //mySerial.print("TaskValueSet,1,1," + waga +"\r\n");//pierwsza liczba oznacza nr wiersza w ESP na którym mamy odczyt mySerial.print("TaskValueSet,1,1,"); mySerial.println(waga); delay(3000); loops = 0; //testowe wysłanie na serial monitor Serial.print("=================================================="); Serial.println(); Serial.print("wysłanie wartości wagi na ESP - waga = "); Serial.print(waga); Serial.print(" kg"); Serial.println(); Serial.print("=================================================="); Serial.println(); } 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 : 27/02/2023 9:48 pm
Zróbmy jeszcze taką próbę. Usuń albo zakomentuj wszystkie linie z "Serial.print" i "Serial.println"
"mySerial" zmień na "Serial". Podłącz Arduino z ESP za pomocą pinów opisanych jako tx i rx na płytce. I sprawdź.
#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(2400); mySerial.begin(2400); //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 > 10){ String waga = String(scale.get_units(), 3); //mySerial.print("TaskValueSet,1,1," + waga +"\r\n");//pierwsza liczba oznacza nr wiersza w ESP na którym mamy odczyt Serial.print("TaskValueSet,1,1,"); Serial.println(waga); delay(3000); loops = 0; //testowe wysłanie na serial monitor/ //Serial.print("=================================================="); //Serial.println(); //Serial.print("wysłanie wartości wagi na ESP - waga = "); //Serial.print(waga); //Serial.print(" kg"); //Serial.println(); //Serial.print("=================================================="); //Serial.println(); } 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 : 27/02/2023 9:56 pm
Autor tematu
na serial monitorze mi leci tak:
na ESP dalej to samo:
w logu ESP lecą cyklicznie odczyty ale z zerami:
czyli generalnie bez zmian, dalej to samo, RX TX połączone tak jak dawniej przez dzielnik napięcia
#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(2400); mySerial.begin(2400); //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 scale.set_offset(-78906); //Serial.println("aktualna waga:"); } void loop() { if (loops > 10){ String waga = String(scale.get_units(), 3); Serial.print("TaskValueSet,1,1,"); Serial.println(waga); delay(3000); 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 lcd.print("kg "); //You can change this to kg but you'll need to refactor the calibration_factor }
Dodane : 27/02/2023 10:17 pm
zamiast waga wyślij jakąś liczbę. np" 1.522"
Dodane : 27/02/2023 10:28 pm
Autor tematu
wysyła ale na serial monitor
na ESP dalej zera
tylko że teraz to chyba nie ma rozkazu wysyłania na ESP ?
void loop() { if (loops > 10){ String waga = String(scale.get_units(), 3); Serial.print("TaskValueSet,1,1,"); Serial.println(1.522); delay(3000); loops = 0;
Dodane : 27/02/2023 10:35 pm
A przełączyłeś kabelki z pinów od softserial na piny od tx i rx fizycznego ?? i to 1.522 ma być miedzy "" 🙂
Dodane : 27/02/2023 10:44 pm
Autor tematu
nie, a mam też zmienić nr pinów w programie czy nie ?
Dodane : 27/02/2023 10:47 pm
NIE. jak masz na płytce oznaczone piny jako tx i rx to tam masz co idzie na monitor z USB, taki mirror. Nic nie zmieniasz.
Dlatego też usunąłem wszystkie pozostałe polecenia do "Serial".
Dodane : 27/02/2023 10:56 pm
Autor tematu
piny przepięte na 0 RX i 1 TX płytki arduino, ta wpisana ręcznie wartość 1.522 nigdzie się nie pojawiła, w serial monitorze lecą pomiary wagi, a w ESP dalej bez zmian zera, a w logu ESP lecą odczyty też z zerami
Dodane : 27/02/2023 11:00 pm
Masz coś takiego teraz:
String waga = String(scale.get_units(), 3); Serial.print("TaskValueSet,1,1,"); Serial.println("1.522"); delay(3000);
Dodane : 27/02/2023 11:21 pm
Autor tematu
dokładnie tak
Dodane : 01/03/2023 10:18 pm