• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wemos D1
#1
Witam, posiadam płytke Wemos D1 podłączyłem wgrałem Blinka i działa , ale chce sterowac za jego pomocą procesorem Atmega 32 przez Uart. Wgrałem taki kod



Kod:
#include <ESP8266WiFi.h>

//how many clients should be able to telnet to this ESP8266
#define MAX_SRV_CLIENTS 1
const char* ssid = "FunBox2-4F05";
const char* password = "5EF6662";

WiFiServer server(23);
WiFiClient serverClients[MAX_SRV_CLIENTS];

void setup() {
 Serial1.begin(115200);
 WiFi.mode(WIFI_STA);
 WiFi.begin(ssid, password);
 Serial1.print("\nConnecting to "); Serial1.println(ssid);
 uint8_t i = 0;
 while (WiFi.status() != WL_CONNECTED && i++ < 20) {
   delay(500);
 }
 if (i == 21) {
   Serial1.print("Could not connect to"); Serial1.println(ssid);
   while (1) {
     delay(500);
   }
 }
 //start UART and the server
 Serial.begin(115200);
 server.begin();
 server.setNoDelay(true);

 Serial1.print("Ready! Use 'telnet ");
 Serial1.print(WiFi.localIP());
 Serial1.println(" 23' to connect");
}

void loop() {
 uint8_t i;
 //check if there are any new clients
 if (server.hasClient()) {
   for (i = 0; i < MAX_SRV_CLIENTS; i++) {
     //find free/disconnected spot
     if (!serverClients[i] || !serverClients[i].connected()) {
       if (serverClients[i]) {
         serverClients[i].stop();
       }
       serverClients[i] = server.available();
       Serial1.print("New client: "); Serial1.print(i);
       break;
     }
   }
   //no free/disconnected spot so reject
   if (i == MAX_SRV_CLIENTS) {
     WiFiClient serverClient = server.available();
     serverClient.stop();
     Serial1.println("Connection rejected ");
   }
 }
 //check clients for data
 for (i = 0; i < MAX_SRV_CLIENTS; i++) {
   if (serverClients[i] && serverClients[i].connected()) {
     if (serverClients[i].available()) {
       //get data from the telnet client and push it to the UART
       while (serverClients[i].available()) {
         Serial.write(serverClients[i].read());
       }
     }
   }
 }
 //check UART for data
 if (Serial.available()) {
   size_t len = Serial.available();
   uint8_t sbuf[len];
   Serial.readBytes(sbuf, len);
   //push UART data to all connected telnet clients
   for (i = 0; i < MAX_SRV_CLIENTS; i++) {
     if (serverClients[i] && serverClients[i].connected()) {
       serverClients[i].write(sbuf, len);
       delay(1);
     }
   }
 }
}
D1 sie zalogował wiem jaki ma Adres Ip tylko jak teraz coś do niego wysłać ?
 
Odpowiedź
#2
Z ESP8266 możesz komunikować się do Atmegi przez UART, I2C, SPI i parę pośrednich metod jak BT, transmitery bezprzewodowe. Z UART masz dwa do wyboru w ESP, w drugim jest na pewno TX, więc do wysyłania wystarczy. Jeśli chcesz od strony sieci WiFi to możesz sobie zrobić serwer WWW, coś tam wpisywać do wysłania lub zrobić sobie przyciski/suwaki, pola. Możesz się komunikować przez połączenie TCP, UDP z serwerem i klientem, są też przykłady do Telnet + odpowiedni soft na komputerze (putty, SocketTest3). Są też różne moduły do czegoś ala BMS - poszukaj o Domoticzu, NODE RED, MQTT, Thinkspeak - komunikacja przez serwery zewnętrzne, jeden klient wysyła polecenie, zapisuje to na serwerze, drugi cyklicznie odczytuje z serwera czy jest coś dla niego. Pewnie jest tego więcej, ja się bawię tylko w wolnych chwilach.
Miłej zabawy
 
Odpowiedź
#3
Wszysko ładnie ale jak to Zrobić?
Jak podłaczyć sie do D1 za pomocą www?
 
Odpowiedź
#4
Uczysz się programowania C++, HTML, CSS, JS i zaczynasz rozumieć przykłady, które zapewne masz już w swoim komputerze, skoro zaprogramowałeś Wemos D1. Mi przejście z Blinka do Serwera zajęło trochę czasu, także tego okienka mi tu braknie. Są tutoriale na , Forbot, Majsterkowo, Youtube również po polsku.
W kodzie, który sam podałeś powyżej odpalasz przecież Serwer dla Telnet, włącz Putty, podłącz się do niego, będzie przerzucał przesłane dane na UART. Pamiętaj tylko, że UART w ESP działa na 3.3V, a w UNO na 5V, najlepiej użyć jakiegoś konwertera logiki.
 
Odpowiedź
#5
Czyli nadal jestem w punkcie wyjścia Sad
Moze ma a nawet jestem pewien ze są na Pc tylko od czego zacząć.
 
Odpowiedź
#6
W jakim punkcie wyjścia? Masz komputer, ściągasz Putty, w Wemos masz już program do komunikacji wgrany, który wszystko przekazuje na UART. Problem z Putty? Google: Putty tutorial telnet = 170 tys wyników, z czego na pierwszej stronie 3 tutoriale wideo na Youtube - żebyś sobie oczek nie męczył czytaniem. Próbowałeś jakiegoś hobby związanego ze spaniem, może lepiej podejdzie?
 
Odpowiedź
#7
Tylko ze ja chcę wysłac przez wifi komende i zeby D1 przesłał ja dalej do atmegi Putty znam.
 
Odpowiedź
#8
Putty jako klient telnet ->( IP przez WIFI ->Wemos z serwerem Telnet-->UART-->) konwerter 3.3V-5V-> Uart Atmega. To w nawiasie pokazałeś w pierwszym poście.
 
Odpowiedź
#9
Dzięrkuje za pomoc ale pod tym adresem znalazłem to co chciałem.

https://github.com/esp8266/Arduino/blob/...amples.rst
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości