Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   596 / 851
(#) KoblogPerGyok válasza asch hozzászólására (») Márc 2, 2020 /
 
Helló!

Idézet:
„Az olvasó elindítja az olvasást, majd minden bitre küld egy lehúzást, amire a válasz lehúzás vagy semmi. Ha semmik jönnek vissza - tehát a DS... nem kezdett el kommunikálni - akkor olvasunk csupa 1-et. Ebből lesz -127 a konverzióból.”


Csak érdeklődés szinten kérdezem, mert nem értem ennyire ezt. Szóval a kérdésem az lenne, hogy előfordulhat-e olyan eset, mikor a kommunikációs hiba úgy lép fel, hogy nem minden bit lesz 1? Ekkor nyilván nem feltétlenül lesz negatív, pláne nem tutira 127. Ekkor azért macerás lesz kiszedegetni a hibásokat. Ekkor jobb lenne az egy mérés nem mérést szem előtt tartani szerintem.

Azaz ha kommunikációs hiba van, akkor 100% hogy -127 lesz az eredmény? (Azt nem tudom, hogy ez a szenzor miért csak 8 bitet küld, de gondolom 12-t is küldhet, ha 12 bit a felbontása.)

Kösz a választ!
A hozzászólás módosítva: Márc 2, 2020
(#) asch válasza KoblogPerGyok hozzászólására (») Márc 2, 2020 /
 
Megint csak emlékezetből írom: Elvileg előfordulhatna egy bit tévesztés, de szerintem van egy hash kód, amit küld a csip és az akkor nem fog stimmelni. De lehet, hogy a lib nem ellenőrzi a hasht. Az is lehet, hogy a lib -127-tel jelöli ha hiba történt. Nekem azt hiszem -2048 jelenik meg néha a termosztátomon, ami a libnek a hibajelző visszatérési értéke. De csak akkor kapcsolna be a fűtés, ha másodpercekig folyamatosan ennyi lenne a hőmérséklet

Azt hiszem több típus is van, amikben a hasznos bitek száma eltér. Illetve meg lehet mondani, hogy hány bitet kérünk, és több bit több idő és több energia. Az is lehet, hogy a lib kerekít.

Utána kell nézni az adalapban, megnézni a forrást, stb!

Nagyon sokat szórakoztam ezzel a csippel már, újraírtam a magam szájíze szerint a kommunikációs libet többször többféleképpen, de még mindig nem értem teljesen, hogy mi miért történik. Most egyelőre feladtam állapotban vagyok . Ha jól emlékszem az adatlapban a szöveg és a rajzok között van egy helyen ellentmondás az időzítésben. Na, ott szoktak kihullani a hajszálaim.
A hozzászólás módosítva: Márc 2, 2020
(#) KoblogPerGyok válasza asch hozzászólására (») Márc 2, 2020 /
 
Köszi!

Utána nézek én is, de lehet maradok a több mérésnél. Azt legalább értem!

Lehet megpróbálok én is írni egyet, akkor talán megértem és meg is jegyzem, mi miért van. Nálam ez vált be. Amit megírok, azt meg is jegyzem.
(#) asch válasza KoblogPerGyok hozzászólására (») Márc 3, 2020 / 1
 
Én is így vagyok ezekkel. A hibaágakkal, az időzítésekkel, az API-val általában nem vagyok elégedett és muszáj újraírnom mindent. Egyébként ahogy a példád is mutatja, sokszor megzavarják egymást a dolgok ha csak össze vannak ollózva: ezért is érdemes újraírni, hogy értsük, hogy mi miért fog hatni egymásra. Nekem itt van egyébként a legutóbbi működő megvalósításom: https://github.com/rizsi/Arduino-IR-decoder/blob/master/wirelesssen...re.cpp
(#) zsoltee0001 válasza usane hozzászólására (») Márc 3, 2020 /
 
Kipróbáltam, de nem hozott eredményt a temp átnevezés. Viszont, átalakítottam és betettem még egy short változót, így már múgy néz ki, hogy működik, ezt onnan tudom, hogy kiírattam soros monitoron és figyeltem, ha jött egy hiba ami a tempDS-felvette, de már a tempout nem és ez a lényeg.
  1. sensors.requestTemperatures(); // Send the command to get temperature readings
  2.  tempDS = sensors.getTempCByIndex(0);
  3.    //delay(200);
  4. if (tempDS != -127)
  5. {  
  6. tempout = tempDS;}
(#) usane válasza asch hozzászólására (») Márc 3, 2020 /
 
Idézet:
„Reset után van egy utasítás, hogy melyik csippet szólítjuk meg.”

Igen, az nálam mindig skip ROM Tulajdonképpen a Dallas lib-et sem használtam sosem, csak tudom mi van benne, pont azért mert amikor ezt csináltam átnéztem, hogy működik, és nem volt jó az én hardveremhez. Csak a onewire lib-et használtam mert amiket készítettem többszenzoros eszköz DS18B20-al és nem szeretem találgatni, hogy melyik azonosító melyik szenzor. Demux szelekció megoldja. Igaz, több kimenet a vezérlőn, de nekem megéri.5m-es árnyékolatlan kábellel a 230V-os infrafilmek alatt nem láttam még hibás adatot(interrupt nincs. )

Kovidivi:
Ki kell ábrándítsalak. Idézet, "core_esp8266_waveform.h"-ból, ezt használja az ESP8266 servo lib.:
  1. // Add a callback function to be called on *EVERY* timer1 trigger.  The
  2. // callback returns the number of microseconds until the next desired call.
  3. // However, since it is called every timer1 interrupt, it may be called
  4. // again before this period.  It should therefore use the ESP Cycle Counter
  5. // to determine whether or not to perform an operation.
  6. // Pass in NULL to disable the callback and, if no other waveforms being
  7. // generated, stop the timer as well.
  8. // Make sure the CB function has the ICACHE_RAM_ATTR decorator.
  9. void setTimer1Callback(uint32_t (*fn)());
(#) asch válasza usane hozzászólására (») Márc 3, 2020 /
 
> Igen, az nálam mindig skip ROM

Igen, de ez is elromolhat, és akkor elhallgathat a csip.
(#) Kovidivi válasza usane hozzászólására (») Márc 3, 2020 /
 
Nem tudom, mi ez a fv., mit csinál, de ha minden egyes kimenet váltáskor interruptot hív meg, akkor ez a legpazarlóbb dolog, amit eddig láttam. Én regiszter szinten szoktam a timereket beállítani, aztán csak OCR értékét módosítom, akkor nem blokkol semmit. De az Arduino-s analogWrite fv. is csak az OCR-t állítja, ha jól tudom. Atmega168/328 csipnél biztosan. Nem tudom, ESP-nél miért nem így működik...
(#) mateatek hozzászólása Márc 4, 2020 /
 
Sziasztok!

Nem teljesen Arduino-s a kérdésem.
Adott egy JDY-40-es modul. Ez működik is rendesen. Az egyik a PC-n, egy CH340-esen keresztül, a másik egy Arduino modulon. Működik is a kommunikáció közöttük. De az AT parancsokat nem tudom használni. A SET kivezetést alacsony szintre teszem és a soros porton begépelem a parancsot (a PC oldalon). De nem történik semmi. Nem küld OK-t vissza. Semmit. Igaz, ilyenkor nem is rádiózza el a begépelt parancsot az Arduino felé. Mit csinálok rosszul, illetve hogyan kellene beírni a parancsot? A soros monitor beállítása 9600 BAUD, soremelésre állítva. A begépelt parancs pedig AT+BAUD=6

Köszi
A hozzászólás módosítva: Márc 4, 2020
(#) usane válasza mateatek hozzászólására (») Márc 4, 2020 / 1
 
Biztos, hogy elküldi a \r\n-t a végén? Melyik terminal szoftvert használod?

szerk: Most nézem az adatlapot, beállításkor nem kell egyenlőségjel.
A hozzászólás módosítva: Márc 4, 2020
(#) mateatek válasza usane hozzászólására (») Márc 4, 2020 /
 
Az Arduino IDE soros monitorát használom. Egyenlőre nem működik.
(#) usane válasza mateatek hozzászólására (») Márc 4, 2020 /
 
Na várjál, értelmezzük. Most akkor 2 modulod van, egyik pc-re kötve, a másik egy arduinora?
És mit is akarsz elérni? A soros porton begépelt parancsot el akarod küldeni a másiknak és azt akarod, hogy az végrehajtsa? Ez így nem működik. Vagy félreértem mit akarsz?
(#) mateatek válasza usane hozzászólására (») Márc 4, 2020 /
 
Igen, a parancsokat akarom elküldeni, ami működik is, alapértelmezett beállításban. De én a modul paramétereit szeretném állítani jelen kérdésemben(frekvencia, sebesség ráta).

Sőt, időközben sikerült az AT parancsokat is átküldenem. A soros monitort "soremelés és kocsi vissza" módra kell állítani. Már csak az a kérdés, hogy az MCU oldalit miként kell AT paranccsal megetetni. Pl:
  1. Serial.write("AT+BAUD6\r\n);

Ez így megfelel?
A modul amúgy megjegyzi a beállításokat és kikapcsolás után is azokkal a paraméterekkel indul, amit legutóbb beállítottunk neki.
(#) usane válasza mateatek hozzászólására (») Márc 4, 2020 /
 
Elvileg igen, de a zárójel előtt kimaradt az idézőjel bezárása.
(#) mateatek válasza usane hozzászólására (») Márc 4, 2020 /
 
Igen észrevettem.
Köszönöm a segítséget.
(#) usane válasza mateatek hozzászólására (») Márc 4, 2020 /
 
Ok. Gratula. Akkor félreértettem, azt hittem rádión akarod átküldeni a parancsot.
(#) usane hozzászólása Márc 4, 2020 /
 
ESP-vel szeretnék Neopixel LED-szalagot vezérelni (WS2812 és társai). A meghajtással nincs gond, az megy, a kérdés sok LED kezelésére vonatkozik. Az ESP WiFi-n kapná az adatot. Küldési gyakoriság sem gond, mert beállításonként csak 1x kellene elvégezni, ha változtatni akarok a sémán. Tegyük fel van egy 2500 LEDből álló RGBW LED-sor(lehet, hogy több kimeneten vezérelve, de nem kritérium mert nincs framerate követelmény, csak a beállításkor változik. LED-enként ugyebár 4 byte az adat RGBW estén(1byte/szín). A 2500 LED esetében ez durván 10kByte. Hogyan kezelnétek ezt a méretet? Értem itt akár az adatok átvitelétől kezdve (10kByte)(JSON, websocket, HTTP stb ?) az ESP-ben a kezelésig, pl: ha vanak benne hoszabb-rövidebb egyforma színű szakaszok(szakasz-kezdő, szakasz-utolsó LED,stb. )
Adatátvitelnél a küldő oldal irreleváns, hozzá tudom igazítani a vételi kívánalmakhoz.
Nyilván az ESP webserverkéntüzemelne és csak belső hálózaton történne a kommunikáció weben keresztül nem. Ha weben el akarom érni megoldom VPN-el.
Vannak ötleteim, de hátha valaki ésszerűbben közelíti meg a problémát mint én.
(#) Csongig hozzászólása Márc 4, 2020 /
 
Sziasztok!
Arduino megoldásban gondolkoztam az alábbiról.

Működés:
A vezérlő kapcsolt állandó 12VDC áramot kap.
Ekkor a mágneshez nem érkezik áram.
A váltó nyomógomb impulzusára áramot ad a mágnesnek a potméteren keresztül.
Ennek az elvételének szabálya.
1 bármely leoldó kapcsolótól érkező impulzus jel egyszeri beérkezése.
2 programkapcsolótól ismételt jel érkezése.
A mágnes csak akkor kaphat újra áram, ha váltó nyomógombtól újra beérkezik a jel.

Az üzemi feszültség elvételével a rendszer mindig alap értéken indul.
vagyis nincs kimeneti áram a mágnesre, csak ha jel érkezik a nyomógombtól.

Ezt a rajzot skicceltem hozzá:
Kivitelezhető ez rendszer szerintetek?
(#) usane válasza Csongig hozzászólására (») Márc 4, 2020 /
 
Az elektronikai követelményektől eltekintve a program roppant egyszerű lenne.
Ami az elektronikát illeti az némi kiegészítésre szorul, bár gondolom a skiccet csak vezérléstechnikailag szántad. Pl: az arduinonak a 12V sok, nem ismerem az összes boardot, de általában 5V vagy inkább 3.3V a tápfeszültségük (DC-DC konverter, stabkocka vagy egyéb kell). A feszültség vonatkozik az összes bemenetre is. A mágnes meghajtásához is kell valami teljesítménykapcsoló eszköz (bipolár tranzisztor vagy FET, esetleg relé is), valamint a leoldó kapcsolóktól is kérdés mi jön?
(#) Csongig válasza usane hozzászólására (») Márc 4, 2020 /
 
Csak a vezérléstecnikát skicceltem.
Az alkotó elemek és konkrét kapcsolási rajzig nem jutottam. Ezeket nem tudom, ehhez kell még infót gyűjtenem.
Az üzemi feszültséget tudom, 12V DC stabilizált.
A leoldó jelek, 12V DC negatív, vagy pozitív polaritásúak.
Bármelyik lehetséges.

A lehető legkisebb dobozba szeretném a vezérlést.
A mágnesnek kb 2Kg tartóerővel kell bírnia.
A hozzászólás módosítva: Márc 4, 2020
(#) asch válasza usane hozzászólására (») Márc 4, 2020 /
 
Mikrovezérlőn ha csak lehet nem csinálnék webes protokollokat, hanem nyers TCP protokollt csinálnék. Az összes adatot egyetlen tömbnek kezelném, amit eleve abban a sorrendben, olyan formában küldenék át, ahogy az ESP felhasználja. AKár egyetlen TCP sessionben minden további metaadat nélkül.

Az ESP-n úgy csinálnám meg a vételt, hogy egy temp bufferbe veszi az adatot, és ha átjött az egész, akkor átteszi az élesbe, és onnantól kezdve azt frissíti ki. Elvileg 80kB RAM van benne, tehát a 10kB nem túl sok neki, befér kétszer.

Ha JSON-t meg hasonlókat csinálsz, akkor annak jócskán lesz overheadje, egy bájtot 10-20 bájton fogsz átküldeni, és akkor máris kifuthatsz a RAM-ból. Ezért csinálnék egy nyers protokollt.

Tömörítést nem csinálnék (pl egyforma szakaszokra elvileg lehetne RLE-t, azaz run length encodingot csinálni könnyen, de minek? Mindenhol elfér az adat, a wifinek a 10kB meg sem kottyan. Hova dolgozzunk, ha nem muszáj?)
A hozzászólás módosítva: Márc 4, 2020
(#) asch válasza usane hozzászólására (») Márc 4, 2020 /
 
Nekem ez a kedvencem, ez épp bírja a 12V-ot: https://www.hestore.hu/prod_10035581.html

Elég kicsi és elég olcsó a legtöbb projekthez megfelel.
(#) asch válasza Csongig hozzászólására (») Márc 4, 2020 /
 
Az elektromágnesnél mit csinál a potméter pontosan? Nem értem se a rajzból, se a leírásból.

"Ipari környezetbe" a legegyszerűbb megoldás Arduino alapú PLC-t tenni. Persze dárgább is, meg nagyobb is, viszont nem kell dolgozni vele. Például ez megfelelő lehet: https://www.controllino.biz/product/controllino-mini/

Amit kapsz vele, hogy a 12V inputok illesztése, védelme tisztességesen meg van csinálva. Plusz van relé kimenete, vagy 12V kapcsolható kimenete. Ki kell választani, hogy a projekthez mi passzol. Van 12V-os és 24V-os tápra tervezett változat is.

Persze NYÁK-ot tervezve sem akkora kunszt ezeket az input/outputokat megvalósítani, de érteni kell hozzá.
(#) usane válasza asch hozzászólására (») Márc 4, 2020 /
 
Ezt úgy érted, hogy a 10kB-ot küldjem el egyetlen bitfolyamként? Akkor viszont szét kellene szednem bájtokra, vagy írnom kellene egy SPI protokollt ami átalakítja a LED-ekhez szükséges időzítésekre és úgy küldi ki.
(#) Csongig válasza asch hozzászólására (») Márc 4, 2020 /
 
A feszültséggel szeretném a mágnes erejét állítani. hja egyáltalán lehet ilyet.
1-2Kg tartó erősség elegendő lenne.
Ipari környezet nem áll fenn.
Illetve a csatlakozók sem csavarosak lennének.
Ez egy célhardver ami csak erre lenne használva.
(#) asch válasza Csongig hozzászólására (») Márc 4, 2020 /
 
A mágnes erejét szerintem PWM-mel is lehet állítani. Az áramot ilyenkor egy teljesítmény IC kapcsolgatja, ahogy egy motorvezérlőben is. Lényegében egy megfelelően mérezetett FET kell ide. Példa kapcsolásokkal tele az Internet, jól megcsinált kapcsolás már kevesebb van, de azért olyan is létezik.

A bemenetek kezeléséhez teljesen standard 12V-os bemenet illesztést kell csinálni, ilyen kapcsolások is vannak a neten bőven.

A rendszer agya lehet például az általam fentebb linkelt Arduino PRO, de igazából akármilyen MCU megteszi, aminek elegendő lába van. Ha modulból építkezel, akkor az 5V tápáramkör és a reset logika megépítését megspórolod. De tervezhetsz pőre csippel is, plusz általad tervezett táppal: talán még kisebben is meg lehet oldani, mint az Arduino PRO. A kvarcot le lehetne spórolni, mivel nincsen pontos időzítési kritérium, bőven elegendő a belső órajel.

A tartóerőről fogalmam sincsen, hogy milyen áram, és milyen PWM tartozna hozzá. Azzal kezdeném, hogy a konkrét elektromágnest kiválasztom, és megmérném/adatlap alapján kiszámolnám, hogy mekkora áram kell a szükséges tartóerőhöz. Sajnos nem értek ezekhez, hogy ez min múlik egyáltalán, mivel kell számolni. Ha megvan az áram, akkor lehet tervezni, hogy milyen kábelek kellenek, milyen csatlakozók, milyen FET, stb.
(#) asch válasza usane hozzászólására (») Márc 4, 2020 /
 
Úgy értettem, hogy a Wifin küldeném át nyersen. Nem ismerem ezt a rendszert, hogy hogy kell a Wifis részét programozni, de a lényeg, hogy a http egy plusz réteg a TCP felett, aminek a funkcióira nincsen szükséged, csak feleslegesen bonyolít. Ezért http helyett nyers TCP-re építkeznék.

Ezt a bitek bájtokra bontását nem igazán értem: nem eleve bájtokban vannak azok az adatok? EGB LED-enként 3 bájt, azaz színcsatornánként 1 bájt. Ezek összesen adnak ki egy 10kB adatmennyiséget, ha jól értettem. Ha tudod mérni, hogy 10kB, akkor eleve egy ekkora tömbben vannak az adatok, nem?

Akárhogy is kell csinálni, a TCP-n jövő bájtokat egy 10kB vételi bufferbe gyűjteném. És amikor megvan az egész, és lezáródott a TCP folyam, akkor elküldeném ahogy kell egyesével a LED szalagoknak.
(#) proba válasza Csongig hozzászólására (») Márc 4, 2020 /
 
Gondolom a tartóerő azonos az árammal. Ha igen, felesleges a processzor, egy áramgenerátor is elég.
(#) usane válasza asch hozzászólására (») Márc 4, 2020 /
 
Értem én. Közben meg is néztem a nyers TCP megvalósítható. Viszont akkor újabb kérdés fogant meg bennem. Vajon az ESP ezt a 10kB-ot egybe rakja a RAM-ba fragmentáció nélkül amint megérkezik? Valószínűleg nem (heap). Pedig jó lenne, mert akkor meg tudnám adni a LED-eknek RAM mutatóját és annyi.
(#) Csongig válasza proba hozzászólására (») Márc 4, 2020 /
 
Sajnos nem tudom, mekkora áram kell a tartóerőnek.
Ezt is ki kell nyomoznom. Nem vagyok otthon ezekben, csak az elképzelésem akarom megoldani. A vezérlés miatt gondoltam az Arduinora.
Következő: »»   596 / 851
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem