• 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
Client server - esp8266 i python
#1
Witam. Pracuje nad projektem do którego potrzebuje nawiązać połączenie między modułem wifi esp8266 a apką w kivy(python) napisaną na telefon. Problem w tym ze nie wiem jak się połączyć. Robił już ktoś cos takiego i moze wie jak mi pomóc? Client server? Json? Urlrequest? Komunikacja musi byc zapewniona w obydwie strony
 
Odpowiedź
#2
Blynk ? Virtuino ? Po co wyważać otwarte drzwi jak są gotowe, darmowe i bardzo dobre rozwiązania ?
 
Odpowiedź
#3
Zależy co umiesz zrobić na telefon w pytonie, na esp możesz postawić sobie serwer telnet, UDP, websockets i jak sobie wymyślisz coś innego sensownego to pewnie już jest do tego przykład. Do wszystkiego znajdziesz przykłady w google. Na początek przejrzyj już wbudowane przykłady.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#4
#include <SoftwareSerial.h>

const byte rxPin = 2; // Wire this to Tx Pin of ESP8266
const byte txPin = 3; // Wire this to Rx Pin of ESP8266

// We'll use a software serial interface to connect to ESP8266
SoftwareSerial esp(rxPin, txPin);

void setup() {
Serial.begin(9600);
esp.begin(9600); // Change this to the baudrate used by ESP8266
delay(1000); // Let the module self-initialize
}

void loop() {
Serial.println("Sending an AT command...");
esp.println("AT");
delay(30);
while (esp.available()){
String inData = esp.readStringUntil('\n');
Serial.println("Got reponse from ESP8266: " + inData);
}
}

ESP ARDUINO
GND GND
CH_PD 3v3
VCC 3v3
RX 3
TX 2


Takim połączeniem dostaje odpowiedź OK ze moduł esp8266 jest widoczny.

Z kolei takim połączeniem uzyskałem komunikacje client-server z aplikacja na laptopie.
Esp8266 | Arduino
-----------------
RX | RX
TX | TX
GND | GND
VCC | 5v
CH_PD | 5v
GPIO 0 | None
GPIO 2 | None
Arduino | Arduino
-----------------
Reset | GND

#include "ESP8266WiFi.h"

const char* ssid = "yourNetworkName";
const char* password = "yourNetworkPass";

WiFiServer wifiServer(80);

void setup() {

Serial.begin(115200);

delay(1000);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting..");
}

Serial.print("Connected to WiFi. IP:");
Serial.println(WiFi.localIP());

wifiServer.begin();
}

void loop() {

WiFiClient client = wifiServer.available();

if (client) {

while (client.connected()) {

while (client.available()>0) {
char c = client.read();
Serial.write©;
}

delay(10);
}

client.stop();
Serial.println("Client disconnected");

}
}

Wykorzystujac ten kod.

Teraz problem w tym że mam kilka czujników wilgotnosci i temperatury z których chce odczytywać dane poprzez arudino i potem wysyłać je dalej esp8266 do clienta ktory się podłączy do servera postawionego na tym esp8266.
Problem w tym ze nie wiem jak to wykonać. Próbowałem paru rzeczy ale nie działa.
 
Odpowiedź
#5
Wpisz w google choćby "esp8266 server wether station" i pyk: https://www.youtube.com/watch?v=6LjbTgX046w, a takich jest tysiące.
Tu jest przykład z websockets: https://github.com/kaczakat/ESP8266, wgrywasz to do ESP8266.
Jak musisz mieć Arduino (jakieś UNO/NANO) to wysyłasz dane do ESP przez serial, a z ESP dalej do klienta. Jak ESP8266 ma za mało pinów to można użyć ESP32, Atmega328 w roli serwera (2kb RAM/32kb flash), a ESP8266 tylko jako jej modem (80kb RAM/1MB flash) to trochę głupi pomysł. Po zainstalowaniu definicji ESP, tak by programować go jak UNO w Arduino IDE, będziesz miał wiele przykładów serwerów do wyboru. Opis pinów masz jakbyś używał ESP01, kup sobie jakiegoś WEMOS mini, będziesz miał więcej pinów dla czujników. Do każdego czujnika używanego w Arduino są przykładowe biblioteki.
Na razie Ci nie działa bo za mało umiesz. Trzeba wchłonąć trochę wiedzy o wszystkim, w parę dni tego nie ogarniesz.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości