- Sokrétű segédkijelzővel gyarapodott a Corsair portfóliója
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Azonnali fotós kérdések órája
- A 3D V-Cache és a rengeteg memória lehet az új PlayStation fő fejlesztési iránya
- Milyen billentyűzetet vegyek?
- OLED TV topic
- Nyárbúcsúztató hardvermix
- Androidos tablet topic
- SSD kibeszélő
- Apple MacBook
-
PROHARDVER!
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
choco01
addikt
válasz
choco01 #8679 üzenetére
Most ilyen: De ugye hibát dob annál a sornál..
Lehet a WebServer server ( 80 );-vel van baj? WifiServer server(80) is létezik..
#include <ESP32WebServer.h>
#include <Wire.h>
#include "Adafruit_BME280.h"
#include "SSD1306.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
WebServer server ( 80 );
const char* ssid = "esp";
const char* password = "12345678";
#define I2C_SDA 21
#define I2C_SCL 22
#define SEALEVELPRESSURE_HPA (1013.25)
#define BME280_ADD 0x76
Adafruit_BME280 bme(I2C_SDA, I2C_SCL);
SSD1306 display(0x3c, 21, 22);
double pt,lny,hp,hom;
/*double lny=1015.20;
double hp=-32.12;
double hom=-32.12;
double pt=62.07;*/
void idojaras(void);
void kijelzo(void);
void html(void);
void setup() {
Serial.begin(115200);
Serial.println("Program Start");
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");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
bme.begin();
idojaras();
delay(100);
kijelzo();
delay(100);
}
void loop()
{
idojaras();
delay(1000);
kijelzo();
delay(1000);
html();
delay(100);
}
void idojaras()
{
pt = bme.readHumidity();
hom = bme.readTemperature();
hp = hom - 0.36 * (100.0 - pt);
lny = bme.readPressure() / 100.0F ;
lny=lny+13;
delay(1000);
}
void kijelzo()
{
display.init();
display.drawString(0, 0, "Hömérséklet:");
display.drawString(62, 0,String(hom) );
display.drawString(90, 0, " °C");
display.drawString(0, 10, "Páratartalom:");
display.drawString(65, 10, String(pt));
display.drawString(90, 10, " %");
display.drawString(0, 20, "Harmatpont:");
display.drawString(62, 20, String(hp));
display.drawString(90, 20, " °C");
display.drawString(0, 30, "Légnyomás:");
display.drawString(60, 30, String(lny));
display.drawString(98, 30, " hPa");
display.drawString(0, 40, "Légszenny.:");
display.drawString(60, 40, "nA");
display.drawString(85, 40, " %");
display.drawString(0, 50, "UV sugárzás:");
display.drawString(65, 50, "nA");
display.display();
}
void html()
{
WiFiClient client = server.available();
while (client.connected())
{
if (client.available())
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML><html><head>");
client.println("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head>");
client.println("<h1>ESP32 - Web Server</h1>");
client.println("</html>");
break;
client.println( "<body>");
client.println("<br><br>");
client.println("<body><h1>Időjárás adatok:</h1>");
client.println("<table border=\"2\" width=\"456\" cellpadding=\"10\"><tbody><tr><td>");
client.print("</td><td colspan=\"2\"><h2>Hőmérséklet = ");
client.println(hom);
client.print("<h2>Páratartalom = ");
client.println(pt);
client.print("%</h2></td></tr><tr>");
client.print("<h2>Harmatpont = ");
client.println(hp);
client.print("°C</h2></td>");
client.print(" <h2>Légnyomás = ");
client.println(lny);
client.print("hPa</h2></td></tr><tr>");
client.println("</h3>");
client.print("<br>");
client.print("</body>");
client.print("</html>");
delay(10);
client.stop();
Serial.println("client disconnected");
}
}
} -
choco01
addikt
Na most letöltöttem egy másikat a ami direkt esp32 és i2c és abban már át van írva alapból így már megy!
Elvileg mennie kéne mellette a webservernek is?Itt elindul kiírja serialra az IP-t de csak tölti az oldalt nem jön be..meg így mellette a kijelző sem frissül mint ha megakadna a net függvény..
8266-on ment simán, itt valamiért nem akar pedig lefutni lefut ez a kód:
void net()
{
WiFi.enableSTA(true);
delay(2000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(300);
server.begin();
Serial.println ( "HTTP server started" );
WiFiClient client;
client.println( "<!DOCTYPE html>");
client.println( "<html>");
client.println( "<head><META HTTP-EQUIV=\"refresh\" CONTENT=\"15\"></head>");
client.println( "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />");
client.println( "<body>");
client.println("<br><br>");
client.println("<body><h1>Időjárás adatok:</h1>");
client.println("<table border=\"2\" width=\"456\" cellpadding=\"10\"><tbody><tr><td>");
client.print("</td><td colspan=\"2\"><h2>Hőmérséklet = ");
client.println(hom);
client.print("<h2>Páratartalom = ");
client.println(pt);
client.print("%</h2></td></tr><tr>");
client.print("<h2>Harmatpont = ");
client.println(hp);
client.print("°C</h2></td>");
client.print(" <h2>Légnyomás = ");
client.println(lny);
client.print("hPa</h2></td></tr><tr>");
client.println("</h3>");
client.print("<br>");
client.print("</body>");
client.print("</html>");
delay(100);
client.stop();
Serial.println("Lecsatlakoztatva.");
} -
choco01
addikt
Valaki próbált már ESP32-vel BME280-ból adatokat kiíratni oledre?
Valamiért 0,00-t olvas ki és azt írja ki mondjuk hőmérsékletnek..
-
Janos250
őstag
válasz
Teasüti #8647 üzenetére
Attól függ, mit értünk protokoll hiba alatt.
Az elején kiküld a gép az ESP felé néhány bájtot, ebből állapítja meg az ESP a baudrate-et. Úgy látszik, hogy amikor komplett csomagot küld, akkor nem minden bájt elejétől kezdi a szinkront, hanem "számolja", és ha hosszú a csomag, akkor kvarc nélküli lapokon elcsúszhat.
Az megoldás, ha ez ember az esptool.py-ban lecsökkenti az adatcsomag hosszát. Akkor viszont a bin fájlt kell exportálni, és az esptool.py-al kell feltölteni. Le lehetne fordítani esptoll.exe-re - elvileg. Nekem nem sikerült működőképes verziót varázsolni.
Kipróbáltam alacsonyabb baudrate-el, de úgy meg az elején kiakadt. -
Janos250
őstag
"Resetet nem VCC-re kell húzni?" Nem. Földre.
"Másik hogy az USB-TTL konverter az UNO lapon szerintem 5V-os, te pedig 3v3-ra kötötted a 8266-ot"
Az UNO kapta a delejt a gépről, azaz 5V-ot. Az ESP 3.3V-ot.
Az ESP több információ szerint elviseli az 5V-os szintet a lábain, ha VCC 3.3V.Mellesleg jellemző a kis kínaira:
A konverter chipre HX van írva, a programjuk meg XA/HXA-ként azonosítja.
"Windows 8 is NOT supported in HXA/XA chip versions" -
Teasüti
nagyúr
válasz
vargalex #8629 üzenetére
Úgy tűnik éppen ez a hiba forrása.
Nem tudom mi történik pontosan mikor a j átfordul nullán, de olybá tűnik felülír vhol vmit, amit nem kéne.
Ezt alátámasztandó a hiba elhárul ha az elemek számát 255-re emelem vagy megakadályozom, hogy átforduljon.
Ahogy tanulmányozgattam a C string-eket, ezek csak pointerek és nincs megkötve az elemek száma. Ezért is nem panaszkodott, mikor a data[8]-ba beraktam vagy háromszor annyi elemet.
ESP32-nél talán azért nem jött elő, mert szimplán mocskosul sok memóriája van az Uno-hoz képest. -
vargalex
félisten
válasz
Teasüti #8630 üzenetére
Egy ESP32 van éppen kéznél, azon jónak tűnik.
-
Teasüti
nagyúr
Azért kell reset-ben tartani az Uno-t, mert ugyanazon az UART porton van ilyenkor az Atmel328 és az ESP8266. Soros buszon meg nyilván nem lóghat egyszerre három eszköz.
Mondjuk szerintem az is jó, ha kikapod az IC-t a helyéről, de akkor már egyszerűbb bedugni egy darab vezetéket a reset-re.(#8605) aryes
Prózai oka van: nincs usb-soros konverterem. És miért vegyek külön, amikor van belőle minden usb képes lapon? A Nano-kon ott a CH340g, az eredeti Uno-mon meg tököm tudja mi. De működik szuperül. -
Teasüti
nagyúr
válasz
Janos250 #8598 üzenetére
Semmit nem kell csinálni vele. Én csak az usb-soros chipet használom róla.
Az Uno le van húzva reset-re, így fel se boot-ol. Ellenben a TX/RX lábak bypass mennek tovább az ESP-re.Ennyi az egész:
Uno - 8266
3V3 - Vcc
RX - TX (5V toleráns az I/O lábakon)
TX- RX
GND - GNDUno-n: Reset -> GND
Gyakorlatilag USB-Soros konverterként használod a lapot.
IDE-ben meg egyértelműen az Uno Com portjára csatlakozol és alaplapnak meg az ESP-t állítod be. -
Janos250
őstag
Ha szóba került a memória chipek programozási módja, egy adalék hozzá:
All the SPI Flash manufacturers call the following things by slightly different names. I'm going to use Gigadevice's command names in this post because they map well to the Espressif names. However your SPI Flash chip's datasheet may use different names. The command hex codes should be the same, though.
Not all chips support all of these modes. The datasheet is the best source to know what supports what.
DIO - SPI host uses the "Dual I/O Fast Read" command (BBh). Two SPI pins are used to write the flash address part of the command, and to read flash data out. Therefore these phases need half the clock cycles compared to standard SPI.
DOUT - SPI host uses the "Dual Output Fast Read" command (3Bh). Two SPI pins are used to read flash data out. Slightly slower than DIO, because the address is written via the single MOSI data pin.
QIO - SPI host uses the "Quad I/O Fast Read" command (EBh). Four SPI pins are used to write the flash address part of the command, and to read flash data out. Therefore these phases need a quarter the clock cycles compared to standard SPI.
QOUT - SPI host uses the "Quad Output Fast Read" command (6Bh). Four SPI pins are used to read the flash data out. Slightly slower than QIO, because the address is written via the single MOSI data pin.In terms of performance: QIO > QOUT > DIO > DOUT. I'm fairly sure the flash cache issues 32 byte reads each time, so QOUT or QIO are substantially faster than DIO or DOUT.
-
Janos250
őstag
válasz
Teasüti #8592 üzenetére
A Sonoff újabb eszközeiben a memóriának nem csupán a mérete más, hanem az elérés típusa is.
A régebbi Sonoff cuccokban az elérést DIO-ra kellett állítani, de az ÚJABB, UGYANOLYAN TÍPUSNEVŰ Sonoffokban DOUT-ra. Ha így állítja be az emberfia, akkor megy az ESP8266 kijelöléssel is.
Ettől függetlenül egyes típusokkal vannak gondjaim, de ez majd egy külön kérdés lesz mindjárt. -
Teasüti
nagyúr
Srácok!
ESP8266 kapcsán (Sonoff TH16) miért nem fut a feltöltött programom?
A feltöltés megy szépen, flash mód, feltölt, kész.
Viszont se kép se hang, Serial monitorban sincs semmi.
Vmi ötlet esetleg?A bekötés jó, az eredeti FW működőképes volt az Uno-ra kötve, volt wifi kommunikáció, villogtak a ledek, meg ami kell. RX/TX lábak megfelelő sorrendben. 3V3-ról kapja a delejt, Uno reset-re húzva így az UART port bypass az ESP-re kapcsolódik. Elvileg minden jó.
Lehet az alaplap beállítások nem jók, de ahhoz lövésem sincs. Túl sok a változó, netes útmutatókban nincs ennyi opció.
-
válasz
Teasüti #8567 üzenetére
Igen de amikor túl vagy a tesztelésen és meg szeretnéd építeni az adott projektet, oda nem vezetékeket raksz gondolom. Ezért kérdeztem, hogy mondjuk ami helyettesít 2 nyomógombot, de csak magát a kapacitív felületet biztosítja van-e, mert jó hogy támogatja az ESP32, de amiket találtam azoknál mind van plusz elektronika ami kezeli az érzékelést, viszont ESP-nél már benne van a mikrovezérlőben, így csak egy felület kellene hozzá.
-
Teasüti
nagyúr
válasz
Tankblock #8564 üzenetére
Van szkópod?
(#8566) xboy89
[link]
Mondjuk ami engem érdekelne, hogy vajon az ESP32 és az Atmel328p el van-e látva ESD védelemmel a QTouch interfészeken? Nem szoktam látni egy példában sem külön védelmet.
Nano-n volt ilyen projektem, ott gyakorlatilag egy darab vezetékkel működik a dolog egy ADC bemeneten. Ahogy látom ESP is pont ugyanazon az elven működik. -
válasz
Teasüti #8563 üzenetére
Igen növelve 100 ms-nál javult minimálisan, de még lehet növelem, szerencsére nem kell gyors reakció.
A korábban (#8547) Atti777 által linkelt megoldás esetén ESP32-vel hogyan lehetne kivitelizn. Arra gondolok, hogy ESP32 alapból támogatja a kapacitív bemenetet, így a linkelt panel elhagyható, de milyen felületet lehet hozzá használni egy PCB-n? Egy sima kapacitív felülettel ellátott PCB kell hozzá?
-
tvamos
nagyúr
Próbálta már valaki ezt a ESP4S2-t?
-
Tankblock
aktív tag
Sziasztok,
Most én szeretnék közös gondolkodásra sarkallni titeket.
Esp32 amit esp-idf ben használok. Nyomógomb perlmentesítését HW végezném.
A gpio posedge szabadna triggerelödnie, de a gomb megnyomásakor is triggerelődik, neg a felengedésekor. A második zavar. A fenti példán annyit módosítottam, h a 220k ellenállás helyett 300k használok és a 330 ohm elhagytam.
2 eset lehet, az ellenállás kell, v a idf nem ok valami.
Vagy bem tudok számolni és programozni sem
-
válasz
Tankblock #8551 üzenetére
Ez is jó ötlet, amiket láttam hardveres megoldásra mind több alkatrészt igényelt, ezért mentem a szoftveres irányban. Viszont egy kondi még nem vészes. Kipróbálom majd ezt is.
Amúgy érdekes, mert pl ESP32-es board esetén, de STM32F4 dicovery boardnál is a nyomógombbal párhuzamosan kötik a kondit, nem sorosan. Ha jól értem te sorosan kötöd. Ha nem jól értem akkor nem értemMiért párhuzamosan kell kötni?
(#8552) aryes
Az simán beleférOlyanra gondoltam, hogy nem lesz-e valami nagy kavarodás a hardver kimeneten, ezért nem mertem használni eddig, így viszont bátrabb leszek és máskor is használom majd, ha két állapot/időpont közötti eltelt időt szeretnék meghatározni. Köszi
-
A delayt csak próba miatt tettem bele, nem szép, de rá akartam jönni hol csúszik el a dolog. A kijelzős részt nem teljesen jól írtam le, úgy gondoltam, hogy egy timerrel számolom a 2 másodpercet és az megszakításként változtatna egy változót, ami mondjuk egy if szerkezeten belül végrehajtaná a kijelzést.
Ha már itt tartunk ESP32-re van jó timer leírás megszakítással egybekötve? Uno-hoz jól le van írva több helyen is hogy timer0 millis és delay-ért felelős, timer1 és timer 2 pedig szabadon használható. Mi a helyzet ESP32 esetében?
(#8544) aryes
Igen mert amiket próbáltam nem működött, ezért nem is tettem bele, csak a kódot magát hogy látszódjon amiből kiindulnék. -
Tankblock
aktív tag
Hello
Sw watchdog is van sokféle, pl lehet monitorozni adott idő alatt hányszor futott le adott szál, illetve minden fontos szál lefutott-e. Esp-idf ben volt rá példa.
Másik amikor 2 magon futtatod ugyanazt a számolást és megnézed hogy az eredménye ugyanaz e.
Hw wachdog legegyszerűbb megvalósítása N555 ahogy Teasüti leírta, de vannak bonyolultabb megoldások is, pl időre kérdés válasz elvén egy másik uC nézi h pl adott szám komplemensét kapja e vissza...
Biztonságkritikus alkalmazásnál a tervezéskor is a biztonság az első. Monitorozásokat kell beépíteni és informálni a vezetőt ha valamelyik részkomponens nem megbízhatóan működik, és funkciót letiltani.
Szép szakma ez
-
Teasüti
nagyúr
SW watchdog amikor az ESP32 újraindul, mert szarul írtad meg a programot és az egyik mag túl nagy időszeletet kap a program számolására és nem adja vissza a vezérlést az oprendszernek.
Atmel328p-n is lehet készíteni egyfajta SW watchdog-ot - van rá kész könyvtár is. Én sikerrel debug-oltam vele a programjaimat, amik megakadtak mondjuk egy végtelen ciklusban vhol.HW watchdog meg az, amikor egy külső chip a proci működését figyeli és ha az kifagy, akkor reset-eli a rendszert.
ESP32-n úgy rémlik van SW és HW watchdog is. Így az én esetemben csak meghibásodásról beszélhetünk.A HW watchdog-ot én egy monostabil 555 chip-el oldottam meg, amit a kontroller pwm jele triggerel és fent tart egy relét, ami a bemenetek közt vált (külső vagy belső pwm).
-
Teasüti
nagyúr
válasz
Tankblock #8519 üzenetére
Motor projekt. Dekor világításnak indult, de aztán kicsit felokosítom a gépet mindenféle vezérlésével. Pl saját tervezésű 5630 ledekből épített pwm vezérelt féklámpa 2000 lumenes fényerővel.
6 külön csatornán mennek a szalagok, és csak azért nem 8 mert ha jól értem az ESP32-t, akkor az RMT csatornákon zajlik a hardveres pulse counter is, amiből kell kettő a fordulatszám és sebesség jeladókhoz.
És miért van szétdobálva 6 csatornára? A fizikai kialakítás miatt. 4 különböző helyen vannak elhelyezve szalagok, ezen kívül az irányjelzők is ws2812b alapú RGB ledek lesznek. Hátul egy-egy 8 ledes stick, nyomtatott burkolattal. Elől meg még vizsgálom a lehetőségét vagy egy 120 led/m szalag elhelyezésének a fényszórókban, vagy egyedi formájú panel készítése 5050 RGB chip-ekkel.Persze megoldható lenne az egész hóbelebanc felfűzése egy láncba, de az nem volna praktikus. Na meg ws2812b lévén nem árt ha nem az egész lánc döglik meg egy pixelhibánál.
-
Janos250
őstag
"Amúgy arduinoról nem szívesen hajtok semmit, max opti izolátorokat."
Na, én erre használom az ESP8266-ot, azaz optocsatoló helyett.
Például az egyik dobozban akkuról hajtva a hőmérők konverterei, és az egyik ESP, ami küldi a jelet WiFin a másik dobozban lévő másik ESP-nek, ami kapcsolgatja az erősebb (48 V 3A) delejt. -
Teasüti
nagyúr
Hali,
Elővettem megint az Arduino IDE-t hosszú idő után, felraktam a Core-t ESP32-höz, majd fordítom az utolsó programot, hogy minden megy-e még és azt kapom vissza, hogy a tárhely csak 131 KB.
Vmit biztos rosszul állítottam be, alaplapnak a sima "esp32 dev module" van kiválasztva és a 4 mega flash mellé. Emlékeim ha nem csalnak - és tuti nem csalnak -, akkor tuti nem használtam ki 97%-ra a program tárhelyet, ami inkább olyan 480 KB körül mozgott annó.
Mit kell buzerálni rajta, hogy nagyobbra partícionálja? Végig próbáltam a partíció sémákat is, mind 131 KB csupán. Ez így lóf.sz, még a RAM is 300 KB majdnem, mi a fenéért biztosít csak 130KB ROM-ot??
Köszi! -
Dalee
aktív tag
Sziasztok,
Szeretnék segítséget kérni.
Kaptam egy példakódot, melynek az egyik sora a boost gyűjtemény egyik elemét használná:
boost::fusion::for_each(this->m_data, [](const auto& a) {
std::cout << a << ' ';
});Ez a sor (a komplett programmal együtt) le is fordul PC konzolra, de ESP8266 alá kapok egy csomó hibaüzenetet, hiába telepítettem a github-ról a boost_1_51_0 és a működéséhez szükséges boost StandardCplusplus könyvtárakat.
Az első pár hibaüzenet:
Arduino.h: 267:12: error: 'std::isinf' has not been declared
using std*: isinfArduino.h: 268:12: error: 'std::isnan' has not been declared
using std*: isnancpp_type_traits.h: 82:10: error: redefinition of 'struct std::__true_type
struct __true_type { } -
Janos250
őstag
válasz
choco01 #8413 üzenetére
Az ESP8266-nál valahonnan a netről töltöttem le, és a mintapéldában láttam a használatát. Egyszerűnek tűnt. ezért azt használtam. Utána írták, hogy az esp8266WEBserver működik némi megszorításokkal az ESP32-n is, aztán valaki elkezdte bütykölni, hogy rendesen menjen. Valaki írta, hogy neki egyszerre csak egy klienst tud lekezelni, de nekem az elég.
-
Janos250
őstag
válasz
choco01 #8411 üzenetére
Én - ha jól emlékszem - ezt töltöttem le:
http://www.fisch.lu/junk/ESP32-WebServer.zipAzért ezt, mert én az ESP8266-on is ennek az elődjét használtam, és azt megszoktam.
Egyéb oka nem volt.Segédletem sajnos nincs.
-
Janos250
őstag
válasz
choco01 #8407 üzenetére
Nekem ez az eleje:
#include <WiFi.h>
#include <WiFiClient.h>
#include <ESP32WebServer.h>"DHT22 miert NA adatot ír állandóan"
Én ezért szoktam saját lekezelőt csinálni, mert a kész könyvtárak időnként nem azt csinálják, amit én szeretnék. DHT11-re csináltam sajátot, 22 még nem. -
Janos250
őstag
taskDISABLE_INTERRUPTS();
Az ESP32 rendszere a freeRTOS op. rendszeren fut, annak a függyvényei is használhatók.
Azt csinálja, ami a neve, letiltja az interruptot, a taskENABLE_INTERRUPTS() pedig újra engedélyezi.
Ezeket próbáld a saját programodba is betenni a szalagra írás előtt és után. Csak próba, mert lehet, hogy nálad a könyvtár dolgaival összeakaszkodik.A loop automatikusan a core1-en indul, ha nem rakod át. A WiFi kezelés a core0-n van, elvileg nem zavarhatják egymást.
A szalagra kiküldendő adatok kiszámítását, meg bármi járulékos dolgot tedd a core0-ra. Beteszed egy függvénybe, és azt pl. ehhez hasonlóan hívod meg.
Így lehet pl. egy "lightShowInCore0Code" nevű függvényt úgy meghívni a loopban, hogy ne a core1-en, hanem a core0-n fusson:xTaskCreatePinnedToCore(
lightShowInCore0Code, /* Task function. */
"lightShow", /* String with name of task. */
1000, /* Stack size in words. */
NULL, /* Parameter passed as input of the task */
3, /* Priority of the task. */
&lightShowInCore0, /* Task handle. */
0 /* core */
);uint8_t:
"uint8_t lövésem sincs mi, gondolom egy közvetlen lenyúlás egy hardverközelibb szintre"
Nem.
A különböző rendszerekre való könnyebb átvitel érdekében a különböző hosszúságú egészeket célszerű így deklarálni, hogyint8_t : előjeles 8 bites egész
uint8_t : előjel nélküli 8 bites egész, vagyis 0..255 közötti az értéke.
A 8 helyett állhat 16, vagy 32 is, attól függően, mekkora kell.Én lightShowInCore0Code-nak neveztem el azt a függvényt, ami az adatokat kiszámolja, tehát ami nevet adsz a függvényednek, azt írd a helyére. A többi maradhat változatlanul.
void lightShowInCore0Code( void* parameter) {
// Ide kerül a tényleges program, amire azt akarod, hogy a core0-n fusson.
vTaskDelete(NULL); // ezt ne felejtsd el beírni a függvényed utolsó sorába.
} ; -
válasz
Teasüti #8394 üzenetére
Röviden: gyakorlat.
Láttátok korábbi hozzászólásaimban a szenvedésemet, az 56 LED-es szalag nem megfelelő működéséről.
Vettem egy step-down áramkört, hátha azzal megjavul, de ugyanez volt a helyzet.Egy külföldi fórumon (már meg nem mondom melyiken) egy srác is küzdött és ott javasolták neki, hogy tegyen vékonyabb vezetéket és egy ellenállást a kontroller és a szalag közé. Én is így tettem, és hirtelen minden megjavult, csak annyi LED világít amennyi kell, és úgy ahogy azt a forráskódban leírtam.
Most azzal küzdök, hogy a wifi-re felcsatlakoztattam az eszközt, csináltam rá egy webszervert, hogy ki és be tudjam kapcsolni. (igazából ez csak teszt, mert a színeket akarom csak variálni wifi-n keresztül) De valamiért 2 LED folyamatosan világít a szalagon. Talán az lehet a gond, hogy a webszerver és a LED vezérlést is ugyanaz a CPU mag csinálja és emiatt az időzítések/órajelek megcsúsznak a szalagon, legalábbis ezt olvastam. Szét kell választanom, hogy külön CPU feleljen a vezérlésért, vagy a led vezérlésnek kell úgy emlékszem DMA-t engedélyezni. Ez utóbbit viszont nem tud az AdafruitNeopixel library, csak a FastLED, ami viszont nem támogatott ESP32-őn. (Rövid távon valószínűleg jobban jártam volna egy sima Arduino-val, mert arra minden van.)
-
choco01
addikt
Hali.
ESP32 (és 8266-on) hogy lehet rábírni hogy elérjem másik porton ha WiFiServer server(); zárójelei közé nem 80-as portot írok hanem mondjuk 1234-et?Hiába írom be ip:1234 nem éri el..csak ha 80-asra állítom..
-
Teasüti
nagyúr
Én kíváncsi lennék mire alapozod ezeket a következtetéseket!
Én ESP32-n használok 4 csatornán ws2812b szalagokat, ellenállás nincs az adatbuszon (a végleges változat be lesz ültetve nyák-ra, azon lesz), vezetékek hossza hasonló a tiédhez, de van ahol akár kétszerese is (egy sportmotor alsó idomján futnak körbe a szalagok, a vezérlés az ülés alatt) és a vezeték méretezésekor se vettem figyelembe semmit. Ugyanazzal a 10A-es szállal vannak behúzva az adatbuszok, mint amin a delej megy.
Hónapok óta üzemel gond nélkül. -
Üdv,
ismét itt vagyok és néhány tapasztalattal lettem gazdagabb. Utólag végig gondolva felsejlik előttem 1-2 előadás villanytanból és elektrotechnikából, de a franc se gondolta volna, hogy igazuk lehet tanároknak (meg Ampére-nek, meg Kirchoffnak, meg a többieknek).
Nálam az Adafruit Neopixel könyvtár tökélesnek látszik, hardver hiba miatt nem működött a szalag.
Az első hibát ott követtem el, hogy egy vastag, kb 0,5mm2 vezetékkel kötöttem össze az ESP32 vezérlő pinjét a LED szalaggal.
A másodikat, hogy nem jó helyre raktam az ellenállást a vezérlő vezetéken.(legalábbis több weboldal ezt mondja).Annak aki az ESP32 és a LED szalag közé 10 cm-nél hosszabb vezetéket akar tenni:
- a vezérlő PIN és a LED szalag közé minél vékonyabb vezetéket kell tenni (pl UTP vezetékből 1 szál)
- egy 200 Ohm és 400 Ohm közötti ellenállást kell tenni, a kontroller és a LED szalag közé, úgy, hogy az ellenállás minél közelebb legyen a szalaghoz.(talán a legjobb ha a szalagra van ráforrasztva az ellenállás és a vezeték az ellenállásra van forrasztva)Egyelőre úgy néz ki, hogy nálam bejött a dolog. kb 70 cm van az ESP32 és a LED szalag között az alábbi módon:
- 0,5 mm2 hangszóró vezetékkel van a táp bekötve a szalagra és az ESP32-re,
- 1 szál vékony vezeték (rossz PC-ből vettem a HDD LED egyik vezetékét)
- beforrasztottam a LED szalagra az ellenállást és erre forrasztottam rá a vezetéket.Jöhet a teszt drótozás (a jelenlegi állapotot másnak nem merem nevezni) átalakítása a végleges verzióba.
-
Janos250
őstag
válasz
bzolika10 #8383 üzenetére
Itt van rá egy minta:
#include <ESP8266WiFi.h>
const char* ssid = "d1server";
const char* password = "87654321";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.println();
Serial.print("kapcsolodunk erre a wifi-re:");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password); // annak a wifi halozatnak az SSID-je es PW-je,
// ahova kapcsolodni akarunk
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print(ssid);
Serial.print(" SSID-ju WiFi-re felkapcsolodtunk, ezt az IP-t kaptuk:");
Serial.println(WiFi.localIP());
} -
bzolika10
aktív tag
Sziasztok!
A héten érkezett meg hozzám egy esp12E és egy NodeMcu v3. Ha bekapcsolom őket akkor mind a kettőnél létrejön egy saját wifi hálózat. Van nálam egy másik NodeMcu, de az nem csinál ilyet. Hogy lehet kikapcsolni a wifi hálózatokat?
-
MPU6050-et néztem ami 6DOF-os szenzor, 400Ft-ból meg van és tudja mind a kettőt. A fogyasztás lehet gond vele, ahogy néztem vannak olyanok szenzorok is amikbe van deepsleep mód talán az még jobb lenne. Viszont hogy deepsleep-ből felépbredjen az ESP (elsősorban 32 de 8266 is lehetne akár), ahhoz kellene egy komparátor talán, hogy meg legyen egy adott treshold esetén a logikai 1 érték.
-
Miért, a hall szenzor kicsi, befúrhatod az ajtóba, a mágnest az ajtófélfába és máris nem látszik. Vagy egy infrás reflexiós optokaput az ajtófélfába, az esp-vel együtt, nem is kell az ajtóba építeni.
A g szenzorhoz milyen tresholdot állítasz be? És ha kellően lassan nyitják ki az ajtót, akkor nem fog riasztani? Vagy ha a huzat megmozdítja? És ha kopognak rajta? -
Jó lenne mindenféle kapcsoló nélkül. Így kb majd hogy nem ESP méretben megvalósítható lenne, nem kellene semmi mechanikai bütykölés se.
(#8315) Attix70
Erre is hasonló lenne a válasz. Illetve itt még az elektronika hozzá talán még nagyobb méretet eredményezne, de legalább is a mechanikai megoldás biztos. -
Sziasztok!
Szerintetek mivel lenne jobb figyelni az ajtó nyitását, ha a lehető legkisebb méret számít. Gyorsulás vagy gyro? Emellett fontos lenne az ESP deepsleep mode is. Viszont hogy felébredjen az ESP külső jel hatására azt a reset pin változtatásával lehet. Arra gondoltam hogy a gyorsulás érzékelő egy adott limitet elérve kapcsolna egy komparátort így meglenne a szükséges digital 1 a resethez. Mehet a kiolvasás, majd megint mehet vissza alvó módba. Ennél van valakinek jobb ötlete?
-
ngabor2
nagyúr
Megírtam/összeollóztam Arduino Nano-ra egy egyszerű időzítőt DS3231-gyel és egy relével a D2 pinre kötve.
A program:
#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
int p2=0;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
pinMode(2, OUTPUT);
#ifndef ESP8266
while (!Serial); // for Leonardo/Micro/Zero
#endif
Serial.begin(9600);
delay(3000); // wait for console opening
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// following line sets the RTC to the date & time this sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop () {
DateTime t = rtc.now();
Serial.print(t.year(), DEC);
Serial.print('/');
Serial.print(t.month(), DEC);
Serial.print('/');
Serial.print(t.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[t.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(t.hour(), DEC);
Serial.print(':');
Serial.print(t.minute(), DEC);
Serial.print(':');
Serial.print(t.second(), DEC);
Serial.println();
if (t.hour() > 5 && t.hour() < 18 ){
digitalWrite(2, LOW);
}
else{
digitalWrite(2, HIGH);
}
delay(3000);
}Elvileg reggel 6-kor bekapcsol, este 6-kor kikapcsol... de nem kapcsol ki. Teljesen hasonlóan van egy másikra megírva, az működik (a különbség annyi, hogy ott a 4-es pinen van a relé). Hol van a hiba? Az időt szépen kiírja, tehát az órával elvileg nincs gond. Több ötletem nincs.
-
válasz
multipass4 #8278 üzenetére
A szervomotor teljesítménye elég lesz? A programozásban én úgy indulnék el, hogy külön-külön esetleg kisebb részfeladatokat összevonva írnám meg a kódot és tesztelném, ha egy rész két mehet a következő és minden egyes sikeres részfeladat után össze lehetne fűzni az előzőeket.
Valószínűleg más is ajánlani fogja ESP32-vel olcsóbban és kevesebb eszköz felhasználásával meg tudnád valósítani amit szeretnél UNO helyett de még is Arduino IDE-ben programozva. -
Janos250
őstag
Szerintem igen , de a döntés az övé, mert másként minden gondért a javasoló a hibás! Az én elvem, hogy mindig használjuk a legkorszerűbbet, ami ár/érték arányban még jó. AZ ESP32 a maga kategóriájában jelenleg mindent magasan ver ilyen szempontból. De ha ragaszkodik a 04-hez, akkor nincs mit tenni, használja. Azt se tudom, mennyi memória van a 04-ben. Belefér az Arduino, vagy AT parancsokkal kell programozni? Mert ha igen, akkor kell hozzá egy másik chip is, ami kezeli. Persze lehet, hogy felmegy rá az Arduino, nem tudom, ennek talán érdemes lenne utánanézni!
-
válasz
Janos250 #8261 üzenetére
Nem nekem lenne. Ismerősöm szeretne minél kisebb méretű eszközt. Ehhez próbálok megoldást keresni. Én ESP32-t használok és maradok is ezen a vonalon. Próbálom meggyőzni róla, hogy ezzel valósítsa meg a projektjét, de eddig a 04 mellett szólt a méret. Amit ma linkeltél ESP32 modul az nekem megfelelne, de a mérete miatt az ismerősömnek annyira nem. Mivel érveljek neki?
-
Janos250
őstag
Biztos, hogy ezt a 04-et akarod használni? Úgy gondolom,elég nehéz lesz olyan embert találni, aki még ezt a régi típust használja. Ha nem akarod az ESP32 vonalat, hanem mindenképpen az ESP8266-nál akarsz maradni, akkor mi az oka, hogy nem az ESP12-t használod ugyanúgy, mint még sokan mások? Abból is van olyan verzió, ami picike, csak a chip (a fehér panelra rakható)
https://www.ebay.com/itm/Esp-12E-ESP8266-Serial-Port-WIFI-Transceiver-Wireless-Module-AP-STA-New/253142334988?epid=1279738338&hash=item3af0757e0c:ggwAAOSwgjFZqqLM
16 x 24 mm
Sokan használjuk ezt, amikor kicsi a hely. -
ESP-04-et nézegetem még és felmerült egy kérdés. Antenna nincs ugye rajta. Ez azért van hogy egyénileg lehessen készíteni hozzá és/vagy mert önmagában is tud működni? Arra gyanakodnék, hogy antenna nélkül nem fog működik vagy csak nagyon nagyon kicsi távra (~2-3 méter).
-
Janos250
őstag
Ha saját PCB-t akarsz gyártani, akkor számításba jöhet maga az ESP-WROMM-32 modul, mivel az tartalmaz minden lényeges dolgot a modulon belül. Árulják hozzá a "fehér panelt", ami - ha kell - segítséget nyújthat a bekötéshez, vagy hosszú tüskékkel akár a panelra illesztve.
https://www.ebay.com/itm/ESP-WROOM-32-ESP32-ESP32S-IoT-Wifi-Wlan-BLE-Module-Adapter-Board-New/192253158352?hash=item2cc32e63d0:m:m-ZePhfZj7iMjfsrkyAZUiQ
USB-soros konverter nincs rajta, de ez úgyis csak a programozáshoz kell, a normál üzemhez nem. -
Sziasztok!
ESP32-ből is létezik hasonló mint ESP8266-ból hogy több méretben elérhető pl ESP-01, ESP-04 stb? Az ESP-04 helyett ami ha jól tudom 8266-al szerelt szeretnék ESP32 alternatívát.
-
Teasüti
nagyúr
Ismer vki arra módot, hogy Android-ról töltsünk fel ESP32-re programot?
-
Janos250
őstag
Megnéztem egy 60 pixeles szalag áramfelvételét 5V-os, és 3.3V-os táp esetén, maximális (255,255,255) fényerőnél
Nincs egy Li akkud pl. 18650 amivel ki tudod próbálni? Vagy egy laposelemed? Kisebb feszültséggel is stabilan működnek, csak kisebb a fényerejük. Szintillesztőt én sem használok, közvetlenül a led bemenetet kötöm az ESP32 lábára. Vagy próbáld ki, hogy ugyanarról az USB tápról hajtod meg a szalagot is, és az ESP-t is. Azaz feltöltöd a gépről, majd utána lecsatlakoztatod a gépről. Az az érintéses probléma nekem nagyon valamiféle "kóbor" delejre utal.
-
Tankblock
aktív tag
válasz
Teasüti #8236 üzenetére
Open source ....
Pont ez a szituáció minden ilyenteljesen megírt könyvtárral.Általános megoldás, és nem használja ki feltétlen a microcontroller képességeit, figyelmen kívül hagyja HW részeket. Az ESP32 ebből a szempontból kilóg a sorból, máshol nem nagyon van több mint 1 mag és HW megoldások egy csomó mindenbe beépítve. Nem AVR ahol örülsz h van 3 timer meg HWes PWM aztán nagyából minden kötött a pinekhez.....
Inkább a magam által írt / nevezzük a nevén: kotyvasztott kódot szeretem. Olvasni kell a példákat/ HW leírásokat és a ide leírását, esetenként a GitHubon nézelődni és tanulni a kész kódokból - Youtube is ide tartozhat..... Sokkal több mindent ki lehet így hozni az eszközeinkből.....
-
válasz
Teasüti #8225 üzenetére
Láttam ezt a cikket, de azt hittem ez csak Arduinora vonatkozik. ESP32-nél nem láttam ilyen megoldásokat.
De egy nagyobb kondit (asszem 1500-as van itthon) akkor még bekötök. Tegnap este én is erre jutottam, csak még a kivitelezést nem tudtam megcsinálni.JozsBiker: igen, próbáltam 400kHz-en is, de nincs változás.
Kb 13 éve (még a fősulin) programoztam utoljára C-ben (Akkor egész jól ment, addig amíg be nem kavartak az objetumokkal). Ismerős környezet amibe kódolni kell, de soha nem tanultam kontrollert programozni. Ezt most kb 1 hónapja találtam ki, így nekem egyelőre bőven megfelel a gyári csili-vili könyvtárak használata. Majd ha már legalább a saját kódom parancsait érteni fogom, akkor hanyagolom a gyári könyvtárakat, de egyelőre azon küzdök a hardver és a szoftver úgy működjön ahogy azt szeretném, és egy 10 soros kódot nem 2 heti guglizással kelljen összeraknom.
-
Janos250
őstag
válasz
Teasüti #8228 üzenetére
UNO-nál nem tudom.
ESP32-n én így oldottam meg:
A union nem tartozik a lényegéhez, de nem volt most kedvem átberhelni, csak bekopiztam.typedef union konv {
uint64_t v64bit = 0 ;
struct {
uint32_t low32bit ;
uint32_t hi32bit ;
} s32bit;
struct {
uint16_t low32bit_low16bit ;
uint16_t low32bit_hi16bit ;
uint16_t hi32bit_low16bit ;
uint16_t hi32bit_hi16bit ;
} s16bit;
uint8_t v8bit[8];
};
uint64_t getCycleCount64() {
static uint32_t CycleCount32 = 0 ;
static konv CycleCount64 ;
static uint32_t ccount;
__asm__ __volatile__("esync; rsr %0,ccount":"=a" (ccount));
CycleCount32 = ccount ;
if (CycleCount64.s32bit.low32bit > CycleCount32 ) {
CycleCount64.s32bit.hi32bit++ ;
};
CycleCount64.s32bit.low32bit = CycleCount32 ;
return CycleCount64.v64bit ;
} ; -
válasz
Janos250 #8206 üzenetére
Köszi a segítséget és a türelmet is.
Háhá, kicsit előrébb léptem. (Mondjuk azt nem teljesen értem mit csináltam, de működik.
)
Az alábbi kóddal végre minden LED egyforma színnel világít. Már csak azt kell kitalálnom, hogy a kód végén, ha letelik a delay, akkor villan/pulzál egyet a szalag. Egyáltalán miért kell a delay? Minden LED vezérlős kód amit eddig láttam a neten egy delay-jel végződik. Kell ez nekem? Ez ezért kell, hogy amikor a delay fut, akkor kisebb az áramfelvétele az ESP-nek, kvázi energiatakarékos módba kapcsol erre az időre?
#include <Adafruit_NeoPixel.h>
#define LEDPIN 13 //vezérlés
#define LEDmennyiseg 56 //osszes led
#define szakasz1kezdet 0
int i;
Adafruit_NeoPixel LEDek = Adafruit_NeoPixel(LEDmennyiseg, LEDPIN, NEO_GRB + NEO_KHZ800);
// szín beallítas: zold,kek, piros GBR
void setup() {
LEDek.begin();
LEDek.show();
}
void loop() {
uint32_t kikapcsolt = LEDek.Color(0,0,0);
uint32_t csunyafeher= LEDek.Color(153,255,255);
for (i=szakasz1kezdet; i<LEDmennyiseg+1; i++)
{
LEDek.setPixelColor(i,csunyafeher);
LEDek.show();
}
delay(1000);
} -
Janos250
őstag
Kösz!
Nem szedtem ki a dolgokat librarybe, mert ezek demonstrációs céllal készültek. Tehát nem belevittem a libraryt, hanem "nem vittem ki". Azt akarnám bemutatni, hogy mennyire egyszerűen lehet kezelni ESP32-vel a WS2812-t is. Majd ha lesz annyi időm, leírom, a még néhány hasonló megoldással együtt. Igen, az a próba van beleírva a lightShowInCore0Code()-ba a case-eknél, amit leírtál. Ez egy próba, hogy lássam, úgy működnek-e a ledek, ahogy szeretném. Látom, Nálad is úgy működnekJa, még annyit, hogy a két mag előnyét szándékoztam - többek között - bemutatni. Az egyik mag kezeli a ledeket, a másik meg kiszámítja, hogy mit kell kivinni. Így mehetnek párhuzamosan, nem zavarják egymást. Ha már van két magunk az ESP32-ben használjuk ki.
-
Janos250
őstag
Közben megpróbáltam utánanézni ennek az SPI-s hibaüzenetnek. Amit találtam:
1. ESP8266 esetén kapták ezt az üzenetet. Biztosan ESP32-t állítottál be?
2. Mellesleg ez az utolsók egyike volt a hibaüzenetekben. Mindig a legelső hibaüzenetet kell nézni, bár az már általában nem látszik. Ezért én úgy szoktam, hogy a "hibaüzenetek másolása" gombbal kimásolom, és kiteszem notepadre, ott keresem ki a legelső hibát, mert az utána már generál még egy csomó, érthetetlennek tűnő hibát. -
Janos250
őstag
"de így is ugyanazt az üzenetet kapom."
Akkor valami egyéb gáz van, mert mielőtt feltettem, direkt próbára lefordítottam, annak a képét tettem fel.
És a másik verzió, amit a 8194-ben írtam? Abban még RMT sincs, csak digitalWrite(), annak aztán mindenképpen menni kellene! Az ESP32 elég gyors ahhoz, hogy RMT nélkül, csak a GPIO használatával is menjen, ha az interruptot letiltjuk.
Itt írom le, hogy ha valakinek nem elég a millis, micros, mert nagyobb felbontást akar, akkor a CCOUNT használható. Egy baja van, hogy csak 32 bites, de szoftverrel ezt meg lehet kerülni. Ezzel nagyon pontos időzítések állíthatók be bármire."De nekem szerintem a NodeMCU van."
Az tökmindegy, a rajta lévő IC a lényeg. Az ESP32-k közül sem különösebben lényeges, hogy melyiket állítod be azok közül, amelyiken ESP-WROOM-32, vagy lánykori nevén ESP32S van. Mellesleg amit én használok, az pont úgy néz ki, mint a Tied, a lábak is ugyanúgy vannak. -
Nekem is ugyan ilyen van kép alapján, nem innen vettem és ott nem is volt benne a nevében a nodemcu, ami nem véletlen hiszem ez ESP32S modul, nem ESP8266. Itt tévesen szerepel a nevében. Gondolom így több találatot ad ki ha valaki ESP32-re kerese vagy ESP8266-ra. ESP Dev Board-ként működik az Arduino IDE 1.8.5-el. Tehát inkább a code/library lesz a gond szerintem.
-
válasz
Janos250 #8193 üzenetére
Köszi.
Most ugyanazt állítottam be, mint ami te képernyőképeden szerepel, de így is ugyanazt a z üzenetet kapom.
Arduino IDE 1.8.5 van nekem feltelepítve.Eddig sima ESP32 DevKit volt az alaplap beállítása. (De nekem szerintem a NodeMCU van. Ezt vettem, és pont így néz ki az enyém is. [link] )
Tegnap este a vezérlőpin vezetéke és a led szalag DIN vezetéke csak össze lett csavarva, hogy kipróbáljam. A 10 db-os teszt szalag viszont közvetlenül volt rákötve a vezérlőre egy kb 10 cm-es vezetékkel. Az alapján amit írtál, akkor ez is lehet probléma, erre nem gondoltam.
A táp biztos elég, mert 12V/4A a táp, amiből egy stabilizátor IC-vel csináltam 5V-ot, és 5A-ig terhelhető ez az IC.
#Tankblock Köszi, ezt néztem én is, de nem láttam hozzá guide-ot, hogy milyen paramétereket lehet megadni, hogy kell használni a library-t. Ugyanez a bajom van a Pixelbus-sal is.
-
Janos250
őstag
-
válasz
Janos250 #8120 üzenetére
Üdv,
A hardveres előkészületekkel kész vagyok.(Összeraktam a tápegységet, elő van készítve a dobozolása megvan a ledszalag, össze van kötve be az egész bazár. A ledszalag és az ESP32 között kb 40cm-es vezeték van.
Most jön a szoftveres rész. Az a kód, amit megosztottál, nem fodul le nekem.
Ez a hibaüzenet:
"No hardware SPI pins defined. All SPI access will default to bitbanged output"Mit tudok vele csinálni? (FastLED 3.1.6 van telepítve)
Most az Adafruit_neopixel lilbrarbyt próbálgattam, de nagyon furán viselkedik. Ha csak 10 db ledet kötök be, akkor a színeket RGB sorrendben kell megadni a függvénynek és jól működik. Ha viszont az 57 db-os szalagot, akkor már a sorrend BGR, ráadásul az első valamiért led mindig eltérő színnel világít. Ha pedig valami színt szeretnék kikeverni akkor a delay lejárata után villan egy picit a led és megváltozik néhány lednek a színe.
Környezet: Arduino IDE 1.8.5, Adafruit_neopixel 1.1.6.
Ez a kód van most feltöltve, kék színnel világit most a szalag, kivétel az első led--et, mert az rózsaszín:
#include <Adafruit_NeoPixel.h>
#define LEDPIN 13 //vezérlés
#define LEDmennyiseg 57 //osszes led
int i;
Adafruit_NeoPixel LEDek = Adafruit_NeoPixel(LEDmennyiseg, LEDPIN, NEO_GRB + NEO_KHZ800);
void setup() {
LEDek.begin();
}
void loop() {
for (i=0; i<56; i++)
{
LEDek.setPixelColor(i, LEDek.Color(0,255,0));
LEDek.show();
}
delay(10000);
} -
mprrpm
tag
válasz
JozsBiker #8124 üzenetére
Na tisztázzuk a dolgokat.
Ha egy arduino programot megtalálsz igaz ez bár mire az szinte semmit nem ér ha nincsen hozzá meg a könyvtárrendszere ami alapján hivatkozik egy csomó mindenre valamint még nagyon sokszor a verziója sem mindegy.
Példa: amivel menetrend szerint szívok, engem érdekelnek a pontmátrix kijelzők, megjelenítő felületek, ebben az arduinóra szerintem legjobban összerakott nagyon profin megalkotott igen igen struktúrált program az MD.parola.
(Egyirányú soros kommunikáció sokat lehet belőle tanulni. WS2812 ledek meghajtása hasonló csak ugye ott kicsi másképpen + bejön a szín is.)
De ahhoz, hogy ez működjön ehhez kell egy csomó minden. Többek között ami a max7219 ic soros vonali meghajtót kezeli. Ebből kijön kb. 3 havonta újabb és újabb verzió. De a meghajtó progiból is van kb. 4-5 féle amit remekül lehet használni. (Ha nagyon profi vagy csinálsz sajátot.)
Tehát alkotok dcf77-hez saját programot szuperül csillog-villog, működik és eszembe jut valami kb. 3 hónap elteltével amit szeretnék hozzátenni a programomhoz de közbe már felajánlotta az arduino progi, hogy megjelent újabb frissítés, lefrissíti az ember, rá akarod tölteni a módosított programodat és már hibát dob, hogy valami gond van. A te esetedben a time.h-val. (time.h-t már nem nagyon használják van helyette Time-master, szebb, jobb) Szokták mondani ugye a kőkorszaknak sem azért lett vége mert elfogyott a kő.
De ezek a frissítések amik a könyvtár rendszert is tartalmazzák sokszor meg bekerülnek újabb jobb dolgok, esetleg portolják más hardverekre is (pl. ESP32) ami az előző verziókba nem volt.
Nagyon sok arduino minta program uno-ra íródik, de attól kisebb-nagyobb átalakításokkal megy az mondjuk Arduinó Megán is a hardver sajátosságaival együtt lábkiosztás, memória...stb, stb.
Lehetőségek a megfelelő könyvtár felrakására.
Vagy bemásolod a letöltött könyvtárat az arduino könyvtárba vagy ahogy az előzőekben írtam feltelepíted és elintéz mindent a program(letölti bemásolja) vagy pedig a letöltött zip file-t a zip file hozzáadása menüpontban rakod fel. (github-ról komplett leszeded a zip file-t és hozzáadod)
Ilyenkor telepítésre kerülnek többek között a példaprogramok is és ezek általában megfelelően hiba nélkül lefordulnak és elindulnak.
Remélem tudtam valamicskét segíteni. -
Janos250
őstag
"de mi van akkor ha én pl egyszerre akarom az első tíz LED-et vezérelni."
"Egyszerre" nem tudod vezérelni a 10 ledet. Mind a tíznek ki kell küldened egymásután ugyanazt a kódot.
A WS2812 úgy működik, hogy ami színkódot elsőként kiküldtél, azt elkapja magának az első led, amit másodszorra, azt az első továbbküldi, a második kapja el, stb.
Akkor kezdi elölről, ha nagyobb (pl. 10 microsec) szünet van a két kód érkezése között.Amit én feltettem, az tutorial céllal készült, ha valaki tanulmányozni akarja az ESP32 RMT használatát.
-
Üdv,
kis segítséget szeretnék kérni. Megvan a WS2812B LED szalagom.
Tegnap levágtam belőle egy 10 db LED-es csoportot és összeraktam a következő környezetet:
- USB-re rákötve az ESP32
- ESP32 Vin és a mellette lévő GND lábára rákötöttem a LED 5V+ és GND megfelelő lábait (Vin-ről azt olvastam több helyen is, hogy az egy +5V-os ki és bemenet, az USB +5V-ja jelenik meg itt)
- az ESP32 D13 feliratú lábára (elvileg ez a PIN13) rákötöttem a D0 feliratú vezetéket (asszem D0, de nincs is több csatlakozó)Csak ki akartam próbálni, hogy lássam működik-e, így megpróbáltam több példa programot is rátölteni az ESP-re. Volt köztük Neopixel, FASTled, meg LEDc is, de egyikkel sem tudtam a LED sort kifényesíteni. Minden programban a PIN-t átírtam, hogy 13-as legyen, ami vezérli LED-eket.
Annyit sikerült elérnem eddig, hogy ha lehúztam az ESP-t az USB-ről, és visszadugom, kb 1 tized másodpercre néha felvillan a LED sor (pirosan vagy zölden).
Tegnap kb 1 órám volt vele foglalkozni, de nem találtam olyan egyszerű kódot, amivel el tudnék indulni. Mindenki egyből bluetooth, meg wifi, meg az franc se tudja milyen bonyolult megoldásokat tett fel a netre.
Esetleg kérhetek valakitől olyan kódot, amivel el tudnék indulni? Vagy hol kereshetnék ilyen egyszerű leírásokat?
Kb az kellene, hogy:
#define PIN 13 //ezen megy ki a LED vezérés
#define szín RRGGBB //milyen színű legyen
#define akármi //ha kell még valamit definiálnivoid loop
legyen világosság (PIN, szín, akármi) -
mprrpm
tag
válasz
JozsBiker #8102 üzenetére
Egyébként arduinóba megcsináltam már a dcf77 pontosítja DS3231-et.
dcf77 vételi problémával már foglalkoznak mások is, sőt már külön jelformálót is készítettek ennek a kezelésére. Amit ajánlottam előzőbe, ha azt felrakod abban már van egy jelvizsgáló kis rész és meg tudod nézni a vett jelek minőségét is egy szkóp szerű képernyőn.A ds3231 ZS-042 panel alapvetően nem sima CR2032 gombelemre van kitalálva hanem LIR2032 gomb akkura, mert létezik egy töltő áramköri rész ami folyamatosan tölti a 3,6V-os lítium akksit.
Így az akkumulátor kapocsfeszültsége 4,2 V körül jár na most ha ebbe elhelyezel egy CR2032-t akkor az pár napon belül szinte felrobban, ezért el kell távolítani a panelről ezt a töltő áramköri részt. (bocs hirtelen ezt találtam)
Egyébként én nem tettem gombokat egyik órára sem hanem IR-en keresztül pl TV távirányító nem használt gombjaira tettem a beállítást és nem kell hozzányúlni közvetlen az órához, vagy pl. magasra mászni a beállításához.
De igen lehet BT vagy Wifi-n keresztül is, nekem volt egy csomó IR vevőm régi projektből maradt.
Az én óráim Arduino nano valamint a kihívás és tanulás kedvéért STM32F103-mal készültek.
A terv amin most dolgozom házfalra kültéri kb. 5000-8000 ledes reklámfelület fél méter magas, alapja ESP32lenne, hőmérővel, órával természetesen (költséghatár max 40000Ft-ig).
-
Janos250
őstag
válasz
Tankblock #8069 üzenetére
A try - catch -et egyszer régen próbáltam és nem ment, de szerintem azt még nem ESP32-n próbáltam, de kipróbálom majd. Vagy ha valakinek van ingerenciája, próbálja ki, és írja ide, okulásunk céljából!
Tudod, én már elég öreg vagyok ahhoz, hogy számos alkalommal megtapasztaltam a spéci dolgok hátrányait. Már ifjú koromban, amikor az Algol60 programot át kellett tenni Fortranra, vagy a Cobolban írtat egy minibol nevű csodára. Aztán később a Basicről már nem is beszélve. -
Janos250
őstag
Apropó! Ha már itt tartunk, hogy az ESP32 arduinoja ismeri a szabvány C++ zömét, akkor már mutatok a 11-nek más tulajdonságára is példát.
Nem feltétlenül kell a több task esetén a freeRTOS task kezelését használni, lehet az oskolában C++ órán tanultakat is:#include <iostream>
#include <thread>
//#include <mutex>
using namespace std;
void helloWorld1() {
for (uint8_t i = 0 ; i < 10 ; i++){
cout << " Hello World1 ! " << endl;
delay(1000) ;
} ;
} ;
void helloWorld2() {
for (uint8_t i = 0 ; i < 10 ; i++){
cout << " Hello World2 ! " << endl;
delay(2000) ;
} ;
} ;
void setup() {
Serial.begin(115200) ;
delay(2000);
thread szal1(helloWorld1);
thread szal2(helloWorld2);
szal1.join();
szal2.join();
}
void loop() {
}Egyre több minden szól az ESP32 mellett
-
Janos250
őstag
Na, megvan a console átirányítás az ESP32-n (a legkézenfekvőbb, de ki gondolta, hogy működik)
freopen("/dev/uart/0", "w", stdout);
Persze a 0 helyett az aktuális -
-
-
-
Janos250
őstag
válasz
fecske13 #8050 üzenetére
"az egyiknek 8-al több lába van"
Hú, az sok!
Most nincs előttem a két lap, de akkor azért itt kell szólni az alábbiakról:
AZ ESP-WROOM-32 kivezeti azokat a lábakat is, amit mi nem használhatunk, mert az ESP32-nek ezek a lábai a flash memória címzését szolgálják, mi - normál esetben - nem használhatjuk. Ezt egyes lapok kivezetik pinre, mások nem. Lehet ez az oka, de majd egyszer kinyomtatom a két lap képét és átbogarászom.
Nem kompatibilisek?
Ha azt értjük a kompatibilitás alatt, hogy ugyanott vannak a kivezetett GPIO-k, akkor messze nem kompatibilisek. Bizony meg kell keresni az adott lapon, hogy az adott GPIO hova van kivezetve.
Egyébiránt meg teljesen kompatibilisek. -
Janos250
őstag
Srácok! Nálam okosabbak segítsetek lsz!
Mi a fene a stdout az ESP32-nél.
Hova ír ki az alábbi program?//#include <stdio.h>
#include <iostream>
using namespace std;void setup() {
delay(2000);
cout << "proba kiiras";
uint8_t i = 5 ;
std::cout << "i: " << i << std::endl;
}void loop() {
}A freeRTOS-ben sem találom, hogy tudnám kijelölni
Másként ki lehet íratni persze, de én a cout-ra és a cin-re lennék kíváncsi.
-
Janos250
őstag
válasz
fecske13 #8044 üzenetére
Többféle lap van. Amiken ESP-WROOM-32 van, akkor semmi lényeges különbség nincs köztük.
Amiben különbözni szoktak pl. hogy hány GND láb van, meg hasonlók, továbbá a lábak mellé írt "név", mert nem mindig egyformán nevezik a lábakat. Ezért én többnyire a GPIO sorszámmal és nem a nevével adom meg a lábakat, hogy ha egy másik lapot választok ki, ne tekintse ismeretlennek a lábak elnevezéseit.Hangsúlyozom mégegyszer, hogy ha a képen ki van takarva annak a fém burkolatos százlábúnak a felirata, akkor az bizony többnyire ESP8266, nem 32. Persze az se rossz, de a párszáz Ft különbség ellenére a ESP32 SOKKAL többet tud, ma már nem éri meg ESP8266-ot venni. A 8266 programjai is futnak a 32-n is. A 8266-nak én egyetlen előnyét látom: fizikailag kisebb a kevés lábszám miatt, ezért ha picike helyre kell bepasszírozni, akkor az a 8266-al könnyebben megy.
-
mhegedusmh
újonc
Hali, egy ESP8266-01 modullal szivunk sokat (3db-ot is probaltunk), de az AT parancsokra mar nem valaszol... Flashelni 1x sem sikerult... 3.3V-5V logikai szintillesztovel kotottem ossze az FTDI32 usb-soros chippel. Any idea?
-
DiceBlade
aktív tag
Sziasztok!
Van egy NodeMCU ESP8266, amit univerzális távirányítóként szeretnék használni.
Rákötöttem egy KY-005 infra adó modult így:
TV ki/bekapcsoló kódját próbáltam vele küldeni, de sajnos nem reagál rá a tv néhány cm-ről sem.
Az lehet a gond, hogy a board-om GPIO-i 3.3V-osak? Hogyan tudnám "debugolni"?
A hő és páratartalom mérőm is 5V-os de arról sikerült olvasni. -
Janos250
őstag
válasz
ZTE_luky #8013 üzenetére
"ha arduino rendszeres ez is meg az is , akkor nem ugyanolyan írt kóddal működik?"
De, az alapvető dolgok ugyanazok, mert arduino ez is, az is. Viszont az egyes kontrollerek mások, ezért ha akarja az emberfia, akkor kihasználhatja a specialitásait. Az eredeti arduino "szabvány" definiál egy csomó függvényt, konstanst, amit ha valaki illeszt az arduinoba egy másik kontrolleres lapot, azokat "kötelező" megírni rá. Viszont azokra az újabb tulajdonságokra, amik az eredeti arduinóban nincsenek, arról nem szól a fáma, hogy azokra mit írjunk meg. Az ESP32-nek van néhány újdonsága, pl. az úgynevezett RMT (remote controller), ami ennél a kontrollernél jelent meg, és a WS2812-höz nagyon jól jön. Na, én ezt a spécit használtam élvezkedésként.
"gondolod hogy ehhez a kis rendszerhez szükség lenne az enyémnél komolyabb kontroller kell?"
Én úgy tippelem, hogy elegendő a nano is. Csupán azt mondom, hogy a FASTled programot nem használtam, abban nem tudok tanácsot adni, hanem majd azok, akik ismerik.
Egyébként azt hiszem, egyre kevesebben használják a régi lapokat. Ezt abból gondolom, hogy az elfekvő nano készletemből úgy gondoltam, áruba bocsátok párat, hátha jól jön valakinek, amit én nem használok. Hetekig hirdettem itt, de nem kellett a kutyának se, végül egy valakinek kellett egy darab 500 Ft-ért. Le is vettem a hirdetést, mert ennyi pénzért a macerát se éri meg. Ellesznek a fiókban a többi kacat között. Pedig egyszerűbb dolgokra valóban jó, csak aki MOST vesz lapot, az már korszerűbbet vesz, mert alig drágább -
Janos250
őstag
válasz
ZTE_luky #8011 üzenetére
"ha nem sikerül arduino-val akkor beszerzek egy ilyen kis kütyüt"
Arduino rendszerbe gyártott lap sokféle van, többféle kontrollerrel.
Az ATmega328P egy elég régi típus, elég lassú, kicsi a memóriája, de vannak, akik kisebb feladatokhoz kedvelik, mert már 500 Ft körüli áron is beszerezhető. Én az ESP32-t szoktam ajánlani, én azt kedvelem. Ezt is Arduino rendszerben használjuk, az ára 1500 Ft körüli.
Például:
https://www.ebay.com/itm/ESP32-ESP32S-CH340G-CP2102-2-4GHz-Dual-Mode-WiFi-Bluetooth-Module-Antenne/263307790295?hash=item3d4e5e07d7:ggsAAOSwq4VaOPmF
Arra kell vigyázni, hogy ESP-WROOM-32 legyen rajta az a szögletes fém borítású hibrid, mert most elterjedt, hogy 1000-1200 Ft-ért árulnak régebbi, ESP8266 lapokat,
de ESP32 néven. Az átverés, a fényképeken a feliratot kitakarják.
Az ESP32 kettő maggal, sok memóriával rendelkezik, 240 MHz-el jár -
Janos250
őstag
válasz
ZTE_luky #8008 üzenetére
Na, arra sajnos nem jó, mert speciálisan az ESP32 regisztereinek a közvetlen használatával van megcsinálva a ledet kezelő része, viszont az a lényeg. Állítólag a FASTLED talán a Te controllereden is elmegy, azt nem tudom. A WS2812 programozása elég macerás, mert elég pontos időzítések kellenek. Én már nem akarok ráállni annak a régi controllernek a programozására. Azt a kezelő programot Teasüti bogarászta ki, és pofozta át a saját igénye szerint. Ha erre jár, majd az ő véleményét vedd figyelembe.
-
Janos250
őstag
válasz
ZTE_luky #8003 üzenetére
Nekem tetszik.
Ha a hullámot akarod, akkor - szerintem - jó a bekötés is.
Mindenképpen ESP32-t javasolok.
Ha gondolod, tehetek fel működő komplett programot, ami a tutorial céllal készültek egyike, csak még nem volt időm a dumát is megírni mellé. A célja miatt jól el van benne különítve minden, ha egy pici lövésed is van a programozáshoz, akkor megérted, és változtatni is tudod. -
vargalex
félisten
Szia!
Mindhárom eszközön ugyan az a kód fut? Ezt a doksit érdemes egyébként elolvasni. Konkrétan arra a részre gondolok, hogy az ESP8266-on alapban engedélyezett a Modem sleep mode kliens módban, ami ugye lekapcsolja a WiFi modult 2 DTIM Beacon intervallum között, ha nincs rajta forgalom. Nyilván, ha ilyen állapotban ping-eled, akkor előbb fel kell, hogy ébressze...
-
itg
tag
válasz
vargalex #7951 üzenetére
Sziasztok!
Megfogadtam a tanácsokat, átnéztem a kódokat, átírtam állandó kapcsolatra és az alábbi képen látható elérési időkkel érhetők el az ESP-k.
Ami számomra nagyon furcsa, hogy a 10.0.0.80-as a routertől 40 centire van és brutál magas a ping.
A kiugrásokat nem tudom mire vélni, 2,4Ghz-en csak ez a 3 eszköz van a hálón.Tehát úgy néz ki, hogy állandó kapcsolat esetén nem dobálja el a hálót.
(legalábbis az elmúlt 32 óra alatt nem volt kiesés egyik eszköznél sem.)
Új hozzászólás Aktív témák
Hirdetés
- Sokrétű segédkijelzővel gyarapodott a Corsair portfóliója
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Sweet.tv - internetes TV
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Autós topik
- iPhone topik
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Azonnali fotós kérdések órája
- A fociról könnyedén, egy baráti társaságban
- OFF TOPIC 44 - Te mondd, hogy offtopic, a te hangod mélyebb!
- További aktív témák...
- ASUS ROG STRIX RTX 4070 Ti SUPER OC Edition 16G (kishibás) videokártya garanciával
- Iskolakezdési AKCIÓ! - I7-8700/16GB DDR4/Gigabyte B360/GTX1070/1TB HDD/240GB SSD - 144.999,-
- HP ZBOOK 17 G6 Tervező Vágó Laptop -60% 17,3" i7-9850H 16/512 QUADRO RTX 3000 6GB FHD
- Samsung S21 5G megkímélt jó állapotban.
- NVidia RTX 3080 Founders Edition + 12VHPWR átalakító
- Samsung Galaxy A52 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! HP ProBook 440 G6 - i5-8GEN I 8GB I 256SSD I HDMI I 14" FHD I Cam I W10 I Gari!
- Felújított számítógépek számlával, garanciával! Ingyen Foxpost!
- iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3314, 94% Akkumulátor
- Apple iPhone 13 Mini 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest