Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
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
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
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.
É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
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.
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.:
> Igen, az nálam mindig skip ROM
Igen, de ez is elromolhat, és akkor elhallgathat a csip.
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...
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
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
Az Arduino IDE soros monitorát használom. Egyenlőre nem működik.
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?
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:
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.
Elvileg igen, de a zárójel előtt kimaradt az idézőjel bezárása.
Igen észrevettem.
Köszönöm a segítséget.
Ok. Gratula. Akkor félreértettem, azt hittem rádión akarod átküldeni a parancsot.
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.
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?
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?
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
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
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.
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á.
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.
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.
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.
Ú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.
Gondolom a tartóerő azonos az árammal. Ha igen, felesleges a processzor, egy áramgenerátor is elég.
É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.
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. |
Bejelentkezés
Hirdetés |