Pilot WiFi z telefonu

Stworzyliście coś ciekawego? To jest właściwe miejsce aby zaprezentować Wasz projekt :)
Awatar użytkownika
cyberduck
Posty: 216
Rejestracja: 02 kwietnia 2018, 21:21 - pn
Lokalizacja: Pabianice
Drukarka 3D: Tronxy X5S z BtTouch , Plyta MKS Base v1.3 z dotykowym wyswietlaczem
Kontakt:

#1 Pilot WiFi z telefonu

Postautor: cyberduck » 24 października 2019, 11:23 - czw

Jakos temat Arduino w grupie umarl i to chyba zle ... Prosze Admina o utworzenie odpowiedniego dzialu.
Co jakis czas bede starac sie dodac jakis gotowy projekt ...

Jakis czas temu zgubilem klucz do dosc drogiego zamka, ktorego dorobienie kosztuje okolo 80 zl :geek:
W tym samym budynku jest umieszczona brama przesuwna do gory otwierana standardowo z pilota.
Poniewaz juz wszystkie piloty zostaly rozdane, a nie chcialo mi sie szukac do juz zamontowanego
modulu pilota wiec pokusilem sie o wykonanie czegos takiego w wlasnym zakresie.
Przy okazji juz nie zgubie klucza i dodatkowo mozna unifikowac wejscia jesli ktos sie pokusi o dopisanie
kilku koment. Mozna np zapamietywac hasla albo MAC adres urzadzenia i wtedy dopuszczac albo usuwac
odpowiednich delikwentow do wejscia. Ja na razie zrobilem to w najprostszy sposob.

Aby urzadzenie zadzialalo nalezy polaczyc sie do WiFi. Telefon zapamietuje polaczenia wiec nastepne
podejscie do bramy wymaga jedynie wlaczonego WiFi. Telefon sam polaczy sie do znanej sieci.

Calosc oparlem na tym module :
https://allegro.pl/oferta/przekaznik-z- ... 8487473956
lub :
https://allegro.pl/oferta/modul-przekaz ... 8588560930
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

/* Nalezy wpisac adres pod jakim bedzie widoczny serwer www */
IPAddress apIP(10, 10, 10, 10);

/* Wpisz tutaj nazwe sieci i haslo do niej */
const char *ssid = "Brama";
const char *password = "wlasneHaslo";

// Definicja na jakim porcie bedzie widoczny serwer
ESP8266WebServer server(80);

int relay = 0;
int odczyt = 0;
String odczytDan = "";

void handleRoot() {
odczytDan = server.arg("led");
if (odczytDan != "") {
odczyt = server.arg("led").toInt();
} else {
odczyt = 0;
}

char ledText[80];

if (odczyt != 0) {
digitalWrite(relay, 0);
delay(odczyt);
digitalWrite(relay, 1);
}

// else {
// strcpy(ledText, "");
// }


char html[1000];
int sec = millis() / 1000;
int min = sec / 60;
int hr = min / 60;

int brightness = analogRead(A0);
brightness = (int)(brightness + 5) / 10; // konwersja z czujnika do odpowiednich wartosci

// Build an HTML page to display on the web-server root address
snprintf ( html, 1000,

"",

hr, min % 60, sec % 60,
brightness,
ledText
);
server.send ( 200, "text/html", html );
}

void handleNotFound() {
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += ( server.method() == HTTP_GET ) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";

for ( uint8_t i = 0; i < server.args(); i++ ) {
message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n";
}

server.send ( 404, "text/plain", message );
}

void setup() {
pinMode ( relay, OUTPUT );
digitalWrite ( relay, 1 );

delay(1000);
Serial.begin(115200);
Serial.println();
Serial.println("CKonfigurowanie access point...");

//set-up the custom IP address
WiFi.mode(WIFI_AP_STA);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); // subnet FF FF FF 00

/* You can remove the password parameter if you want the AP to be open. */
WiFi.softAP(ssid, password);

IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);

server.on ( "/", handleRoot );
server.on ( "/led=1", handleRoot);
server.on ( "/led=0", handleRoot);
server.on ( "/inline", []() {
server.send ( 200, "text/plain", "this works as well" );
} );
server.onNotFound ( handleNotFound );

server.begin();
Serial.println("HTTP server started");
}

void loop() {
server.handleClient();
}
Kod jest dosc zrozumialy i nie wymaga specjalnego tlumaczenia.
Uruchamiany jest serwer www na porcie, ktory tez dla bezpieczenstwa mozna sobie zmieniac na dowolny. Standardowo
jest to port 80 .
Nastepnie nadawany jest adres na jakim bedzie widoczny i to tez mozna sobie w kodzie zmienic.

Jesli chcecie zaladowac do wspomnianego modulu kod nalezy wybrac plytke "Generic ESP8266 module" ...
No i niestety trzeba posiadac programator :
https://allegro.pl/oferta/konwerter-usb ... 7907204230
Podpowiadam od razu, ze w programatorze musi byc zwarty pin 0 do masy.

Obrazek
oraz trzeba wybrac go z listy jako :
AVRISP mkII

Po wpisaniu poprawek mozna skompilowac program i wgrac do mikrokontrolera.
Nastepnie mozna juz modul wpiac do plytki porzekaznika i uruchomic wlaczajac zasilanie 5V dla sprawdzenia.
Teraz :
1. wybrac polaczyc sie do sieci WiFi o nazwe jaka wpisalismy przy okazji podajac haslo jakie wpisalismy do polaczenia
Trzeba koniecznie pamietac aby w hasle bylo to wiecej niz 8 znakow. Sam kod przyjmie mniej znakow, ale
urzadzenia w ktorych podaje sie haslo do polaczenia juz nie.
2. otworzyc przegladarke i w pasek adresu wpisac adres :
http://AdresIpJakiNadalismy/?led=500
W linku nalezy oczywiscie wpisac adres IP jaki nadano dla urzadzenia. Ja standardowo przyjalem adres 10.10.10.10 , a wiec
link bedzie wygladac tak :
http://10,.10.10.10/?led=500 .
Po kazdym wywolaniu takiego linka zostanie przekaznik zalaczony na 500 ms. Czas mozna podawac bezposrednio w linku.
To jest ta wartosc 500. Czyli jesli okaze sie, ze czas zalaczenia jest niewystarczajacy lub za dlugi to mozna
zmienic go podajac odpowiednia wartosc w ms. Dla czasu 1.5 sek link bedzie wygladac tak :
http://AdresIpJakiNadalismy/?led=1500 .

Teraz mozna sobie wygenerowac skrot na pulpit telefonu . Niektore przegladarki maja takie ustawienie aby wykonac strone w tle.
Po wlaczeniu tej opcji skrot zostanie wykonany za kazdym razem po kliknieciu bez wywolywania przegladarki w glownym
oknie telefonu. Ja poszedlem troszke dalej instalujac sobie MacroDroid.
Bardzo przydatna aplikacja do wywolywania roznych akcji w telefonie ...
Zamieszam gotowe macro ktore u mnie dziala :
http://bluelan.eu/1/Brama.zip .
Macro trzeba rozpakowac i umiescic w telefonie, a nastepnie zaimportowac w MacroDroid.
W macro jest dodane zabezpieczenie, ze jesli nie ma poalczenia do danego WiFi to akcja sie nie wykona.
Jesli jest polaczenie do odpowiedniego WiFi to macro zapyta o potwierdzenie wykonania akcji.
Dalej juz wiadomo :) Na koniec nalezy dodac na pulpicie widget z telefonu MacroDroid i gotowe :)
Pamietajcie aby po dokonaniu zmian w programie ... adresu IP, SSID sieci WiFi, zmianie portu ... nalezy dokonac
adekwatne do tego zmiany w linku lub akcji macro dla MacroDroid.

W programie mozna tez odczytywac rozne wartosci i przedstawiac je w dowolnej formie na stronie www jako odpowiedz
z urzadzenia. Czesc kodu wlasnie sluzy do tego zadania. W MacroDroid mozna to bardzo ladnie zrobic bo odczytane wartosci
moga posluzyc do przedstawiania ich w dowolnej formie. Jako tekst na pulpicie, jako dzwiek, a nawet jako czytany tekst w
formie slownej.

To sa oczywicie tylko propozycje. U mnie wynalazek dziala juz ponad tydzien i nie sprawia zadnych klopotow.
Brama posiada wlasny sterownik zasilany dwoma napieciami 24V i 12V . Do zasilania ukladu wykorzystalem
mini przetwornice ustawiajac jej napiecie wyjsciowe wstepnie na 5.1 V :
https://allegro.pl/oferta/przetwornica- ... 8526050036

Przypominam o posiadaniu stosownych bibiotek do kompilacji. Akurat w tym projekcie to sa bibioteki :
ESP8266WiFi
ESP8266WebServer

Co do proponowanych modulow mozna oczywiscie wykorzystac dowolny inny z serii ESP. Dowolny przekaznik z jakims
wzmocnieniem pradowym. Uwazam jednak, ze wykonanie samemu tych modulow bedzie kosztowac wiecej niz gotowe
zakupione i sprawdzone. Prawie bez lutowania mozna zlozyc gotowe dzialajace urzadzenie.

Wróć do „Wasze projekty”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości

cron