Ovládanie elektrického zámku z mobilnej aplikácie: Rozdiel medzi revíziami
Zo stránky SensorWiki
(12 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 1: | Riadok 1: | ||
Záverečný projekt predmetu MIPS / LS2025 - ''' | Záverečný projekt predmetu MIPS / LS2025 - '''Filip Pinďar''' | ||
https://www.engineersgarage.com/how-to-design-a-smartphone-operated-door-lock/ | https://www.engineersgarage.com/how-to-design-a-smartphone-operated-door-lock/ | ||
Riadok 7: | Riadok 7: | ||
Ovládanie elektrického relé z mobilnej aplikácie pomocou bluetooth modulu | Ovládanie elektrického relé z mobilnej aplikácie pomocou bluetooth modulu | ||
[[Obrázok: | [[Obrázok:Ardu.jpg|400px|thumb|center|Vývojová doska Arduino Uno.]] | ||
'''Literatúra:''' | '''Literatúra:''' | ||
Riadok 18: | Riadok 18: | ||
== Analýza a opis riešenia == | == Analýza a opis riešenia == | ||
Pre bezdrôtovú komunikáciu medzi mobilom a arduinom som zvolil nízkoenergetický Bluetooth modul 4.0. Má napájanie 5V z arduina a pre komunikácou používa piny Rx a Tx | |||
[[Súbor:Bluetooth.webp|400px|thumb|center|Bluetooth 4.0 modul.]] | |||
Spúštací mechanizmus som zvolil 5V arduíno relé s 1 kanálom a zabudovanou ledkou. Napájaný je 5V z arduiná a má jeden kominikačný pin. | |||
[[Súbor:Rele.jpeg|400px|thumb|center|5V Rele modul.]] | |||
[[Súbor: | |||
Pre komunikáciu mobilu s Bluetooth modulom som použil už vytvorenú aplikácou Serial Bluetooth terminal ktorá je schopná sa pripojiť na Bluetooth modul a komunikovať s ním. Stačí ju zapnúť, vybrať daný modul a už môžete posielať cez terminál znaky. | |||
[[Súbor:SchemaFP.png|400px|thumb|center|Schema zapojenia.]] | |||
=== Algoritmus a program === | === Algoritmus a program === | ||
Algoritmus programu | Algoritmus programu číta znak z RX pinu. Keď príde '0' relé sa vypne a keď príde '1' sa zapne. | ||
<tabs> | <tabs> | ||
Riadok 38: | Riadok 35: | ||
#include <avr/io.h> | #include <avr/io.h> | ||
int main(void) | #define F_CPU 16000000UL | ||
#include <avr/io.h> | |||
#include <util/delay.h> | |||
#define RELE PB5 | |||
#define RX PD2 | |||
#define TX PD3 | |||
char get_char() { | |||
uint8_t i; | |||
char receivedChar = 0; | |||
while (PIND & (1 << RX)); | |||
_delay_us(104 + 52); | |||
for (i = 0; i < 8; i++) { | |||
if (PIND & (1 << RX)) | |||
receivedChar |= (1 << i); | |||
_delay_us(104); | |||
} | |||
_delay_us(104); | |||
return receivedChar; | |||
} | |||
int main(void) { | |||
DDRB |= (1 << RELE); // Rele pin ako výstup | |||
DDRD |= (1 << TX); // TX pin ako výstup | |||
DDRD &= ~(1 << RX); // RX pin ako vstup | |||
PORTD |= (1 << RX); // pull-up na RX | |||
while (1) { | |||
char c = get_char(); | |||
if (c == '0') { | |||
PORTB &= ~(1 << RELE); // aktivuj relé | |||
} else if (c == '1') { | |||
PORTB |= (1 << RELE); // deaktivuj relé | |||
} | } | ||
} | |||
return(0); | |||
} | |||
</syntaxhighlight ></tab> | </syntaxhighlight ></tab> | ||
Riadok 66: | Riadok 103: | ||
=== Overenie === | === Overenie === | ||
Zariadenie som overil tak že cez terminal som posielal 0 alebo 1 a podla toho sa relé vypínalo a zapínalo | |||
[[Súbor:GeminiAI-image1.jpg|400px|thumb|center|Aplikácia.]] | [[Súbor:GeminiAI-image1.jpg|400px|thumb|center|Aplikácia.]] |
Aktuálna revízia z 18:06, 13. máj 2025
Záverečný projekt predmetu MIPS / LS2025 - Filip Pinďar
https://www.engineersgarage.com/how-to-design-a-smartphone-operated-door-lock/
Zadanie
Ovládanie elektrického relé z mobilnej aplikácie pomocou bluetooth modulu

Literatúra:
Analýza a opis riešenia
Pre bezdrôtovú komunikáciu medzi mobilom a arduinom som zvolil nízkoenergetický Bluetooth modul 4.0. Má napájanie 5V z arduina a pre komunikácou používa piny Rx a Tx

Spúštací mechanizmus som zvolil 5V arduíno relé s 1 kanálom a zabudovanou ledkou. Napájaný je 5V z arduiná a má jeden kominikačný pin.

Pre komunikáciu mobilu s Bluetooth modulom som použil už vytvorenú aplikácou Serial Bluetooth terminal ktorá je schopná sa pripojiť na Bluetooth modul a komunikovať s ním. Stačí ju zapnúť, vybrať daný modul a už môžete posielať cez terminál znaky.

Algoritmus a program
Algoritmus programu číta znak z RX pinu. Keď príde '0' relé sa vypne a keď príde '1' sa zapne.
#include <avr/io.h>
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#define RELE PB5
#define RX PD2
#define TX PD3
char get_char() {
uint8_t i;
char receivedChar = 0;
while (PIND & (1 << RX));
_delay_us(104 + 52);
for (i = 0; i < 8; i++) {
if (PIND & (1 << RX))
receivedChar |= (1 << i);
_delay_us(104);
}
_delay_us(104);
return receivedChar;
}
int main(void) {
DDRB |= (1 << RELE); // Rele pin ako výstup
DDRD |= (1 << TX); // TX pin ako výstup
DDRD &= ~(1 << RX); // RX pin ako vstup
PORTD |= (1 << RX); // pull-up na RX
while (1) {
char c = get_char();
if (c == '0') {
PORTB &= ~(1 << RELE); // aktivuj relé
} else if (c == '1') {
PORTB |= (1 << RELE); // deaktivuj relé
}
}
return(0);
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Zariadenie som overil tak že cez terminal som posielal 0 alebo 1 a podla toho sa relé vypínalo a zapínalo

Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.