Skocz do zawartości

Kurs ESP8266 - #1 - omówienie, przygotowanie środowiska


Leoneq

Pomocna odpowiedź

6 godzin temu, Rogal napisał:

także podział projektu na pliki

Ekhm... dlaczego nie możesz podzielić projektu na pliki? Możesz mieć główny plik *.ino, jakieś tam dodatkowe pliki *.c i *.cpp, o nagłówkowych już nie wspomnę - a od pewnego czasu można mieć nawet kilka plików *.ino w jednym projekcie.

6 godzin temu, Rogal napisał:

ale taki przywilej hobbysty, że mogę się rozdwodzic nad prescalerem adc i sleep mode żeby osiągnąć lepsze rezultaty

Kto Ci broni?

 

7 godzin temu, Belferek napisał:

Piszesz o dialekcie Arduino - takiego moim zdaniem nie ma. Są za to dedykowane biblioteki producenta z ich funkcjami

To też nie tak. Arduino pochodzi od Wiringa, który stał się de facto standardem. Tak swoją drogą dziwi mnie fakt, że pewien pan na literę A, który podobno jest profesjonalistą w programowaniu mikrokontrolerów (a przynajmniej klienci się do niego zgłaszają po kody w C) o tym nie wie...

Jeszcze co do środowiska: może niewielu z Was zauważyło, ale w preferencjach Arduino IDE jest opcja "użyj zewnętrznego edytora". Działa to bardzo zacnie... i nie musisz używać całego IDE typu VSC, ale jakiegoś lekkiego edytorka typu "Geany" (mój ulubiony), a kompilację i upload przeprowadzać wpisując z palca (czy jakiegoś skryptu) polecenia arduino_builder i avrdude/esptool z odpowiednimi parametrami 😉

8 godzin temu, Belferek napisał:

ponieważ Arduino IDE wspiera ESP8266 i większość użytkowników forum z pewnością też z tego środowiska korzysta więc proponuję by dalszą część tego kursu (jeśli będzie) oprzeć na tym właśnie IDE.

Jestem za.

8 godzin temu, SOYER napisał:

Dlaczego lepiej coś napisać w C niż w "dialekcie" Arduino?

O "dialekcie" to juz wiesz. A że lepiej pisać w C... to stwierdził tylko ów pan o którym już wspomniałem (mianowicie że mu klienci kazali).

Owszem, sam stosuję z różnych przyczyn wstawki w C, ale to są tylko wstawki.

 

Link do komentarza
Share on other sites

Na pewno jest tak jak mówisz ale dopiero muszę do tego dojść. Arduino jeszcze dałbym rade sobie skonfigurować do swoich potrzeb programując bity w atmedze ale na ESP to w sumie nie wiem jak to zrobić. Pisząc wczorajszy komentarz chodziło mi bardziej o zestaw funkcji dostarczone przez arduino niż o samą płytkę.

8 godzin temu, ethanak napisał:

Jestem za.

A ja bym chociaż jeden program w kursie chciał zobaczyć na VSC.

Link do komentarza
Share on other sites

Ale program będzie dokładnie ten sam, i tak w końcu wywołany będzie builder, i w tym momencie nie ma żadnej różnicy czy napisałeś to w tym czymś, co w Arduino IDE udaje edytor, czy w Atomie (bo przecież edytor w VSC czy PlatformIO to po prostu Atom).

Co do programowania bitów - w ESP tego nie ma, korzysta się z funkcji dostarczonych przez Chińczyków, a to, co dostajesz jako możliwość programowania w Wiringu to po prostu zestaw funkcji tłumaczących  wywołania Wiringa na funkcje Ekspressifa. Owszem - pewnie można operować bitami i rejestrami, ale życzę powodzenia w ESP32. Jeśli chcesz wycisnąć wszystko z ESP - zapoznaj się z ich bibliotekami. Akurat z poziomu Arduino do wszystkich masz dostęp.

  • Lubię! 2
Link do komentarza
Share on other sites

Dnia 1.03.2020 o 16:22, AdamSamborski napisał:

Jeśli to możliwe to proszę o tutka jak programować w czystym C.

Jak coś zaklepuje sobie ten temat, niedługo opublikuje go na forum( bez zbędnego instalowania i konfigurowania).

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

witam, czy mógłby ktoś pomóc analogicznie podłączyć jedną z tych płytek kupiłem od kogoś sprzedawał masę elektroniki za małe pieniądze i mam ale nie jest to ESP01 tylko: 

pierwsza od gory: ESP8266MOD

druga: ESP-12E

trzecia: ESP-12F

takie symbole maja.   

esp.jpg

Link do komentarza
Share on other sites

2 godziny temu, Belferek napisał:

Zainstaluj za pomocą menadżera płytek moduł ESP8266 i poeksperymentuj z przykładami dla tej płytki. Niewyraźne te fotki, a na spodzie płytek nic nie pisze? Ja programuję NodeMCU 1.0 (ESP-12 Module)

Hejka, próbowałem wgrać ten program z Arduino IDE ale coś błąd wyskakuje. W tym drugim środowisku też próbowałem ale coś nie tak. Może skupie się na Arduino IDE pomógł byś mi to uruchomić? 

1655050139533.jpg

obraz_2022-06-12_192449168.png

Link do komentarza
Share on other sites

Zamiast kodu "Blink" lepiej pokazać więcej informacji z konsoli. Najlepiej w Arduino IDE w PLIK-PREFERENCJE zaznaczyć opcje by pokazywane były szczegółowe informacje podczas kompilacji i wgrywania, a także wszystkie ostrzeżenia kompilatora.  W tym samym miejscu w polu "Dodatkowe adresy URL...." ja sobie dopisałem http://arduino.esp8266.com/stable/package_esp8266com_index.json

Sprawdziłbym także takie rzeczy jak:

1. Czy płytka widziana jest w menadżerze urządzeń Windows, czy nie ma problemu ze sterownikami? U mnie widziana jest jako Porty (COM i LPT)-> USB Serial CH340

2. Czy wybrałeś dobrą płytkę, port COM? Ja NIE wybieram u siebie Genuino ESP8266 tak jak Ty to zrobiłeś lecz NodeMCU 1.0 (ESP-12E Module).

3. Co sygnalizują wbudowane diody LED?

4. Czy cokolwiek pojawia się w monitorze portu szeregowego (eksperymentuj z prędkościami) po naciśnięciu RESET? U mnie dla 74880b/s NL+CR wyświetla się np. coś takiego:

 ets Jan  8 2013,rst cause:2, boot mode:(3,7)

load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v00043a30
~ld

Będziesz wiedział czy moduł żyje.

Zobacz także tutaj i tutaj. No i przede wszystkim zobacz tu.

 

Edytowano przez Belferek
  • Pomogłeś! 1
Link do komentarza
Share on other sites

12 godzin temu, Belferek napisał:

1. Czy płytka widziana jest w menadżerze urządzeń Windows, czy nie ma problemu ze sterownikami? U mnie widziana jest jako Porty (COM i LPT)-> USB Serial CH340

No i mam, nie widzi płytki. Arduino widzi pod COM3. Po podłączeniu Arduino jest dźwięk podłączenia jak każdego urządzenia USB w Windowsie 10. Po podłączeniu ESP cicho tylko niebieska dioda która jest wbudowana zamruga szybko i nic. Powinno chodziarz wyświetlić chyba w menadżerze urządzeń że jest nieznane urządzenie a tu nie ma nic tylko port COM1 który jest widoczny również gdy ESP lub Arduino są odłączone.   

12 godzin temu, Belferek napisał:

 

 

 

Link do komentarza
Share on other sites

8 minut temu, mn860618 napisał:

tylko niebieska dioda która jest wbudowana zamruga szybko

Czyli płytka dostaje zasilanie i procek jest prawdopodobnie sprawny.

Nie znam się na Windowsach, ale czy tam nie trzeba przypadkiem jakiegoś sterownika zainstalować?

A poza tym kabel - czy na pewno nie jest to kabelek do ładowania (bez linii danych)? O ile pamiętam jakieś 95% problemów z ESP8266/ESP32 na tym forum rozwiązywało się poprzez zastosowanie porządnego kabelka.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

2 minuty temu, ethanak napisał:

Czyli płytka dostaje zasilanie i procek jest prawdopodobnie sprawny.

Nie znam się na Windowsach, ale czy tam nie trzeba przypadkiem jakiegoś sterownika zainstalować?

A poza tym kabel - czy na pewno nie jest to kabelek do ładowania (bez linii danych)? O ile pamiętam jakieś 95% problemów z ESP8266/ESP32 na tym forum rozwiązywało się poprzez zastosowanie porządnego kabelka.

No... nie wierze lol myślałem o tym samym a jednak droga do mojej graciarni była za daleka by sięgnąć po odpowiedni kabelek... TAK oba kable które próbowałem były wyłącznie do ładowania bez lini danych... Teraz był dźwięk że coś zostało podłączone i mam USB SERIAL CH340 (COM4)

Poza tym miałem te kabelki odłożone bo izolacja przy wtyczkach jest uszkodzona i pomyślałem że chyba mogą nie nadawać się do użytku wystają jakieś druty.   

Dzięki za pomoc 🙂 

Link do komentarza
Share on other sites

Ok. testowałem płytkę działa ale przy kompilacji programu:

#include  <ESP8266WiFi.h>  
 
const char* ssid     ="siec01"; // Tu wpisz nazwę swojego wifi
const char* password = "haslo1234"; // Tu wpisz hasło do swojego wifi
 
int ledPin = D4; // D4
int ledPin2 = D6; // D6
WiFiServer server(80);
 
void setup() {
Serial.begin(9600);
delay(10);
 
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin2, LOW);
 
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
 
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
 
Serial.println("");
Serial.println("WiFi connected");
 
// Start the server
server.begin();
Serial.println("Server started");
 
// Print the IP address
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/"); 
}

void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
  return;
}
 
// Wait until the client sends some data
Serial.println("new client");
int timewate = 0;
while(!client.available()){
  delay(1);
  timewate = timewate +1;
  if(timewate>1800)
  {
    Serial.println(">>> Client Timeout !");
    client.stop();
    return;
  }
}
 
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
 
// Match the request 
int value = LOW;
if (request.indexOf("/LED=ON") != -1)  {
  digitalWrite(ledPin, HIGH);
  value = HIGH;
}
 
if (request.indexOf("/LED=OFF") != -1)  {
  digitalWrite(ledPin, LOW);
  value = LOW;
}
if (request.indexOf("/LED2=ON") != -1)  {
  digitalWrite(ledPin2, HIGH);
  value = HIGH;
}
if (request.indexOf("/LED2=OFF") != -1)  {
  digitalWrite(ledPin2, LOW);
  value = LOW;
}
 
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); //  do not forget this one
client.println("");
client.println("");
client.print("Led pin is now: ");
 
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}

wyskakuje:

D:\Arduino\esp8266_wifi_haslo_login\esp8266_wifi_haslo_login.ino: In function 'void loop()':
D:\Arduino\esp8266_wifi_haslo_login\esp8266_wifi_haslo_login.ino:72:5: warning: variable 'value' set but not used [-Wunused-but-set-variable]
   72 | int value = LOW;
      |     ^~~~~
Executable segment sizes:
ICACHE : 32768           - flash instruction cache 
IROM   : 247236          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 27273   / 32768 - code in IRAM          (IRAM_ATTR, ISRs...) 
DATA   : 1512  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 1152  ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 25776 )         - zeroed variables      (global, static) in RAM/HEAP 
Sketch uses 277173 bytes (26%) of program storage space. Maximum is 1044464 bytes.
Global variables use 28440 bytes (34%) of dynamic memory, leaving 53480 bytes for local variables. Maximum is 81920 bytes.

po czym wgrywam i:

D:\Arduino\esp8266_wifi_haslo_login\esp8266_wifi_haslo_login.ino: In function 'void loop()':
D:\Arduino\esp8266_wifi_haslo_login\esp8266_wifi_haslo_login.ino:72:5: warning: variable 'value' set but not used [-Wunused-but-set-variable]
   72 | int value = LOW;
      |     ^~~~~
Executable segment sizes:
ICACHE : 32768           - flash instruction cache 
IROM   : 247236          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 27273   / 32768 - code in IRAM          (IRAM_ATTR, ISRs...) 
DATA   : 1512  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 1152  ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 25776 )         - zeroed variables      (global, static) in RAM/HEAP 
Sketch uses 277173 bytes (26%) of program storage space. Maximum is 1044464 bytes.
Global variables use 28440 bytes (34%) of dynamic memory, leaving 53480 bytes for local variables. Maximum is 81920 bytes.
esptool.py v3.0
Serial port COM4
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 4c:75:25:35:30:f0
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 281328 bytes to 205986...
Writing at 0x00000000... (7 %)
Writing at 0x00004000... (15 %)
Writing at 0x00008000... (23 %)
Writing at 0x0000c000... (30 %)
Writing at 0x00010000... (38 %)
Writing at 0x00014000... (46 %)
Writing at 0x00018000... (53 %)
Writing at 0x0001c000... (61 %)
Writing at 0x00020000... (69 %)
Writing at 0x00024000... (76 %)
Writing at 0x00028000... (84 %)
Writing at 0x0002c000... (92 %)
Writing at 0x00030000... (100 %)
Wrote 281328 bytes (205986 compressed) at 0x00000000 in 18.3 seconds (effective 122.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

a w Serial monitorze 

962450742_bandicam2022-06-1314-17-47-424.thumb.jpg.cf6c4ff3f44086817e8156ca18b5468b.jpg

poza tym Tools/Upload Speed/115200

a pod płytka jest napisane by używać 9600

1573362552_bandicam2022-06-1314-22-42-852.thumb.jpg.0f35a912aea60a33bfac813bdf5415b9.jpg 

czy możecie coś poradzić?

Dziękuje pozdrawiam.

Link do komentarza
Share on other sites

10 minut temu, mn860618 napisał:

czy możecie coś poradzić?

Ale na co?

Wyskakuje ostrzeżenie, bo podstawiasz jakąś wartość do zmiennej "value" i nigdzie później tej zmiennej nie używasz - kompilator po prostu informuje że chyba o czymś zapomniałeś (np. client.println(value) albo coś w tym rodzaju).

12 minut temu, mn860618 napisał:

a w Serial monitorze 

Bo z jakichś przyczyn nie może się połączyć z siecią. Na wszelki wypadek możesz dać przed WiFi.begin co w stylu:

WiFi.mode(WIFI_STA);

Jak nie pomoże to sprawdź czy na pewno masz dobrze wpisane SSID i hasło.

14 minut temu, mn860618 napisał:

poza tym Tools/Upload Speed/115200

Całkiem prawidłowo, możesz spróbować szybciej to nie będziesz godzinę czekał aż się program wgra, powinien łyknąć nawet 921600

16 minut temu, mn860618 napisał:

a pod płytka jest napisane by używać 9600

Gdzie co jest pod jaką płytką napisane, możesz jakoś jaśniej się wyrazić?

W programie używasz 9600 (czemu nie np. 115200?), a upload speed nie ma z tym nic wspólnego.

 

  • Pomogłeś! 1
Link do komentarza
Share on other sites

9 godzin temu, ethanak napisał:

Ale na co?

Wyskakuje ostrzeżenie, bo podstawiasz jakąś wartość do zmiennej "value" i nigdzie później tej zmiennej nie używasz - kompilator po prostu informuje że chyba o czymś zapomniałeś (np. client.println(value) albo coś w tym rodzaju).

Bo z jakichś przyczyn nie może się połączyć z siecią. Na wszelki wypadek możesz dać przed WiFi.begin co w stylu:


WiFi.mode(WIFI_STA);

Jak nie pomoże to sprawdź czy na pewno masz dobrze wpisane SSID i hasło.

Całkiem prawidłowo, możesz spróbować szybciej to nie będziesz godzinę czekał aż się program wgra, powinien łyknąć nawet 921600

Gdzie co jest pod jaką płytką napisane, możesz jakoś jaśniej się wyrazić?

W programie używasz 9600 (czemu nie np. 115200?), a upload speed nie ma z tym nic wspólnego.

 

Zrobiłem tak jest ok ale brakuje przycisków... ogólnie to korzystam z tego materiału:

https://pcudnik.pl/jak-zaczac-zabawe-z-modulem-wifi-esp8266-nodemcu-v3/

i jakoś nie wyświetla mi przycisków chyba jak narazie dam sobie spokój powracam do Arduino podstawy lekcja 6 bo jeszcze nie skończyłem.

Zbyt dużo niewiadomych tu widzę nawet nie wiem jak ten program działa, nie mam zielonego pojęcia ale czegoś się nauczyłem.

Pozdrawiam dziękuje.     

Link do komentarza
Share on other sites

30 minut temu, mn860618 napisał:

Zrobiłem tak jest ok ale brakuje przycisków... ogólnie to korzystam z tego materiału

Są tutoriale lepsze i gorsze. Akurat w komentarzach do tego temat ten jest poruszany - poczytaj.

 

30 minut temu, mn860618 napisał:

chyba jak narazie dam sobie spokój powracam do Arduino

To może warto jak już masz to NodeMCU działąjące rozwiązania Arduino przenieść sobie na platformę NodeMCU? Trzeba tylko pamietać, że piny ESP8266 nie tolerują 5V

30 minut temu, mn860618 napisał:

nawet nie wiem jak ten program działa

I na tym polega samodzielna nauka - nie wiem, staram się zrozumieć i dowiedzieć.

Powodzenia,

Edytowano przez Belferek
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.