- iPhone topik
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Google Pixel topik
- Profi EKG-s óra lett a Watch Fitből
- Magyarított Android alkalmazások
- Mobil flották
- One mobilszolgáltatások
- Magisk
- Samsung Galaxy Watch5 Pro - kerek, de nem tekerek
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
-
Mobilarena
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
-
Gyakorlatilag magasabb szinten (setup, loop, változók kezelése stb. ) ugyanazt a kódot tudod futtatni, de például a i/o portok, időzítők kezelése teljesen más a két architektúrán, ezért ezeket ha közvetlenül próbálod kezelni, akkor át kell írni, de ha lib-eken keresztül, akkor a megfelelő lib-et kell csak hozzá letölteni (pl. dht11_esp8266), és akkor maga a program ugyanaz marad. Sokszor a lib-ek eleve úgy vannak megírva, hogy le tudják kezelni a különböző hardvereket, vagy a fordító automatikusan a saját architektúrához tartozó lib-et használja, ilyenkor semmi dolgod nincs.
Remélem érthetően írtam.
Ebben az esetben ajánlom az esp8266-ot, pl. wemos d1 mini, mert azon minden rajta van, ami a működéshez szükséges, és komplett webszervert tudsz rá tenni, rákapcsolódsz az otthoni routerre és a telefonodon tudsz vele kommunikálni.
Arra figyelj még, hogy míg az uno, nano stb 5V tápot kérnek, az esp-k 3.3V-ot (a wemos d1 mini ezt onboard konverterrel elő tudja magának állítani usb 5v-ból), ez a szenzorokkal való összeköttetést is meghatározza. Van, ami gyárilag el van látva szintillesztéssel, van, hogy anélkül is működik gond nélkül, de néha Neked kell megoldani. Ez utóbbi velem egyszer fordult csak elő. -
Sanki
addikt
-
Az attól függ, hogy mire szeretnéd majd használni. Pl hc-05 Bluetooth modul, ami soros portot képez az uno és a gép/telefon közt, sima Serial könyvtárral tudod használni. Vagy ha wifi kell, akkor valamelyik esp (esp8266-> wemos d1 mini vagy esp32->lolin32) modul, de akkor a felhasználás céljától függően érdemes az egész programot eleve magán az esp-n futtatni.
-
Sanki
addikt
Arduino uno r3-hoz és nano-hoz (mindkettő az olcsóbb kínai változat) vezetéknélküli kapcsolatra milyen ajánlott megoldások vannak? Akár BT, akár WiFi.
-
Janos250
őstag
válasz
Janos46 #12595 üzenetére
"Gondolom akik közzétették a programokat, azoknak fut"
Nem, azoknak sem fut, mert a TM1637.h-t használná, de a linken meg TM1637Display.h van.
Az két különböző program. Próbálj keresni a neten TM1637.h-t tartalmazó könyvtárat.
Pl. itt is van egy:
https://github.com/reeedstudio/libraries/tree/master/DigitalTube
Általánosságban az a baj ezekkel a netes programokkal, hogy minden magára valamit adó :-) programozó akar csinálni pár könyvtárat, amik adott hardvert kezelnek, és sajnos mind ugyanannak nevezi.
Ezért én pl. egyedi neveket szoktam adni a könyvtári fájljaimnak, pl beleteszem a dátumot, vagy jobban kirészletezem a nevében, hogy mit csinál, igy valószinűleg egyedi lesz.
A netről letöltött dolgok, bizony ilyenek :-(A DS3231-el ugyanez a helyzet. A program nem ugyanazt a könyvtárt akarja használni, mint ami neked van, abban meg nem talál DS323 osztályt, igy az rtc deklarálatlan lesz .
-
Janos46
tag
Janos250 Köszi a segítséget.
-----------------------------------------
Most hogy játszadozok az ARDUINO-val és letöltök kész projekteket, több esetben előfordul, hogy már az ellenőrzésnél hibát kapok. A libraries könyvtárban minden esetben benne vannak a megfelelő könyvtárak. Gondolom akik közzétették a programokat, azoknak fut.
---
Az egyik: A program oldala: https://istarik.ru/blog/arduino/60.htmlHiba5:3:10: fatal error: TM1637.h: No such file or directory
#include "TM1637.h"
^~~~~~~~~~
compilation terminated.
exit status 1
TM1637.h: No such file or directoryEz részben igaz, mert a könyvtár ugyan fenn van, de a benne lévő fájl neve TM1637Display.h , amit ha kijavítok, akkor meg több hibát ír ki.
---
Másik: A program oldala: https://robotchip.ru/obzor-chasov-realnogo-vremeni-ds3231/Hiba1:9:1: error: 'DS3231' does not name a type; did you mean 'CS21'?
DS3231 rtc(SDA, SCL); // Инициализация DS3231
^~~~~~
CS21
C:\Users\Olga\Documents\Arduino\Hiba1\Hiba1.ino: In function 'void setup()':
Hiba1:14:3: error: 'rtc' was not declared in this scope
rtc.begin(); // Инициализировать rtc
^~~
És még sok minden.
---
Harmadik: Mit jelent a POSITIVE ???
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F ,2,1,0,4,5,6,7,3, POSITIVE);
void setup() {
lcd.begin(16,2);
//myRTC.setDS1302Time(00,04, 12, 06, 18, 04, 2017);
}
---
Ismét megköszönném a segítséget. -
Janos46
tag
Sziasztok!
Gyakorolgatok az UNO-val és az eredményt a soros port (COM3) monitorján lehetne megnézni, de azt nem tudom hogyan kell. Tudna segíteni valaki? Előre is megköszönöm. -
haxiboy
veterán
válasz
Janos250 #12589 üzenetére
Mobilokra is lehet már szinte bármiben fejleszteni.
Én C#-ban írom az androidos alkalmazásaim(Xamarin)
De nem is a nyelv a kérdéses szerintem, hanem az alapok.
A bojleres kommentre : Valószínű nagyon sok részegységgel kommunikál, amik szintén zárt rendszerek. Ha például a webes felületen beállítom hogy ne 2 hanem 3 zuhanyzás legyen elérhető minden este, ki tudja melyik modullal kommunikál ilyenkor.
Esélyesebb hogy valamilyen köztes eszközzel fogom megoldani a dolgot, és az eszközön emulálom a gyári webes api-t.
Még nem néztem utána tüzetesebben de létezik olyan board ami mint az ESP32 csak wifi+bt helyett egyszerre 2 wifi található rajt? Vagy az ESP32 tud egyszerre csatlakozni több eszközhöz wifin? Bojler -> ESP32 <- Router? -
Janos250
őstag
válasz
motoflug #12580 üzenetére
Hát, a hőkamerás térkép, az elég nagy falat ám!
Ha programozást akarsz tanulni, akkor a Java és a C++ ami a leginkább javasolható. A Java a mobiltelefonok miatt potenciálisan hasznos, a C++ meg minden szempontból. A Java alapja is a C++. Ha C++ -t tanulsz, akkor a "származékainak" (pl. Java, PHP, stb.) a
megtanulása könnyen megy. Csak elő kell venni egy leírást, megnézni mi a plusz pl. PHP-ban, és azt hogyan kell használni, vagy
pl. mi a különbség a Java és a C++ könyvtár szerkezetében, meg ilyesmik.
Én manapság mindenkinek Arduino ügyben az ESP32-t szoktam javasolni, mert:
- Olcsó, gyors, és rengeteg mindent tud.
- A szabványos C++ -t tudja, nem csak a régi szabványokat, hanem a C++11-et is. Bár a 11-ben még előfordulnak gondok. Van persze, amit már a 14-ből is tud.
- Valószínűsíthető, hogy folyamatos lesz a fejlesztés, mert a GCC-t folyamatosan fejlesztik, és ha a gyártó valamilyen ok miatt levenné róla a kezét - ami persze nem valószínű - akkor is lelkes emberek írják máris, hogyan tegyük be az újabb GCC fordítót.
- Operáció rendszert (freeRTOS) használ, amit ha akarunk észreveszünk, ha akarunk nem, de vannak előnyös API-jai.
- Valós hardware két magja van, amit szintén, ha akarunk észreveszünk, ha akarunk nem. Az Arduino programok automatikusan az 1-es magra kerülnek. A 0-ás magon fut pl. a WiFi kezelés, így nem kell aggódnunk, hogy egy leterhelés megakasztja. Ha van valami "ráérős" feladatunk, azt alacsony prioritással tehetjük a 0-ás magra, ott szépen elvan. Pl. szenzorok figyelése, stb.
- A szabványos párhuzamos programozást is támogatja. Pl. link -
Janos250
őstag
válasz
haxiboy #12581 üzenetére
Egy elektromos bojlernek nem lehet - gondolom én - annyira bonyolult a vezérlése, hogy ne lehetne jól megoldani egy helyettesítőpanellal, arra megírva a programot. Én, ha nekem lenne ilyen gondom, valószínűleg az általad a végén leírtakban gondolkodnék (MQTT, okosotthon).
-
gyapo11
őstag
Még ha ki is lehet olvasni, akkor is talán könnyebb út újraírni az egészet, csak föl kell deríteni, hogy hogy kell kiolvasni az adatokat a szenzorokból, meg hogy kell vezérelni a vezérelhető dolgokat. Pl. egy mosógépnél ez jó lenne.
Itt viszont az a gond, hogy lehet benne egy halom software-es számolás, szenzorok adatainak korrekciója, amit pl. gyárilag lemértek és úgy töltötték be a programot a processzorba, meg egy csomó olyan ismeret ami nem triviális, hogy pl. mennyivel a vízcsap nyitása után kell a gázt indítani, mikor kell a szikra, szóval időzítések, összefüggések, ökölszabályok. Biztos jópár munkaóra van abban a software-ben. -
haxiboy
veterán
Igen ez lett volna a második megoldásom, majd írni hozzá egy API-t és a DNS szervereken a gyártó felé a kommunikációt átirányítani a saját webkiszolgálóra.
Ha a JTAG-es kiolvasás tiltott, magáról az IC-ről nem lehet ledumpolni binárisan és nop-olni a fw kiolvasás tiltásának a kódját? -
válasz
haxiboy #12581 üzenetére
Ha jól tudom, az STM32 uC-eken kifejezetten meg lehet tiltani a firmware kiolvasását, és 99,9%, hogy a gyártó ezt meg is tette. Reverse engineering-re lesz szükség, indítanod kell magad ellen egy MITM támadást
és lehallgatni a köztes kommunikációt.
És úgy látnék neki, hogy ha wifis a cucc, egy ESP32 vagy ESP8266-ra írnék egy programot, ami az egész kommunikációt átküldi soros porton számítógépre. -
haxiboy
veterán
Sziasztok.
Adott egy Ariston Velis Evo WiFi vízmelegítő (bojler) amiben található egy wifi controller.
A képen hiányzik egy IC, nem tudom hogy a képen lévő kontroller sérült vagy eleve így van a bojlerben, ennek még kibontáskor utána nézek.Kis utánajárás után megtaláltam magát a kontrollert is
spwf01sa vagy sc (ha minden igaz STM32)A problémám a következő.
Az említett bojler közvetlenül kommunikál egy külső webszerverrel, folyamatosan diagnosztikai és egyéb adatokat küldve a gyártó felé, illetve van egy gyakorlatilag használhatatlan mobilos alkalmazás ahol a webszerveren keresztül lehet bizonyos beállításokat elvégezni.
Egyfelől problémás hogy akár a teljes wifi kommunikációba beleláthatnak, másfelől ha tönkremegy a cég/elérhetetlen a szerver akkor elvesztem az említett funkciót.
Hardware hackelésben nem vagyok jártas így ez a fő kérdésem.
Szeretném az említett mikrokontrollerről lementeni az aktuális firmware-t, és újra írni az egészet a fő funkciók megtartásával teljes egészében kihagyva a gyártó webszerverét.
Esetleg egy konfigurálható MQTT klienst írni rá amivel integrálható bármilyen okosotthon rendszerbe. De ehhez szükség van az eredeti firmware funckióira amivel kiolvashatom/állíthatom a különböző paramétereket.Előre is köszönöm a segítségetek/tanácsotok.
-
motoflug
őstag
Sziasztok,
Így a bezártság alatt a felhalmozott szabadidőt szeretném valami hasznosra becsatornázni, szóval úgy döntöttem továbbképzem magam programozás téren. Egyelőre még nem tudom mivel kezdjem, szerintem Java lesz a befutó, azt tudnám is hasznosítani.Na de jött az ötlet, hogy akkor Arduinoval jobban bele tudnék rázódni, megérteném a hw & sw kapcsolatát. A kellemest a hasznossal alapon csinálnék is egy hőkamerás térképet az ablakokról, mert valahol ereszt.
A kérdésem: mikre lesz szükségem, és honnan tudok, lehetőleg EU-ból rendelni hozzá cuccokat?
-
Janos250
őstag
A pin terhelése nem függ attól, hogy hány ledet hajtasz meg. A ledek száma csak a tápvezetéken beadott táp igényt változtatja. A táp vezetéken, ha kevesebb áramot adsz, gyengébben világít, de egy érték alá nem lehet menni,mert akkor nem működik.
(Ha még nem lenne világos: a led szalagnak van 3 vezetéke:
föld
jel
5V
A föld és az 5V közé kell erős táp) -
Sanki
addikt
Sziasztok.
1-2 dolgot bevásároltam én is ali-n februárban, mert kedvet kaptam 1-2 apróság elkészítéséhez, szóval lassan csatlakozok a csapathoz.
Első "projektem" egy parkolássegítő lenne a garázsba, találtam pár kész projektet (1, 2, 3), ezekből szeretnék valamit összerakni.
Eddig a főbb dolgok megvannak (kínai arduino nano (atmega328p nano v3), led szalag WS2812B (1 méter 30 ledest vettem, ami 9 Watt/méter), illetve ultrahangos érzékelő).Jelenleg csak USB-ről tudok áramot adni a lapnak, az adatlap szerint a pin-ek max 40mA-t képesek leadni, ez - ha jók a számításaim - akkor a fenti ledből max 6 db-hoz elég (~0,06mA / led).
A kérdésem az lenne, hogy az megoldható, hogy a programba 6 led-et hivatkozok be, de az egész 1 méter szalagot rákötöm a panelre? (Teszteléshez, ameddig nem szerzek külön 5V-os tápot), egyelőre még nem döntöttem hány ledet akarok működtetni, de olyan 15-20 körül max.
A kódokat még tanulmányozom, mert 1-2 dolog nem érthető, de igyekszem. -
válasz
Victoryus #12574 üzenetére
Erre teremtette az Úr a Raspberry Pi-t.
1 perces Google keresés eredményei: [1. projekt] [2. projekt] -
Szerintetek egy arduino uno, vagy esp32 elég erős ahhoz, hogy internetes rádiót streameljen fm transmitterrel? Lenne hozzá egy érintő kijelző is, ahol lehetne váltani a csatornák közt, mondjuk. Elég lenne 10 db rádió adó. Olyat láttam Youtube-on, hogy sima internetes rádió, hangszóróval, nekem az a része nem kell, adott a régi rádió, csak nagyon recseg már rajta minden adás.
B verzió, régi androidos telefonra csatlakoztatok jack-en egy fm transmittert... de az arduinós verzió izgalmasabb. -
JozsBiker
aktív tag
válasz
balazs0102 #12567 üzenetére
Valahogy meg kellene nézned a BT kommunikációt, azazhogy mi jön az Android eszköztől, ill. az Arduino mit küld. Nemtom mennyire vagy benne, ezt úgy lehet legegyszerűbben, ha adat adáskor ill. vételkor a soros monitorra is kiíratod amit küldesz/kapsz. Aztán ez alapján lehet agyalogni.
Vagy esetleg keress egy egész egyszerű alkalmazást, amivel magát a BT működést le tudod ellenőrizni és a hibáját ki tudod zárni. Pl.:
App Inventor 2 tutorial - Android Control Arduino with HC-06 Bluetooth module
Még annyit jegyeznék meg, hogy nekem HC-06 modulnál a gyors villogás hasonló a Tiedhez ha nincs kapcsolat, viszont utána fixen világít a LED, teljesen függetlenül az adatforgalomtól ( mint ahogy ez a fenti videó végén is látható ). De nincs kizárva, hogy HC-05 -nél úgy az üzemszerű, ahogy Te írod.
-
balazs0102
senior tag
Sziasztok!
Az alábbi linken lévő dohányzóasztalt szeretném megvalósítani. LINK
Ami elektronika kell hozzá azt már beszereztem, összekötöttem és működik is, de csak egy része. (igaz csak egy pomixity szenzort és a hozzá tartozó ledet kötöttem be)
Ami nem működik az a bluetooth -os vezérlés. Az andoridos app feltelepül, kapcsolódik is sikeresen a HC-05-ös bluetooth modulra, viszont se a reactive, se a background színeket nem állítja. Az megy csak ami a programkódban benne van alap színbeállításként az alap fényerősséggel:
// Initial background color int backR = 100; int backG = 50; int backB = 10; // Initial reactive color int reactiveR = 10; int reactiveG = 50; int reactiveB = 100; int brightness = 50; // Initial brightness
Ha manuálisan ezeket átírom szépen változik a szín is, de a BT modul akkor se állít semmit.
A projekt leírása az aurduino porgramkódja és az androidos app is innen van (a lap alján van a bluetooth-al kiegészített programkód): LINK
Tud valaki segíteni ,hogy mit ronthattam el? Elvileg minden pin csatlakozás e helyén van, már próbáltam felcserélni a HC-05ös modul TX-RX és az alaplap 53-52 es pinjeit is de semmi nem hozott változást.
Még annyi, hogy a BT modulon van egy visszajelző led, ami gyorsan villog míg nincs csatlakoztatva semmi, majd ha csatlakozott akkor néhány másodpercenként villan csak fel 2X. De mikor telefonon változtatnék színt, szeritnem akkor is kellene villogjon, de akkor nem csinál semmit.... -
Gyb001
senior tag
Valaki találkozott már offline ingyenes sebesség limit "adatbázissal"? Nem szigoruan arduino környezetbe kellene. (Linux liteos 70mai dashcam pro + GPS)
-
Sziasztok! Dolgozott már valaki MCP23017 ic-vel? Mennyire megbízható? Lenne egy projektem, ahol egy meglévő 5V-os μC-t szeretnék lecserélni valamire, amit én magam tudok programozni, és van rajta wifi. A nehéz benne az, hogy összesen 20db I/O portot kellene tudnia kezelni. ESP8266+MCP23017 port extenderre gondoltam, mert az ESP32 portjai ha jól tudom nem 5V toleránsak, a 8266 portjai meg igen. Szóba jöhetne még egy arduino nano firmata fw-el + ESP8266, de az nem sokban különbözne attól, mint ha MCP23017-t használnék, illetve arduino nano + esp csak wifi kapcsolatra AT parancsokkal, de ez utóbbi nem túl szimpatikus.
Van olyan Arduino IDE kompatibilis μC, ami egyben tud 20 I/O portot, wifit, és 5V-ról működik? -
ecaddsell
aktív tag
válasz
gyapo11 #12562 üzenetére
ESP32
#include "xtensa/core-macros.h"
uint32_t start, stop;
...
start = xthal_get_ccount();
<kód amit mérni akarsz>
stop = xthal_get_ccount();
A különbséget meg kiírod soros porton, USB-n stb.
Hiába mutatod meg a forrás valami programnak, ha a háttérben az interruptok viszik az időt, meg néha cache miss van a nagyobb kód miatt, ez lehet csak ESP32, vagy mondjuk STM32-nél meg pl. bus matrix hozzáférés korlát van (az STM32 bus matrixot érdemes kicsit megnézni, tanulságos, hogy működik egy modern MCU).
A profilerek is tényleges futást mérnek és sok esetben egyszerűbb tickcount-ot nézni (ez majdnem mindenütt van) mint a toolokkal (ha van egyáltalán) küzdeni.Egyébként az iopin toggle is ugyanez. Az állapotváltás közzé teszed a kódot amit mérsz és szkópon vagy multiméteren nézed az eredményt. Itt is a HW bütykölés csupán a pin váltás nézése.
De felőlem azt csinálsz amit akarsz, elég sok infót bedobtam már, lehet többiek tudnak olyan progiról amit keresel, nem hiszem, hogy olyan egyszerűen működik mint gondolod, legalábbis ha tényleg komoly időzítési kritériumok vannak.
-
válasz
gyapo11 #12562 üzenetére
"én pl. a kapcsos zárójelet üres sorba teszem elöl-hátul. "
Én miután Kínából egy csomó hamisított attiny85-öt kaptam, amik belül attiny12-k voltak, bosszantott a dolog, és beleástam magam az AVR assembly-ba (mert ram hiányában nem támogatja a C fordító) hogy tudjam őket valamire használni. Eléggé egyszerű és szerethető dolog, már írtam benne servo motor kezelést, serial kommunikációt is.
úgyhogy ezentúl valószínű a nagyobb lapokhoz is fogom használni az assembly-t az időzítés-érzékeny dolgokra. Ha esetleg kérdésed lenne ezzel kapcsolatban, talán tudok segíteni. -
gyapo11
őstag
válasz
ecaddsell #12561 üzenetére
Ez nem mond sokat a valós felhasználás lehetőségeiről. Olyasmire lettem volna kíváncsi, hogy van egy program, x sor, és az hányszor fut le másodpercenként. Ez is elég durva közelítés, mert nem mindegy mik az utasítások, vagy én pl. a kapcsos zárójelet üres sorba teszem elöl-hátul. Még jobb, ha közben kommunikál is a board, mert ott is megy az idő.
Lehet majd nézek valami hosszabb programot a neten és lemérem, csak nem akarnék ezért hw bütykölésbe kezdeni, és a valós felhasználásokban meg ritka, hogy az arduino magában dolgozik bármi ráakasztott periféria nélkül.
Az se mindegy, hogy én oldom meg az időzítéseket pár sorban, vagy beépítek egy több kB-os timer libraryt.
Szóval a tökéletes az lenne, hogy egy programnak megmutatom a forrást, és megmondja hogy melyik sor hány mikrosec, és összesen mennyi idő, ehhez már csak a perifériákra várakozást kell hozzáadni és kész is vagyunk. -
ecaddsell
aktív tag
válasz
gyapo11 #12555 üzenetére
Ha semmi mást nem csinál csak direktbe pineket matat az arduino is gyors (nem 100kHz), nézd meg itt (korábban is javasoltam, hogy keress rá a pin toggle-re):
https://arduino.stackexchange.com/questions/24452/pin-toggle-speedAz ESP32 10 MHz (tegnap rosszul írtam):
https://www.esp32.com/viewtopic.php?t=15952.75x gyorsabb, ami nem annyira sok.
STM32F103-nál 18MHz-et lehet elérni, de mondjuk az a kód nem hasonlítható a többihez, mert nem fordított kód, hanem assembly-ben megírt, előre feltöltött regiszterekkel operál.
https://stackoverflow.com/questions/59708656/stm32f103c8-gpio-speed-limit
Vsz. az ESP32 meg az arduino is gyorsabb lenne, ha így lenne megírva.Összességében azért ezek az értékek jól mutatják kb. mit lehet várni. Az STM32 egy nagyon flexibilis rendszer, de hobby szinten nehéz használni, az arduino a másik véglet, az ESP32 meg valahol a kettő között (csak ne kelljen assembly-ben használni, ne legyenek idő kritikus részek benne...).
Viszont az órajelen felül a nagyobb adatoknál is hátrányban van az arduino rövid proci szóhossz miatt.
-
Janos250
őstag
válasz
gyapo11 #12551 üzenetére
Már nem pontosan emlékszem, de régebben próbaként csináltam olyan programozható led szalag meghajtást ESP32-n, hogy while-ban figyeltem a gépi ciklusok számát (a 80 Mhz-est, mert csak azt lehet), így elég pontosan lehetett időzíteni még a 200 körüli nanosec-eket is. Nem mértem hányszor ment le, de néhányszor le kellett menjen 200 nanosec alatt, mert másként pontatlan lett volna. Viszont az ESP32 oprendszere - ha nem tiltod le a megszakítást - egy millisec-enként megszakít talán 6-8 microsec időtartamra, mert akkor nézi meg, kell-e taskot váltani. Ha kell, akkor parkolópályára kerülsz egy ideig. Az oprendszer által kezelt megszakításokból kétféle van: az egyik csak egész millisecenként adja rá a vezérlést, a másik meg azonnal. Régebben használtam, már nem nagyon emlékszem rá :-(
Az se mindegy, melyik magra teszed. A nullás kezeli a WiFit és a BT-ot, oda nem érdemes rakni időkritikus dolgokat. -
JozsBiker
aktív tag
válasz
Janos46 #12553 üzenetére
Szerintem a soros porttal lesz gond, az IDE időnként nekem is elég hektikusan kezeli a lapokat. Van hogy újra kell indítani az IDE -t, vagy várni egy darabig, amíg megkapja a megfelelő COM portot. A COM1 mindenképp gyanús, azt USB port szerintem nem szokta megkapni, csak 3 -tól felfelé.
-
gyapo11
őstag
válasz
ecaddsell #12552 üzenetére
A 4 MHz 40-szerese a 100 kHz-nek, az órajel pedig nem annyival gyorsabb (80-240 MHz). Az én ciklusomban azt hiszem volt egy if is, ami valahány váltásonként kiírt valamit.
Nem ledvillogtatót szeretnék, hanem tudni, hogy kb. mire számíthatok pollozással, hogy eszerint válasszak processzort.
Játszottam kicsit egy nanoval interruptosat, és furcsa dolgok történtek, kétszer írta ki azt amit csak egyszer szabadott volna. Pedig az interruptot azonnal letiltottam amikor beérkezett a jel. Szóval nem értettem mi történik, és így nem tudom használni az irq-t. -
Janos46
tag
Sziasztok!
Új vagyok arduino-ban és segítséget szeretnék kérni (remélem jó helyen).
Vettem egy Arduino UNO-t, és a leírtak alapján feltelepítettem (Win7) az 1.8.12-es programot. A z UNO-t csatlakoztatva a Win nem talált hozzá drivert, az eszközkezelő ismeretle neszköz - USB2.0 serial-t jelez, a portoknál pedig LPT1 és COM1 látszik, az UNOn pedig az ON led világít és az L led folyamatosan villog. Az arduino progit futtatva jelzi, hogy a COM1-en van. Az alaplap kezelőn beállítottam az UNO-t és betöltöttem a Példák/01.Basic/Blink-et, majd feltöltés után a zöld csík végig fut, némi várakozás után az alábbit 10-szer kiírja. Mi lehet a gond? Tudna valaki választ adni rá? Megköszönném, hogy tovább lephessek.
Hiba történt a vázlat feltöltése közben
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xbc -
ecaddsell
aktív tag
válasz
gyapo11 #12551 üzenetére
Csak az ESP32-ről vannak ilyen téren tapasztalataim, ami gyors de van néhány buktatója.
Ha csak output pin-t váltogatsz akkor azt akár 4MHz-el is meg tudja tenni, azaz a loop idő microsec alatti (nem mértem meg, a neten megtalálható már mások megtették).Számomra az első pofon amibe beleszaladtam az ESP32-vel az az interrupt latency volt. Ugye ez az az idő ami eltelik a között, hogy valami input pin-re jelet adsz és a kód eljut odáig, hogy elkezdi futtatni az első általad kért utasítást. Ez pedig nagyságrendileg 2 microsec. Ha nincs semmi kritikus időzítésed akkor nem hangzik soknak, de ha kiszámolod, hogy egy 240 MHz-es magnak ez hány gépi kódú utasítás akkor kijön 1 döbbenetesen nagy szám, kb. 500 utasítás (ennek nagy részéért az RTOS felel, ha ez vigasztal).
Ebből talán már látszik, hogy maga proci gyors, elég komplex műveleteket végezve (ezt nem megszakításban) 64 bites ill. double számokkal (sima float van HW-esen), nagy tömbökben stb. sosem volt gondom ezzel. Viszont a nagy interrupt latency az azt jelenti, hogy ha nagyon sok a megszakítás az nagyon vissza tudja fogni és kevésbé kiszámíthatóvá teszi.
Ebbe sajnos akkor futottam bele amikor a 10 digit/s-es frekimérő felbontását szerettem volna javítani, amihez 10 000 mérés kellett volna másodpercenként (ha a jelnek van ennyi periódusa).Az STM32-vel ilyen gond nincs (mondjuk egy F103-ra eleve aligha varázsolsz valami oprendszert ami bezavarjon) viszont a blue pill-t leszámítva nincs értékelhető Arduino támogatása (vagy legalábbis amikor néztem nem volt) és pl. a nagyobb F407-nek (ebben már van float) már nem mellékesen a legkisebb tokozás is a már nem éppen barátságos 100pin (akkor sem barátságos amikor gyártatod a NYÁK-ot, részletek eléggé off).
Nálam a megoldás az volt, hogy még egy CPLD-t teszek a már eleve külön panelen lévő CPLD mellé ami a gyors logikát kezeli, ha már az ESP32 ebben nem jó. Ennek a VHDL kódját már meg is csináltam és működni látszott amikor parkolópályára került egy kicsit ez a projekt (sőt most per pill. felújítás miatt minden ami ehhez kell le van fóliázva...).
Az igazi az lenne, ha lenne kis pin számú (nem BGA) CPLD nagyobb logikával megfizethető áron (sajnos a gyártók ezen a vonalon alig fejlesztenek, nekik ez nem business). Az arduino/ESP32 tök jó arra, hogy user interfész logikázzon és azt gyorsan össze is lehet dobni, de ha valami tényleg gyors kell legyen ahhoz HW logika kell.
Egyébként ha rákeresel arra, hogy pin toggle majdnem minden infót készen kapsz, de 1 blue pill. (meg programozó ha nincs) nem akkora befektetés és ha nincs is szkópod a legtöbb multiméter sokkal többet tud mint amilyen sebességgel ezek tudják a pint módosítani (pl. az elég olcsó ANENG AN8008 10MHz-ig).
-
gyapo11
őstag
Ha valakinek van egy nagyobbacska programja arduinoban, kíváncsi lennék a loop időre, hogy 1 másodperc alatt hányszor fut le. Egyszer egy számláló cikussal mértem, az 100 kHz fölött volt kicsivel, nyilván egy több soros program lassabb. Akár ez a legutóbbi Nyirike hőmérő, vagy egy programozható ledszalag meghajtó, ilyesmi.
Érdekelne még az esp32 és stm32 is, hogy ott az órajel többletnek megfelel-e a loop idő rövidülése.
Persze csak delay nélküli programok játszanak, illetve esp32-n talán még ez se akadály a két mag miatt. -
válasz
gyapo11 #12549 üzenetére
Én meg zenész vagyok, első - félig-meddig - sikeres építésem egy gitártorzító kapcsolás volt. Egy kartonlapra forrasztottam fel a cuccokat, és pár percig működött, aztán ki tudja miért soha többet.
Én igazából programozni szeretek, minden más (külső elektronika) csak szükséges rossz.
-
gyapo11
őstag
válasz
Janos250 #12545 üzenetére
Már megérte, hogy itt vagyok.
Aryes: szívesen, én analóggal kezdtem, AC125 germánium tranzisztor, zéner, kondi, relé, exponáló óra az Ezermesterből, de sajnos nem működött, viszont nem adtam föl.
És javaslom a feszültségben gondolkodást. Először én is áramban akartam látni az áramkörök működését, de úgy nehezebb. A feszültség lent meg fönt sokkal közelebb van a digitális áramkörökhöz is.
-
cidalain
veterán
válasz
pellesmartin #12546 üzenetére
Nyilván csinálnék egy globslis változót, ami első érintésre on lesz és forgat 90-et, masodik érintésre off és vissza 0-ra
E helyett
myServo.write(180);
delay(5000);
myServo.write(0);
if(servoon==0)
{
myServo.write(90);
servoon=1;
}
else
{
myServo.write(0);
servoon=0;
}
-
pellesmartin
tag
Sziasztok! RFID kártyaolvasóval szeretnék működtetni egy servo motort(SG90),meg van hozzá a kód is,csak úgy van megírva hogy ha odaérintem a megfelelő kártyát akkor fordul a szervó,aztán egy delay-el visszaáll 0-ra. Nos nekem úgy kellene hogy ha egyet érintek,forog 90et,mégegy érintés vissza 0-ra. Valaki segítene ebben? Itt a kód:
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5 //define green LED pin
#define LED_R 4 //define red LED
#define BUZZER 2 //buzzer pin
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
Servo myServo; //define servo name
int angle = 0;
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
myServo.attach(3); //servo pin
myServo.write(0); //servo start position
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "XX XX XX XX") //change here the UID of the card/cards that you want to give access
{
Serial.println("Authorized access");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
myServo.write(180);
delay(5000);
myServo.write(0);
digitalWrite(LED_G, LOW);
}
else {
Serial.println(" Access denied");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(1000);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
}
}
-
gyapo11
őstag
Ha az emitteren kicsi ellenállás van, ami már meghaladná a tranyó kollektor-emitter áram képességét, akkor persze tönkremenne, tehát erre figyelni kell. A bázis oldalon lehetnek tized Ω-ok is. Miért? Mert a bázis nem vesz föl több áramot, mint az emitteráram bétáadnyi része.
Van egy szabályozó tényező, az hogy az emitter mozogni tud feszültségben le-föl és a bázis-emitter feszültség igyekszik 0.7 V-on maradni.
A bázisba a tized Ω nagyon sok áramot be tudna tolni ha pl. hirtelen ugrik ott a feszültség fölfelé, de ahogy nő az áram, a kollektor-emitter vonalon több áram kezd folyni, ettől az emitter emelkedni kezd (követi a bázist), és a bázis-emitter feszültség tartja a 0.7 V-ot, mert az emitter emelkedésével a tranzisztor nyitni kezd. Ha csökken a feszültség a bázison, akkor meg a B-E feszültség 0.7 V alá megy, a tranzisztor nyitni kezd, a kollektor-emitter áram csökken, ettől az emitter lefelé indul, a B-E feszültség nő és 0.7-nél beáll a követett állapot. Tehát az emitter mindig szigorúan követi a bázis mozgását.Ha az osztó korlátozza a bázisáramot, nem ugyanannyi áram "folyik el" a mért körből?
Az osztón átfolyik a bázisáram is meg a kollektor-emitter áram is. De a bázisáram az bétáadnyi, több százas bétánál a kollektor-emitter áram több század része, és nem az osztó korlátozza, hanem a föntebb leírt folyamat, a B-E feszültség 0.7 V-on tartása.
Ha pl. változatlan bázis feszültségnél ráteszel egy négyszögjelet az emitterre, és méred a bázisáramot szkóppal, akkor ugrálni fog le-föl.
Kb. hasonló elven működik a földelt bázisú kapcsolás, amikor a bázis földre van kötve és az emitterre adjuk a jelet, ami erősítve jelenik meg a kollektoron. -
válasz
gyapo11 #12538 üzenetére
Én igazából ott vagyok leragadva, hogy a tranzisztor árammal vezérelt, és áramerősítést végez, tehát miért jelenik meg az emitteren ugyanaz a feszültség - 0.7V?Mire ezt leírtam, rájöttem, hogy a bázis-emitter ez esetben diódaként viselkedik. Viszont a 90Ohm elég bázisvédő ellenállásnak? Nem hiányzik onnan egy nagyobb értékű ellenállás? Vagy az emitteren a feszültségosztó úgyis korlátozza az áramot? Ha az osztó korlátozza a bázisáramot, nem ugyanannyi áram "folyik el" a mért körből? -
Nyirike
csendes tag
válasz
gyapo11 #12541 üzenetére
A táblázat nincs a kódban. Feszültségekből számolom vissza a termisztor ellenállását. És tesztek alapján ellenőriztem, hogy jó e a képlet.
A végén pedig az kapott ellenállás érték alapján visszafejtem a korábban mért ellenállás/hőmérséklet párok alapján kikalkulált együtthatók segítségével.
-
gyapo11
őstag
válasz
Nyirike #12540 üzenetére
Tehát van egy mért táblázatod, és ezzel hasonlítottad a függvény értékeit. Ha én csináltam volna ilyet, akkor kb. 3 állapot lenne, alacsony, jó, és magas.
Vagy használod valamire a infót? Hogy pl. nem 90 fokos a víz hanem 80 vagy 70, függ ettől valami? De alkotásnak/gyakorlásnak jó kis project.
-
Nyirike
csendes tag
válasz
gyapo11 #12539 üzenetére
Ez a termisztor nem lineáris. A függvényt meg én alkottam meg amiből statisztikát csináltam és 0-200 ohm között 2%-s pontossággal tudom mérni. Sajnos ez elég tré pontosság, mert 1 ohm is már fokokat jelent ahogy emelkedik a hőmérséklet és csökken az ellenállás. Az a tartomány ami érdekel ott viszonylag pontos. 50 fok alatt meg nem nagyon érdekel, mert nem ez az üzemi működés.
Az hőfokot pedig az alábbi kalkulátorral számoltam ki:
https://sanjit.wtf/Calibrator/webCalibrator.htmlA termisztort meg kimértem 110-40 fokig fokonként ebből volt egy közelítő ohm/hőfok értékem. Ebből tudom amúgy hogy 50 fok alatt drasztikusan emelkedik az ellenállás 0 foknál már 5 kOhm.
A legbiztosabb az lenne ha beépítenék egy új hőfok jeladót ami teljes pontos lenne, de nem akartam a kocsihoz ennyire hozzá nyúlni.
A pontosságot úgy próbáltam növelni, hogy a lehető legkisebb szórású ellenállásokat használtam azokat 3 műszerrel megmértem, a tranzisztor nyitófeszültségét is 3 műszerrel mértem meg és így jutottam el a viszonylag pontos kalkulációhoz.
-
gyapo11
őstag
Azt nem tudok, de elég egyszerű. Van egy feszültség, amit le akarunk követni minél kisebb terheléssel. A tranyó bázisa rajta van a mérendő ponton, az emittere meg ~0.7 V-tal lejjebb követi. Az emittert már lehet terhelni. Mi történik ekkor? Az emitter felé elindul a terhelő áram, de ezt nem a bázison keresztül kapja a mérendő pontról, hanem a kollektorból a tápról. A bázison csak emitter áram/béta áram folyik.
-
Nyirike
csendes tag
Köszi mindenkinek a segítséget. Működik viszonylag jól.
Amúgy ezt csináltam: [link] -
válasz
Nyirike #12531 üzenetére
Nagyon nem kell számolni, nem tudom milyen ellenállást vettél, de ha az eredeti rajzon szereplő 1k és 330 Ohm-ot akarod behelyettesíteni, akkor az 1k helyére 3M, a 330 helyére 1M, és próbáld ki, hogy mennyire lesz zajos az analogread, ha nagyon, akkor próbáld arányosan csökkenteni az értékeket (pl 1M és 330k, 100k és 33k stb) amíg nem kapsz megfelelő pontosságot.
-
gyapo11
őstag
válasz
Nyirike #12527 üzenetére
Igen, az emitter követőt kipróbálhatod, de közben rájöttem, hogy nem az osztott értékre kell kötni, hanem az osztó tetejére, és akkor szinte mérhetetlenül kis mértékben fog beleszólni a feszültségviszonyokba. Jó nagy bétájú tranyó kell hozzá, esetleg lehet darlington is.
A számolás elég egyszerű, van egy 90 Ω, ezzel sorban a termisztor. Ott van még a műszer is, amiről nem tudunk semit, hogy milyen ellenállása van és hogy lineáris-e. De ha nem lenne ott, akkor a soros kapcsolás miatt a termisztoron mérhető feszültség:
U(t)=R(t)/(90+R(t))Azt figyelembe kell venni, hogy a tranzisztor bázis-emitter diódáján esik kb. 0.7 V feszültség, tehát az osztóra ennyivel kevesebb kerül, a termisztoron 0.7 V az már 0 lesz az osztón.
-
Nyirike
csendes tag
válasz
gyapo11 #12526 üzenetére
Tegnap megcsináltam a kapcsolást több ellenállás párral. Mindegyiknél ugyanaz a eredmény. Maximum 200ohmig tudom visszaszámolni a termisztor értékét, Hiába emelem 500 esetleg 1kOhmig.
Elkezdtem nézni a feszültségosztó képletét és mivel 90Ohm a felhúzója a műszernek, amint emelkedni kezd a drasztikusan a termisztor ellenállása annál kisebb értékben változik a rajta eső feszültség így a visszaszámoló képlettel egyre pontatlanabb.
A mutató amúgy 60-110 fok között mutat valamit így érthető hogy úgy lett belőve a felhúzója.
Tesztek alapján igazából e tartomány között viszonylag pontosan tudom mérni a termisztor értéket arduinoval persze lekövetve a tápfeszültséget ami 12 esetleg 14.4 vagy bármi más lehet.A képletek jól működnek, mert folyamatosan kiraktam a consolera a számolt feszültség eséseket a mutatón, a termisztoron és a plusz feszültségosztón és mindegyik az, amit számolok.
Tehát köszönöm a segítséget. A mutató és az arduino is jól megy úgy hogy nem zavarják be egymást.
Az általad írt Emitter követő tranzisztor bekötése pontosabb értéket adna? Tudnék 200 ohm fölé is számolni? Vagy érdemlegesen nem változna sokat az érték?
-
gyapo11
őstag
Akkor be kell tenni egy emitter követő tranzisztort, az bétával szorozza az osztóról érkező áramot. Tehát egy 500 bétával rendelkező tranzisztor bázisát a két ellenállás közös pontjára, az emitterét az arduino bemenetére (ide esetleg még egy szivárgó áram elleni 1 MΩ-ot is), a kollektorát meg 5 V-ra. Az osztási arány ugyanannyi, de az ellenállások értékét meg kell szorozni bétával, vagyis 500-zal, akkor a fölső ellenállás 500 kΩ, az alsó meg 165 kΩ. Nem tudom mennyi az arduino bemenő ellenállása, esetleg azt is bele kell számolni.
-
fpeter84
senior tag
Sziasztok! STM32-vel van valakinek tapasztalata a read out protection-al kapcsolatban? Adott egy STM32 klón Gigadevice GD32F103R8T6 csipp, amire sikerült is rácsatlakoznom egy STLink V2-vel - az azonosítóját kiolvassa az openocd és win-es ST-link utility is, de az előbbi csak úgy eldobja a flash dump kísérletet, az utóbbi az konkrétan meg is mondja hogy le kellene róla venni a read out protection-t először. Na most ez ott van a menüben, de ha megpróbálom levenni akkor mi történik? Elveszik a flash tartalma és lesz egy üres eszközöm amit újra írhatok, olvashatok? Természetesen az lenne a célom hogy lementsem ami benne van, nem lenne jó ha fejreállna... Ezt felejtsem el?
-
Nyirike
csendes tag
Van egy másik megoldás is. Lekötöm a műszert és PWM outputtal egy TIP120 mosfettel kamu jelet generálom a műszernek és akkor nem fogják zavarni egymást. Ezt korábban már teszteltem. És ment.
Az a gond ezzel a feszültségosztó dologgal, hogy 50-110 fok között 180 Ohm a különbség.
Ha rosszul választok feszültségosztót akkor sok mindent fog mutatni a műszer csak értelmes értéket nem.De ha meg túl magas akkor esélyes hogy az Arduinos mérésem lesz saccoló mint mérő.
180 Ohm range nem sok. Ehhez milyen feszültségosztót érdemes választani? 10k / 1k? már elég távol van nem? Vagy menjek feljebb?
-
Nyirike
csendes tag
válasz
Nyirike #12521 üzenetére
Valami ilyesmire gondoltam a kalkulációra:
A1 input feszültség számítása:
float inputValue = analogRead(A1);
float a1Voltage = (inputValue * 5.0) / 1024.0;
float termistorVoltage = a1Voltage / (330/(1330); //330 és 1k az osztóÍgy kijön a termisztoron eső feszültség:
Aztán tovább így tudom kiszámolni, hogy mennyi a termisztor értéke:
Rt = 90 * ((1/((12/termistorVoltage)-1));
// 90 ohm a felhúzó a mutatónak
// 12 bejövő feszültség a mutatóraOké a 12V az nem 12V de azt megoldom másképp mert azt mérem folyamatosan.
Ez így mennyire hülyeség?
-
-
Nyirike
csendes tag
válasz
gyapo11 #12520 üzenetére
Köszi.
Így gondoltad?
Így hogy változik a termisztor ellenállás mérése a kódban?
Eddig úgy csináltam hogy 4.7k ellenállással felhúztam 5V-ra mérés után ki tudtam számolni:
float vA1 = analogRead(A1);
float R2 = (float)4700 * (1023.0 / (float)vA1 - 1.0);Ez már így nem jó. Se a felhúzó nincs se a divider nincs benne.
-
gyapo11
őstag
válasz
Nyirike #12519 üzenetére
Szerintem az a 90 Ω a tápra elég kicsi ahhoz, hogy az arduino analóg bemenete nem dumál bele. Szóval a TH pontra tegyél egy osztót, pl. 1 KΩ és 330 Ω, a 330 alsó lába testre, és a két ellenállás közös pontjára az arduino bemenet. Így még egy gázfröccs esetén sem lépi túl az 5 V-ot a feszültség a bemeneten, még akkor sem, ha leszakad a termisztor és a teljes táp megy az osztóra (14.4 V).
-
Nyirike
csendes tag
Köszi a gyors választ.
Igen analóg bemenetre kötöm A1 ha jól emlékszem. A termisztort magában mértem és elég alacsony ellenállásokkal dolgozik. 250 Ohm-0 között van az értékelhető hőfok görbéje. A mutató 40 és 110 között mér és nekem sem kell nagyobb range. 9 fokban 1600Ohm, de igazából mindegy is.
Itt a mutató sematikus rajza.A TH az a Thermistor pin. Amúgy a 15 és 75 Ohm sorba van kötve (megmértem tehát úgy tűnik hogy 90 Ohm a felhúzó ellenállása a bejövő jelnek.
Hogy kellene akkor bekötnöm a arduinot? Mivel 0-12V lehet a TH-n pinen lévő feszültség emiatt ahogy írtad kellene a feszültség osztó.
A 90ohm-s felhúzó megkavarja a mérést is nem? Magában a termisztort tudom mérni egy 5V-ra való felhúzó ellenállással, de ha bekerül egy feszültség osztó akkor hogy változik a mérés?
Köszi
-
válasz
Nyirike #12517 üzenetére
Köss az arduino és a jel közé egy nagy értékű ellenállást (>MOhm). Gondolom analóg bemenetre kötöd, ami feszültséget olvas, elvileg működnie kell. Ha túl zajos a jel, csökkentsd az ellenállás értékét addig, amíg nem zavarja láthatóan a műszert, és persze próbáld minél közelebb hozni az arduino-t a jelhez, meg árnyékolni, amit lehet.
A jel egyébként 0 és 12V közt változik? Mert akkor kelleni fog egy feszültségosztó is. Gondolom most is használsz. A nagy értékű ellenállást az osztó és a jel közé tedd. -
Nyirike
csendes tag
Sziasztok.
Vagy egy analóg műszerfalam. A vizhőfok mutatója úgy működik hogy 3 lába van. 12v/gnd/jel.
Szeretném arduinoval olvasni a jelet.
A jel egy sima thermistor ból jön, tehát változik az ellenállása hőfok függvényében. Az értékeket tudom. Sőt az értékeket is le tudom olvasni ha csak az arduino van a rendszerre kötve.A gond az hogy ha rákötöm azarduinot és a mutatót együtt, akkor rosszat mutat a mutató. Ki lehet Ezt szűrni valahogy? Hogy mind az arduino tudja olvasni és a mutató is jó jelet kapjon?
Köszi.
-
gyapo11
őstag
válasz
Janos250 #12512 üzenetére
Ez jó, meg tudom írni.
Mit lehetne kitalálni az ellen, hogy az első próbálkozásra pont eltalálja a helyes kódot? Ennek persze iszonyat kicsi az esélye, de nem 0.
Olyasmire gondoltam, hogy a kód hossza is változzon minden adásnál, de ezt is eltalálhatja. Vagy egyszerűen csak legyen jó hosszú a kód, és ezzel jó kicsi az esély? -
gyapo11
őstag
válasz
ecaddsell #12511 üzenetére
A törés nálam azt jelenti, hogy nem tudja a kódot, ezért más módon jut hozzá a dekódolt tartalomhoz. A brute force meg azt, hogy a lehetséges összes kódot végigpróbálja, és valamelyik betalál.
A véletlen számokat nem lehet törni, végig kell próbálgatni mindet. Minél több a byte a kódban, annál tovább tart. De már az első helytelen után leáll a folyamat, mert utána már kettőt vár a vevő.
A public kulcsos mókát nem tudom megírni, az egészben meg az a poén, ha én meg tudom csinálni, max a flash ic írás-olvasásához használok mások által megírt libraryt. -
Janos250
őstag
válasz
gyapo11 #12509 üzenetére
"adni-venni kell byte-okat"
Az ESP32 RMT-je (ReMoTe) ezt (is) csinálja.
"vagy van jobb ötlet?"
Nem jobb, más:
Egy titkos algoritmussal az adó az utoljára adott N db. kódból generálja a következőt. A vevő tudja az algoritmust. Ha elvész a szinkron, akkor, ha az adó ad egymásután N db. kódot, akkor a vevőnél helyreáll a szinkron.
Akkumulátort cseréltél,és nem nyit a távirányító. Megnyomod egymásután mondjuk 15-ször, és már nyit. -
ecaddsell
aktív tag
válasz
gyapo11 #12509 üzenetére
Olyan nincs, hogy feltörhetetlen, csak olyan, hogy sokáig tart és nem éri meg vele foglalkozni.
Ha a vevőben van óra akkor lehetne nyilvános kulcsos rendszer.
Az adóba be kell írnod az óra percet, hozzáadsz még két random számot és a titkos kulccsal titkosítottan elküldöd.
A vevőben a nyilvános kulccsal kibontod. A két random számot eldobod az óra percet meg hasonlítod és ha hibahatáron belül van (mondjuk 2 perc) akkor elfogadod. -
JozsBiker
aktív tag
Leírom, hátha nem dobnak ki érte.
A kód viszonylag egyszerű, ha a user benyomja az Adat_keres gombot, akkor pár változó beállítása után és a BT kapcsolat megléte esetén küld egy karaktert az Arduino -nak ami azt jelzi, hogy jöhetnek az adatok. A kapott byte -okat egy ciklussal beolvassuk és letároljuk egy listában.
Tökéletesen működik is minden, csak egy kicsit csicsázni szerettem volna, hogy sok adat esetén legyen egy folyamatjelző, hogy a user láthassa, hogy csörgedeznek az adatok. No ez nem akar működni. Pirossal kommenteztem ezt a sort. Aztán a debuggolás során már kínomban a legelső sorba írtam be egy kiíratást, és meglepő módon az is csak a While ciklus végén fut le, miután már minden adat megérkezett. Ennek az okára szeretnék valahogy rájönni. -
gyapo11
őstag
Kerestem arduino+infra projecteket, de az első oldalon mindegyik gyári távirányítót olvas, esetleg annak megfelelő jeleket ad ki.
De én sajátot szeretnék, pár byte-ot szeretnék küldeni és azt venni. Ez egy törhetetlen távirányító lenne, mert a benne levő adatsor véletlen számok halmaza, senki nem fogja tudni egy esetleg leolvasott számból, hogy mi lesz a következő, ezt csak az adó meg a vevő tudja.
Ez az egyik része, hogy adni-venni kell byte-okat.
A másik az, hogy nyilván sok byte kell, hogy sokáig ne ismétlődjön a kód, tehát kell egy flash ic tárolónak, ez gondolom nem lesz nagy kihívás.
Viszont előfordulhat, hogy megnyomkodom az adót a vevőtől távol, és a következő kód már nem az lesz, amit a vevő vár. Erre azt találtam ki, hogy a vevő elutasítja a kódot, ekkor újra megnyomom az adón a gombot de hosszan, amire két egymást követő kódot küld, amit a vevő megkeres az ő tárolójában (valószínűleg 1-2 kóddal tovább kell lépnie), és ha talál ilyet, akkor elfogadja a kódot.
Jó-e ez, vagy van jobb ötlet?
Lehetne rádiós is, de amikor játszottam a TSOP IR vevővel, annyira jól és érzékenyen működött, hogy a szoba bármely pontjára lőttem az adóval, mindig jól vette a kódot, másrészt nem lehet olyan könnyen zavarni, mint a rádióst, és talán leolvasni sem, bár itt az mindegy. -
válasz
JozsBiker #12507 üzenetére
Ha a problémát is beírod ide, meglehet, hogy választ is kapsz rá itt helyben.
Egyébiránt, ha android programot szeretnél írni és kicsit is jóban vagy a java nyelvvel (és ha arduino-t programozol C++-ban, miért ne lennél), akkor ajánlom a nyögvenyelős app inventor helyett a processing-et: én mindenféle androidos háttértudás nélkül több játékot is írtam vele androidra. Majdnem gyerekjáték. Az app inventorral még nem sikerült használható eredményre jutnom... -
JozsBiker
aktív tag
Sziasztok !
App Inventor 2 -vel foglalkozó magyar fórumot nem tudtok véletlenül ? Elakadtam, és elég összetett a probléma ahhoz, hogy a Google keresőjébe be tudnám írni. ( Hogy ne legyek annyira offtopic: egy Arduinoval bluetooth -on összeműködő alkalmazásról van szó :-). Köszi.
-
Janos250
őstag
válasz
Janos250 #12505 üzenetére
Hopp, a 3S-t linkeltem, az egy kicsit nagyobb.
De itt van szó a 2S-ről is. Látható, hogy a teljes mérete 17.3*15 mm. -
Janos250
őstag
Így, hogy tökölődök ezekkel az okos konnektorokkal, egyre jobban tetszik ez a TUYA TYWE2S körömnyi kis vacak.
Kisebb még az ESP01-nél is, mégis több használható IO lába van. Ahol a hely szűkös, szerintem jó megoldás.
Ugyanúgy ESP8266 (az 1M memória miatt szokás ESP8255-nek is nevezni). Ha egyszerűbben lehetne rendelni, vennék belőle. -
Új hozzászólás Aktív témák
Hirdetés
- GOPRO Hero 11 BLACK - 5.3k akciókamera - 2 akku, tartozékok (5.)
- DJI AVATA 2 Fly More Combo 1 akku - drón szett DJI Goggles N3 FPV szemüveggel
- Sony PlayStation 5 ( PS5 ) Sony PlayStation VR2 Csomag
- Dell Precision 7680 Eco FHD+ 13600HX 14C / 16G D5 / 1T G4 workstation
- Gigabyte GA-Z68A-D3-B3 LGA 1155 alaplap
- Samsung Galaxy A15, 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- 128 - Lenovo Legion 5 (16IRX9) - Intel Core i7-14650HX, RTX 4070 (ELKELT)
- AKCIÓ! AMD Ryzen 7 3800X 8mag 16szál processzor garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged