-
IT café
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
válasz gazso75 #11198 üzenetére
Pár gondolat így elsőre. Lehet, ezek számodra nem aktuálisak, fogadd kellő kritikával őket.
1.) A TinyGPSPlusban van:
double TinyGPSPlus::distanceBetween(double lat1, double long1, double lat2, double long2)
Miért nem azt használod a
if(abs(prev_lat - gps.location.lat()) < 1 && abs(prev_lon - gps.location.lng()) < 1)
helyett?2.) Az osztály végez kontrollszumma ellenőrzést. Ezek szerint csak azokat a hibásakat veszi át, ami ezen átcsúszik, ezért viszonylag kevés a hibás adat, de a valóságban sokkal több, csak azt nem látjuk.
3.) Milyen kontrolleren (lapon) futtatod? Mert ha egy kicsit korszerűbbön, mint az UNO, akkor nem célszerű a SoftwareSerial, hanem helyette a hardware megoldás.
4.) Milyen GPS modult használsz? Nem tud paritásbittel küldeni? Bár - úgy tudom - a SoftwareSerial nem tud paritásbites olvasást :-(
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
nagyúr
válasz Janos250 #11201 üzenetére
Én nemrég átírtam az esp8266 softwareserial lib-et paritásbitesre.
Egyébként az lesz a hiba, amit DigitXT kolléga írt, hogy akkor is menti a hibás adatot az előző értéknek fenntartott változóba, amikor hibás, ezért ha két hibás adat jön egymás után, az egyik át tud csúszni az ellenőrzésen. Ezen a distanceBetween sem segít, mert ahhoz is el kell tárolni a korábbi értéket.[ Szerkesztve ]
-
Janos250
őstag
"Én nemrég átírtam az esp8266 softwareserial lib-et paritásbitesre"
Én meg a GPS-ekhez ESP32-n hardwareserialt használok, mert nekem nem csak az NMEA adatok kellenek, így rengeteg adatot kell kezelni."Egyébként az lesz a hiba, amit DigitXT kolléga írt"
Láttam én is, azért nem is foglalkoztam ezzel a részével, hanem pár általános gondolatomat írtam le. A distanceBetween nem azon segít, hanem könnyebben kezelhetővé teszi a távolságot, mert közvetlenül méterben adja meg.Viszont, ha jönnek hibás adatok is, akkor esetleg annak az okát (hardware ?) is meg lehetne keresni.
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
DigitXT
félisten
Én most egy NEO-M8N alapú cuccal szöttyögök. (M5Stack) Példaprogram fut:
beltérben picit nehezen talál jelet, de kellő türelemmel megvárható az is. (Csak
rohadt nagy szórással mér ilyenkor, szóval 1-3 km/h körül ülök egy helyben.)Szerk: kint azért jóval pontosabb volt. Bár kevesebb hódot látott, mint a telefon.
[ Szerkesztve ]
-
Próbálok beüzemelni udp szervert a Wemos d1r2-re, de piszkosul nem megy. A saját példája se megy vele, meg amiket találtam a neten, azok se. Még csak a wifi neve se az, hanem amit 3 példával ezelőtt írtam be neki, amikor ap-ként teszteltem. Mi a bánatért nem csinálja? Most például ezzel próbálkozok, de semmi. Ellenőrzés lefut, fel is tölti a lapra. A laptopom szerint meg a telefonom szerint se változik meg a wifi neve, a serial portra se ír semmit.
Eladó Lego: 42139 All terrain vehicle
-
Janos250
őstag
válasz DigitXT #11204 üzenetére
Azon tényleg nincs paritásbit.
Viszont - úgy rémlik - van saját tárolója, ahová logolni tud, ami utólag kiolvasható. Bár lehet, hogy rosszul emlékszem.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
válasz Victoryus #11205 üzenetére
Ezt kiírja a soros monitoron?
"Connecting to WiFi
Connecting…….
Connected to NETGEAR70
IP address: 192.168.1.17"Mert ha a régit írja ki, akkor nem ment fel az új program. A letöltés végén ellenőriz, és ha hibás, akkor marad a régi, nem kapcsol át.
[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
válasz Janos250 #11207 üzenetére
Nem ír ki semmit soros porton. A saját példái között is van udp, de azzal se. Maximum pontokat ír sorosra. A wifi nevét mindig átírom a programban, hogy lássam a változást.
Ami jól működik a wifis példák közül, az ap, ott kiír mindent soros portra is, telefon csatlakozik.
Teszt közben nincs fenn a wemoson semmilyen shield. Első lépésként nekem most elég lenne a beépített ledet kapcsolgatni wifin.
Tcp-s példák mennek rajta, de.elég sok a reakcióideje. Az udp-vel van valami baja. Ha sérült lenne.vagy hiányozna az udp könyvtár, akkor hibát írna ellenőrzés közben nem?Eladó Lego: 42139 All terrain vehicle
-
Janos250
őstag
válasz Victoryus #11208 üzenetére
"Maximum pontokat ír sorosra"
Vagyis próbálja keresni a WiFi-t, de nem találja?
Akkor is tovább kellene mennie.
Próbálj a setup legelejére valami kiíratást, vagy led villogást, vagy valami hasonlót tenni, hogy egyértelmű legyen, elindult-e a program.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Feltettem az udp teszt kódját a pastebin-re.
Ugye jól értelmezem, és a Wemos lesz a wifi AP? A gond az, hogy nem jelenik meg egyik eszközömön se a wifije.
Soros porton szépen teszi a pontokat egymás után másodpercenként.Ami még érdekesség: tcp-s példát is néztem, csatlakoztam a wifijére laptopon, és pingeltem. Elég sok csomagvesztés van. Kb. 10-15 csomag ok, utána 1 ok 1 veszít párszor, majd egy idő után megint 10 jó és így tovább.
A wifi scan példa viszont úgy látom nagyon sokáig fut látszólag normálisan.
Ha csak sima ap-ként ment, akkor bizonyos idő után eltűnt a wifije. 1 perc-2 perc után. Lekapcsolja energiatakarékosságból?u.i.: sta- tehát station mode? Akkor viszont ez piszkosul nem azt csinálja amit én gondoltam. Nekem olyan kéne, hogy a Wemos a wifi AP, az androidos telefon a kliens, és az küldi udp protokollon keresztül a jelet, monjuk RoboRemo appal.
[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
vargalex
félisten
válasz Victoryus #11212 üzenetére
Nem jól értelmezed és ebből adódik a problémád is. A station mode az, amikor egy wifi Access pointhoz csatlakozik az ESP8266. Azaz a kód hibátlanul működik, csak nem tud csatlakozni a megadott SSID-vel rendelkező hálózathoz (mert ugye nincs is).
Az viszont továbbra is érvényes, hogy biztos, hogy nem csak pontokat ír a soros konzolra. Előtte ott kell lenni a Connecting szónak is.[ Szerkesztve ]
Alex
-
-
Janos250
őstag
válasz gazso75 #11215 üzenetére
A BN-250 egy jó modul, sokan dicsérik, és olcsó.
Nekem is van, de még nem próbáltam, mert kiderült, hogy amire nekem kell, arra csak nyögvenyelősen használható részlegesen.
A nano nem egy gyors, korszerű lap. Helyette jobb lenne valamelyik ESP, STM32.
Nem tudom, elég-e a 9600 baud ennyi adathoz.[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
válasz vargalex #11213 üzenetére
Ok, aztán már leesett...
Most kezdem akkor onnan, hogy legyen a Wemos az AP, és legyen rajta sima egyszerű web szerver. Ez most úgy fest működik is: pastebin link
Kiírja soros monitorra amit kell.
Ha pingelem a laptopról, akkor nagyon sok a csomagvesztése. Ez miért lehet? Ennyit bír a lap? A reakcióidők is nagy szórást mutatnak.[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
Beüzemeltem az udp szervert. Az a gondom, hogy vizsgálom a csomag tartalmát, de nem kapcsolja ki/be a ledet a Wemos. A RoboRemo app szépen küldi a jeleket, a soros monitoron látom.
Forrás
Nem egyezik a típusuk? A myData lenne a tömb eleme. 8 byte-os az elemek mérete, de próbáltam 7-tel is, hogy pont olyan hosszú legyen mint a "led_on", akkor se ment.
if (myData == "led_on")
{
digitalWrite(LED_BUILTIN, HIGH);
}
Egyfolytában világít, nem kapcsol ki.[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
Janos250
őstag
-
válasz Janos250 #11221 üzenetére
A sima led villogtató programmal megy a builtin led, Gpio14 egyébként.
De bele se megy egyik if-be se, nem írja ki a 'megjegyzéseim se'.
Maga a myData az egy string nem? Különben hibát dobna az if-nél. Itt most nem tudom hogyan tovább. A soros monitoron kiírja a led_on/led_off szövegeket.Vagy bele kéne tenni minden myData elemet egy tömbbe, és utána tömbelemenként vizsgálni? Csak akkor meg egy idő után nem fog 'betelni'?
A roboremo-s példában valahogy úgy van, hogy mindig feltölt egy 100 elemű tömböt, de nem látom át mit miért csinál... Plusz ott vizsgálja a csomagok első két betűjét a srác. Meg az tcp nem udp.[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
válasz vargalex #11223 üzenetére
Köszönöm, igen, a stringgel volt baja. Ha átkonvertálom int-be akkor végre belemegy a feltételek vizsgálatába. Hát, nagyjából működik, most jönnek a 0-ák maguktól is, ezt még pontosítani kell Bár most lehet azért jön 0, mert az Y tengelyt is küldi a roboremo, és azokat az értékeket veszi 0-nak. Meg végül is felesleges 8 byte, elég lesz 1-2 is.
Megadtam neki végül fixen a gpio 14-et is, mert a builtin nem megy valamiért.
forrás
Halad ez[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
vargalex
félisten
válasz Victoryus #11224 üzenetére
Pontosan milyen boardra build.-eled? Mert ugye a Wemos D1 R2 / mini esetén 2 a LED_BUILTIN értéke.
0 szerintem nem érkezik, csak azért megy bele az if-be, mert üres String esetén a toInt 0-t ad vissza. Így én vizsgálnám a packetSize értékét is.
[ Szerkesztve ]
Alex
-
vargalex
félisten
válasz Victoryus #11224 üzenetére
Most néztem meg igazán az eredeti kódodat. Nem használtam eddig a WiFiUdp könyvtárat, így most néztem utána, hogy a read függvény második paramétere a maximális buffer méretet adja vissza, amin a te kódod végig is ment, így nem egyezett a vizsgálatnál. Viszont a read függvény visszaadja a beolvasott karakterek számát.Valamint UDP-n egy újsor (\n) is érkezik, így ezért sem jó a vizsgálat. Erre módosítottam (a vizsgálatot is átírtam, mert teljesen felesleges egy String-be is bemásolni). Nálam a Wemos R2 mini-n HIGH állásban kapcsol le a beépített LED és LOW állásban világít, de egyébként helyes a LED_BUILTIN értéke.
Alex
-
Breaker
tag
sziasztok,
Arra van jó megoldás hogyha az udp tartalma bináris akkor a hexa vagy int értékét kapjam vissza a bytenak?
char packetbuffer[1048]
-ba olvasom be, es valahogy egyesevel probalom kiszedni de ha pl toInt-et hasznalok akkor mindig 0 a vegeredmeny.
Köszi
üdv
BreakerMSI MPG B550 GAMING PLUS | AMD Ryzen 5800X3D | 32GB Trident RGB G.Skill 3200Mhz | MSI GTX 1080TI ARMOR OC
-
válasz vargalex #11226 üzenetére
Köszönöm!
Érdekes, hogy a LED_BUILTIN a flashelős ledet kapcsolgatja, a gpio14 meg az sck feliratost. Ez jó, mert egyszerre tudok akkor két gombot+adattovábbítást tesztelni. Este nem tűnt fel.
Még most jön a neheze, mert a motorokat is kéne távirányítani. Az biztos, hogy lesz egy dc motor, amivel előre-hátra fog menni a járgány, a kanyarodást még nem tudom. Van servo motorom is, meg van dc motorom is. A dc az pont beillik átépítés nélkül, a servo meg pontosabb ahogy nézem. Egyelőre folytatom a dc motor irányításával. Egy csúszkával akarom szabályozni a sebességét és az irányát. Min érték -255, max 255, 0-val pedig megáll.
Tehát az elképzelés: 3 byte-ot küldene a RoboRemo.
Értékek: -255 - 255 dc motor sebesség, 256 első+hátsó ledek, 257 és 258 index, és a telefon elfordításával kormányoznám, mondjuk 500-600 közötti értékekkel.
Az ingyenes Roboremo 5 funkciót enged, ennyi pont beleférne.Eladó Lego: 42139 All terrain vehicle
-
-
-
válasz DigitXT #11230 üzenetére
Azért lett udp, mert gyorsabban reagál. Ha éppen reagál akkor tényleg... Fél méter sincs a telefon meg a Wemos között. Még esetleg másik wifi csatornával kipróbálom, hátha azért van ennyi csomagvesztés mert az alap 1-es telített. Bár csak 3 van rajta a 20 konkurens wifiből.
Egyébként nem jó az elgondolásom, mert a RoboRemo csúszkánál meg giroszkópnál se sima számokat küld, hanem el kell nevezni legalább egy betűvel az adott 'csatornát'. Szóval ha maradok az enyémnél akkor le kell vagdosni az első betűt, és utána számmá alakítani.
Ha Vargalex javaslatát követem, akkor meg nem tudom a sebességet átküldeni. Csak string-ként tudja fogadni a csomagokat, és utána abból kell kibányászni a számokat.[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
vargalex
félisten
válasz Victoryus #11231 üzenetére
Ha jól értem, akkor lenne egy ilyen szöveg érkezne pl: abc123. Ebből ugye az abc a csatorna neve, az 123 pedig az érték. Ansi C-nél ez azért elég egyszerűen kezelhető (ha tudod a csatorna név hosszát). A korábbi példánál maradva, ha a packetBuffer-be érkezik, akkor ennyi:
int iValue = atoi(packetBuffer + 3);
És így máris int-ként ott van az érkezett érték az iValue-ban.
Alex
-
válasz vargalex #11232 üzenetére
Most látom, hogy írtál egy új megoldást. Köszönöm!
Annyiból összetett, hogy a csúszka, giroszkóp az elé teszi a csatorna nevét, stringet küld, a gombok meg nem, azok float/int adatot küldenek. De akkor azt lekezelem valahogy.
Egyébként nem nagyon értem a packetbuffert. Ha a buffer mérete 4 byte, akkor abba hány karakter fér? Nem 4 hanem 5? Miért 5, mert van 0. eleme is?
Konkrét példa: csatorna neve abc és utána a csúszka ad értéket 0-240 között. A változatlan kódom ekkor lecsapta az abc-t, és átjöttek a számok 0-99 között. De az már 5 karakter hossz.Még egy kérdésem van: a wifi ap nevét, jelszavát, csatorna számát miért nem módosítja, ha átírom a forrásban és újra feltöltöm? kb 20-ból 1x sikerült módosítani, akkor is a példatáras wifi ap programmal, nem ezzel amivel kísérletezek.
[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
A terv az, hogy csinálok hozzá saját androidos távirányítót is. Egyrészt, hogy fejlődjek kicsit, meg érdekel is. Ki kéne próbálni tcp-vel is... van még ebbe sok lehetőség. C-ét sose tanultam, anno még Pascal volt meg Delphi, utána php... meg egy kis JS. Kicsit nem árt beletanulni a C-be is. Átolvasom az udp, tcp, konvertálások referenciáit.
Ki akarom vinni szabadba is a járgányt, jó lenne 20-40m hatótáv.Van egy bluetoothos uno alapú 3 kerekű járművem is, de még nem próbáltam szabadban. Valamikor írtam arról is szerintem, meg kértem segítséget. Mindig szétesik bent is Tudom, össze kéne forrasztani mindent, meg le kéne ragasztani, de akkor meg nem lehet szétszedni.
Ettől a Lego technic kamiontól is tartok, hogy nem lesz elég stabil. Jó kis összetett feladat... A servo motort még nem tudom hova tegyem... már így is totál át kellett építeni, a hátsó motorhoz is. Lehet jobban jártam volna ha eleve a motorokhoz építem a kasznit. DC motorral gondolom nem szoktak kormányt vezérelni. Problémás megoldani, hogy pont csak ~1,7 fordulatot menjen jobbra is meg balra is.Eladó Lego: 42139 All terrain vehicle
-
Nagyjából összeállt a kód Erősen alfa verzió. Egyszer működött kb. Aztán ahogy gázt adtam a dc motornak, a szervo nem ment, a dc meg nem reagált. Van amikor a servo magától zúg, pedig nincs is hozzá csatlakoztatva még a wifihez a telefon se.
Ha bekapcsolom a dc motort, akkor úgy marad vagy el se indul, és nem reagál többet, pedig küldi a telefon az adatokat. A ledek működnek ekkor is. A servo hol megy, hol nem, leginkább nem. Ha megy akkor követi a telefon mozgását, kb 180 fokot fordul.
Külön-külön megy mindkettő a példa progikkal. Valamiért összeakadnak, vagy ilyesmi... Ha valakinek van ötlete, előre is köszönöm...[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
Janos250
őstag
válasz Victoryus #11238 üzenetére
programodból:
"myservo.attach(5,600,2300); //GPIO 5, meg min max, ezt nem értem, de ennyi volt a példában""Writes a value in microseconds (uS) to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft. On standard servos a parameter value of 1000 is fully counter-clockwise, 2000 is fully clockwise, and 1500 is in the middle.
Note that some manufactures do not follow this standard very closely so that servos often respond to values between 700 and 2300. "
https://www.arduino.cc/en/Reference/ServoWriteMicrosecondsEzért kellene tudni, milyen a servo. Mindenesetre én 1000 és 2000 közöttivel próbálnám, mert én még csak olyat láttam.
Már eléggé kavarodnak bennem az infók, de - úgy rémlik - Wemos D1-et használsz. Az viszont ESP8266, de:
libraries/Servo/src/Servo.h - ban ez van:
"This library only supports boards with an AVR, SAM, SAMD, NRF52 or STM32F4 processor."Lehet ez a gond? A servo.cpp interrupttal dolgozik, és az az ESP-nél más.
A servo ugyanis úgy működik, hogy folyamatosan adni kell neki az adott időszélességű impulzust, ami általában 1 és 2 millisec (1000, ill. 2000 microsec) között van. Ha az 1 msec-es inpulzusokat kapja folyamatosan, akkor az egyik végkitérésre áll, ha 2 msec-et, akkor a másikra, 1.5 msecnél meg középre. Olyan állapot undefinit, hogy adok neki egy impulzust, és nem ismételgetem.Más:
Az Arduino "nyelve" a C++, ami magában foglalja a C-t is. Ha tanultál PHP-t, az C++ némi extrákkal.
Tehát, ha a PHP-ból kihagyod a hálózatos dolgokat, akkor az C++, ami már megy az Arduino lapon is (illetve ez nem teljesen igaz, de majdnem). Tehát a C++ -al akarj ismerkedni. Ebben a PHP, Delphi jó alap, mert a filozófiájuk ugyanaz. A pascal is jó, bár abban még nincs objektum.[ Szerkesztve ]
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
válasz Janos250 #11239 üzenetére
Utánanézek a témakörnek. A servo motor sima Aliexpresses sg90.
Megy a servo a példaprogrammal, ahol csak fokokat adok meg, az a része ok.
Udp szerver + roboremoval is megy, kövei a telefon mozgását. De ha a dc motort is használnám, akkor van a gubanc.
Van a wemos r1d2, rajta a motor shield, rajta a sensor shield.Eladó Lego: 42139 All terrain vehicle
-
Kész az alfa 0.5 verzió, működik is végre.
Valóban alacsony volt a feszültség, lemerültek a sok teszteléstől az AA aksik. Meg az a ~6V amúgy se volt sok. Átkötöttem a servo motort a motor shield servo csatlakozására, plusz adtam a shieldnek 3x18650 akkut. A koppcsincs Lego motor megy mint, az állat, pedig még nincs is maxon. Eddig azt hittem ez ilyen kis lassú.. hát nem csak éhes volt. A szervó is megy. Együtt is mennek végre.
Egy dolgot nem tudok még, hogy miért szakad meg gyakran a wifi, és miért nem változik meg sose az ssid/csatorna száma.
Plusz még le kell kezelni a kapcsolat megszakadását is, mert van amikor pont sebességadásnál kapcsol szét, és nem lesz szerencsés ha elszabadul a járgány.Eladó Lego: 42139 All terrain vehicle
-
Breaker
tag
Sziasztok,
A véleményeteket szertném kérni.
Rendeltem ebayrol egy ilyen Li-Po elemet:
Szertnék hozzá töltőmodult , de konkrétan ehhez nem találtam. Szeirntetek ezzel lehet e tölteni:
Ez a "hengeres" 18650-eshez van ugyan, de a charging V megegyezik. Nem tudom mit kell még nézni hozzá, hogy biztonságos legyen a töltés.
Előre is köszi
Üdv
Brekaer[ Szerkesztve ]
MSI MPG B550 GAMING PLUS | AMD Ryzen 5800X3D | 32GB Trident RGB G.Skill 3200Mhz | MSI GTX 1080TI ARMOR OC
-
Melorin
addikt
Sziasztok!
Nano-hoz szeretnék valami kisméretű kijelzőt amin főként csak hőmérséklet érték lesz kijelezve.
Melyik kijelzőtípust ajánlanátok erre, aminek a programját nagyon könnyű megírni?
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs