Powiadomienia
Wyczyść wszystko
Domoticz
170
Wpisów
3
Użytkownicy
3
Reactions
10.6 K
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
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
A to ?
mySerial.print("TaskValueSet,1,1,");
mySerial.println(waga);
delay(3000);
Dodane : 27/02/2023 9:27 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









