BBMagic RELAY aplikacja demo w C [VIDEO]


Jeśli nie widziałeś, zobacz pierwszą część BBMagic RELAY C app-przygotowanie sprzętu.
Cały poniżej prezentowany projekt dostępny jest w spakowanym pliku ‚bbmagic_relay_sketch.tar.gz’, który można pobrać z działu Download.

Co napiszemy?

Nasza demonstracyjna aplikacja dla modułu BBMagic RELAY będzie włączać kolejno poszczególne kanały modułu (od RELAY_0 do RELAY_3), a następnie wyłączy wszystko. I tak wkółko…
BBMagic RELAY relays pins

Deklaracje i definicje globalne

    void relays(void) ;
    void proc_data(unsigned char *buf) ;

    int relay_time ;
    unsigned char rel_bd_addr[BBM_BT_ADDR_SIZE] = {0xE7, 0xBA, 0x08, 0x93, 0xC9, 0xD2} ;

relays(void)
Funkcja obsługująca przełączanie kanałów RELAY_0 do RELAY_3 modułu.
proc_data(unsigned char *buf)
Przetwarza i wyświetla dane odebrane od modułów BBMagic RELAY. Przyjmuje wskaźnik do bufora z danymi bbmagic.
relay_time
Zmienna do odliczania czasu w funkcji relays().
rel_bd_addr[BBM_BT_ADDR_SIZE]
Tablica z adresem Bluetooth MAC modułu BBMagic RELAY, którym będziemy sterować. To do niej wpiszesz adres swojego modułu BBMagic RELAY. BBM_BT_ADDR_SIZE zdefiniowana jest w pliku nagłówkowym biblioteki ‚bbmagic_lib.h’

Funkcja główna

int main(void)
{
    unsigned char bbm_buf[BBLIB_FRAME_SIZE] ;
    int i, data_length ;

    i = bbm_bt_open(26, 19, 13, 1) ;
    if(i) exit(2) ;

    relay_time =0 ;
    do
    {
        relays() ;

        data_length = bbm_bt_read(bbm_buf) ;
        if(data_length > 0) proc_data(bbm_buf) ;

        usleep(100) ;
    }while(data_length != -1) ;

    bbm_bt_close() ;

    exit(0) ;
}

bbm_buf[BBLIB_FRAME_SIZE]
Bufor na dane odbierane od modułów BBMagic. BBLIB_FRAME_SIZE zdefiniowana jest w pliku nagłówkowym biblioteki ‚bbmagic_lib.h’
bbm_bt_open(26, 19, 13, 0)
Funkcja z biblioteki bbmagic_lib – otwiera komunikacje z modułami bbmagic. Sygnalizacjha odbierania danych na pinie GPIO26, wysyłania na pinie GPIO19. Sygnalizacja działania aplikacji GPIO13.

RPI0 RPI3 pinout

Więcej o funkcji bbm_bt_open tutaj: Już jest biblioteka bbmagic_lib_1.4 dla Raspberry Pi.
relays()

    int i ;
    relay_time++ ;
    if(relay_time == 10000)
    {
        //-turn relay off
        i = bbm_bt_relay_off(rel_bd_addr, BBM_RELAY_0 | BBM_RELAY_1 | BBM_RELAY_2 | BBM_RELAY_3) ;
        printf("\nsend: ALL RELAYS OFF\n") ;
    }
    if(relay_time == 20000)
    {
        //-turn relay on
        i = bbm_bt_relay_on(rel_bd_addr, BBM_RELAY_0) ;
        printf("\nsend: BBM_RELAY_0 ON\n") ;
    }
    if(relay_time == 30000)
    {
        //-turn relay on
        i = bbm_bt_relay_on(rel_bd_addr, BBM_RELAY_1) ;
        printf("\nsend: BBM_RELAY_1 ON\n") ;
    }
    if(relay_time == 40000)
    {
        //-turn relay on
        i = bbm_bt_relay_on(rel_bd_addr, BBM_RELAY_2) ;
        printf("\nsend: BBM_RELAY_2 ON\n") ;
    }
    if(relay_time == 50000)
    {
        relay_time =0 ;
        //-turn relay on
        i = bbm_bt_relay_on(rel_bd_addr, BBM_RELAY_3) ;
        printf("\nsend: BBM_RELAY_3 ON\n") ;
    }

bbm_bt_read(bbm_buf)
Funkcja z biblioteki bbmagic_lib – sprawdza czy nadeszły dane od któregoś z modułów BBMagic. Jeśli tak otrzymamy je w buforze ‚bbm_buf’, a zmianna ‚data_length’ zawiera liczbę odebranych bajtów.
proc_data(bbm_buf)
Analizuje i wyświetla dane zawarte w buforze ‚bbm_buf’. Ponieważ funckja jest dośc duża nie będziemy jej tu listować.
Można ją przeanalizować pobierając projekt ‚bbmagic_relay_sketch.tar.gz’ z działu Download.
usleep(100)
Zatrzymuje działanie programu na 100 mikrosekund przed ponownym wykonaniem pętli.
while(data_length != -1)
Nasza aplikacja będzie działać dopóki użytkownik nie naciśnie ‚ctrl+C’.

Jak uruchomić?

Pobierz na swój Raspberry Pi poleceniem: wget http://bbmagic.net/download/src/bbmagic_relay_sketch.tar.gz
BBMagic RELAY app pobierz
Rozpakuj poleceniem: tar -zxvf bbmagic_relay_sketch.tar.gz
BBMagic RELAY app rozpakuj
Przejdź do katalogu projektu: cd bbmagic_relay_sketch
Jeśli to konieczne zmian prawa do pliku: chmod 755 bbmagic_relay_sketch
BBMagic RELAY app chmod
Uruchom aplikację aby odczytać adres Twojego modułu BBMagic RELAY: sudo ./bbmagic_relay_sketch
BBMagic RELAY app uruchomienie
BBMagic RELAY app odczyt mac
Podłącz zasilanie Twojego modułu BBMagic RELAY i poczekaj kilka sekund na odebranie danych. I już znasz adres modułu, którym będziesz sterować. Oczywiście adres Twojego będzie inny niz ten, pokazany na poniższym obrazku.
BBMagic RELAY mamy adres
Teraz skoro mamy już adres modułu, którym chcemy sterować musimy wpisać go do pliku ‚bbmagic_relay_sketch.c’ (np edytorem nano). Zamknij zatem aplikację naciskając ‚ctrl+c’ i otwórz plik do edycji:
nano bbmagic_relay_sketch.c
BBMagic RELAY app nano
Wpisz odczytany adres (ja wpisuję swój E7BA0893C9D2):
unsigned char rel_bd_addr[BBM_BT_ADDR_SIZE] = {0xE7,0xBA,0x08,0x93,0xC9,0xD2};
BBMagic RELAY edycja adresu
Po dokonaniu edycji naciskamy ‚ctrl+x’ aby opuścić edytor, a następnie ‚y’ i ENTER aby zapisać wprowadzone zmiany.
BBMagic RELAY app save
Skompiluj teraz projekt z adresem Twojego modułu: make
BBMagic RELAY app kompilacja
I odpal sterowanie modułem BBMagic RELAY: sudo ./bbmagic_relay_sketch
BBMagic RELAY app działa
BBMagic RELAY ledy

Jak działa?

Jeśli nie widziałeś, zobacz jak przygotować sprzęt dla aplikacji: BBMagic RELAY C app-przygotowanie sprzętu.
Tagi , , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *