Servo ovladane z webu (Web Controlled Servo)

Nefunguje mi to, chcem radu ako na to...
MarcusAurelius
Príspevky: 26
Dátum registrácie: Streda, 3. Januára 2018, 15:37

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa MarcusAurelius » Streda, 31. Januára 2018, 19:56

mozeme teda povedat,ze vzdy prve definovane cislo v zatvorke patri RX a druhe v poradi TX? ..

Užívateľov profilový obrázok
arduinoposlovensky
Príspevky: 52
Dátum registrácie: Streda, 22. Novembra 2017, 15:01
Kontaktovať užívateľa:

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa arduinoposlovensky » Streda, 31. Januára 2018, 20:43

Presne tak - definovanie najskôr pinu RX a potom TX.
Arduino za pár drobných na: AliExpress.com, Bangood.com

MarcusAurelius
Príspevky: 26
Dátum registrácie: Streda, 3. Januára 2018, 15:37

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa MarcusAurelius » Streda, 31. Januára 2018, 21:10

fajn..skusim to teda odskusat este s tym debuggerom.. dufam,ze to pojde.. keby nieco tak sa hlasim

MarcusAurelius
Príspevky: 26
Dátum registrácie: Streda, 3. Januára 2018, 15:37

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa MarcusAurelius » Štvrtok, 1. Februára 2018, 15:39

Nuz tak som to skusal vcera len skutocne neviem ci som teraz uz len krocik k uspechu alebo este prejde tyzden kym tam dojdem.
Ked "flashnem" tymto programom
ESP-Flasher-Advanced[1].png
ESP-Flasher-Advanced[1].png (22.02 KiB) 1084 zobrazení
WeMOS D1
wemos_d1_esp8266[1].jpg
wemos_d1_esp8266[1].jpg (87.13 KiB) 1083 zobrazení

alebo aj samotne ESP
esp8266-esp01s.JPG
esp8266-esp01s.JPG (24.15 KiB) 1082 zobrazení
tak co sa vlastne stane s nim:
1) na youtube som videl video, kde pred flashovanim nahral chlap prazdny sketch do hlavnej dosky a az potom to flashol.
- ostane program, ktory som tam nahral po flashnuti na doske, alebo sa komplet vymaze?
Po tom ako ho flashnem a nahram tam nejaky program uz mi prestanu fungovat AT prikazy.
Pripojim flashnute ESP a vkuse sa resetuje dookola jak...
Moze to byt aj tym, ze som zadefinoval nevhodne piny pre RX a TX (u mna je to RX=GPIO1 TX=GPIO3) prirodzene zapojene podla toho co si posielal vyssie (do RX ide z ESP TX a opacne).. na mojej doske su to prve dva piny z pravej strany hore. (aby sa mi to nemylilo zbytocne)

na obrazku flashera ponechavam vzdy tie defaultne nastavenia co su tam zobrazene pre obe dosky
btw: co znamenaju prosim ta tie mody: QIO, DIO, QOUT, DOUT ?
aku baudovu rychlost tam mam nastavit? ten wemos vie ist aj na 921600 ked nahravam v IDE, ESP vie max 230400 ale nie vzdy to ide niektore len max 115200. Nastavujem tymto parametrom vlatne co? pripadne tie ostatne parametre treba menit nejak? ma to nejaky vplyv na chod tohto programu? uz sa pytam ako postih, ale ked to servo sa este ani len nepohlo, neviem kde je chyba.
Neviem uz fakt co je zle.

Chyba mi vela zakladov ocividne :/

Este otazka.. ked to zapojim podla navodu, co je na tej stranke co som uviedol v prvom prispevku. Je nutne tymi AT prikazmi spustit to.. myslim tym, ze ci ich musim jednotlivo zadavat do sierialmonitoru vsetky postupne aby sa spusitlo vsetko ako ma? alebo to ma vlastne urobit vsetko WeMOS po spusteni?

lebo ked tam nedam ESP chip ze pouzijem ten vstavany tak krasne reaguje (po tom ako ho flashnem) na vsetky commandy, pripoji sa na wifi, vypise IP aj sa resetne ked mu dam ten prikaz at+rst a podobne, ale to servo ani bohovi nereaguje na nic.
Skusim sa dnes pochlapit a spravit ten program na iny system bez tych AT prikazov normalne ako webserver ale asi budem potrebovat helfnut :D
Na pohlad primitivizmus .. clovek caka ze skopiruje kod a ide podla navodu, ale nic nejde :x

Užívateľov profilový obrázok
arduinoposlovensky
Príspevky: 52
Dátum registrácie: Streda, 22. Novembra 2017, 15:01
Kontaktovať užívateľa:

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa arduinoposlovensky » Štvrtok, 1. Februára 2018, 17:48

Nuž najjednoduchšie by bolo použiť Arduino UNO (alebo Nano), si si to skomplikoval s tým Wemos D1 - ten má trochu inak označované piny. Ale vyriešiť sa to dá aj s tým čo máš.

Treba si uvedomiť správne používanie RX a TX pinov. Tie čo sú označené na doske (vpravo hore) sú takzvané hardwarové RX TX piny, ktoré sú zároveň pripojené (cez prevodník) na USB port a zároveň slúžia na nahrávanie alebo flashovanie programu. Keď máš dosku pripojenú stále cez USB napr. kvôli monitorovaniu, nemôžeš na tieto piny nič pripájať! Preto chytrý chlapci programátory vytvorili knižnicu SoftwareSerial.h, ktorá dokáže na iných pinoch vytvoriť softwarovú sériovú linku, kde už pripojíš v tvojom prípade to malé ESP. Všimni si to i na obrázku z návodu:
serial hw sw.jpg
serial hw sw.jpg (30.73 KiB) 1027 zobrazení
Módy QIO, DIO, QOUT, DOUT je spôsob SPI komunikácie čipu s flash pamäťou:

Kód: Vybrať všetko

Option	Mode Name	Pins Used					Speed (ESP8266 & ESP32)
qio		Quad I/O		4 pins used for address & data	Fastest
qout		Quad Output	4 pins used for data			Approx 15% slower than qio
dio		Dual I/O		2 pins used for address & data	Approx 45% slower than qio
dout		Dual Output	2 pins used for data			Approx 50% slower than qio
Baudová (prenosová) rýchlosť je spravidla dnes už 115200, kedysi sa používalo 9600 pre starší firmware. Jedna vec je nastaviť ju pri flashovaní a druhá vec je nastaviť ju pri používaní v tvojom programe. Preto sa pozri u toho ESP po naflashovaní firmware, na akej baudovej rýchlosti ti na tie AT príkazy odpovedá, či je to 9600 alebo 115200 a podľa toho uprav v programe pre Wemos tento riadok:

Kód: Vybrať všetko

Serial.begin(9600);      // toto zostáva, to je HW UART pre USB
esp8266.begin(9600);  // toto treba upraviť pre ESP pre AT príkazy
A určite asi vieš, že i ten Wemos je v podstate to malé ESP :-)
Arduino za pár drobných na: AliExpress.com, Bangood.com

MarcusAurelius
Príspevky: 26
Dátum registrácie: Streda, 3. Januára 2018, 15:37

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa MarcusAurelius » Štvrtok, 1. Februára 2018, 22:32

Arduino UNO som dnes objednal od jedneho cava - je to klon, ale to mi nevadi, ak to nepojde s tym tak uz ozaj neviem :D :shock:

tak teda odznovu:
1. Flashnem WeMOS - at prikazy idu - OK - odpoveda na 115200
2. Flashnem ESP8266 - at prikazy idu - OK - odpoveda na 115200
3. Na WeMOS nahram program
4. ESP (len flashnute bez akehokolvek programu) a servo pripojim k WeMOS podla nizsie uvedeneho riadku

SoftwareSerial esp8266(5,16); // D2=5=RX D3=16=TX

#define DEBUG true
#define sg90_pin 0 // D8=0

Serial.begin(9600);
esp8266.begin(115200); // z povodnych 9600 menim na 115200 nakolko odpoveda pri tejto rychlosti

ked to takto mam zapojim to do stavy spustim si serial monitor a panko sa v jednom kuse resetuje dookola -_-
podla mna som postupoval spravne, uz to vidim len tak, ze doska nie je vhodna na toto zapojenie. :/

Užívateľov profilový obrázok
arduinoposlovensky
Príspevky: 52
Dátum registrácie: Streda, 22. Novembra 2017, 15:01
Kontaktovať užívateľa:

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa arduinoposlovensky » Piatok, 2. Februára 2018, 09:53

Postup máš správny (i keď bod 1. môžeš vynechať), napadá ma už len otázka aká je to revízia dosky Wemos D1 (R1 alebo R2) a s tým i označovanie pinov:
comparison-of-wemos-r2-vs-r1-pinouts.png
comparison-of-wemos-r2-vs-r1-pinouts.png (62.59 KiB) 1025 zobrazení
wemos-d1r2-pinout-resized.jpeg
wemos-d1r2-pinout-resized.jpeg (173.68 KiB) 1025 zobrazení
Arduino za pár drobných na: AliExpress.com, Bangood.com

MarcusAurelius
Príspevky: 26
Dátum registrácie: Streda, 3. Januára 2018, 15:37

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa MarcusAurelius » Piatok, 2. Februára 2018, 15:33

Urcite mam Wemos D1 - R1 lebo INBUILT_LED pin mam na D9 resp GPIO 02.

No ale kaslem uz na tie AT Commandy nemam na to nervy, rozchodil som servo inym sposobom, zatial len primitivne, ze zadam do prikazoveho riadku prehliadaca polohu aku chcem, ale dolezite je, ze mi to reaguje na podnety. Chcem to urobit tak, ze budem mat na HTML stranke okienko (ak si spominas tak podobne ako pri tej aplikacii kde som mal zadat IP adresu) a do toho vpisem uhol a servo sa o tolko otoci. Nemas nejaky kodik k tomu nahodou?

MarcusAurelius
Príspevky: 26
Dátum registrácie: Streda, 3. Januára 2018, 15:37

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa MarcusAurelius » Utorok, 6. Februára 2018, 10:24

Neadlo mi to... Kupil som si Arduino UNO a zapojil to podla prikladu co som sem uviedol. Samozrejme je to tam zle nakreslene lebo RX a TX su opacne zakreslene, ale to som si vsimol tentokrat hned vdaka tvojim radam :) Spociatku to standardne neslo, musel som prestavit baudovu rychlost na 115200 pre ESP, uz sa mi to pekne pripajalo vypisalo aj IP aj ked nie vzdy to bolo citatelne, niekedy vypisane nespravne, nakolko som ale pre ESP8266 priradil IP napevno podla MAC adresy inu nemohlo dostat. Stale vsak nic, napadlo ma, ze prepisem v html kode IP na tu moju a ulozil som to, takto sa to uz zacalo chovat inak, vsimol som si, ze ESP pri kazdom pohybe bezca na html stranke blikne 2x co bol pokrok vpred.. znacilo to zjavne, ze prijalo a aj odoslalo prikaz akurat servo sa stale nehybalo. Tak som len tak na to klikal dalej viackrat pohyboval bezcom a zrazu sa servo sa pohlo. Potom to uz zacalo reagovat na moje podnety, ale nebolo to 100%-ne proste prijalo a odoslalo prikaz vzdy lebo ESP blikalo, akurat asi to vzdy nejak skomolilo ten kod pri prenose alebo co a nepohlo sa to tak ako sa malo. Sem tam sa to otocilo opacne ako bolo treba,ale mozem povedat, ze som to rozchodil :)

