> Egyébként van már nagyobb memóriás esp, pl a wemos D1 pro 16Mb
Ne keverd össze! Nem a memóriája (RAM) nagyobb, hanem a háttértára (flash). Itt a RAM be van építve az MCU-ba, nem bővíthető. A flash van kívül, de az jelenleg mindegy, mert a kollégának a RAM kevés.
Ne feledd, belefordítasz pl. egy komplett wifi library-t is. Egyébként van már nagyobb memóriás esp, pl a wemos D1 pro 16Mb, és egy egész dollárral kell többet fizetni érte, mint a régiért.
Igen, mindez le van írva az adatlapban. Én is onnan tudom. ;-)
8k a beépített.
64k-t tud megcímezni.
Ha teszel mellé egy 64k-s RAM IC-t, akkor annak az alsó 8k részét nem használja, mert azon a címen van a beépített. Az adatlap szerint kerülő úton el lehet érni azt is. Ha érdekel, olvasd el.
Ha többet akarsz használni, akkor bank switch. De ott is igaz, hogy minden bank alsó 8k-ja nem érhető el közvetlenül.
Ilyet lehet készen kapni, amit nem nulláról kell forrasztani?
Netán itthon is...
Amúgy épp próbálgatom az ESP8266-öt arduino fejlesztőben.
Örültem, hogy több a memória, de a lefordított program annyival is több.
Egy adafruit 128x64-es OLED demo:
Sketch uses 242 701 bytes (23%) of program storage space. Maximum is 1 044 464 bytes. Global variables use 33 132 bytes (40%) of dynamic memory, leaving 48 788 bytes for local variables. Maximum is 81 920 bytes.
Ha RAM kell, de maradnál az Arduino környezetnél: Az ATmega2560 (Arduino Mega board) adat és címbusza ki van vezetve. 64 kByte RAM-ot kezel közvetlenül, de bank switch-el akár megabájtokat is. (Pont most gyártatunk mi is egy 4 MB RAM-os hardvert egy régebbi design bővítéséhez.)
u8g volt végül használva no buffel demo alapján. Ha teljes támogatású verzió esetén itt is 75% sram kihasználással indul.
Viszont így nagyon lassú, több lépésben frissíti a kijelzőt.
Az adafruit-nál nem néztem, de mások mondták, hogy a nanohoz az 1K buffel sok, mert összesen 2 ban benne.
EEPROM-om már van. Még nem kötöttem be, de itt gondoltam ritkán változó adatokat (karakterkészlet), beállításokat tárolni.
TLC5940: nekem 46-50 ledről van szó, és egyik körben 2 másikban meg 9-18 led is lehet.
LPC1768: én keresek rosszul, vagy valóban ez olyan 20eFt körül van ebay-on is?
A kapacitívra néztem példát. 10.03-án elülve Magyarországra a státusz. Ha ide ér, csak annyi a kérdés, ga a kivezetésra teszek valamit, és berakom a szőr alá,. akkor valami látszik -e vagy sem. Azért jó lenne, mert az egységen van 8 bemenet.
Itt is, ha azt látom, hogy lehet jó (akkor azt teszem a szőr alá, és majd kitapasztalom)
Bele lehet integrálni az Atmel studióba egyébként az Arduinos dolgokat is (visual Micro) akár könyvtár szintjén.
És ha megvan a .hex, így feltölteni akár bootloaderrel, akár anélkül. Csakhát itt jönnek az apróbetűs részek,a mik nincsenek sok helyen leírva, és ha egyből nem jön rá az ember,a kkro napokig tépheti a hajtá ;-)
Plusz vagy beleírja a kódba a kijelző vezérlését vagy ír hozzá saját könyvtárat (ha nincs, ezt nem tudom). Plusz kell hozzá egy soros programozó, és mielőtt nekiáll, le kell gyalulni az Arduino bootloadert.
Erről nem volt szó, csak hogy 25-nél kapcsoljon be, 65-nél meg ki.
Ha ez a megrendelői igény, akkor ezt kell teljesíteni. Az már az ő dolga, hogy ha ki akarja nyitni a csapot, akkor mekkora meglepetést akar: 25 vagy 65 fokos vizet... :-D
Az i2c oled kijelző könyvtára sajnos elég nagy. Az u8glib átmeneti megoldás lehet, bár az Adafruit is nagyjából ezen alapul, ha jól emlékszem.
Ami neked kellhet ez esetben, az a PROGMEM, bár sajnos a Nano minimális memóriája így sem sok dologra lesz elég. A kibúvók lehetnek az SD kártya (kicsi, egyszerűen kezelhető) vagy az i2c/SPI eeprom. Mindkettőt egyszer feltöltöd, utána tudod olvasni végtelen alkalommal. De az adatcsomag változtatása nem annyira egyszerű (PC kell hozzá).
Mit értesz buffer alatt? (Azért kérdezem, mert nálam a buffer az átmeneti tár: a begyűjtött, feldolgozásra váró adatok gyűjtőhelye, ahonnan vagy az operatív memóriába, vagy külső tárolóba megy az adat csomagonként és/vagy feldolgozva (pl. tömörítve).)
A TLC5940-nel kapcsolatos gondodat nem értem. Akárhány LED vezérelhető róla, összesen 16 csatornán. Akár egy is, akár három is, csak a teljes rendszer árama limitál (erre most 60 mA-t találtam, de az tuti, hogy én ennél sokkal többel használtam). Előnye, hogy nem kell előtétellenállás (constant current), 17 V-ig akárhány voltot meghajt és nem kell galvanikus leválasztás az MCU felé. Plusz daisy-chain-elhető, tehát egy vonalon elvben az összes ledet tudod vezérelni. Az adatkezelés pl. RGB ledek esetén lehet macerás, de az meg programozás kérdése.
A Nucleo jobbról a második. Ami tőle jobbra van, az az LPC1768, mi talán még szóba jöhet. De ez mbed.
A kapacitív vezérlő kialakítását még át kell gondolni, mert ehhez még kellenek külső érintkezők. Nem mondom, hogy nem fog menni, csak ez is idő lesz.
A te esetedben is az van, amit itt párszor már körbejártunk, hogy a legtöbb arduino könyvtár úgy van megcsinálva, hogy a többi könyvtárral való együttműködést alig vagy egyáltalán nem vették figyelembe. Ennek az az eredménye, hogy nagyon hamar a memória végére jutsz és/vagy akadni fog valami valamivel.
> Sajna a Nano ki is mutatta a fehérjét. Ez a kijelző bufferje el is eszik mindent
Vagy az Arduino rendszer hibája... Már az Arduino core memória/processzor igénye is többszöröse adott feladatra, mint amit az Atmel kínál. Ez az ára a kényelemnek. Ehhez jönnek még az így-úgy megírt lib-ek, és el is fogyott minden erőforrás.
3-4 héten belül a fejnek kell elkészülnie, amiben benne van a HW. Nem kell hogy menjen még, de később új HW-knek helyet kialakítani már igen nehézkes lenne.
Tehát van erre egy egészt telem.
A lúdcsoportok vezérlése benne volt eredetileg is, mert az volt a kiinduló projet. Ehhez jött hozzá a kijelző, hogy a hangot nem nyomógombbal, irányítanám, hanem amit egy ismerős mondott, hogy gesztussal, és az RGB programozható led.
Péntek éjszakám kimaradt. Az egyes egységek átmeneti összedrótozása, és pár demo összefésülése volt (nem oktimalizát, mert hajnali 2-7 is csináltam).
Sajna a Nano ki is mutatta a fehérjét. Ez a kijelző bufferje el is eszik mindent, így még egy RGB led vezérlés sem fért bele az SRAM-ba. :( (buffer nélkül meg kicsit vicces volt megoldani)
Tehát azon elgondolásom, hogy ha több egységek használok, akkor a nonao vezérli a kijelzőt, meg pár apróbb feladatot is meg dőlt már.
Eeprom-van, de az ugye buffernek nem jó. A buffet valami külső memória kiegészítéssel nem lehetne megoldani?
TLC5940: hobbielektronikán pont miatta indítottam témát is, mert már jött szóba. Igazából semmi értelmes nem sült ki eddig. Egy infót kaptam nem ott, hogy ha ennyire eltérőek a csoportot ledszáma, akkor nem biztos hogy elég ideális. Főleg, hogy 5V-ra van tervezve (ez meg tízenX V-ra), így szépen elfűtök mindent.
De ha van valami kézzel fogható infód, azt megköszönném.
DS3231: ilyen jött, és itt is van. De csak az, hogy meg tudjam nézni az időt arra nagy. Ennek a kis testvére jön, ami ugyanúgy DS3221
fényérzékelők: Van két ellenállásom. Fel is tettem panelre. Itt az egyik vagy az ott alatt, vagy az orrlyukból fog kinézni. Ez szolgáltatja a fő információt. Ennek hátránya, hogy ha megölelnek, akkor fars információt ad. Ezért az egyik fül mögött a szőrben lesz egy másik is. Ő nehezen fog kilátni. Ezért nem igazán lesz precíz, de arra jó, hogy detektálni lehessen, hogy az elülső érzékelő csak eltakarásra került, vagy valódi fényviszony változás volt. Itt a feladat nem nem pontos fényérték mérés, hanem hogy a fényviszonyoknak megfelő fényerő legyen a megfelelő ledeken.
mikrókapcsolók: sikerült találni egy nagyon kicsit aminek a hangja szinte nulla. Eredetileg nyomásérzékelő ilyen fóliát akartam, de mocsok drága mindenhol. Próbáltam egy ilyen szivacsos megoldást házilag (úgy ajánlották), de az meg mindig feltöltődött mint egy kondenzátor, és nem lehetett rendesen olvasni. Annak meg nem láttam értelmét, hogy az érték változási karakterisztikát kezdjem el elemezni.
Egy ilyen modul jön. Ha ide ér, még kap egy esélyt. Ez kapacitás. De félek, hogy mivel ez műszőrme alatt kéne lehelyezni lehet az bekavar neki. De ha van tapasztalatod, vagy ötleted, azt szíven fogadom.
fej tartása: MPU6050 van bent. Egy pár órám volt tesztelni, de elsőre még vad adatok jöttek ki. Erre kaptam, hogy előbb kalibráljam, majd vagy minden fél matematikai és egyéb módon ki kell a két szenzorrészből számolni azt amire kíváncsi vagyok Van egy gyári eljárási is benne talán. De ha ezt felhasználtam egy demó által, ott megint kezdtek elszánni az erőforrás igények.
Tehát az biztos, hogy a Nano önmagában kicsi lesz.
Szereztem be már STM32F103-mat és egy ESP8266-ból egy D1 minit.
Még lehet egy Arduino Mega 2560 pro mini-t szerzek, de az nem jön meg időre.
Most az a feladatom, hogy ezek fogadására alkalmatossá kéne tenni a jelmezt, és valahogy helyet kell nekik csinálni. Úgy is, hogy esetleg 2 egység is kelhez.
Akkor talán télen a kód írásánál kevesebb meglepetés ér.
Persze a lényeg, hogy vagy ezen házasításokhoz vagy más egységek miatt szükséges lehet valami miatt plusz kiegészítőre akkor annak is most kéne a helyét megcsinálni.
Minden esetre köszönöm neked a sok építő jellegű segítséget.
Minek SD kártya? Milyen adatot akarsz tárolni, amihez kell?
25 és 65 fok között 40 fok differencia van. Bojlerben azért ez nagyon sok szerintem. Ennyire nem kritikus a hőmérséklet?
Az egész cucc elvileg elmegy két változóval:
-- megy-e a fűtés (bool), kiindulási állapot: false,
-- mennyi a mért hőmérséklet (int).
Aztán kell pár vizsgálat:
1. Ha a fűtési fázisban van ÉS a mért hőmérséklet a beállított maximum hőmérsékletet felett van, akkor: -- fűtés kikapcsol (false),
2. Ha a nem a fűtési fázisban van ÉS a mért hőmérséklet a beállított minimum hőmérsékletet alatt van, akkor:
-- fűtés bekapcsol (true).
A két köztes eset (fűtés megy ÉS a mért hőmérséklet a beállított maximum alatt van, illetve a fűtés nem megy és a hőmérséklet a beállított minimum felett van) irreleváns, mert nincs szükség kapcsolásra.
A fűtés kimenete a fűtés boolean állapota, ha true, megy, ha false, nem megy.
Néhány további javaslat:
1. Watchdog legyen,
2. A mérési gyakoriságot érdemes úgy beállítani, hogy a hőmérsékletváltozás követhető legyen,
3. Direkt analóg bemenetet érdemes szűrni (átlagolt beolvasás),
4. Figyelj a tápellátásra,
5. Galvanikus leválasztás legyen!
Kb. ennyi a lényeg. A kód nagyjából 30 sor, de lehet, hogy túlzok.
1. Más buszt használsz, mint ahogy lentebb javasolták, a lenti felsorolásból kimaradt a sima soros, egy megán több soros port is van, pár méterre tökéletes lehet, nem kell külső interfész meg eszköz hozzá.
2. Az I2C valóban nem távolságokra lett kitalálva, de ha leveszed a sebességet, és megfelelő kábelt (alacsony kapacitású és árnyékolt) használsz, alacsony sebességen az adott távolságra simán elvihető. Kérdés mennyire kritikus az adatok mennyisége és sebessége.