Ez alhálózati IP, a router tudja kiosztani (illetve itt konkrétan a router van kényszerítve arra, hogy az eszközt ezen érje el). Ha kimész az alhálózatról, nem fogod látni (külső IP-ről). De azt meg tudod csinálni a routerben, hogy az adott címre érkező adott porton jövő kéréseket befelé az adott alhálózati IP-re küldöd, így "kintről" az ethernet kártya fog látszani (kvázi weblapként).
Amíg a saját hálózatról hívod (kábelen vagy wifin), látod, kívülről csak akkor, ha a fenti beállításokat megcsinálod.
// ethernet interface mac address, must be unique on the LAN static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; static byte myip[] = { 192,168,1,203 };
byte Ethernet::buffer[500]; BufferFiller bfill;
void setup () { if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) Serial.println(F("Failed to access Ethernet controller")); ether.staticSetup(myip); }
static word homePage() { long t = millis() / 1000; word h = t / 3600; byte m = (t / 60) % 60; byte s = t % 60; bfill = ether.tcpOffset(); bfill.emit_p(PSTR( "HTTP/1.0 200 OKrn" "Content-Type: text/htmlrn" "Pragma: no-cachern" "rn" "<meta http-equiv='refresh' content='1'/>" "<title>RBBB server</title>" "<h1>$D$D:$D$D:$D$D</h1>"), h/10, h%10, m/10, m%10, s/10, s%10); return bfill.position(); }
void loop () { word len = ether.packetReceive(); word pos = ether.packetLoop(len);
if (pos) // check if valid tcp data is received ether.httpServerReply(homePage()); // send web page data }
Ez így passz, az is előfordulhat ad abszurdum, hogy hibás a modul. A 3.3V a kommunikációra is vonatkozik, tehát amit küldesz adatot neki, az 3.3V legyen, és az esp is 3.3V-on válaszol, de azt az arduino elvileg tudja értelmezni gond nélkül. Nem biztos, de ha 5V-ot küldesz rá és peched van, meg is nyúvadhat - bár emlékeim szerint én anno ezt megtettem és túlélte.
Egyáltalán meddig jutottál el, látsz bármit a modulból? Látod, ahogy elindul, tudsz vele kommunikálni serial monitoron? Jó a bekötés, az ugye megvan, hogy 3.3V-on dolgozik ellentétben az arduino 5V-tal? Ha gond a váltás, ilyen cuccal pl. megoldható.
Egyébként az ESP alapértelmezett sebessége 74880, szóval ha erre állítod a serial-t, az elején se krix-kraxokat látsz jó esetben (ez egyébként talán változhat is, szóval nem szentigazság).
Én amikor megvettem anno kipróbáltam, AT parancsokat szépen fogadta, de aztán én átálltam direkt ESP programozásra és azóta az alkatrészesben hever. De mostanság pont aktuális lesz elővenni, mert akarok csinálni egy beltéri egységet az időjárásállomáshoz, és az mega-ból lesz touch-os kijelzővel, és ott nekem is esp-01 -es modult kell használnom arduino-val. De már vagy fél éve tervezem, szóval nem tudom mikor fogok valóban hozzá, hogy tanácsot adjak :)
Szeretem én is a kihívásokat legalább tanulok belölle. Találtam jó pár bekötési lehetőséget de nem tudok vele zöldágra vergődni. Valamiért nem akar komunikálni a nanóval.
Ezesetben is az alapjait látod, hogy oldottam megy egyszerűen a webszerverre adatküldést, ott a php kód a fogadáshoz. Faék egyszerű.
A tényleges webes kommunikáció megvalósítása nyilván el fog térni ha arduino-zol, de ha az alapokat érted oda is át tudod ültetni.
De sok múlik azon mit akarsz, ha nem akarod magad kezelni a nyers adatokat, tolhatod az adatokat pl. wundergroundra és akkor ők majd tárolják helyetted, megcsinálják a grafikonokat stb mint pl. az én időjárás állomásom esetén. Erre is ott a kód a github-on, nem túl komplikált. Vagy amit itt a kollégák említettek, valami iot felhőbe, arduino-ra pont vannak example kódot.
De ez egy ilyen bringa, itt elég ritka az, hogy konzervkód letölt a netről, felrak a kontrollerre és kész. Többnyire munkás, de én pl. pont ezt szeretem benne, hogy kihívás. Aki meg konzerv megoldást akar, előbb-utóbb rájön, hogy egyszerűbb megvenni a boltban.
Saját szerver =/= saját hardverrel, egy hőmérő adatfogadása és tárolása adatbázisba további feldolgozásra néhány sor php kód egy bármely, akár ingyenes tárhelyszolgáltatónál. Nem kell azért ágyúval lőni a verébre, nekem egy 1M havi oldalletöltés feletti weboldalam van, mégsincs saját vasam, még csak VPS sem.
Az "egyszerűbb" nem a legjobb szó,de, ha megvannak a lehetőségek, akkor én is azt ajánlom, hogy saját szerver. Egyszerű egy IOT adatbázis használata, pl. Thingspeak, és ott alapból grafikonokat, statisztikai mutatókat is lehet használni.
Sziasztok. Hőmérséklet adatokat szeretnék menteni és online elérni. Tudnátok segíteni hogy lehetne megoldani? Felhő, webserver Melyik a jobb egyszerűbb megoldás?
Még egy kérdésem lenne. DTH22-vel mérek hőmérsékletet és páratartalmat. Működik, de:
A kódban a két változó "float". LCD-re iratom ki, a megjelenített érték 5 karakteres: tizedes pont, előtte és utána is 2 karakter. A hőmérsékletnél még lenne értelme 1 tizedesnek, de a páratartalomnál csak egész érték kellene. Hogyan kellene megoldani? Változó konverzióval?
Ez van most (kivonatosan):
#include "DHT.h" #define DHTPIN 2 //2pin hozzárendelve a DHT-hez #define DHTTYPE DHT22 // DHT 22 (AM2302) #include "LiquidCrystal.h" LiquidCrystal lcd(4, 5, 6, 7, 8, 9); int tempPin = 0;//változók rendelése az A0-ás és A1-es lábhoz int lightPin = 1; DHT dht(DHTPIN, DHTTYPE);
void loop() { float h = dht.readHumidity();//h a páratartalom értékét adja float t = dht.readTemperature(); lcd.print(t); lcd.print("C"); lcd.print(h); lcd.print("%"); }
Használt már valaki SSD1306-s meghajtóval OLED kijelzőt? Leginkább Nanóval?
Egy kicsit összezavarodtam, hogy SPI portot használva a 7 kivezetéses OLED lábait a Nano milyen lábaira kössem? UNO-ra találtam példát, de Nano-ra nem. Ugyanazokra köthetem?
OLED-UNO (NANO?)
D0 - D13
D1 - D11
CS - D10
DC - D9
RES - D8
Eddig I2C busszal próbálkoztam (ehhez át kellett forrasztani a panelen 2 ellenállást), a Nano A4, A5 portjait használtam, de semmilyen teszt programra nem reagált. Vagy eleve rossz volt a kijelző, vagy én rontottam el. Ugyanis közvetlenül kötöttem össze a vezérlő lábakat, mivel azt írták róla, hogy a tápja 3V-5,5V lehet. (A Nano az USB 5V-járól ment, a táp kimenete így kb. 4,7V) De később vettem észre, hogy az SSD1306 már csökkentett tápot kap. A panelen van egy 3 lábú stabilizátor a vezérlő tápjának (tehát tényleg lehetne nagyobb is), de a többi láb közvetlenül van kivezetve. Kell ide valamilyen 5V -> 3,3V osztó, vagy ettől nem lehet baja?
Gondban vagyok. A vezérlő projektben nem tudok sd kártyára írni, a kártya inicializálásig sem jut el. Ha jól gondolom a Nextion HMI soros komunikációjával veszik össze. Létezik erre megoldás?
Nekem ez a cuccom simán elmegy egy hónapot szabány 18650 akksival még télen is. Nézz rá a kódra, folyamatos hőmérés tök felesleges, ha 3-5 percenként méred nagyon elég, közben meg alszik a vas. Ez mondjuk ESP8266, de tökmindegy, arduinoval is ugyanaz pepitában.