Jak korzystać z sensorów BBMagic


Aby skorzystać z danych przesyłanych przez sensory BBMagic należy:

  • odczytać dane funkcją bbm_bt_read(..)
  • sprawdzić, który sensor przysłał informacje
  • odczytać i przetworzyć dane znajdujące się w buforze

Wszystko to zrobi kilka poniższych linii kodu:

#include <stdio.h>
#include <stdlib.h>
#include "bbmagic_lib.h"
int main(void)
{
    unsigned char bbm_buf[100] ;
    int i, bbm_id ;
    i =bbm_bt_open(0, 0, 0, LIB_SHOW_CONFIG) ;
    if(i) exit(1) ;
    do
    {
        bbm_id = bbm_bt_read(bbm_buf) ;
        if( bbm_id == BBMAGIC_M_BUTTON)
        {
            printf("Button: ") ;
            if(bbm_buf[BBM_BUTTON_BUTTON_FUNCTION] == BBM_BUTTON_FN_SINGLE_CLICK)
                printf("SINGLE CLICK") ;
            else if(bbm_buf[BBM_BUTTON_BUTTON_FUNCTION] == BBM_BUTTON_FN_DOUBLE_CLICK)
                printf("DOUBLE CLICK") ;
            else if(bbm_buf[BBM_BUTTON_BUTTON_FUNCTION] == BBM_BUTTON_FN_HOLDING)
                printf("HOLDING") ;
            printf("\n\r") ;
        }
        if( bbm_id == BBMAGIC_M_MAGNETO)
        {
            printf("Window: ") ;
            if(bbm_buf[BBM_MAGNETO_FLAGS] & BBM_MAGNETO_MAGNET_MASK) printf(" CLOSED") ;
            else printf(" OPEN") ;
            printf("\n\r") ;
        }
        bbm_sleep_ms(100) ;
    }while(bbm_id != -1) ;
    bbm_bt_close() ;
    exit(0) ;
}

A oto wynik działania programu:
BBMagic sesnor screen example

bbm_buf[100]
To bufor na dane odbierane od sensorów BBMagic.

bbm_bt_open(0, 0, 0, LIB_SHOW_CONFIG)
Funkcja otwiera komunikację BBMagic Bluetooth Smart. W miejsce pierwszych trzech zer można wpisać numery pinów Raspbeey Pi z podłączonymi przez rezystory diodami LED sygnalizującymi kolejno: odbieranie, wysyłanie danych oraz działanie aplikacji.
Parametr LIB_SHOW_CONFIG włącza wyświetlanie przez bibliotekę bbmagic_lib_2 komunikatów startowych.

bbm_bt_read(bbm_buf)
Funkcja zapisująca w buforze dane odebrane od modułów BBMagic. Po wykonaniu funkcji w zmiennej 'bbm_id’ może pojawić się:

  • wartość większa od 0 – numer modułu BBMagic, który przysłał dane. Zdefiniowane są w pliku 'bbmagic_lib.h’. Np. moduł BBMagic METEO ma numer 1 (#define BBMAGIC_M_METEO 1).
    Dane otrzymane od modułu znajdują się w buforze bbm_buf[]. Położenie konkretnych danych zdefiniowano również w pliku 'bbmagic_lib.h’. Np. poziom natężenia światła z modułu METEO mamy tu: bbm_buf[BBM_METEO_LIGHT] (#define BBM_METEO_LIGHT 11).
  • 0 – oznacza brak nowych danych.
  • -1 – oznacza zakończenie programu (np. gdy naciśnięto Ctrl+C)

if( bbm_id == BBMAGIC_M_BUTTON)
Jeśli nadeszła wiadomość od sensora BBMagic BUTTON to sprawdzimy jaka funkcja guzika została wywołana: pojedyncze kliknięcie, podwójne kliknięcie czy przytrzymanie.

if( bbm_id == BBMAGIC_M_MAGNETO)
Jeśli nadeszła wiadomość od sensora BBMagic MAGNETO zainstalowanego przy oknie, to wyświetlamy stan okna: zamknięte/otwarte.

bbm_sleep_ms(100)
Zatrzymuje pętlę główną na 100ms. Zastępuje funkcje usleep(), sleep(), itp. które nie są kompatybilne z bibliteką bbmagic_lib_2.

bbm_bt_close()
Funkcja zamykająca komunikację BBMagic Bluetooth Smart.

Zrób to sam

Przykładowa aplikacja 'bbmagic_sensor_test’ jest bardziej rozbudowana. Odbiera i przetwarza dane od sensorów:

  • BBair
  • BBMagic BUTTON
  • BBMagic MOTION
  • BBMagic METEO
  • BBMagic MAGNETO
  • BBMagic FLOOD

Aby ją pobrać, rozpakowac i uruchomić wpisz:

wget http://bbmagic.net/download/src_2/bbmagic_sensor_test.tar.gz
tar -zxvf bbmagic_sensor_test.tar.gz
cd bbmagic_sensor_test
sudo ./bbmagic_sensor_test

BBMagic sesnor test app get
I w działaniu z sensorami BUTTON, MAGNETO, MOTION i BBair:
BBMagic sesnor test app
BBMagic sesnor test app BBair

Tagi , , .Dodaj do zakładek Link.

Komentarze są wyłączone.