Skocz do zawartości

Czujnik jakości powietrza


Pomocna odpowiedź

20 minut temu, Krst0 napisał:

Do Maker Uno chcę również podłączyć ESP-12E, żeby móc odczytane dane z czujników wyświetlić na stronie wygenerowanej przez ESP-12E z pomocą komend AT.

No tak się niespecjalnie da. Albo ESP jest głównym kontrolerem i gada z Arduino np. po serialu czy i2c (ale komunikację musisz zrobić sam, nie żadnymi komendami AT), albo służy tylko jako moduł WiFi z firmowym softem (ale wtedy Arduino musiałby zająć się tworzeniem strony, serwerem WWW i takimi różnymi rzeczami do których niespecjalnie się nadaje, bo nic skomplikowanego na ESP w tym trybie nie zrobisz). Moja propozycja to sposób pierwszy.

I teraz: dalsze odpowiedzi dotyczą tylko sposobu pierwszego.

24 minuty temu, Krst0 napisał:

Czy do mojego modułu ESP-12E muszę wgrać najpierw oprogramowanie obsługujące Arduino IDE

Nie. Od tego jest ten soft który wgrywasz na kompa według instrukcji z linku.

25 minut temu, Krst0 napisał:

ustawiam płytkę w końcu dla Arduino czy Generic ESP8266

Ustawiasz płytkę ESP (a potem te parametry które podałem), podpinasz przez konwerter płytkę do kompa. Nie korzystasz z Arduino (w znaczeniu płytki) a z Arduino IDE (w znaczeniu softu na kompie) z dodatkowymi bibliotekami obsługującymi ESP8266.

Co ja bym zrobił:

Oczywiście sposób pierwszy. Niech Arduino zajmie się zbieraniem danych i jakimś wstępnym przetwarzaniem (bo ESP ma trochę za mało pinów żeby tam podpiąć czujniki), a ESP całą warstwą komunikacji (serwerem WWW, WiFi i tym wszystkim czego Arduino nie potrafi). W sumie dwa oddzielne programy na dwie różne płytki, komunikujące się przez serial. O tyle dobre, że program na Arduino możesz testować bez serwera (czytając sobie na monitorze serial co on tam mądrego wypisuje), a program serwera możesz pisać i testować bez Arduino (wpisując mu przez monitor serial to, co powinien dostać z Arduino).

Nie mając programatora nie bawiłbym się na razie w kupowanie, tylko ESP12-E włożył do szuflady i kupił np. NodeMCU. Dopiero w docelowym urządzeniu zastąpiłbym NodeMCU płytką ESP12-E (albo i nie, zależy od humoru i chęci).

Jak się na to zapatrujesz?

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

(edytowany)

Powiem Ci, że Twoja odpowiedź bardzo otworzyła mi oczy i jest dokładnie tak jak przypuszczałem. Nie będzie to takie proste jak można było założyć i dobrze, że jeszcze raz konkretniej o to zapytałem co chciałem uzyskać, bo bym tylko ślepo błądził, a tak teraz spożytkuję ten czas lepiej i przemyślę swoją strategię. Myślę, że najprościej byłoby stworzenie całego projektu w oparciu o NodeMCU, jednakże mając związane ręce właściwie do jutra spróbuję znaleźć sposób rozwiązania problemu z użyciem Arduino i ESP-12E .

Dziękuję Ci bardzo za tę odpowiedź, o mojej decyzji i rozwiązaniu problemu będę informował na bieżąco. ☺️

Edit:

Czyli na to wychodzi, że mój projekt chwilowo leży. Sprawdziłem możliwość, żeby ESP12-E był głównym i właściwie jedynym kontrolerem, żeby niepotrzebnie nie podłączać Arduino, ale na nieszczęście patrząc na pinouty ESP nie ma analogowych wyjść, a moje czujniki MQ są analogowe przez co rozwiązanie z zakupem NodeCMU, bo z tego co widziałem jest jedynie wyjście A0 (albo po prostu na takie natrafiłem jak dotąd). Jedyna opcja to komunikacja Arduino z ESP. I teraz dobrze rozumiem, że w takim przypadku muszę osobno dwa programy rozpatrywać (osobno do czytania wartości czujników na arduino i osobno dla wyświetlania zawartości na serwerze http)?

Edytowano przez Krst0
Link do komentarza
Share on other sites

To ja tylko uprzedzę pytania:

  1. Do zasilania ESP8266 nie wystarczy wyjście 3.3V z Arduino (za słabe)
  2. Do prawidłowej pracy potrzebne są minimum trzy rezystory (znajdź w Googlu "ESP8266 minimal", dostaniesz parę schematów podłączeń) i jeden kondensator (0.1µF najlepiej przylutowany bezpośrednio do pinów zasilania).
  3. Do programowania potrzebny jest konwerter USB-UART z wyjściem 3.3V (na upartego mając 5V można zastosować dzielnik napięcia na linii Tx i jakiś stabilizatorek).

Dlatego wspominałem o NodeMCU, który podpinasz do USB i niczym się nie martwisz.

Link do komentarza
Share on other sites

(edytowany)
  1. A jeszcze mam takie pytanie co z takim rozwiązaniem zaproponowanym przez botland? Pod tym linkiem znajduje się komunikacja pomiędzy Arduino i ESP-01 i z tego co widzę akurat ze względu na to, że to przykład, wszystko odbywa się po stronie Arduino. Co prawda program właściwie nic nie robi i jest strasznie ubogi, ale od czegoś trzeba zacząć. Czy jeśli chcę połączyć Arduino z ESP to mogę w prosty sposób jak tu skorzystać z biblioteki SerialSoftware?
  2. I od razu drugie pytanie już nawet niekoniecznie związane z tym projektem. Spotkałem się już z drugim czujnikiem, który ma wyprowadzenia RX i TX i patrząc na przykładowe układy nie są one podpięte do RX i TX Arduino, a do wyjść np. 2 i 3 (zamiast 0 i 1). Czemu jest to zrobione w ten sposób?

Edit:

Tym razem udało mi się znaleźć takie rozwiązanie - link. Przerobię ten kod na jeszcze prostszy, żeby go przetestować i z tego co widzę realizuje podobne rzeczy co chcę u siebie zrobić.

Edytowano przez Krst0
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

1 godzinę temu, Krst0 napisał:

Czemu jest to zrobione w ten sposób?

A pomyśl chwilę. Czy na pewno nic nie jest podłączone do Rx/Tx w Arduino? A jeśli jest, to czy można podłączać dwa urządzenia do jednego seriala?

 

 

Link do komentarza
Share on other sites

Nie tyle są zarezerwowane (bo w końcu coś tam możesz podłączyć) i nie dla Jego Wysokości Serial Monitora, a po prostu są na stałe podłączone do wbudowanego konwertera, a Serial Monitor jest jednym tylko z programów które go używają (drugim jest np. avrdude który odpowiada za programowanie Arduino). Możesz tam podłączyć czujnik i oczywiście będzie działać, ale wtedy nie możesz używać wbudowanego konwertera (czyli nie tylko z monitora, ale i z programowania nici). Dlatego w płytkach takich jak Leonardo czy Mega masz więcej niż jeden UART, jeden podłączony na stałe do USB, drugi do komunikacji z resztą świata. W UNO możesz użyć SoftwareSerial (to taki trick pozwalający zrobić sobie "sztuczny" UART) i dowolnych dwóch pinów (np. 2 i 3).

Zresztą zastanów się: jeśli używasz Serial.println() po to żeby wyświetlić informacje na monitorze, nie bardzo możesz użyć tego samego Serial.println() aby przekazać polecenie AT do modemu czy czujnika, prawda? Nie da się tym samym pociągiem jechać jednocześnie z Warszawy do Gdańska i Zakopanego.

Owszem, są sytuacje kiedy takie równoległe podłączenie ma sens, ale chyba w najbliższym czasie z taką sytuacją się nie spotkasz.

To tak w telegraficznym skrócie.

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

(edytowany)

Przyszedł do mnie dzisiaj NodeMCU i konwerter tak samo (kupiłem już na przyszłość, bo czuję, że to nie będzie mój ostatni projekt) i mogłem przetestować pewne rozwiązania.

Pojawiły się dwa problemy. Ale może zacznijmy od początku co się wydarzyło. 

Połączyłem Arduino z NodeMCU wg poradnika w sposób pokazany na zdjęciu (bez czujnika DHT, bo go nie potrzebowałem). 

image.thumb.png.7379e70bb1736790fd5b4a52b13a800c.png

Wklepałem taki kod dla Arduino:

#include <SoftwareSerial.h>

SoftwareSerial espSerial(5, 6);
String str;
int count = 0;

void setup(){
  Serial.begin(115200);
  espSerial.begin(115200);
  delay(2000);
}
void loop()
{
  count++;
  str = String("coming from arduino: ")+String(count);
  espSerial.println(str);
  delay(1000);
}

Oraz taki dla NodeMCU:

void setup() {
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
}
void loop() { // run over and over
  if (Serial.available()) {
  Serial.write(Serial.read());
  }
}

Wgrałem odpowiednio oprogramowania i komunikacja przebiega bardzo ładnie, ale co każdy delay pojawia się napis ERROR. Nie mam teraz zrzutu ekranu, ale wynik jest mniej więcej taki:

coming from arduino: 1

ERROR

coming from arduino: 2

ERROR. 

I tu kończy się pierwszy problem, bo próbując samemu go rozwiązać stwierdziłem, że może zbyt szybko przesyłam dane do ESP (coś mi się takiego obiło o uszy wcześniej). Chciałem więc przetestować zmianę jak będę przesyłał dane w innym odstępie czasu, np. 10 sekund. Bardzo możliwe, że w tym miejscu popełniłem błąd (właściwie to niedopatrzenie), bo nie sądziłem, że mając dwa osobne okna dla kodu Arduino i ESP mimo zmiany płytki na jednym oknie zmienia się również na drugim oknie i możliwe, że próbowałem wgrać kod przeznaczony dla ESP ale mając wybraną płytkę Arduino (port również oczywiście). 

I teraz jest coś z czym nie mogę sobie poradzić, bo chcę wgrać wszystko od nowa dla dwóch różnych płytek poprawnie, ale gdy wgrywam kod dla ESP na płytce Generic ESP8266 pojawia się taki błąd (reszta jest poprawnie ustawiona):

image.thumb.png.57dbd3cc6012946b079ab8f602f92534.png

Szukałem w internecie jak to naprawić i pisali tam, żeby odinstalować w menedżerze płytek ESP i zainstalować ponownie (odinstalowałem i usunąłem nawet paczkę z katalogu .arduino15/packacges/esp8266), ale nic to nie dało. Czytałem też, żeby zainstalować również starszą wersję, ale to również nie pomaga. 

Jedynie co mi pozostaje to restart komputera, bo będąc informatykiem komputer nauczył mnie, że potrafi różne rzeczy wyczyniać i restart powinien pójść jako pierwszy. Także za chwilę zrobię restart i napiszę w Edicie czy pomogło.

Edit: Restart z usuniętą płytką nic nie pomógł. 

Ktoś wie co mogło się tu złego zadziać?

Edit 2:

Czy jest szansa, że przypadkowo uwaliłem NodeMCU próbując wgrać kod jakby to było Arduino dając prawdopodobnie przez to większe napięcie? 

Edytowano przez Krst0
Link do komentarza
Share on other sites

(edytowany)

Oczywiście, że tak, podłączony jest sam, bez żadnych dodatkowych elementów do USB. Szukam teraz metody, żeby całkowicie sflashować NodeMCU i może to pomoże. 

Spróbowałem sflashować wg tego poradnika, ale również nie daje ten sam błąd. 

Edytowano przez Krst0
Link do komentarza
Share on other sites

(edytowany)

Oprócz flasha z odpowiedzi powyżej sprawdziłem jeszcze czy moje NodeMCU daje na wyjściu 3.3V taką wartość i daje taką wartość jeśli w ogóle to w jakikolwiek sposób pomocna informacja. 

Sprawdziłem również czy jest możliwość wgrania oprogramowania gdy opcję Reset method: "no_dtr, no_sync" ustawię na "dtr (aka nodemcu)" i wgranie zapalanie diody zadziałało. Może to będzie bardziej pomocna informacja. 

Edytowano przez Krst0
Link do komentarza
Share on other sites

(edytowany)

Okej, zostawię to tutaj, może komuś w przyszłości się przyda. Wgrywając soft na Ubuntu z Reset method ustawionym na "dtr (aka nodemcu)" nic się właściwie nie zadziałało, natomiast na Windowsie po ponownym wgraniu odpowiednich kodów nagle zaczęło działać. Tutaj screen:

image.thumb.png.b778fc71fb7325a596e9e5dd528355c0.png

Pierwsza linia oczywiście zanim zmieniło się baudrate. 

Edytowano przez Krst0
Link do komentarza
Share on other sites

4 minuty temu, Krst0 napisał:

Wgrywając soft na Ubuntu

Z ciekawości: który Ubuntu? Miałem coś podobnego przy ESP32 DevKit, na Ubuntu 18.04 musiałem wciskać boot żeby zaprogramować, na Debianie Stretch i Ubuntu 20.04 wszystko dzieje się automatycznie.

Link do komentarza
Share on other sites

Piszesz, że kupiłeś NodeMCU a wybierasz inna płytkę. W zestawie znajdziesz tę, którą kupiłeś może ją wybierz i spróbuj wgrać cokolwiek. Tylko jedna uwaga do połączenia Arduino - NodeMCU - oryginalne Arduino pracuje w logice 5V, a NodeMCU 3,3V. Może na Rx NodeMCU przydałby się przynajmniej jakiś dzielnik rezystancyjny, który dopasował by te poziomy napięć?

obraz.thumb.png.1c0faa7b8723944106a47dd739becc19.png

Edytowano przez Belferek
Link do komentarza
Share on other sites

(edytowany)
58 minut temu, ethanak napisał:

Z ciekawości: który Ubuntu? Miałem coś podobnego przy ESP32 DevKit, na Ubuntu 18.04 musiałem wciskać boot żeby zaprogramować, na Debianie Stretch i Ubuntu 20.04 wszystko dzieje się automatycznie.

Ubuntu 20.04. Na Debianie nawet bym nie próbował, bo nawer na Busterze mam przeróżne problemy z pakietami. 

Edytowano przez Krst0
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.