-
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
-
nagyúr
válasz vidékiürge #14800 üzenetére
Szia!
"a PC hangbementén felvenni a receiver segítségével a küldött jelet (jeleket). Így mindent megtudtam a jelről"
Hát engem meglepne, hogyha egy PC hangbemenet segítségével mindent megtudtál volna.
Pontosan mi az, amit megtudtál, és az arduinoval miért nem sikerült? -
vidékiürge
tag
Szia!
Meglep hogy meglep Nyilván nem csak egyszerű rákötésről van szó, de nem is nagy művelet. De abban biztos vagyok, hogy nagyon mindent azért nem tudok, mert ha tudnám, nem lenne gondom.
Amúgy ITT a link, amin láthatod, amit rögízteni tudtam. Ebből kinéztem, hogy a pulse lenght 705-710us, 40bites a jelem, valamint visszafejtettem a bitekből a hex és a dec értékeket is. Megpróbáltam az alap rc-switch libraryvel reprodukálni, de sajnos nem sikerült, kicsit homályos is itt már ez az egész.Őskor, Ókor, Középkor, Újkor, DualCore *** Köszönöm, hogy nem vagy megmondóember!
-
nagyúr
válasz vidékiürge #14802 üzenetére
Library nélkül próbáld meg, bitbang alapon, "kézzel" kapcsolgatni a jelet. A probléma esetleg az is lehet, hogy te egyszerű soros kommunikációként fejtetted meg a jeleket, de nekem inkább hasonlít valamilyen IR protokollra, pl. [link] (biztos nem ez, csak példának írtam), is lehet, hogy a byte értékeket vissza tudtad fejteni, de a küldő library nem biztos, hogy olyan protollon küldi vissza. Össze kéne hasonlítani a kimenő jelet a képen láthatóval, tudsz arról is ilyet csinálni?
-
nagyúr
válasz vidékiürge #14802 üzenetére
Egy jó fél óra nyomozás után csak annyit tudtam kideríteni erről a protokollról, hogy vmi egyedi, PWM alapú protokoll, [link] tehát az adó részét neked kell megírni, ahogy mondtam, egy sor digitalWrite() + delayMicroseconds() segítségével.
-
Janos46
tag
Heuréka, műküdik! megkaptam a megoldást a TP-LINK -re a Windows 10 fórumon.
Lehet, hogy csak annyi a gond, hogy nem jó tartományban "dolgozik", azaz a régi router-ed alapértelmezett belépési címe pl. 192.168.1.1 (ezáltal a DHCP tartomány 192.168.1.100 és 192.168.1.199 közé esik), míg az új router-é meg 192.168.0.1 (ezáltal a DHCP tartomány 192.168.0.100 és 192.168.0.199 közé esik) és ezért nem látja.
A régi routerben nézd meg milyen IP-t osztott ki/ kap az ESP8266 és annak megfelelően állítsd át az új router-ed belépési címét(a DHCP tartomány automatikusan átáll)Artillery, lelkes újonc vagyok, tanulni akarok!
-
its_grandpa
tag
válasz vidékiürge #14802 üzenetére
Én egy RXB6-al + UNO simán veszem a jelet az rc-switch examples könyvtárában található ReceiveDemo_..... bármelyik . ino-val.
Adni még nem próbáltam de elvileg mennie kéne.
Wiring biztos OK ? -
vidékiürge
tag
Ahha, mindjárt ki is próbálom ezt a "bitbang" megoldást digitalWrite() + delayMicroseconds() kombóval.
Igen, most megcsináltam a visszamérést... Hát... nemcsoda, hogy semmi nem történik
Teljesen kivehetetlen, ami a reprodukciómból jön. Ráadásul szinte össze kell érinteni az antennákat, hogy ennyit tudjak fogni. A távirányító jelében 6x ismétlés van, itt is ezt alkalmaztam. Ez a tesztkód, de félek, hogy a ez még viccnek is rossz#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
// Transmitter is connected to Arduino Pin #7
mySwitch.enableTransmit(7);
// Optional set protocol (default is 1, will work for most outlets)
// mySwitch.setProtocol(2);
// Optional set pulse length.
mySwitch.setPulseLength(710);
// Optional set number of transmission repetitions.
mySwitch.setRepeatTransmit(6);
}
void loop()
{
/* le */
mySwitch.send("0001010011001011011001100000000000110011");
mySwitch.send("0001010011001011011001100000000000111100");
delay(5000);
/* stop */
mySwitch.send("0001010011001011011001100000000001010101");
delay(5000);
/* fel */
mySwitch.send("0001010011001011011001100000000000010001");
mySwitch.send("0001010011001011011001100000000000011110");
delay(120000);
}
Őskor, Ókor, Középkor, Újkor, DualCore *** Köszönöm, hogy nem vagy megmondóember!
-
vidékiürge
tag
-
vidékiürge
tag
válasz its_grandpa #14808 üzenetére
jaja, mivel én sem hittem, többször ellenőriztem. Max még az antennán lehet finomítani, mert csak 15cm-es, nem 17,2, de szerintem ez most annyit nem számít, mivel a jelet tudtam venni 10cm-es-el is
Őskor, Ókor, Középkor, Újkor, DualCore *** Köszönöm, hogy nem vagy megmondóember!
-
nagyúr
válasz vidékiürge #14810 üzenetére
Már csak azért sem hiszem, hogy ezzel a library-vel sikerülni fog, mert nincs benne az a protokoll, ami ide kellene. A leghosszabb impulzus se éri el az 1ms-t.
* "0" bit: waveform for a data bit of value "0", {1, 3} means 1 high pulse
* and 3 low pulses, total length (1+3)*pulselength, i.e:
* _
* | |___
* "1" bit: waveform for a data bit of value "1", e.g. {3,1}:
* ___
* | |_
*A te mérésed alapján viszont inkább 1:2 és 2:1 a két bit aránya.
[ Szerkesztve ]
-
nagyúr
válasz vidékiürge #14810 üzenetére
Tessék egy library, ami szerintem működni fog.
void start(){
digitalWrite(outPin, HIGH);
delay(5);
digitalWrite(outPin, LOW);
delay(1);
}
void stop(){
digitalWrite(outPin, LOW);
delay(7);
}
void l(){ //hosszú magas jelszint
digitalWrite(outPin, HIGH);
delayMicroseconds(666);
digitalWrite(outPin, LOW);
delayMicroseconds(333);
}
void s(){ // rövid magas jelszint
digitalWrite(outPin, HIGH);
delayMicroseconds(333);
digitalWrite(outPin, LOW);
delayMicroseconds(666);
}A küldés pedig:
start ();
l(); l(); s(); s(); ...
stop();[ Szerkesztve ]
-
vidékiürge
tag
igen, kb én is úgy látom. Meg nézd csak, sikerült felvennem a sugárzott jelet. Elég nagy a különbség a kettő között
az rc-switchel a pulse lenght 4ms. De amúgy meg nagyon fura, mert a programban meg 710us van beállítva
Őskor, Ókor, Középkor, Újkor, DualCore *** Köszönöm, hogy nem vagy megmondóember!
-
nagyúr
válasz vidékiürge #14816 üzenetére
-
gyapo11
őstag
Valaki mérte már a delayMicroseconds() függvényt, hogy valójában mekkorát késleltet? Mert amikor én egy ciklust pörgettem, kb. 100 kHz jött ki, ami 10 μs a 3 sorra, szóval érdekelne, hogy olyan 20-30 μs alatti értékeknél mekkora a valódi késleltetési idő.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
PeterPH
senior tag
válasz vidékiürge #14816 üzenetére
Valami ilyennel azért kompaktabb lenne a kód:
sendcode(const char* sCodeString)
{
start ();
for (const char* p = sCodeString; *p; p++)
{
if (*p == '0') s();
else if (*p == '1') l();
}
stop();
}
és akkor már hívogathanád a sendcode-t:sendcode("0001010011001011011001100000000000110011");
-
Pubszon
veterán
Üdv.
Arduinohoz kellene nekem egy olyan szenzor, ami előtt ha elmegyek érzékel. Egy 3 méteres garázs bejáratában lenne és egy villanyt kapcsolna ha bemegyek gyalog vagy a kocsival. Olyan mint az elektromos kapué, csak nem szeretnék mindkét oldalra kábelezni, az egyik oldalt csak egy prizma vagy tükör lenne. Az ultrahangos nem megbízható.Van ilyen modul?
ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...
-
JozsBiker
aktív tag
Sziasztok !
Van egy mérő áramköröm, ami egy Arduino Nano -ból, egy HC-06 bluetooth modulból és egy DS3231 óraáramkörből áll. A mérés szempontjából az lenne a jó ha tudnám valahogy rögzíteni ( mármint az időpontját ) ha elmegy a tápfeszültség. Egyelőre csak annyi ötletem van, hogy az aktuális időt folyamatosan irkálom mondjuk az Arduino EEPROM -jába, így a táp megszűnése előtt beírt idő lesz a kérdéses idő. Viszont az EEPROM -ot nem illik túl soxor írni, így ez még sem jó. Újabb modullal nem szívesen bővíteném az áramkört. Van erre valami jó módszer ? Köszi.
-
gyapo11
őstag
Nekem úgy rémlik, hogy valamelyiken ram is van. De eeprommal is meg lehet oldani úgy, hogy csak akkor írod be az időt, amikor elmegy az áram. Ehhez kell egy megfelelő méretű pufferkondi, ami egy diódán keresztül töltődik, és figyelni kell a kondi előtt a feszültséget.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
nagyúr
válasz JozsBiker #14831 üzenetére
Ha érdekel egy egyszerű wear leveling módszer, szólj, bár asszem le volt már írva a topikban.
Ha mégis nyitott lennél a másik (kondenzátoros) megoldásra, egy attiny85v már 1,8V tápfeszültségtől működőképes, egy 5V-ra feltöltött kondenzátorról szerintem másodpercekig is el tud ketyegni.
-
nagyúr
Bekalibrálja magát, de indítás után időbe telik, nálam ez eleinte 1-2 perc is volt. Ezt az időt lehet csökkenteni bizonyos alap kalibrációs érték pontosításával, amivel fél perc körüli szintre sikerült leszorítani (addig csak forog körbe-körbe, egyre lassabban, végül megáll).
Az önkalibrációra szükség is van, mert nagyon hőmérsékletfüggő a cucc, kézzel melegítve is hajlamos a slip-re, tehát nem lehet permanens módon előre kalibrálni sajnos. -
mester19
csendes tag
Sziasztok!
Most kezdtem el kísérletezni az Arduinoval és vettem hozzá egy rfid olvasót, annak apropóján, hogy most lett a panelban cserélve az ajtó nyitója rfid-sre. Amit adtak hozzá, azt tökéletesen olvassa, de a bejárati ajtóét nem tudja. Mi lehet ennek az oka? -
Janos250
őstag
válasz mester19 #14838 üzenetére
Az RFID általában kettő félét (van több is, de azok ritkábbak) használ.
13,56 MHz, illetve 100 khz felett valamivel.
Milyen gyártmány az ajtónyitó? Codefon?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 mester19 #14840 üzenetére
A Codefon proximity kártyaolvasója 125 kHz-en működik. Ha nem ilyen olvasót vettél, akkor nem tudod olvasni. Én USB olvasót használok, az megfelelően működik.
Írható kütyü átírását nem próbáltam. Amikor új egységre van szükség, felprogramozom a kaputelefon kapunál lévő egységén.
Ha ügyetlenül csinálom, akkor mondjuk másfél perc, egyébként meg kevesebb. Persze kell hozzá a központ mesterkódja, ami a panelra van írva, de a szerelők előszeretettel írják át olyanra, amit csak ők tudnak, mert egy ilyen kulcstartó 100 Ft itt Magyarországon is, de a szerelők meg 1-3 ezer Ft-ért programozzák be.
Van benne egy EEPROM, azt kivéve én Arduinoval olvasom.
Korábban vettem olyan olvasó kártyát, amiben már van egy STM8, ami dekódolja a jelet, és közvetlenül soros vonalon küldi az Arduinonak, de az gyakorlatilag használhatatlan. Az egyszerűbbik (gyakoribb) az állítólag jó, de azt még nem próbáltam.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
bear_
aktív tag
Sziasztok!
Nem arduino, hanem STM32 és HAL, de lehet tudtok segíteni.
Rendeltem az aliexpressről egy multifunctional shieldet, ilyet: [link]
Szeretném a 7 szegmenses kijelzőt működésre bírni, de nem igazán járok sikerrel.
Ahogy az oldalon is látszik a kijelzőt 2 kaszkádba kötött 595-ös shift regiszter vezérli, így elvileg 16 bittel lehet "feltölteni". Az egyik shift register a szegmenseket, a másik a kijelzőket egyenként engedélyezi.Íratm is hozzá egy progit ami így néz ki:
int digits[16] = {1,1,1,1,1,0,1,0,1,0,1,1,0,1,1,0};
int main(void)
{
int digits[16] = {1,1,0,1,1,0,1,0,1,0,0,1,0,1,0,0};
while (1)
{
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_RESET);
for(int i=0; i>=15;i--){
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_SET);
if(digits[i]==1){
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_SET);
}else{
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_SET);}
STCP: LCHCLK, storage register clock input
SHCP: SFTCTLK, shift register clock input
DS: serial dataSajnos az eredmény egy katyvasz, nem azt írja ki amit szeretnék, mindig ugyanaz a minta jelenik meg akármilyen értékek szerepelnek a tömbben.
Mi lehet a hiba?
[ Szerkesztve ]
-
Janos250
őstag
"Mi lehet a hiba?"
Fogalmam sincs, de az STM32 portjai kényelmesen használhatók közvetlen címre írással. Régebben én így csináltam.
Én úgy próbálkoznék.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
Janos250
őstag
1. Program módba való belépés: 000 <kulcs> mesterkód <kulcs>
2. Kártya felprogramozása: 90 <kulcs> lakásszám <kulcs> kártya közelítése <kulcs>
Válaszként kapod, hogy az adott lakáshoz ez hányadik tag.
3. kilépés: DELKell hozzá a mesterkód ismerete.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
nagyúr
Rossz a logika, a clock alacsony szintje alatt kell kiírni a buszra a data bitet, felfutó élnél lesz érvényes, te fordítva csinálod.
Meg kell cserélni aHAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_SET);
és a
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_RESET);
sorokat, így:
while (1) {
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_RESET);
for(int i = 0; i >= 15; i--) {
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_RESET);
if(digits[i] == 1) {
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_SET);
}else {
HAL_GPIO_WritePin(DS_GPIO_Port, DS_Pin, GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(SHCP_GPIO_Port, SHCP_Pin, GPIO_PIN_SET);
}
HAL_GPIO_WritePin(STCP_GPIO_Port, STCP_Pin, GPIO_PIN_SET);
}Az is lehet, hogy túl gyorsan küldi ki a kód a biteket, nem tudom milyen órajelen fut a kontrollered, de vmi minimális delay kellhet esetleg a for ciklus végére, a bitek közé, ha a fenti kód se működne helyesen.
[ Szerkesztve ]
-
Janos250
őstag
Igen, de általában megváltoztatják. Vissza lehet persze állítani, de némelyik szerelő le is törli a panelról. Arra is van furmányos módszer, de az már macerásabb, mert ki kell venni az EEPROM-ot.
Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
gyapo11
őstag
válasz Janos250 #14848 üzenetére
Ez nem olyan, mintha a mobiltelefon szolgáltató nem adná ide a PUK kódokat, és csak pénzért lenne hajlandó feloldani a sim-zárat 3 sikertelen próbálkozás után? Vagy a tv/beltéri egység boltban nem adnák ide az akármilyen kódot és pénzért ki kellene hívni őket ha szükség van rá. Nekem időközönként rebootolni kell a beltérit, és ahhoz is kell a kód.
Vagy a router admin jelszavát, és akárhányszor változtatni akarok valamit a routerben, akkor pénzért kijönnek és majd ők belépnek.
Megveszek valamit és azért nem tudom használni valamilyen szolgáltatását az eszköznek, mert nem adták ide a hozzá szükséges jelszót. Nem tudom ez szabályos-e, van-e joguk hozzá.menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
Új hozzászólás Aktív témák
- Xiaomi AX3600 WiFi 6 AIoT Router
- A fociról könnyedén, egy baráti társaságban
- Windows 10
- E-roller topik
- Napelem
- Kerékpárosok, bringások ide!
- Milyen hagyományos (nem okos-) telefont vegyek?
- Politika
- Rövid előzetesen a S.T.A.L.K.E.R. 2: Heart of Chornobyl
- Otthoni hálózat és internet megosztás
- További aktív témák...