nel65 Postat Iulie 28, 2016 Partajează Postat Iulie 28, 2016 Codul de bare se scrie pe toata lungimea zgarzii ,in mod repetat.Nu e nevoie ca pisica sa stea cu capul intr-o directie pentru a fi citit codul In fine ,e doar o idee... Link spre comentariu
Vizitator Postat Iulie 28, 2016 Partajează Postat Iulie 28, 2016 http://revistaie.ase.ro/content/25/boldea.pdf Link spre comentariu
Vizitator Postat Iulie 28, 2016 Partajează Postat Iulie 28, 2016 (editat) Un update la acest video , conform discutiei, am pus aici. Nel65, codul de bare, cel la care te referi tu, nu poate fi scanat de la 1 metru. Nici daca-l deseneti pe motan tot un cod de bara. Dar totusi, o idee e o idee. Poate ar merge, parerea mea e doar ca nu. miticamy, pisicul, sau alt animal, nu sta cuminte sa-i scanezi retina. si oricum e prea multa procesare pentru asta. chiar daca suna super, nu e atat de fiabil, nici pentru scopurile lui. inca. o sa pun si codurile pentru: IRKey: /*PROGRAM: PET IRKey by www.upx.ro Recommended DeviceId: Attiny85 SMD Vcc: 3V CR2032 Version: 27072016v19.37*/ #include <avr/sleep.h>#include <avr/wdt.h>#ifndef cbi#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))#endif#ifndef sbi#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))#endifint pinIRLed = 3; // hardware: IR diode ~980nmvolatile boolean f_wdt = 1;void setup(){ pinMode(pinIRLed,OUTPUT); setup_watchdog(8); // vezi nota la functie}void loop(){ if (f_wdt==1) { f_wdt=0; delayMicroseconds(1); SendIRCode(); SendIRCode(); pinMode(pinIRLed,INPUT); system_sleep(); pinMode(pinIRLed,OUTPUT); }}void system_sleep() { cbi(ADCSRA,ADEN); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); sleep_disable(); sbi(ADCSRA,ADEN);}// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms// 6=1 sec,7=2 sec, 8=4 sec, 9= 8secvoid setup_watchdog(int ii) { byte bb; int ww; if (ii > 9 ) ii=9; bb=ii & 7; if (ii > 7) bb|= (1<<5); bb|= (1<<WDCE); ww=bb; MCUSR &= ~(1<<WDRF); WDTCR |= (1<<WDCE) | (1<<WDE); WDTCR = bb; WDTCR |= _BV(WDIE);}ISR(WDT_vect) { f_wdt=1;}void pulseIR(long microsecs) { cli(); while (microsecs > 0) { PORTB |= _BV(PB3); delayMicroseconds(13); PORTB &= ~_BV(PB3); delayMicroseconds(13); microsecs -= 26; } sei();}void pauza(){ delayMicroseconds(600);}void SendIRCode() { // HEX: 49B0F624 pulseIR(2400); pauza(); pulseIR(1200); pauza(); pulseIR(600); pauza(); delay(10); } Usa si receiver: /*PROGRAM: Automatic PET DOOR with IRKey by www.upx.ro Recommended DeviceId: Arduino Pro or Pro-Mini Version: 27072016v19.37 LED: o Fast pulse = Key in range o Slow pulse = Key not in range, last seen < 12h (<delay_CheckIn>) o Light On = Key not in range, last seen > 12h (<delay_CheckIn>) */#include <avr/wdt.h>#include <IRremote.h> // https://github.com/z3t0/Arduino-IRremote#define RECV_PIN 11 // hardware: e.g TSOP38238, TSOP34838, TSOP4838, TSOP31238 or any 38HKz receiver diode#define Servopin 7 // hardware: 9G servo with 0-180ยบ rotation#define irBarieraPin 4 // hardware: [+5v] --[10k]--[irBarieraPin]---[IRbar][GND]#define GreenLedPin 13 // hardware: regular LED//setupint door_close = 105; // ajusteaza pozitia servo pentru inchisint door_open = 28; // ajusteaza pozitia servo pentru inchisunsigned long delay_close = 20000UL;unsigned long protection_stationary = 60000UL;unsigned long delay_CheckIn = 43200000UL; // 12 ore/*Do not edit from this line*/int curentPosition = door_close;int angle;boolean skipsw = false;int pasiServo = 1;boolean stateDoor = 0;boolean protection_stationary_flag = 0;int zgardaFlag = 0;unsigned long currentMillis;unsigned long lastServo = 0;unsigned long lastmove = 0;unsigned long lastReadSwIrbar = 0;unsigned long lastReadIrZgarda = 0;unsigned long lastDelay = 0;unsigned long lastTimeBlinkRedLed = 0;unsigned long lastTimeFreeInFrontDoor = 0;int stateIRZgarda, _stateIRZgarda, stateIRbar, _stateIRbar = 0; int delay_closeBkp = delay_close;IRrecv irrecv(RECV_PIN);decode_results results;void setup() { Serial.begin(9600); pinMode(Servopin,OUTPUT); pinMode(GreenLedPin,OUTPUT); pinMode(irBarieraPin,INPUT); Serial.println(F("Automatic PET DOOR with IRKey - www.upx.ro")); delay(1000); RedLed(1); servoPulse(Servopin, 150); // just for test, can be remove this line delay(1000); RedLed(0); irrecv.enableIRIn(); wdt_enable (WDTO_4S);}/* PROCEDURI */void servoMove(int servoPin, int angle){ stateDoor = 2; // door in progress if (curentPosition == door_close) stateDoor = 0; if (curentPosition == door_open) stateDoor = 1; if (angle != curentPosition) { lastServo = currentMillis; if ((currentMillis - lastmove) >= 15) { int diff = abs(curentPosition - angle); int max_min = abs(door_open-door_close); if (diff > (max_min*0.85)) pasiServo = 1; if (diff <= (max_min*0.85)) pasiServo = 2; if (diff <= (max_min*0.75)) pasiServo = 3; if (diff <= (max_min*0.30)) pasiServo = 2; if (diff <= 10) pasiServo = 1; if ( curentPosition > angle ) { curentPosition -= pasiServo; skipsw = true; } if ( curentPosition < angle ) { curentPosition += pasiServo; } if (curentPosition == angle) { curentPosition = angle; skipsw = false; } } } servoPulse(servoPin, curentPosition); }void servoPulse (int servoPin, int angle){ if ((currentMillis - lastServo) <= 500) { // protection servo int pulseHigh,pulseLow; pulseHigh = map(angle,0,180,500,2200); pulseLow = 2200-angle; for (int i=1; i<=5; i++) { digitalWrite(servoPin, HIGH); delayMicroseconds(pulseHigh); digitalWrite(servoPin, LOW); delayMicroseconds(pulseLow); } delayMicroseconds(2200); lastmove = currentMillis; } }int readIRZgarda(){ if (skipsw == true) return 1; if ((currentMillis - lastReadIrZgarda) >= 5000UL) { lastTimeFreeInFrontDoor = currentMillis; protection_stationary_flag = 0; stateIRZgarda = 0; } if (irrecv.decode(&results)) { //Serial.println(results.value, HEX); if ((results.value == 0x49B0F624)) { stateIRZgarda = 1; if (protection_stationary_flag == 0) lastDelay = currentMillis; lastReadIrZgarda = currentMillis; // protection stationary if ((currentMillis - lastTimeFreeInFrontDoor) >= protection_stationary){ protection_stationary_flag = 1; } } irrecv.resume(); } return stateIRZgarda;}int readIRbar(){ if (skipsw == true) return 1; if ((currentMillis - lastReadSwIrbar) >= 250) { lastReadSwIrbar = currentMillis; stateIRbar = !digitalRead(irBarieraPin); if (_stateIRbar == stateIRbar) { return stateIRbar; } else { _stateIRbar = stateIRbar; } } return _stateIRbar;}void RedLed(int xState) { // 0=off; 1 = on; 2=blink slow; 3=blink fast switch (xState) { case 0: //led off digitalWrite(GreenLedPin,LOW); break; case 1: //led on digitalWrite(GreenLedPin,HIGH); break; case 2: // blink slow if((currentMillis - lastTimeBlinkRedLed) > 1000) { lastTimeBlinkRedLed = currentMillis; digitalWrite(GreenLedPin,!digitalRead(GreenLedPin)); } break; case 3: // blink fast if((currentMillis - lastTimeBlinkRedLed) > 75) { lastTimeBlinkRedLed = currentMillis; digitalWrite(GreenLedPin,!digitalRead(GreenLedPin)); } break; }}//////////////---> END PROCEDURIvoid loop() { wdt_reset (); //wathdog ! currentMillis = millis(); int IRbar = readIRbar(); int Zgarda = readIRZgarda(); //LED if (stateIRZgarda == 1) { RedLed(3); } else { /*CheckIn Timer. Last Seen*/ if ((currentMillis - lastReadIrZgarda) >= delay_CheckIn) { RedLed(1); } else { RedLed(2); } } //open from inside if ((IRbar == 1) && ((stateDoor == 0) || (stateDoor == 2))) { servoMove(Servopin,door_open); // open door lastDelay = currentMillis; return; } //open outside if ((Zgarda == 1) && ((stateDoor == 0) || (stateDoor == 2)) && (protection_stationary_flag == 0)) { servoMove(Servopin,door_open); // open door zgardaFlag = 1; lastDelay = currentMillis; return; } //close after entry if ((IRbar == 1) && (stateDoor == 1) && ( zgardaFlag == 1)) { zgardaFlag = 0; lastDelay = currentMillis; delay_close = 2000UL; // timp pentru coada pisicii } // AutoClose if (((currentMillis - lastDelay) >= delay_close) && (IRbar == 0) && ((Zgarda == 0) || (protection_stationary_flag == 1))) { servoMove(Servopin,door_close); if (stateDoor == 0) { delay_close = delay_closeBkp; /*prevent play with door*/ //wdt_disable(); //delay(20000); //wdt_enable (WDTO_4S); } } } Editat Iulie 28, 2016 de Vizitator Link spre comentariu
Vizitator Postat Iulie 28, 2016 Partajează Postat Iulie 28, 2016 Rog un moderator sa mute Topicul la sectiunea Arduino. Link spre comentariu
Vizitator Postat Iulie 30, 2016 Partajează Postat Iulie 30, 2016 am modificat TX-ul inca o data...vreau sa-l fac si mai mic...asa ca o sa despart bateria de montaj, in felul in care sa fie cusut in zgarda intre material..si doar la baterie sa fie acces. cablajul nou are undeva la 1cm latime si vreo 2cm lungime. Link spre comentariu
Vizitator Postat August 6, 2016 Partajează Postat August 6, 2016 (editat) Update-uri [*]adaugare Telecomanda IR [*]adaugare inca un receiver IR pentru interior, pentru a sti daca pet-ul se afla in interior [*]adaugare senzor lumina in exterior [*]adaugare 1 servo (Locker) [*]soft android pentru telefoanele echipate cu LED IR Editat August 6, 2016 de Vizitator Link spre comentariu
Swat Cat Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 ma abonez si eu la discutia asta.Intrebare. la magazinele de haine exista bariera radio la intrare pentru etichetele acelea din hartie cu bobina. tot rfid sunt?http://www.ebay.com/itm/13-56MHz-RFID-Proximity-IC-Card-Key-Tag-Reader-Door-Access-system-with-Keypad-/131964628101?hash=item1eb9b46c85:g:FScAAOSwsN9XCfTAam inteles ca modelele peste 13.56 mhz au raza >1m. Link spre comentariu
sesebe Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 Nu sint chiar rfid. Bobina aia este mai mult decit o bobina dar nu este un cip RFID dar interactioneaza cu cimpul creat de bobinele alea mari de la intare. Link spre comentariu
one Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 Functioneaza pe un principiu asemanator cu solutia pe care am dat-o in topic mai de mult, dar se pare ca scopul lui Genetix este sa se distreze cu electronica nu sa deschida usa pisicii Link spre comentariu
Vizitator Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 (editat) ...e adevarat ca pentru mine electronica e doar distractie si hobby, dar totusi chiar vroiam sa se deschida usa. si merge de atunci fara probleme, sunt deja vreo >3 luni, bateria are 3.17V chiar zilele trecute i-am facut o verificare. totusi eu nu stiu despre ce post spui... si nici ce te-a determinat sa afirmi asa...azi. Editat Octombrie 14, 2016 de Vizitator Link spre comentariu
cipri_mury Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 (editat) Cred ca se referea la postul nr 8. din acest topic dar nu cred ca a afirmat nimica din răutate.Oricum interesant proiectul.Cât despre electronica,acest domeniu chiar poate fi foarte distractiv uneori. Editat Octombrie 14, 2016 de cipri_mury Link spre comentariu
Vizitator Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 pai daca eu de meserie sunt anteprenor, si am facut bani din electronica , dar nu mai mult decat sa acopar aparate de masura, osciloscoape etc...cred ca doar pentru distractie electronica ptr mine... sunt sigur ca nu din rautate a postat, dar nu inteleg ce vroia sa spuna...oricum nu trebuie sa inteleg eu...daca intelegeti voi e bine. Link spre comentariu
validae Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 Soluția lui ,,one,, era pe baza interacțiunii dintre două bobine, una mai mare aflată într-un oscilator, cealaltă ( mult mai mică) fiind purtată de pisică și interacționa cu cea de pe ușă absorbind o parte din energia circuitului oscilant și astfel putându-se detecta prezența pisicii. Bobinele fiind acordate în frecvență cu condensatoare, se exclude interferența cu altceva..... față de această soluție, varianta RFID e mai ,,hi-tech,, dar și mai complicată și costisitoare. Link spre comentariu
Vizitator Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 este mai hi-tech dar nu ofera posibilitatea unei distante de peste 15-20cm, iar in cazul aplicatiei se cere peste 100cm. bine, ca se poate si cu rfid la distanta mai mare, dar deja nu mai e cazul unui hobbyst. Link spre comentariu
cipri_mury Postat Octombrie 14, 2016 Partajează Postat Octombrie 14, 2016 pai daca eu de meserie sunt anteprenor, si am facut bani din electronica , dar nu mai mult decat sa acopar aparate de masura, osciloscoape etc... Daca castigati din acest hobby atat de frumos si de interesant care este electronica suficienti bani pentru a acoperi cheltuielile de pe aparatele de masura inclusiv osciloscoape(care nu sunt ieftine deloc) inseamna ca ceea ce faceti chiar are succes.Acuma cateva luni am fost intr-un magazin de electronice pentru a ma interesa de o statie de lipit toate de pe raft fiind pt. amatori pretul maxim al lor ajungand pana la 400 RON cu exceptia uneia singure pt. profesionisti marca Weller care costa peste 1700 RON iar angajatul de acolo mi-a spus ca asa ceva merita sa-ti cumperi doar daca folosind-o acoperi cheltuiala facuta intr-un timp nu prea indelungat si sunt perfect de acord cu asta.Mai in gluma mai in serios l-am intrebat daca nu mai are pe acolo vreun JBC,Metcal sau Hakko ca sa-mi clatesc ochii. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum