Jump to content
ELFORUM - Forumul Electronistilor
aetius

sursa cu pic

Recommended Posts

Un "mini-webserver cu ESP" ar fi bun ca subiect pentru un topic de genul tutorial ESP. Multumesc in avans pentru orice detaliu.

 

@informer

Share this post


Link to post
Share on other sites

Acum 5 ore, Thunderer a spus:

Un "mini-webserver cu ESP" ar fi bun ca subiect pentru un topic de genul tutorial ESP. Multumesc in avans pentru orice detaliu.

 

@informer

Buna idee!

Ca să aplici se poate alege o cale bătuta, care este cea mai scurtă, sau să pui mâna pe carte (net). Deşi în general se poate,

 aşa cum am învăţat acum 2 ani să programez jocuri în Java, de data asta amân posibilele aplicaţii WiFi pentru mai târziu,

poate sunt alţi useri interesaţi şi vă mulţumesc pentru ofertă. Mi-a plăcut mult cum aţi schiţat conexiunea.

 

Conexiuni USB dintre PIC-PC îmi este cunoscută şi o schemă bloc generala este in poză.

   1675573571_ConexiuneUSB-PC.thumb.jpg.dffc2827c419681474c68cd099f2ac7b.jpg

Eu am optat pentru PIC, cod C sau Basic, schema, program pe PC in C# sa Basic si in cazul sursei cu PIC codul este extrem de simplu,

 mai ales ca se poate personaliza cu PID-VID.

 // RUTINA USB-HID bidirectionala

     USB_Polling_Proc();
       kk = HID_Read();
     if(kk != 0){
      Vtmp= (unsigned int)readbuff[3];
        tensiune= Vtmp*256 + readbuff[4];
        LongToStr(tensiune,txt);
        RA1_bit=0;
        RA2_bit=1;  //selecteaza afisorul 1 VOLTI
        lcd_Out(2,1,Ltrim(txt));   //txt este directionat spre LCD1 sau LCD2
      Atmp= (unsigned int)readbuff[5];
        curent= Atmp*256 + readbuff[6];
        curent=(curent*100)/25;
        LongToStr(curent,txt);
        RA1_bit=1;
        RA2_bit=0;  //selecteaza afisorul 2 AMPERI
        lcd_Out(2,1,Ltrim(txt));   //txt este directionat spre LCD1 sau LCD2
      }
       for(jnt=0;jnt<64;jnt++){  // initializaare buferi USB
         writebuff[jnt]=0;
        // readbuff[jnt]=0;
       }
      //for(jnt=0;jnt<64;jnt=jnt+2){  //step 2 pentru LSB si MSB sau chiar HSB
      //  writebuff[jnt]=0;        //tensiune/256;
        //kk=0x00FF & tensiune;
      //  writebuff[jnt+1]=0;      //kk;
      //}
     writebuff[0]= 71;   //Goo
     writebuff[1]= 111;  //caracter "o"
     writebuff[2]= 111;  //
    //*******************************************
     writebuff[3]= tensiune/256;   //TENSIUNEA LIMITA
     kk=0x00FF & tensiune;
     writebuff[4]= kk;
    //**********************************************
     writebuff[5]= curent/256;     //CURENTUL LIMITA
     kk=0x00FF & curent;
     writebuff[6]= kk;
    //**************************************************
     writebuff[7]= V3;      //TENSIUNEA in SARCINA are 3x8 bytes
     writebuff[8]= V2;
     writebuff[9]= V1;
    //****************************************************
     writebuff[10]= A3;      //CURENTUL in SARCINA  are 3x8 bytes
     writebuff[11]= A2;
     writebuff[12]= A1;

     kk=HID_Write(&writebuff[0],64);
     if (kk > 0)comenzi=1; // s-a stabilit conexiunea USB si se pot deschide celelalte rutine.

Acesta este tot codul pentru PIC, receptioneaza, seteaza si transmite tensiuni si curenti.

La PC sunt coduri mai complicate ce includ folosirea functiilor dintr-un dll specializat si rutinele grafice cu

 afisarea datelor dar sunt accesibile. In prezent ansamblul functioneaza dar finisez comenzile si aspectul grafic si

 daca este cineva interesat de aceasta faza voi pune pe site codurile si programul de setup pentru PC numit PicPowerSource.exe,

 impreuna cu programul aferent, in total vreo 5Mb.

Orice comentarii, sugestii si observatii sunt binevenite.

Spor!

 

@gsabac

Edited by gsabac

Share this post


Link to post
Share on other sites
Acum 6 ore, Thunderer a spus:

Un "mini-webserver cu ESP" ar fi bun ca subiect pentru un topic de genul tutorial ESP. Multumesc in avans pentru orice detaliu.

Nu ma prea pricep io la tutoriale, nu-s un bun profesor, am si lipsit la toate orele de pedagogie ca erau facultative si nu le gaseam interesante... :) 

Mi-e mult mai usor ca in masura cunostintelor sa raspund la intrebari punctuale.

Ca idee, un server web simplu pe ESP este un server mono-conexiune care primeste request-uri HTTP de tip GET (adica ii scrii adresa in orice browser) si functie de ce URL + eventuali parametri exista in request, apeleaza direct o anumita functie.

Exemplele de care spune colegul @Liviu M sunt relevante si treaba merge cam asa: considerand adresa serverului ca fiind A.B.C.D daca aceasta adresa este apelata din browser (http://A.B.C.D) se executa o functie corespunzatoare adresei root. Mai precis, codul care in "main" asteapta request-uri face un "goto" la functia "root()" iar dupa ce face ce i-ai scris acolo, se intoarce in main.  Daca de ex. se apeleaza o cale putin diferita, de ex. http://A.B.C.D/fct1 atunci nu se mai executa functia "root()" ci o alta functie asociata cu noul URL(.../fct1), functie care poate face cu totu` altceva... s.a.m.d.   

Se pot scrie oricate functii fiercare apelabila cu un URL diferit.

In interiorul oricarei functii ai acces la parametrii din GET trimisi ca pereche nume / valoare de ex: http://A.B.C.D/fct2?para1=33&para2=66&....

Ar fi bine de folosit utilitarul "WiFiManager" pt. a putea seta dinamic (NU rescriind codul!) parametri SSID si Password daca se schimba WLAN-u`.

Pagina "servita" la inceput poate fi statica in exemple simple dar se poate construi o functie "updatePage" care s-o "refresuiasca" de cate ori e necesar a.i. sa reflecte schimbarile parametrilor device-ului.

Si nah, multe altele dar e prea mult de scris... daca cineva e interesat poate sa intrebe.

Daca un moderator doreste sa faca un topic separat cu asta, io n-am nimic impotriva.

 

Share this post


Link to post
Share on other sites

Nu stiu sigur 100%, dar pentru a hackui un ESP e nevoie de access fizic la el. Desigur in conexiune wifi parola sa fie strong si eventual in spatele unui NAT/Firewall.

Share this post


Link to post
Share on other sites

Depinde ce construiesti si ce anume inseamna hack-uit in acest context... de ex. la serverul HTTP descris anterior, ORICUM nu exista nici o protectie in interiorul retelei locale, nici macar o autentificare cu user/pass. 

Odata un atacator intrat in LAN-ul cu pricina nu-l impiedica nimeni sa trimita request-uri HTTP la ce device conectat doreste.

Nu-i ca si cand conexiunea cu ele ar fi securizata/criptata or smth.

Da` nah, daca n-ai o protectie suficienta catre internet, asta e, o sa-ti aprinda altcineva becu` in camera... :) .

Io am un nginx la care ma conectez din exterior cu https si de la el am redirectari in LAN... pana acu` ce-am oprit o ramas oprit. 

Sigur ca cei care folosesc device-ul in locuri mai sensibile e bine sa fie informati... numa` sa nu vina ESP-u` gata compromis de la chinezi, cum ne avertizeaza dl. Trump, ca atunci ii mai greu... :rade:.

Edited by informer

Share this post


Link to post
Share on other sites
Acum 19 ore, Thunderer a spus:

Un "mini-webserver cu ESP"

 

De departe ... cel mai bine structurat proiect (întâlnit de mine pt. ESP8266 and ESP32) este acesta:   https://github.com/rjwats/esp8266-react

 

Sunt 2 proiecte în acestă soluție:.

    A.  Backend -> c++ firmware :: vezi directorul src si config (si implementare comun in lib/framework

    B.  Frontend ->(interfata) :: vezi interface ( foloseste react - o bilioteca javascript relativ mică dar extrem de flexibilă)

 

    Practic la prima accesare se încarcă tot codul de la B (în browserul client - telefon, tabletă, TV etc) după care comunicarea cu A se face prin apeluri simple JSON (ex:  /set/output/5V sau /set/limit/current/0.3A) practic un mic API in firmware (pe care evident poți să-l apelezi direct - ex: să-l  integrezi în node-red)

 

   Dacă nu ai un motiv întemeiat să folosești MCU pe 8 biti  la ~3 USD (pe eBay) ESP8266 e imbatabil pt. mici automatizări unde ai wifi + o priză (ex: un termostat).

 

@gsabac Conexiuni USB dintre PIC-PC îmi este cunoscută şi o schemă bloc generala este in poză.

Nu mai merită construite aplicații clasice PC - în 99% din cazuri faci o treabă mult mai bună cu aplicațiile care rulează în browser (rulează pe orice device , UI-ul (partea de interfata: butoane, liste, etc) este mai simplu de facut si mai flexibilă).

Edited by rlodina
un pic mai condensat sa nu poluam topicul curent - scuze: @gsabac

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.