Pocas vikendu ma po 3 hodinach smutku napadlo jedno skvostne riesenie, takze zbytocne som sa snazil upravovat kod v IDE a menit system na moj obraz, stacilo dopisat 3 primitivne riadocky zakladneho programu serva a hned to islo ako ma :mrgreen: Mal som program na ovladanie jasu LED prostrednictvom WiFi a ten som upravil, resp. vpisal tam tie 3 riadky :D
Servo reaguje presne na moje poziadavky, akurat mu to trva chvilu odozva tam je asi take 2sekundy,ale ide presne a neblbne a zakazdym sa pohne, nie ako v predchadzajucom priklade.
Teraz sa to snazim spravit na viac servo motorov teda aspon 2 :D len nejak to nerobi to co chcem. A skor by som chcel vpisovat presne stupen otocenia do okienka podla moznosti by som este chcel pridat jedno okienko kde by som menil dobu otacania serva teda za aky cas by malo servo prist z bodu x do bodu y.
Mas nejake tipy?

Užívateľov profilový obrázok
arduinoposlovensky
Príspevky: 52
Dátum registrácie: Streda, 22. Novembra 2017, 15:01
Kontaktovať užívateľa:

Re: Servo ovladane z webu (Web Controlled Servo)

Príspevok od užívateľa arduinoposlovensky » Utorok, 6. Februára 2018, 11:10

Super práca, len tak ďalej.
Oneskorená odozva cez web bude vždy nejaká. Keď to chceš rozšíriť o ďalšie servo, musíš doplniť:
1. do programu pre Arduino ďalšie servo vrátane ďalšieho pinu a podmienku pre riadenie serva, keď príde odozva z webu - cca tieto riadky by to mali byť (naklonovať a upraviť):

Kód: Vybrať všetko

 #define sg90_pin 8   //pre druhe servo treba vybrať iný pin a iný názov sg90 a ten i ďalej v kóde zmeniť
  Servo sg90;
  sg90.attach(sg90_pin);
  sg90.write(maximum_position);
  sg90.detach();

  // put your main code here, to run repeatedly:
  // move servo1 to desired angle
  if (command == "sr1") {        // sr1 zmeniť na sr2 - toto odosielaš z webu ako príkaz pre servo 2
    //limit input angle
    if (value >= maximum_position) {
      value = maximum_position;
    }
    if (value <= minimum_position) {
      value = minimum_position;
    }
    sg90.attach(sg90_pin); //attach servo
    while (current_position != value) {
      if (current_position > value) {
        current_position -= 1;
        sg90.write(current_position);
        delay(100 / vel);
      }
      if (current_position < value) {
        current_position += 1;
        sg90.write(current_position);
        delay(100 / vel);
      }
    }
    sg90.detach(); //dettach
  }
2. doplniť podobným spôsobom v html stránke ďalší kód pre druhé servo nejak takto:

Kód: Vybrať všetko

<input type="range" min="20" max="170" onmouseup="servo1(this.value)"> 
<input type="range" min="20" max="170" onmouseup="servo2(this.value)">  
<script>
$.ajaxSetup({timeout:1000});
function servo1(angle)
{
	TextVar = form.inputbox.value;
	ArduinoVar = "http://" + TextVar + ":80";
	$.get( ArduinoVar, { "sr1": angle })	;
	{Connection: close};
}
function servo2(angle)
{
	TextVar = form.inputbox.value;
	ArduinoVar = "http://" + TextVar + ":80";
	$.get( ArduinoVar, { "sr2": angle })	;
	{Connection: close};
}
</script>

V html sú vytvorené dva posuvníky, prvý zavolá script "servo1" a odošle hodnotu pre sr1 a druhý posuvník zavolá script "servo2" a odošle hoddnotu pre sr2.
Hore v programe pre Arduino vlastne cez podmienky if (command == "sr1") alebo if (command == "sr2") riadiš konkrétne servo s konkrétnou hodnotou. Takto to môžeš rozširovať o ďalšie commandy.
Arduino za pár drobných na: AliExpress.com, Bangood.com

Napísať odpoveď