Arduino Polska Forum

Pełna wersja: Chciałem pogadać z licznikiem.
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3
Pomysł był na zrobienie licznika kosztów energii elektrycznej. Trzeba było zaciągnąć informacje z licznika energii elektrycznej. Wykonałem interfejs ale miałem ciągły problem z odczytem. Użyłem CP2102 i terminala i nic. Użyłem potem arduino mega z LCD by wyświetlało wszystko co przyjdzie na UART i nadal nic. Dziwnym trafem jak podepnę FTDI pod USB wszystko działa ? Jaka jest pomiędzy nimi różnica ?

kod z arduino:

Kod:
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
boolean flaga_nadawanie;
byte sendmsg[5] = { '/', '?', '!', 0x0D, 0x0A};

void setup () {

 tft.begin(0x9481);
 tft.setTextSize(2);
 tft.fillScreen(0x0000);
 Serial3.begin(300, SERIAL_7E1);
}

void loop () {
if (flaga_nadawanie == 0) nadawanie();
 while (Serial3.available()) {
   tft.print(Serial3.read()); tft.print(" ");
 }
}

void nadawanie() {

   for (int i = 0; i < 5; i++) {
     Serial3.write(sendmsg[i]);
   flaga_nadawanie = 1;
 }
}
Sprawdź czy CP2102 działa poprawnie przy trzystu bodach.
Skoro FTDI śmiga, to raczej wątpliwe.
W zamierzchłych czasach, pisywałem sterowniki do LCD.
Takie proste znakowe. Jest w instrukcji producenta opisana procedura inicjalizacji.
I jak trafiłem na oryginalny KS0066, albo KS0062, to śmigało wszystko super, ale gdy trafiłem na chińczyka, to nie wstawał biedaczek.
Dopiero kombinacja z timingiem resetu linii, uruchamiała wyświetlacz.
Można znaleźć trochę moich opisów na elektrodzie, jak ktoś tam bywa.
Pytasz więc, czy jest różnica między FTDI, a CP2102?
O jest, i to ogromna.

Co to za licznik?
Po co wysyłasz na UART te dane, byte sendmsg[5] = { '/', '?', '!', 0x0D, 0x0A}; ?
byte sendmsg[5] = { '/', '?', '!', 0x0D, 0x0A}; - to pozostałośc po przemianach programu. Nie jest to istotne. Wysłać trzeba /?! cr lf by dostać odpowiedź

Dlaczego Arduino nic nie odbiera ? Źle wysyłam ?
Co to za licznik?
(06-04-2018, 23:42)Robson Kerman napisał(a): [ -> ]Co to za licznik?

ME-172. Arduino nadal nie chce gadac. Nie potrafi na baud 300 ??
Tam masz prędkość od 300 bit/sek do 19,200 bit/sek.
Czyli możesz ustawić BAUDRATE na 4800.

Teraz wychodzę z domu, ale wieczorem coś pokombinuję.
(06-04-2018, 12:00)Burakko napisał(a): [ -> ]Dziwnym trafem jak podepnę FTDI pod USB wszystko działa ? Jaka jest pomiędzy nimi różnica ?

Taka, że FTDI jest zrobiony porządnie. Z różnymi innymi układami miałem problemy (PL2303 itp), z FTDI nigdy. Dobre sa układy CH3xx ale FTDI mają większe możliwości.
Zostawcie to FTDI nie ono jest problemem ani rozwiązaniem. A baud rate wg. normy IEC1107 ma być na poziomie 300. Dopiero jeżeli odpowie licznik identyfikatorem możemy zmienić prędkość transmitancji. I licznik zmienia sprawdziłem. Problem tylko z tym że arduino nie gada. Co do CP2102 to zmierzyłem stan niski 1,7V wiec chyba to było problemem ale co z arduino ? Użyłem wszystkich czterech Seriali i nic

Kod:
==> /?!<0D><0A>
<== /ISk5ME172-0000
==> <06>050<0D><0A>
<==  -- STX --
(08-04-2018, 07:52)Burakko napisał(a): [ -> ])Co do CP2102 to zmierzyłem stan niski 1,7V wiec chyba to było problemem ale co z arduino ?
1.7 stanowczo za wysokie napięcie jak na poziom niski. Mierzyłeś oscyloskopem?
Oscyloskopem ? To jak dziecku do piaskownicy dać Caterpillar zamiast łopatki Big Grin Olejmy te USB TTL. Nie są kwestią problemu.
Stron: 1 2 3