- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Gurulunk, WAZE?!
- lezso6: Nem látszik a kurzor Chrome alatt a beviteli mezőkben?
- zebra_hun: Hűthető e kulturáltan a Raptor Lake léghűtővel a kánikulában?
- Argos: Szeretem az ecetfát
- bambano: Bambanő háza tája
- Elektromos rásegítésű kerékpárok
-
LOGOUT
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
-
Janos250
őstag
Én már találkoztam olyan SONOFF 4CH szerkentyűvel, amin bizony fordítva van felcímkézve. Pár hete ismét hozta az illető, mert elfelejtette, hogy mondtam neki a fordított bekötést, és nem tudott rá feltölteni.
Erre mondta itt valaki, hogy pedig így sokkal logikusabb feliratozni, hogy a Tx-hez amit kötni kell ahhoz Tx legyen írva.Mondtam neki, hogy ha átmész az autópályán az egyikről a másikra, és kimész a kijáraton, akkor a másikra a kijáraton akarsz felhajtani?
Régebben - ha jól emlékszem - itt is volt valaki, aki morgott, hogy miért nem így van feliratozva, hogy mihez kell kötni, mert ez így csak szivatás, semmi logika benne. -
Janos250
őstag
Pl. így hirtelenjében valami hasonló. Lehet persze, szebben is, de maradjunk az eredeti átírásánál.
uint8_t inChar[packetSizeMax] ;
uint8_t i = 0 ;
while (LoRa.available()) {
inChar[i] = (char)LoRa.read());
Serial.print((char)inChar[i]));
i++ ;
// Serial.print((char)LoRa.read());
}
Aztán, amikor már tudod, hogy hol kezdődik, akkor vagy substringgel kiszeded, vagy rádefiniálsz egy másik tömböt arra a területre, ahol van (erre már írtam példát korábban). Én az utóbbit szeretem, de tökmindegy. -
Janos250
őstag
válasz
lanszelot #20426 üzenetére
Az ilyen multishieldek alapvetően jók, sok minden van rajtuk. Ha nem a gyári programját használod, akkor valóban jó lesz sok mindenre.
Viszont idővel majd bizonyára átállsz az UNO-nál korszerűbb lapra, és akkor látod majd, mennyivel egyszerűbb lesz az életed, nagyjából ugyanannyi pénzből.
Breadboard:
Én ezért csináltattam az ESP32-mhöz panelt, amin sok minden rajtavan, és ha lehet, azt használom. Terveztem már a neten fennlévő, egészen jónak tűnő panelt is csináltatni, de egyelőre az még elmaradt. A 10 db. panel volt 5 $ (0.5 $ /db. , ha 10-et csináltattam.) igaz, hogy 3-4-nél többet nem használok, a többi megy a szemetesbe, de így is sokat segít. Bár a szállítás sajnos elég drága. -
Janos250
őstag
válasz
lanszelot #20424 üzenetére
Kíváncsiságból megnéztem ez a MultiFuncShield-et.
Sikerült olyan példát találnod, amire azt írják, hogy ÍGY NE!
Itt is leírták már párszor, hogy az isrCallBack() legyen a legrövidebb. Erre itt egy példa, ami mindent vizsgál, mindent csinál az ISR-ben. Persze, szegény ember vízzel főz, szegény kontrollerhez bonyolult szoftvert írunk, de a mai kontrollereken azért ennél már többet tudnak a hardverek, nem kell így csinálni.
Továbbá, ha már így csinálták meg, illet volna egy olyan függvényt beletenni, ami lekérdezve megmondja, hogy befejeződött-e az előző feladata, azaz jelen esetben beep-je, hiszen ez az ISR rutin a dolog jellegéből adódóan nem reentrant, azaz nem olyan, hogy futás közben egy másik szál megszakítsa, és újra elkezdje végrehajtani, majd miután ő befejezte, visszakerül a vezérlés az eredetire.
Itt persze alapfilozófiák ütköznek: mivel kezdjen a kezdő? Egyszerű, régi kontrollerrel, vagy modernebbel. Persze - némi artistamutatvánnyal - a régin is megcsinálható hasonló dolog, mint a korszerűbbön, de ez holt tudás lesz, mert idővel úgyis korszerűbbre áll át.Gimnázium első osztályában politechnika órán én is készítettem fémfűrésszel, és kézi reszelővel kalapácsot. Akkor ez egy alapnak számított. Ma inkább azt mondanám, hogy szívatás volt. Még kb 20 évvel ezelőtt is hallottam valakitől, hogy volt, ahol még akkor is csináltatták. Meg lehet persze így is csinálni, de CNC géppel könnyebb.
Én annak a híve vagyok, hogy kezdő is a korszerűbb dolgokkal kezdje, hogy ne holt információkat tanuljon meg, mint ez az interrupt kezelés a MultiFuncShield programjában, mert soha nem fogja így csinálni a későbbiekben. Ha csak nem mazochista.
-
Janos250
őstag
Köszi, azt hiszem, valami ilyesmi lesz. Ilyen DC/DC-m van pár, de nem is kell a 3 potis, elég az 1 potis is, mert pl. áramkorlát nem kell.
Vagy tényleg 3 potis, és akkor az "indokolatnul nagy kondi", egy Li akku lesz, ami állandóan rajta lesz a töltőn, és az áram lekapcsolásakor is működik egy darabig.
Egyébként egy riasztó része lesz.
A mai "olcsó" kínai kamerák zöme is tudja az emberi alak felismerést, valamint nem csak mailre, hanem riasztó szerverre is tud küldeni egy karaktersorozatot TCP-n.
Ez a szerver egy ESP32 + SIM800 lesz, ami megcsörgeti a zsebemben lévő (buta) telefont, amivel telefonálni szoktam. Nem veszem fel, mert akkor ingyenes.Erre előveszem a táskából az okostelefont, bekapcsolom, és megnézem neten a kamerát, hogy a sok gyerek közül melyik az, amelyik megint le akarja verni kalapáccsal a vasszekrényről a lakatot.
-
Janos250
őstag
válasz
Tomika86 #20398 üzenetére
Az a gondom, hogy nem tudom, elég stabil-e hozzá a DC/DC. Régebben is említett itt valaki aggályokat, hogy inkább LDO-t használ. Nekem is van olyan tapasztalatom, érzékeny hőmérséklet mérésnél a DC/DC nem jó.
LDO-hoz létezik valami olyan buhera, hogy 4V-ot hozzak ki belőle? -
Janos250
őstag
ESP32 + SIM800
ESP32 3.3 V, azzal nincs gond, de a SIM800 az 4V-os, és nem megy 3.3-ről, az 5V-ot meg nem bírja el. Viszont STABIL, és 2A (peek) kell neki. Ezeket Li akkukhoz illesztik, de én nem akarok akkut pluszba betenni.
Kinek milyen ötlete van, hogyan csináljak lehetően egyszerűen 4V, 2A-t? LDO-t nem találok 4V-ra, pedig az volna a legegyszerűbb.
DC/DC elég stabil ehhez vajon? -
Janos250
őstag
válasz
fpeter84 #20364 üzenetére
Korábban én is terveztem ilyet csinálni, de - mint sok más - ez is csak terv maradt. A fő ok az volt, hogy sikerült Aliról olcsón olyan csatit beszereznem, ami legálisan működik a laptopra tett szoftver ingyenes verziójával. A legfontosabbakat kiírja, de egy részének csak a kódját, szövegben nem, de az meg a neten megtalálható.
Így elült a projekt, de érdekel, mire jutsz vele! -
Janos250
őstag
válasz
lanszelot #20315 üzenetére
Esetleg ezt is érdemes lehet megnézni, bár nem egy túlkommentelt program.
https://prohardver.hu/tema/arduino/hsz_9926-9926.html -
Janos250
őstag
válasz
lanszelot #20306 üzenetére
Én úgy gondolom, olyan nincs, hogy kétszer egymás után ugyanaz a csatorna változzon úgy, hogy közben a másik nem változik.
https://howtomechatronics.com/tutorials/arduino/rotary-encoder-works-use-arduino/ -
Janos250
őstag
Én már nagyon rég használtam rotary encodert, de én úgy emlékszem, hogy a pergést nem idővel, meg ilyesmivel küszöböltük ki, hanem a változást csak akkor szabad változásnak tekinteni, ha nem ugyanaz a csatorna változik, hanem a másik. Ez kiküszöböli a pergést.
Vagy valamit nagyon rosszul értelmezek? -
Janos250
őstag
válasz
Wolfram #20199 üzenetére
"Hogy lehet ESP32-n nanosecond-ot /system_get_time()/ dátummá alakítani? "
Az biz' macerás lesz!
1. a 80 Mhz-es perifériális órajelet számlálja (ha az, amire én gondolok)
2. időnként túlcsordul -> átfordul
3. tudni kell valami kezdő időpontot, onnan tudod számolni
Én régen így oldottam meg, lehet, ha ma újra használnám, már másként csinálnám:
http://arduinouser.hu/esp32/ccount/ccount.txt
Ez persze csak a túlcsordulást/átfordulást kezeli, ettől még nem lesz dátum.Elvileg ez létezik, de még nem próbáltam
std::string s = date::format("%F %T", std::chrono::system_clock::now()); -
Janos250
őstag
válasz
Wolfram #20171 üzenetére
Ezért nem használom én a többféle http fv. egyikét sem. Mivel egyszerű, magam írom meg hozzá kezelést.
Ha minden kötél szakad, akkor be kell tenni a fv-t a .ino mellé, esetleg át is nevezni, azt includolni, mert abba akkor tehetsz magadnak átmenetileg kiíratást, hogy mi a nyűgje.
Az ESP32 16 darab klienst tud kezelni. Nem forduhat elő, hogy többet nyitsz meg, mert még a régiek is élnek, mert nem kaptak választ?
Nincs benne olyan lehetőség, hogy csak akkor get-elj, ha van is ot valaki, aki várakozik?
Próbáld meg kiíratni az FD-jét, ha túlszalad a 63-on, akkor ez a baj. -
Janos250
őstag
válasz
lanszelot #20035 üzenetére
Ne delay-el old meg, hanem egy max6675 olvasás után tárold el a ms értéket, és csak akkor olvass, ha az aktuális ms, és a letárolt közti különbség nagyobb egy megadott értéknél. A gomnyomást meg állapotban tárolhatod, és ha állapot is, ms is jó, akkor alvasol.
Ha egyszer átállsz ESP32-re, akkor ez egyszerűbb lesz. -
Janos250
őstag
Kíváncsivá tettetek ezzel az attiny85-el :-)
Srácok, ez drágább, mint az ARM bluepill!
https://vi.aliexpress.com/item/1005003169244854.html -
Janos250
őstag
Én annak idején a pointerekbe keveredtem bele, és el is hajítottam a C könyvet. Szerencsére a C++ -ban már kevesebbet kell használni. Igyekszem is - ha csak egy mód van rá - elkerülni a pointereket. Mivel pointer = tömb, így van is rá lehetőség. A tömb neve a pointer, a tömb[index] pedig a pointer + index. Ahogy a pointernek bármilyen - értelmes - értéket adhatunk, ugyanúgy a tömböt is rádefiniálhatjuk bármire, pl. akár a processzor perifériáinak hardver memóriájára is, akár többféleképp is, hogy ha úgy tartja úri kedvem, akkor uint8_t - ként, vagy uint32_t -ként érem el. Ugyanez megoldható a struktúrával is, az is bárhova definiálható a memóriában, bármilyen más néven használt mezőre is.
Sokkal kisebb a hibalehetőség, mint pointerezni. Mindamellett arra se kell vigyázni, hogy a new által létrehozott felszabadításra kerüljön, mert másként, idővel baj lesz. (Bár ezt már az okospointerek tudják, hogy felszabadítják.) -
Janos250
őstag
válasz
Janos250 #19828 üzenetére
Nem tudom, mennyire érthető, mert a sajátot az emberfia nem tudja megítélni, de itt
https://prohardver.hu/tema/arduino/hsz_19675-19675.html
próbáltam írni egy demót.
Más, persze, de van egy input. Igaz, hogy az is range, de input<input type="range"
.
.
.
onchange="servernekElkuld('F',this.value)"
>
servernekElkuld= function(keszulekKod,mitKuldErtek) {
var futesXML = new XMLHttpRequest();
futesXML.open("GET", keszulekKod+"="+mitKuldErtek, true);
futesXML.send();
}
Ezzel valami ilyesmi érkezik meg
GET F=26 ...... -
Janos250
őstag
válasz
Tomika86 #19820 üzenetére
Nem ástam bele magam az ESPAsyncWebserver rejtelmeibe, nem is tervezem, mert én szeretem "gyalog" megoldani a dolgokat.
Ennek ellenére - mivel a kíbicnek semmi sem drága - azért leírom, hogyan próbálnám
Én így próbálnám meg:t.open("GET","/nextion_update",true)
t.send()
vagy:t.open("GET","/nextion_update="+e.target.result,true)
t.send()
bár annyira nem bogarásztam végig, mi az a e.target.result, gondolom valami érték, amit küldeni akarsz. -
Janos250
őstag
válasz
gordonfreemN #19751 üzenetére
Én úgy gondolom, hogy azokat a kódokat, ami még valamikor valakinek hasznára válhat a rá kapott magyarázatokkal együtt, azokat érdemes ide berakni. Nem kép, ami rengeteg helyet foglal, hanem szöveg.
-
Janos250
őstag
válasz
Blasius #19716 üzenetére
Én nem látok benne hibát. Viszont most döbbentem rá, hogy én a Serial.begin után mindig teszek egy delay(1000)-t, de már fogalmam sincs, miért.
Valami itt van róla:
https://forum.arduino.cc/t/delay-for-serial-print/954782
Nem látok benne kivetni valót, én legfeljebb az if-eket Case-el oldottam volna meg, mert az jobban áttekinthető, de ugyanarra fordítódik. -
Janos250
őstag
válasz
Blasius #19708 üzenetére
Bocs, nem tudom milyen kontrollert használsz. ESP32-n lefordul.
A volatile azt jelenti, hogy ha egy változót nemrégiben használt a processzor, akkor annak a tartalma a cache-ben van még, és ha nincs volatile, akkor onnan kivehető. Ha van volatile előtte, akkor minden egyes használatkor az eredeti helyőről kell beolvasni. Ez akkor létszükséglet, ha "valaki más " (pl. másik szál, interrupt) is változtat a változó értékén. Ilyenkor lehet figyelni pl. arra, hogy ha egy vektorba rakjuk az értékeket, és a foglaltságot növeljük, akkor mi történik, ha a kettő között kéri a program (pl. interrupttal) valamelyik értéket. A legősibb, hogy addig letiltjuk az interruptot, a korszerűbb meg a mutex, hogy nem engedjük, hogy másik szál használja.
Amit linkeltél, ott nem látok bajt a sorrendiséggel, vagy párhuzamos hozzáféréssel. -
Janos250
őstag
-
Janos250
őstag
"Mi az a 24"
Kétféle mask megadás terjedt el:
Az egyik (eredeti), hogy a mask 32 bitjében az első valahány bitet "folyamatosan" 1-re, az utána következőket pedig 0-ra állítod. Ezt használja pl. a windows
Másik, hogy /valamennyivel adod meg, hogy a mask első hány bitje egyes. A UNIX alapú rendszerek ezt használják, és ez persze jobb, mert nem lehet pl. a maskban mondjuk 50-et megadni, bármilyen kezdő is hálózat témában az illető.
A szabály a következő:
Van a Te IP címed, és van az, akivel dumálni akarsz.
A maskkkal mindkettőt bitenként logikai ÉS-eled. Azaz mindkettőben kinullázod azokat a biteket, ami a maskban 0.
Ha az így kimaskolt két cím "maradéka" megegyezik, akkor ugyanazon az alhálón, "dróton" van a két eszköz, azért küldesz egy broadcast (mindenkinek az alhálón szóló) üzenetet,
amivel megkérdezed, hogy kié az az IP cím. Ha valakié, akkor az válaszként elküldi a MAC címét, mert az alhálón nem IP, hanem MAC szerint kommunikálsz majd.
Ha senki nem válaszol, akkor levonod azt a következtetést, hogy nincs ilyen bekapcsolt gép -> hibajelzés. Ha valaki válaszolt akkor az küldi a MAC címét, és indulhat MAC cím alapján a kommunikáció. Ha a két maszkolt cím nem egyezik meg, akkor a gatewaynek (kapu a világ felé) kell küldened, és az ő dolga, hogy megkeresse, hogyan tovább, mert akkor az az állomás nem a Te alhálódon van.
Régen, amikor még nem a csillagpontos topológiát használtuk általánosan, hanem a busz topológiát, ott egyetlen koax kábelre voltak sorban felfűzve a gépek, akkor az szemléletesebb volt, mert akkor ami egy kábelen volt, az volt egy alháló.
Aztán, mivel egy gépen több alkalmazás is csatlakozhat a nethez (pl. két megnyitott Firefox), valahogy meg kell különböztetni, hogy ami válasz jön, az melyik FF-hez menjen. Ehhez az állomásod egyetlen IP címét még "kiegészíted a gépen belül még 2 bájttal", ennek a neve a port, amit a PHP átnevezett, ha jól emlékszem sessionra. Hogy kevesebben értsék meg, miről is van szó.Mivel az IPv6 már rengeteg IP címmel dolgozik, ott már az egy gépen belül is jut mindenkinek külön IP, ezért az IPv6-ban nincs port.
-
Janos250
őstag
válasz
Blasius #19703 üzenetére
Ennyiből nem látom át, de nem az a baj ugye, hogy "máshol is elérhetõ kell hogy legyen:", nincs volatile, hogy ne optimalizáljon a fordító?
volatile char receivedChars[numChars];
Továbbá - nem tudom mitől receive, tehát valahonnan jön - ahhoz is kellhet idő. Ehhez viszont Aryes javaslata a megoldás -
Janos250
őstag
válasz
vargalex #19681 üzenetére
Offba teszem, mert hosszú lett. Amit feltétlenül jegyezzen meg mindenki, ha ezt elolvassa: kizárólag a saját hálód adatai alapján állítsd be a címeket!
"A subnetben a 0 nem véd ki semmit"
De! Kivéd.
Tételezzük fel, hogy megjött kettő darab vezetékes IP kamerád a kici óccóktól.
Ha szerencséd van, és vagy a rajta lévő címkéról, vagy a netről megtalálod, hogy az egyik IP címe mondjuk 192.168.0.10, a másik meg mondjuk 192.168.1.4.
akkor, ha a routered maskja 255.255.255.0, akkor az vagy a 192.168.1. ..., vagy a 192.168.0. ... tartományt látja, egyszerre mindkettőt nem. Tehát csak az egyik kamerát tudod kezelni, ahhoz, hogy a másikhoz is hozzáférj, át kell állítanod a tartományt a routereden.
Viszont, ha a mask harmadik száma 0, ahogy a példában írtam is, akkor mindkettőt látja, nem kell semmit állítanod a routeren.
Természetesen nem teszünk közzé olyan programot, ahol a user beállíthat pl. 50-et harmadik számként, akkor sem ha véletlenül úgy is működik.
"Utóbbi esetben lesznek olyan IP-k amik eléréséhez az eszközöd nem szeretne a gataway-on keresztül menni."
Természetesen marhaság ilyen maskot használni, de ha valakinek olyan hibbant ötlete támad, mert most látott hálót először, hogy 50-et ad meg, akkor számoljunk egy kicsit. Ha így fejben jól számolom, az 0x32, azaz 0011 00010, és ugyanez igaz az IP-re is. Ha mondjuk a másik IP-d 192.168.50.100, akkor ha a két IP-t maszkorbálod a maszkkal, akkor bizony megegyezik, vagyis nyugodtan belekürtölhetsz a drótba, hogy "hé, fiúk, kié ez az IP, küldje el a MAC címét, mert okosságokat akarok neki küldeni." Ha a keresett IP harmadikja, olyan, hogy nem egyeznek meg, akkor elküldi a 192.168.50.1-re. Persze lehet olyan IP is, amire megegyezik az 50-ben lévő nullák miatt, és akkor vakarhatja a fejét, hogy mit akart ez az ember, aki így szervezte meg a hálót.
Persze, aki annyira ért hozzá, hogy 50-et ad meg mask harmadikként, az egyébként is könnyen bajba kerülhet, mert nem mindenütt a tartomány legalja a gateway, eléggé általános a fordítottja is, hogy a tartomány legtetejét használjuk kijáratnak a világ felé. -
Janos250
őstag
válasz
its_grandpa #19678 üzenetére
Köszi, teljesen igaz, de már nem tudom állítani.
Valóban a routereken a mask harmadik számát általában nem lehet állítani, de ha lehetne, akkor is normális esetben a 255 a logikus, bár én azokon a routereimen, amin lehet állítani, 0-t állítottam be, célszerűségi okokból. De - így első ránézésre, különösebb átgondolás nélkül - úgy tűnik, hogy "véletlenül" 50-el is működne, bár elég idétlen alhálózati szegmensek jönnének ki.
Mellesleg járt már a kezemben olyan router is, ahol az IP harmadik száma egy teljesen idétlen szám volt, de a 0 azt is kivédi.IPAddress subnet(255, 255, IPharmadikSzama, 0)
helyett természetesenIPAddress subnet(255, 255, 255, 0) az általában jó,
de, ha az illető TUDJA, HOGY MIT CSINÁL (!!!!!!), válasszon olyat, ami neki jó.Köszi mégegyszer!
-
Janos250
őstag
Ismét előkerült egy fűtésszabályozási dolog ESP32-vel.
Mivel a jómúltkor megtanítottatok a range slider használatára, átvariáltam egy kicsit, hogy demónak (talán) alkalmas legyen, és felteszem ide. Nem Githubra, vagy egyébre, mert a változók neveit átírtam magyarra. Miért szeretem a kezdőknek szánt demót így csinálni? Azért, mert ha magyar az azonosító, azonnal tudja első rápillantásra is, aki a kezébe veszi, hogy azt a nevet szabadon adhatjuk neki.
Jobbat írni szabad!!!!!
Kicsit hosszú, de - mivel szöveg - talán nem terheli nagyon a memóriát.# define IPharmadikSzama 0 // router fuggo
# define IPnegyedikSzama 30 // olyat, ami nem utkozik massal
#include <string>
#include <WiFi.h>
using namespace std;
// PWM minta leddel
const int ledPin = 2;
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8 ;
const char* ssid = "*********";
const char* password = "*********";
IPAddress ip(192, 168, IPharmadikSzama, IPnegyedikSzama);
IPAddress dns(192, 168, IPharmadikSzama, 1);
IPAddress gateway(192, 168, IPharmadikSzama, 1);
IPAddress subnet(255, 255, IPharmadikSzama, 0);
IPAddress primaryDNS(8, 8, 8, 8); //optional
IPAddress secondaryDNS(8, 8, 4, 4); //optional
char inputCode ;
WiFiServer myServer(80);
uint8_t futesSzazalek ;
const char httpHeaderNull[] PROGMEM = R"=====(
HTTP/1.1 200 OK
Connection: close
)=====";
const char httpHeader[] PROGMEM = R"=====(
HTTP/1.1 200 OK
Content-type:text/html
Connection: close
)=====";
char htmlHeader[] PROGMEM = R"=====(
<!DOCTYPE html>
<html lang = hu >
<head>
<meta charset="UTF-8">
<title>Minta csuszkára</title>
<style>
.futesContainer {
text-align: center;
}
</style>
</head>
)=====";
char body[] PROGMEM = R"=====(
<body>
<div class="futesContainer">
fűtés százalék: <span id="FutesSzazalek"></span>
<br>
<input type="range"
id="FutesSlider"
min="1" max="99" value="50"
oninput="FutesSzazalek.innerText = this.value"
onchange="servernekElkuld('F',this.value)"
>
</div>
<script>
/*megallas utan az ertek kuldese a szervernek: */
servernekElkuld= function(keszulekKod,mitKuldErtek) {
var futesXML = new XMLHttpRequest();
futesXML.open("GET", keszulekKod+"="+mitKuldErtek, true);
futesXML.send();
}
/*kezdoertek kiiras: */
document.getElementById("FutesSzazalek").innerHTML = document.getElementById("FutesSlider").value;
</script>
</body></html>
)=====";
void setup(void) {
Serial.begin(115200);
delay(2000);
WiFi.begin(ssid, password);
if(!WiFi.config(ip, gateway, subnet, dns, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
Serial.print("Connecting to ");
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Print local IP address and start web server
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());// this will display the Ip address of the Pi which should be entered into your browser
myServer.begin();
// PWM minta leddel
ledcSetup(ledChannel, freq, resolution);
ledcAttachPin(ledPin, ledChannel);
Serial.println("setup lefutott");
} ; // end setup
void loop(void) {
string aktualisSor = "";
char elsoSor[50];
uint16_t karakterszam = 0 ;
uint16_t sorokSzama = 0 ;
unsigned long elozoIdoMilliSec= 0;
const long timeoutIdoMilliSec = 1000; //in milliseconds (example: 2000ms = 2s)
IPAddress tavoliIP ; // = uint8_t tavoliIP[4]
WiFiClient myClient = myServer.available(); // Listen for incoming clients
if (myClient) {
tavoliIP = myClient.remoteIP() ;
// printf("tavoli IP: %d.%d.%d.%d\n",tavoliIP[0],
// tavoliIP[1],tavoliIP[2],tavoliIP[3]);
elozoIdoMilliSec= millis();
aktualisSor = "";
// printf ("aktualisSor1 = %s\n",aktualisSor.c_str());
while (!myClient.available()){
if ( (millis()- elozoIdoMilliSec) > 100 ) {
tavoliIP = myClient.remoteIP() ;
Serial.println(tavoliIP) ;
myClient.flush() ;
myClient.stop() ;
printf ("megszakitva\n");
return;
} ; // if ( (millis()- elozoIdo) > 100 )
} ; // while (!myClient.available())
while (myClient.connected()
&& ( (millis() - elozoIdoMilliSec) <= timeoutIdoMilliSec) ) {
if (myClient.available()) {
karakterszam++ ;
char c = myClient.read();
// Serial.print(c);
aktualisSor += c;
if (c == '\n') {
if (aktualisSor.length() == 0) {
break;
printf (" ures sor \n");
}
else {
sorokSzama++ ;
if ( sorokSzama == 1){
aktualisSor.copy (elsoSor, aktualisSor.length(), 0);
elsoSor[aktualisSor.length()] = 0 ;
};
aktualisSor = "" ;
} ; // end else (if(c == '\n'))
} ; //end if (c == '\n')
} ; // if (myClient.available())
} ; // while (myClient.connected()
inputCode = elsoSor[5];
switch (inputCode) {
case ' ':
printf("IP: %d.%d.%d.%d bejelentkezett, vagy frissített\n",tavoliIP[0],
tavoliIP[1],tavoliIP[2],tavoliIP[3]);
myClient.println(httpHeader);
myClient.println(htmlHeader);
myClient.println(body);
break;
case 'F':
char futesSzazalekChar[2] ;
futesSzazalekChar[0] = elsoSor[7];
futesSzazalekChar[1] = elsoSor[8];
futesSzazalekChar[2] = 0; // terminator
futesSzazalek = stoi(futesSzazalekChar);
myClient.println(httpHeaderNull);
printf("kuldo IP: %d.%d.%d.%d\n",tavoliIP[0],
tavoliIP[1],tavoliIP[2],tavoliIP[3]);
printf (" F=%d\n",futesSzazalek);
// PWM minta leddel
futesszabalyozasMinta () ;
break;
default:
printf (" ismeretlen jott, valami hiba van\n");
break;
}; // end switch (inputCode)
myClient.flush();
myClient.stop();
while (myClient.available()){
delay(1) ;
}; // while (myClient.available())
} ; // if (myClient)
delay(50);
} ; // end loop
void futesszabalyozasMinta (){
// PWM minta leddel
ledcWrite(ledChannel, futesSzazalek/100.0*255);
} ;
-
Janos250
őstag
válasz
lanszelot #19597 üzenetére
Én is a PID szabályozást javasolom, ha van rá energiád.
Ha nincs, akkor csinálhatsz "fapados PID" :-) szabályozást kézzel.
P: arányos, azaz, amikor még távol vagy a célértéktől, akkor erősen fűtöd, majd amikor közeledsz, akkor már kevésbé
D: derivált, azaz, ha azt látod, hogy gyorsan melegszik, akkor egy kicsit lassabban fűtöd, mert másként nagyon túlszalad
I: integrál, célértéktől való eltérések összegzése, mondhatnám átlag. Ha azt látod, hogy folyamatosan egy kicsit a célérték alatt van, akkor egy kicsit jobban fűtöd, vagy fordítva.
Nézd meg az alábbi ábrákat, ha érdekel az elmélete:
https://www.eet.bme.hu/~mizsei/mikrorejegy/The%20MEMS%20Handbook(Complete)/0077_PDF_C12.pdf
12.7, 12.10 ábra
Az SSR az "bedobozolt" triak, biztonsági szempontok miatt inkább azt használd, mint a meztelen triakot! Jól nézd meg a típusát, hogy milyen a vezérlő fesz, mert többféle létezik.
Mellesleg, vigyázz a 240 V-os fűtéssel, mert a 240 nagyot tudni ütni!Nekem, amikor kicsit módosítanom kellett egy készüléket, ahol a fűtés 240-ről toroid trafóval volt megoldva, és 80-100 V körül működött, azt mondtam, hogy 48 V fölött nem vagyok hajlandó bármiféle változtatást csinálni rajta, mert olyan szépen süt idekinn a nap, benn a rács mögött meg nem.
Vettem Aliról egy 240/48 V AC/DC tápot (bár erről is a Highway to Hell jut az ember eszébe), középen megcsapoltam a fűtőszálat, így már 48V is megtette a magáét. FET PWM-mel vezérelem. -
-
Janos250
őstag
IRLB4030, ha nem fake-et küld a kis kínai.
Én használom őket, tényleg igen jók, de kaptam már olyat is, ami félig nyitott ki, zárt le, és olyan forró lett, hogy megégette az ujjam. Mindkét fajtát Aliról, de sajnos már én sem tudom azonosítani, melyik eladó küldött jót, pedig még nekem is kellene. Vannak akik több ezer Ft-ért árulják darabját, de én párszáz forintosakat vettem, abban i van tökéletes. -
Janos250
őstag
válasz
Wolfram #19320 üzenetére
Nincs ez elbonyolítva.
Hirtelenjében ezt hoztam össze.
Ha erre gondoltál használd, ha nem, majd valakinek valamire hátha jó lesz.#define __cplusplus 201103L
#include <WiFi.h>
#include <WiFiClient.h>
#include <string>
#include <iostream>
#include <fstream> // ofstream
#include <stdio.h>
using namespace std;
#define remoteServerPort 80
//const char* ssid = "*********";
//const char* password = "*********";
uint8_t ServerIPlocal[] {192,168,0,30} ;
uint8_t gatewayIPlocal[] {192,168,0,1} ;
uint8_t subnetIPlocal[] {255,255,255,0} ;
WiFiServer remoteServer (remoteServerPort );
WiFiClient remoteServerClient ;
void setup() {
delay(1000);
Serial.begin(115200) ;
delay(1000);
WiFi.begin(ssid, password );
delay(2000);
WiFi.config(ServerIPlocal, gatewayIPlocal, subnetIPlocal) ;
WiFi.setAutoReconnect(true);
delay(2000);
printf("\nConnecting to %s \n",ssid);
uint8_t i = 0;
while (WiFi.status() != WL_CONNECTED && i++ < 20){
printf(".");
delay(500);
}
if(i == 21){
printf("\nCould not connect to \n",ssid);
while(1) delay(500);
} ;
string strMyURL = "http://"+
to_string(WiFi.localIP()[0])+"."+
to_string(WiFi.localIP()[1])+"."+
to_string(WiFi.localIP()[2])+"."+
to_string(WiFi.localIP()[3])+":"+
to_string(remoteServerPort)
;
printf("My URL: %s \n",strMyURL.c_str() );
uint8_t ip[]{192,168,0,33};
String valasz = httpGet((IPAddress)ip) ;
Serial.println(); Serial.println(); Serial.println(); Serial.println();
Serial.println("ez a valasz:");
Serial.println(valasz);
} // end setup
void loop() {
} ; // end loop
String httpGet(IPAddress ip){
const char GET_HTTP[] PROGMEM = R"=====(
GET / HTTP/1.1
)=====";
uint16_t idozites ;
String reply ;
WiFiClient remoteServerClient ;
if (!remoteServerClient.connect(ip,80)){
return "no connect";
Serial.println ("connect hiba");
} ;
// Serial.println ("connected");
remoteServerClient.println(GET_HTTP);
idozites = 0 ;
reply = "" ;
while (
remoteServerClient.available() ||
(idozites++ < 500)
) // rxBuffer->available()
{
if (remoteServerClient.available()){
char c=remoteServerClient.read();
idozites = 0 ;
reply += c ;
// printf("%c",c);
}
else{
delay(1);
}; // if (remoteServerClient.available())
} ; // end while (remoteServerClient.available())
// printf("\n");
remoteServerClient.stop(); // _rxBuffer = NULL; _connected = false;
// Serial.println();Serial.println();Serial.println();Serial.println();
// Serial.println("Ez a string");
// Serial.println(reply);
return reply ;
};
-
Janos250
őstag
Lemaradt a végéről egy l betű .html
https://www.aliexpress.com/item/4000921549839.htmlÉn még ezt is néztem:
https://www.aliexpress.com/item/32362570829.html
A kiskocsihoz a felsoroltak valóban nem kellenek, de hátha egyéb (is) megfogja őket.
Megnézni telefonon, hogy hány fok van a garázsban/nyaralóban, vagy akárhol, meg hasonlók.Én most szedtem szét pár db. kidobott szkennert, abban van léptetőmotor komplett mechanikával, bordásszíj, meg CNC minőségű tengely, két csapággyal. gondolkodom, mit lehetne vele csinálni. Gondoltam gravírozóra, de egy kék lézeres garvírozóm van, azt se igen használom. Meg egyébként is a lézer fej a drága hozzá.
Lehetséges, hogy a laborba az egyik méréshez egy "adagoló" lesz, ami a fecskendőből (oltótű) adott sebességgel nyomja be a reaktorba a lötyit. -
Janos250
őstag
Még azt elfelejtettem, hogy léptetőmotort mindenképpen érdemes kipróbálni. Ahhoz - talán - a legolcsóbb driver az A4988
https://www.aliexpress.com/item/1005004382046335.html
Elég jó leírások is vannak hozzá, pl:
http://www.energiazero.org/arduino/howtomechatronics.com-Stepper%20Motors%20and%20Arduino%20%20The%20Ultimate%20Guide.pdf -
Janos250
őstag
Például:
Valami ilyesmit mindenképpen:
TZT Breadboard 830 Point PCB Board MB-102 MB102 Test Develop DIY kit 1200 Ft
https://www.aliexpress.com/item/1005003080884294.html
és hozzá a 3 féle kábelt:
https://www.aliexpress.com/item/1005004317066197.htmlEzek közül meg lehet válogatni:
67 db. egyszerű szenzor szállítással 5200 Ft-ért.
https://www.aliexpress.com/item/4001287965075.htmlDHT11 Digital Temperature And Relative Humidity Sensor 600 Ft
3.3 V-os (ESP8266, ESP32) és 5V-os (pl UNO) egyaránt jó
https://www.aliexpress.com/item/1207150391.htmlAHT10 AHT20 AHT21 High Precision Digital Temperature and Humidity Sensor (3.3 , 5V)
800 Ft
https://github.com/enjoyneering/AHTxx
https://www.aliexpress.com/item/33014230295.htmlVagy innen is válogathatsz:
Digital Temperature Sensor / Humidity Sensor DHT11 DHT22 AM2302 AM2301 AM2320 MW33
Sensor And Module For Arduino electronic DIY
https://www.aliexpress.com/item/1005001933682381.htmlBMP280 Digital Barometric Pressure Sensor Module 800Ft
https://www.aliexpress.com/item/32346767511.htmlSoil Moisture Hygrometer 600 Ft
https://www.aliexpress.com/item/32666789455.htmlDS18B20 Temperature Sensor 1000 Ft
https://www.aliexpress.com/item/4000143479592.htmlCapacitive Soil Moisture Sensor Module 650 Ft
https://www.aliexpress.com/item/32908693444.htmlTZT NJK-5002C Hall Effect Sensor Proximity Switch NPN 3-Wires Normally Open 1300 Ft
https://www.aliexpress.com/item/1005002329919234.htmlTZT Mini IR Pyroelectric Infrared PIR Motion Human Sensor Automatic Detector 600 Ft
https://www.aliexpress.com/item/1005001438454767.html100pcs /lot Transparent Round 5mm super bright water clear Green Red white Yellow
Blue Light LED bulbs emitting diode F5 vegyes színekben is 1000Ft
https://www.aliexpress.com/item/1005001414503004.html0.96 inch oled IIC Serial White OLED Display Module 128X64 I2C SSD1306 12864 LCD
Screen Board GND VDD SCK SDA 1000 Ft
https://www.aliexpress.com/item/1005003945327969.htmlTM1637 4 Bits / TM1638 / 74HC595 8 bit Digital LED Display Module 7 Segment 0.36Inch
Clock RED Anode Tube Four Serial Driver 1000 Ft
https://www.aliexpress.com/item/1005003945380746.htmlGY-NEO6MV2 new NEO-6M GPS Module NEO6MV2 with Flight Control EEPROM MWC APM2.5 large
antenna for arduino 1600 Ft
https://www.aliexpress.com/item/1005005199337977.htmlTZT 1LOTS 28BYJ-48-5V 4 phase Stepper Motor+ Driver Board ULN2003 for Arduino 1 x
Stepper motor +1x ULN2003 Driver board 1000 Ft
https://www.aliexpress.com/item/1005001414701209.htmlTZT DC 6V 30RPM 200RPM N20 Mini Micro Metal Gear Motor with Gearwheel DC Motors
GA12-N20 1600 Ft
https://www.aliexpress.com/item/1005002652046953.htmlDC 12V Electric Brushless DC Motor High Torque Gear Motor Geared Box S30K Reduction
Motor 14RPM 2 Wires for Electronic Toys Fan 1600 Ft
https://www.aliexpress.com/item/1005004582663682.htmlLIS3DSH LIS3DH high-resolution three-axis accelerometer triaxial accelerometer
module for Arduino 700 Ft
https://www.aliexpress.com/item/1005004525941005.htmlEgyszerű smart car meg pl:
https://www.aliexpress.com/item/4000921549839.htm -
Janos250
őstag
Ja, az más! :-)
Az a baj a webszerver osztályokkal, hogy van belőlük egy tucat, és ha pár év múlva előveszed a programod, és a nem találod ugyanazt a webszerver osztályt, mert már nem émlékszel, honnan töltötted le, akkor szívás.
Épp a múltkor kellett újra feltennem nulláról az Arduino-t, mert - már nem emlékszem melyik - osztályból volt fenn másik is, és össze-visszakeverte. -
Janos250
őstag
"van kész megoldás, a kliens által küldött változókat a
server.arg("valtozo_neve") egyszerűbben visszaadja, mint hogy a header parse-olásával kellene bajlódni."A WiFiServer osztálynak nincs arg tagfüggvénye.
Viszont nem sokat kell azzal bajlódni, mert szerintem egyszerű.
A kezdő arduinosok kedvéért írok is rá példákat, ha már előkerült. Hátha valakinek valamikor szüksége lesz rá.ablak = elsosor ;
char kod;
uint16_t ertek ;
Ha csak egy paraméter van, és a kód is csak egy karakter:
pl:http://192.168.0.141/k=1
Akkor az első sor: GET /k=1 HTTP/1.1
megoldás:printf("\nkod = %c ertek = %c\n",ablak[5], ablak[7]);
ezt irja ki: kod = k ertek = 1Ha csak egy paraméter van, de az eredmény nagyobb szám, akkor ez jó:
például: http://192.168.0.141/t=300
akkor az első sor:GET /t=300 HTTP/1.1
A scanf-nek azt a mintát kell megadni, ami printf esetén ugyanezt írná ki:
megoldás:sscanf(ablak, "GET /%c=%i HTTP/1.1",&kod,&ertek );
printf("\nkod = %c ertek= %d\n",kod, ertek);
Akkor kiirás: kod = t ertek= 300Ha több paraméter van,
pl:http://192.168.0.141/t=300/k=100/x=3
akkor az első sor: GET /t=300/k=100/x=3 HTTP/1.1
Megoldás:while ( (ablak = strchr(ablak, '/')+1) &&
(ablak[-2] != 'P')
)
{
sscanf(ablak, "%c=%i ",&kod,&ertek );
printf("\nkod = %c ertek= %d\n",kod, ertek);
};
kiirás:
kod = t ertek= 300
kod = k ertek= 100
kod = x ertek= 3Természetesen a kiírás helyett azokat az utasításokat kell beírni, amit végre kell hajtani az adott kód, és érték esetén.
-
Janos250
őstag
válasz
Janos250 #19131 üzenetére
Hozzászólok magamhoz.
Mellesleg nem csak ez, hanem a többi oldal is érdekes.
Például az teljes Arduino tanfolyam.
https://megtestesules.info/hobbielektronika/arduino.html -
Janos250
őstag
válasz
tibi-d #19125 üzenetére
Talán ez a lap segít.
Sok minden van benne, lépésről lépésre tárgyalja a web szervert, és a html-t, végén még AJAX is van.
ESP8266-ra csinálja, de ugyanez megy ESP32-n is.
Nem mindig a legegyszerűbb végét fogja meg a dolgoknak, de attól még - szerintem - jól használható kezdésnek.
https://www.cspista.hu/2020/arduino20_16.pdf -
Janos250
őstag
válasz
daninet #19126 üzenetére
Először tanulja meg példákon a html-t, mert ha nekiáll html előismeretek nélkül AJAX-ot tanulni, úgy elhajítja, hogy az életben többet elő sem veszi.
Nekem már volt némi html ismeretem, amikor AJAX-ot kellett használni, de vagy tízszer kérdeztem itt a srácoktól.Maradjon egyelőre annál, hogy frissítéssel jön az új adat az oldalra.
-
Janos250
őstag
válasz
tibi-d #19115 üzenetére
Na, akkor html-t kell apránként megtanulni.
Ebben én nagyon gyenge vagyok, nekem is itt szoktak segíteni.
Szerintem kezd el apró lépésenként.
Elsőként rakj ki gombokat, amik valamit a ESP-n csinálnak, pl. ledet ki/be kapcsolnak.
Például az Arduino IDE példáiból ezzel:
Fájl/Példák/ESP32 Dev module/SimpleWiFiServer
Aztán lehet menni lépésről lépésre, megtanulni a HTML alapvető elemeit.
Ebben a témában pl. Aryesnek van nagy gyakorlata. -
Janos250
őstag
A kérdéséből ítélve, lehet, az is túl bonyolult.
Lehet, hogy kihagyva a hibakezeléseket, egyszerűen sor olvasássalWEBserverClient.readStringUntil('\n')
beolvasni a tablet böngészőjéből érkező sorokat
például PC Firefox ezt küldi:GET /?t=125 HTTP/1.1
Host: 192.168.0.140
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: hu-HU,hu;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflateConnection: keep-alive
Upgrade-Insecure-Requests: 1Ha vezérelni akar, akkor ki tudja szedni azt, amit a hívásban
(pl: http://192.168.0.140/?t=125)
odaírt, és megcsinálja, amit akar.
Vagy a lapra gombokat, stb. rak, miegymás.
Lehet, holnap - ha nem jut addig előbbre - írok egy egyszerúbbet. -
Janos250
őstag
-
Janos250
őstag
válasz
Wolfram #19036 üzenetére
OK. Én azért tekintettem fölötte lévőnek, mert http nélkül nincs websocket, és én eddig mindig a weblapra írásra használtam, miután itteni kollégák megtanítottak rá, hogy ezt jól lehet használni. :-)
Mivel a WiFi szerverre , és kliensre ül rá, közvetlenül azok is használhatók, de ahhoz nincsenek úgy készen a dolgok, mint a websockethoz.
Mellesleg, ha nem szakítod meg a kapcsolatot, a sima szerver is tud kérés nélkül küldeni. Most hirtelen nem jut eszembe, de valaki leírt egy konkrét esetet, ahol a szerver lesi a klienseket, és ha bármelyik ír, mindenkinek elküldi, hasonlóan az MQTT-hez. -
Janos250
őstag
válasz
tibi-d #19035 üzenetére
"a tableten állapot megjelenítést kellene létrehozni."
Ezért lenne előnyös a websocket, mert az közvetlenül a WEB lapra tud írni. Ha másodpercenként kellene újra felépíteni a kapcsolatot, az nem lenne előnyös. Van persze más is, ami nem szakítja meg a kapcsolatot, de ez a legegyszerűbb, vagy legalábbis legelterjedtebb.
Vagy esetleg AJAX, de inkább websocket.
A http fejlécében normál esetben ott van, hogy szakítsa meg a kapcsolatot. -
Janos250
őstag
válasz
tibi-d #19032 üzenetére
Az androidos telefon nekem a táskában van kikapcsolva, és csak ha GPS, vagy net kell, akkor veszem elő, ezért arról nem tudok nyilatkozni.
A TCP önmagában elég gyors, de ha minden egyes forgalmazás után megszakítod a kapcsolatot, és mindig újra építed, az lassú. Ezt csinálja a TCP-re épülő http.
Ezért raktak a http fölé még egy réteget, hogy ne szakítsa meg a kapcsolatot, hanem tartsa fenn. Ez a websocket.
UDP gyors, de nincs ellenőrzés, hogy megjött-e az adat, vagy valaki útközben lenyelte.
Ha simán felépíted a WiFi-re épülő kapcsolatot, és nem szakítod meg, hanem fájlként írsz rá, olvasol róla, bármelyik C, C++ file-kezelő utasítással, akkor az - nekem úgy tűnt - elég jó sebességű.
WEB lapra írásnál nyomtatható karakterek kellenek, tehát bináris adat egyszerű átvitelénél WEB lapra, akkor base64 kódolás kell, ami 3 bármilyen byte-ból csinál 4 nyomtathatót. A túloldalon meg vissza. -
Janos250
őstag
válasz
JozsBiker #19009 üzenetére
Én nem vagyok villanyász, és nem is értek hozzá, de én már az elején elakadtam. Az elveknél!
Ha egy trafó primer árama megy keresztül a kütyün, és a szekunderen semmi nincs, akkor rohangál ott áram? De még mennyire! Teljesítmény? Nulla.
Elvi kérdés, hogy akkor milyen értéket akarunk kapni? Nullát, vagy nem nullát. Nem tudom, a lakatfogó ilyen esetben mit mér. Mert ha tisztán ohmikus a terhelés, akkor OK, de ez nem mindig van így. Pl. fúrógép. -
Janos250
őstag
válasz
rita7107 #18989 üzenetére
Nem nagyon tudok igazán jó leírást :-(
Azt hiszem, az a legjobb, amit Aryes javasolt, hogy csinálni.
Én talán itt kezdeném:
https://myhomethings.eu/arduino-ide-a-szoftver/
Itt lépésről lépésre mennek, és már a legelején van eredmény, mert villog a led. :-)Persze először telepíteni kell a keretrendszert. Ehhez jó leírás:
https://www.tavir.hu/tipp-arduino-telepitese-i-a-keretrendszer/
Régebben voltak szabadon használható, és jó leirataik, de ezek - azt hiszem - már csak tanfolyamhoz kapcsolódnak.
Mindenesetre van, ami pl. az elektronikai alapokhoz elérhető:
https://www.tavir.hu/egyszeru-elektronika/Be kell szerezni egy lapot. Azt hiszem, leginkább az Arduino UNO lappal érdemes kezdeni, de nem több ezerért megvenni, mert van egyezerért is. Nem mintha ez volna a legjobb lap, de ez volt a legelső, a leírások is erre alapoznak. Igaz ugyan, hogy az Arduino lényege, hogy - némi megszorítással - ami az UNO-n megy, az bármi máson is megy, de egy teljesen kezdőnek, ha nem az van odaírva, hogy A5, hanem, hogy GPIO5, akkor megáll a tudomány.
Könyvet nemigen tudok, ami kezdőnek jó, mert elindul olvasni, és még az 50. oldalnál is ott tart, hogy egységbe zárás, öröklés, meg polimorfizmus, amiről gőze nincs, hogy az mi. Azt majd ráér jóval később tudni.
Persze jó, ha van valaki elérhető távolságban, akinek át lehet kiabálni a másik szobába, hogy hé, ezt hogyan kell? Ez az Antarktiszon nehezebb, de egy kis faluban sem olyan egyszerű, mint mondjuk egy nagyobb városban, vagy Pesten.
Tehát a sok szöveg lényege:
Én azt mondom, telepítsd, és szerezz be - akár valakitől használtan, aki már túllépett rajta egy UNO-t, és írd rá a programokat, és úgy tanuld. -
Janos250
őstag
válasz
Wolfram #18976 üzenetére
Én fenyőgyantát használok. Vagy csak magában, vagy alkoholban feloldva. És persze gyantás ónt.
Ha az ember a pákával "jobbról" felmelegíti a lábat, és "balról" a forró lábhoz, ha szükséges, a páka hegyéhez is érinti az ónt, s amikor megfolyt, felemeli a pákát, hogy a felesleget a páka leszedje, akkor szépek, és jók a forrasztások. Én legalábbis így tanítottam forrasztani azokat, akik nálam tanulták. -
Janos250
őstag
válasz
its_grandpa #18953 üzenetére
Kösz, az az a beállítás volt, ahol megszólalt.
Azóta már végigolvastam/próbáltam a beállításokat.
QSPI-t, OPI-t ia, hogy minél mi a jó, és mi megy 120 Mhz-el.
Azt még nem tudom mire fogom használni ennyi lábbal (még jó, hogy nem kell cipő ennek a százlábúnak) meg ennyi memóriával, de ahogy láttam, megkívántam.
Van az úgy, hogy az ember ha lát egy jót, megkívánja. -
Janos250
őstag
Tényleg megy anélkül is! :-) :-)
Viszont a feltöltés után kell az RST.
Majd még a beállításokkal tökölődök, mit, hogyan lehet változtani, és mit okoz.
Sok időm elment azzal, hogy mivel semmit nem írt ki Serial.printtel, azt hittem, nem megy a program.
Neked megy a Serial.print?
Ha igen, hogyan csináltad? -
Janos250
őstag
Ebből rendeltem a jobboldalit.
https://www.aliexpress.com/item/1005004751205589.htmlA driver link:
http://www.wch-ic.com/downloads/CH343SER_ZIP.html
A jobboldali USB-t használtam.
-
Janos250
őstag
Na, volt egy kis időm tökölni vele.
Megy.
BOOT: benyom, tart
RST: be, ki
BOOT: kiArduino IDE: feltöltés
fordítás után tölt, kék led villog
Végén kiírja: "waiting for download"
Ekkor RST megnyomni.
Fut.Tököltem vele egy darabig, míg rájöttem: A Serial.print nem működik, de a többi kiíró utasítás igen. Hogy miért nem, azt nem tudom.
using namespace std;
#include <iostream>
#include <fstream> // ofstream
#define LED LED_BUILTIN
// #define LED 97
void setup() {
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
Serial.begin(115200);
Serial.println("nem mukodik");
Serial.printf("\nSerial.printf nem\n");
cout << "\ncout mukodik \n" ;
printf("printf mukodik \n");
FILE* filePointer ;
filePointer = fopen ("/dev/console","w");
fprintf (filePointer, "\nfprintf /dev/console Hello ESP32S3!\n") ;
fclose(filePointer);
filePointer = fopen ("/dev/uart/0","w");
fprintf (filePointer, "fprintf /dev/uart/0 ESP32S3\n") ;
fclose(filePointer);
std::ofstream myfile;
myfile.open ("/dev/console");
myfile << "\nWriting this to a file /dev/console.\n";
myfile.close();
myfile.open ("/dev/uart/0");
myfile << "Writing this to a file /dev/uart/0\n\n";
myfile.close();
} ; // end setup
void loop() {
ledON();
delay(1000);
ledOFF();
delay(200);
} ; //end loop
void ledON() {
digitalWrite(LED, LOW);
} ;
void ledOFF() {
digitalWrite(LED, HIGH);
} ;cout mukodik
printf mukodik
fprintf /dev/console Hello ESP32S3!
fprintf /dev/uart/0 ESP32S3
Writing this to a file /dev/console.
Writing this to a file /dev/uart/0 -
Janos250
őstag
válasz
Wolfram #18881 üzenetére
Igen, a lényege az. Amikor én néztem, akkor alul az egyéb kínálatban volt egy több mint 7 ezer forintos UNO klón. Erre írtam, hogy én ebből 3 db. ESP32-t veszek. Egyébként ESP32Cam nekem is van, tetszik.
Persze nem egy 10-20-50 ezer forintos kamera, de az árát bőven megéri. Szerintem, de vannak, akik másként gondolják. A fő kifogás az alacsony felbontás, az eléggé "egyszerű" "video" fájl: MJPEG, azaz jpeg képeket küldözget egymás után. Ez egy 25 évvel ezelőtti technika, de van ahol bőven elég, mert helyi hálózaton megy a kommunikáció, mint pl. kaputelefon. -
Janos250
őstag
https://github.com/rpolitex/ArduinoNvs
Az állomás, és a szerver mód mehet egyszerre a megnyitásnál. Az egyik bit az állomás, a másik a szerver.
-
Janos250
őstag
válasz
Wolfram #18822 üzenetére
Ahogy most megnéztem a jo..-on, valóban 50-80 ezer között vannak a használt nyomtatók, Anett A6 már nincs is. Hiába no, infláció volt.
Egyébként csak akkor éri meg nyomtatni, ha saját magadnak csinálod, mert bizony egy ilyen doboz, ha 0.4-es düznivel csinálod, akkor mondjuk 2 óra, de ha vékonyabbal, és vastagabb falvastagsággal, hogy szebb, strapabíróbb, eladható legyen, akár egy nap is lehet. Ezt ha az ember magának csinálja, bekapcsolja, és megy, de bérmunkában ezekkel a régi, viszonylag lassú nyomtatókkal nem érné meg dolgozni.
Mellesleg ez is nagyon közel van az Arduino témához, az alaplapja miatt.
Van FB csoport, akik saját maguk gyártanak maguknak nyomtatót, szintén nagyrészt nyomtatott alkatrészek felhasználásával. Itt persze előjön a tyúk, vagy a tojás probléma.
Egyébként vannak, akik bérmunkában nyomtatnak. Pár éve egy volt kollégám csináltatott egy alkatrészt. Vitte a CAD tervet USB sticken, és kinyomtatták. Az árát óradíj+anyag alapján számolták. Mivel neki elég nagy, tömör alkatrész kellett, erős anyagból, nem lett olcsó. -
Janos250
őstag
válasz
#70211840 #18814 üzenetére
Én 3D nyomtatóval készítem a dobozaimat.
Előnye:
Olcsó. Bármilyen soklyukú, alakzatú formát egyszerű megcsinálni, a siftekkel, és a bennük lévő lyukkal együtt, amibe majd a csavarok kerülnek.. A doboz külsejére a doboz anyagából feliratot is lehet csinálni. Az alapanyag kilója 5-10 eFt, fajtától, bolttól függően, de egy ilyen doboz pár gramm.
Hátránya:
Csak akkor olcsó, ha van saját nyomtatód, és saját magad megrajzold a térbeli mintát valami ingyenes tervező programmal. Egy doboz megtervezése egy óra alatt megtanulható.
Nekem a legolcsóbb, legegyszerűbb, lenézett Anet A8 nyomtatóm van, de ilyesmikre nekem bevált. Használtan már 20-30 ezerért is meg lehet manapság kapni, mert cserélik le az emberek újabbakra, jobbakra. Én még régebben vettem újan, kínai WEBshopból, valahol 40-50 ezer Ft között volt akkor az ára. Az újabbak, jobbak viszont már 150-200 ezer, vagy még több. -
Janos250
őstag
Én is a sodrott pártján állok, mert az nem törik. A merev kábel (fali UTP-ből, kidobott régi telefonkábelekből) régen én is próbáltam használni, de letettem róla, mert nagyon nehezen kideríthető alkalomszerű hibákat okozott, amikor a szigetelésen belül eltört, és hol érintkezett, hol nem. Volt többtíz méter leszerelt, 20 eres telefonkábelem, erre szántam. Aztán inkább kidobtam.
-
Janos250
őstag
Most, hogy a hardware SHA-nál megszivatott az ESP32 egy nem dokumentált bit (DPORT_PERI_EN_SECUREBOOT) miatt, kicsit belenéztem a CLK engedélyezések lelkivilágába. Azt már az RMT-nél is láttam, hogy egyes perifériák csak akkor működnek, ha számukra engedélyezzük a CLK-ot, mert alapból le vannak tiltva, talán energiatakarékossági, melegedési okokból.
Most viszont látom, hogy ez gyakorlatilag az összes perifériára igaz, csak a gyakrabban használt perifériáknál a boot után alapból beállítja a CLK engedélyezést.
Ha valakit valamikor érdekel, a dport_reg.h-ban van róla némi infó.
Korábban itt valaki kérdezte, hogy le lehet-e tiltani a WiFi-t, a fogyasztás csökkentése érdekében. Igen, le. A CLK-ja engedélyezését kell visszavenni. -
Janos250
őstag
-
Janos250
őstag
válasz
Wolfram #18774 üzenetére
Nekem is van/volt egy csomó fake 18650 akkum, olyan is, amire reálisnak tűnő kapacitás volt írva, aztán tudott 250-300 mAh-t.
Jöttek azok mindenhonnan. ebay, Ali, Józsefvárosi Piac, Gyál piac.
Később már csak ilyeneket vettem:
https://www.aliexpress.com/item/32324914059.html
Ezek bírják a 2500-3000mAh-t mérve.
A baj az, hogy nem lehet tudni, melyik eladó milyet fog küldeni.
Amit linkeltem, az nekem jót küldött, de látva ezt a nagy leértékelést, elgondolkodtam, hogy vajon most is jót küldene-e?
Ha meg ilyenkor reklamálgatsz, akkor egy idő után kitilt az Ali. -
Janos250
őstag
Na, ez az év nálam szívatással kezdődött. :-(
setup előtt egy fgv definíciója.
leegyszerűsítve ilyesmi:uint8_t upLoad ( uint8_t valami){
Serial.println("elindult a fgv");
delay(1000);
} ;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println ("setup indul");
delay(100);
upLoad ( 5);
Serial.println ("upload utan");
} ;
void loop() {
} ;
Hol újraindult a fgv. hívásakor, hol meg a fgv. hívása után ráment újra setupra, és végtelen ciklusba került.Hogy én mennyit kínlódtam vele, mire rájöttem, hogy a fgv. egyik logikai ágában lemaradt a return, az okozta a gondot
-
Janos250
őstag
válasz
t72killer #18765 üzenetére
Én továbbra is Aliról rendelek.
Nagy előny, hogy általában futár hozza, ezért nem kell a posta sarcát külön fizetni. Ebay esetén az eladókkal állsz szemben, eléggé kiszolgáltatottan. Nekem megjönnek a dolgok. Régebben sokat rendeltem ebayról, de a mostani VÁM-os dolog ennek betett. Az Ali meg elintézi a VÁM-ot. Volt persze, ami nem teljesen úgy működött, ahogy elképzeltem, de ezt úgy tekintettem, hogy ez a "rezsi". Olyan, mint a villanyszámla. Még így is NAGYON sokkal olcsóbb, mint itthon. Mert megértem én, hogy a kereskedő munkáját is meg kell fizetni, de minek fizessek olyan munkáért, amire nekem nincs szükségem?!
Sajnos sok magyar visszaél a vásárlóvédelemmel, és azt mondja, hogy nem jött meg, és visszakéri az árát. A futárosnál a nyomkövetésnél az is látszik, hogy hány óra hány perckor kézbesítette a futár, így nem lehet bizonytalanság.
Persze mostani rendelésnél iparkodni kell, mert jön az ő ünnepük, és olyankor jó darabig a fű se nő Kínában. -
Janos250
őstag
válasz
ReFleXx #18732 üzenetére
Az ESP32 WiFi-vel kapcsolatban nekem - érthetetlenül - különböző tapasztalatom van. A régebbi példányok teljesen megbízhatóan kapcsolódnak, de egy újabb, USB C csatis, már a vékony fal túloldalán lévő routerhez is csak bizonyos állásban tud kapcsolódni. :-( Lehet, hibás példány, nem tudom, mert abból jelenleg csak egy van.
Új hozzászólás Aktív témák
Hirdetés
- Csere-Beszámítás! RTX Számítógép játékra! I5 13400F / 32GB DDR5 / RTX 4070 Super / 1TB SSD
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32 RAM RTX 5060Ti 16GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Apple iPhone 16, Apple iPhone 16e, Apple iPhone 16 Plus, Apple iPhone 16 Pro
- Steam, EA, Ubisoft és GoG játékkulcsok, illetve Game Pass kedvező áron, egyenesen a kiadóktól!
- LG 48GQ900-B - 48" OLED - 4K 3840x2160 - 138Hz & 0.1ms - G-Sync - FreeSync - HDMI 2.1
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest