Mesajul in limba romana este putin mai jos
——————————————-
Because i got tired of hearing “Mitiiiiiiiiii, please come help me, Pufu got out again !” in the middle of the night i put together this simple project. It’s a cat tracking device which allows me to find my girlfriend’s cat outside. Pufu is the cat’s name and she has the bad habbit of getting out when anyone is least expecting it. The problem is not that she is getting out but rather finding her, especially when outside is dark and cold (like now, during winter time).
This project makes my life easier and helps me retrieve Pufu really fast. You might say is over-engineered and i could have done this using a few discrete components but hey, where is the digital fun in that ? Besides, this project helped me explore Microchip’s PIC12F chip family and also Hi-Tech’s PICC Compiler.
Scroll down for video explanation and demonstration.
Enjoy !
Mesajul in romana
——————
Am inceput acest proiect pentru ca m-am saturat sa aud “Mitiiiiiii, vino te rog sa ma ajuti, Pufu a iesit iar afara” in special dupa ce se lasa seara.
Pufu este pisica prietenei mele. Pufu are prostul obicei de a iesi afara din casa atunci cand nu se asteapta nimeni si cand usa de la intrare este deschisa. Se arunca inainte peste genti, printre picioarele celor care intra in casa si ajunge afara. Problema nu este ca iese afara, problema este ca nu o pot gasi asa usor dupa ce iese afara, mai ales cand e noapte si frig afara asa cum este in perioada de acum pe timp de iarna.
Acestea fiind zise, va prezint proiectul : “Pufu Tracking”. Este un circuit ce include doi senzori : de temperatura si de lumina. Datele senzorilor sunt citite de un microcontroler PIC 12F675 si apoi procesate si evaluate. Prin setarea unor praguri se poate aprinde un led si chiar auzi un mini-buzzer.
Fisierele sursa precum si datasheetul microcontrollerului + schema electrica + PCB realizate in Eagle le puteti gasi aici :
pufu-tracking.zip
pufu-tracking-eagle.zip
Mai multe detalii gasiti in filmul uploadat.
Partea 1
Partea 2
Pingback: Out Engineering a Sneaky Cat - Hack a Day
#1 by Inky on February 6, 2011 - 1:00 pm
Quote
O buna solutie
#2 by Adrian on June 5, 2011 - 8:39 pm
Quote
Ce inseamna output_value = output_value | 0b000 ?
#3 by Dumitru Stama on June 6, 2011 - 8:24 pm
Quote
Salut
Daca te referi la una din liniile de genul
output_value = output_value | 0b00100000; // led on
Se traduce in felul urmator :
Valorii stocate in variabila output_value i se aplica functia logica “OR” (functia logica “SAU”) cu parametrul exprimat in binar 0b00100000 (sau 0×20 in hexazecimal sau 32 in zecimal). Am ales sa reprezint valoarea in binar pentru a putea vedea exact ce bit vreau sa setez.
Dupa functia logica bitul 5 se va seta pe valoarea 1 pe cand toti ceilalti isi vor pastra valoarea initiala.
#4 by Adrian on June 7, 2011 - 7:39 pm
Quote
Salutare
Aici nu inteleg.
Cum se poate aplica SAU unui sir de caractere? Si ce este rezultatul, tot char?
Stiam ca SAU merge doar la boolean.
Imi scapa ceva…
#5 by Dumitru Stama on June 8, 2011 - 12:49 am
Quote
“SAU” aplicata unei variabile de tip char functioneaza pe biti. Iti dau un exemplu :
ai declaratia : unsigned char test = 34;
34 in cazul de mai sus se exprima in sistem zecimal.
34 zecimal = 0×22 hexazecimal = 0b00100010 binar
Dupa executia instructiunii test = test | 56;
vom avea asa :
56 zecimal = 0×38 hexazecimal = 0b00111000 binar
Functia “SAU” se aplica in acest caz pe fiecare bit in parte.
bit 0 din 34 = 0 | bit 0 din 56 = 0 ==> 0 | 0 = 0
bit 1 din 34 = 1 | bit 1 din 56 = 0 ==> 1 | 0 = 1
bit 2 din 34 = 0 | bit 2 din 56 = 0 ==> 0 | 0 = 0
bit 3 din 34 = 0 | bit 3 din 56 = 1 ==> 0 | 1 = 1
bit 4 din 34 = 0 | bit 4 din 56 = 1 ==> 0 | 1 = 1
bit 5 din 34 = 1 | bit 5 din 56 = 1 ==> 1 | 1 = 1
bit 6 din 34 = 0 | bit 6 din 56 = 0 ==> 0 | 0 = 0
bit 7 din 34 = 0 | bit 7 din 56 = 0 ==> 0 | 0 = 0
Se reconstruieste valoarea rezultata si avem 0b00111010 binar = 0x3A hexazecimal = 58 zecimal
===> test = 58
In concluzie functiile logice se aplica la nivel de bit
#6 by Adrian on June 10, 2011 - 11:22 pm
Quote
Am inteles principiul. Trebuie sa iau pixul si foaia si sa exersez operatiile la nivel de bit ca am fost pe alta planeta cand au fost predate.
Multumesc. Toata stima.