Haberler

Suli: Seeed Birleşik Kütüphane Arayüzü

Burada Suli’yi, Arduino, Raspberry Pi, mbed ve benzeri açık donanım modül kütüphanelerinin planını duyurmaktan mutluluk duyuyoruz.

Suli nedir?

Bir kız ismi gibi mi geliyor? Aslında Seeed Unified Library Interface’in kısaltması. Bu, yakın gelecekte yapılacaklar listemizde büyük bir madde.

Yüzlerce sensör, aktüatör, ekran ve diğer yararlı modüllerimiz var. Geçmişte, esas olarak Arduino uygulamalarına odaklandık ve yalnızca Arduino Kütüphanesi sağladık. Bu, Raspberry, LauchPad veya MCS51 gibi başka bir platform kullandıysanız, Kütüphanemizi taşımak zorunda kaldığınız anlamına geliyordu ve bazen bu kolay olmuyordu.

Bazen bazı müşteriler bizden bir Arduino dışı platform için bazı kütüphaneler sağlamamızı istediğinde, onlara “hey dostum, bizde sadece Arduino kütüphanesi var.” demekten başka bir şey yapamıyorduk. Müşterilere bu şekilde yanıt vermek bizi kötü hissettiriyordu.

Ve kütüphanelerimizi tüm platformlara uyumlu hale getirmenin bir yolu olup olmadığını düşünüyorduk. Bu gerçekten zor bir görev, ama imkansız değil. Ve sonunda bunu çözmeyi başardık: Suli – Seeed Unified Library Interface, bu sayede kütüphanelerimizin neredeyse tamamı (en az %90) birçok yaygın platforma uyumlu hale getirilebilir veya en azından taşınması kolay hale getirilebilir.

Suli nasıl çalışır?

Aşağıdaki resme bir bakalım

Suli

Dört daire olduğunu görebiliriz ve en içteki HW (donanım). Suli, GPIO, I2C, Zamanlayıcı ve UART gibi HW’den kaynakları çağıracak; ardından Suli uyumlu Kütüphane ve ardından Kullanıcı Uygulaması. Tüm Kütüphanelerimiz yalnızca Suli fonksiyonunu çağıracak. Böylece farklı platformlar için sadece Suli’yi taşımamız yeterli, ardından Kütüphane kullanılabilir hale gelir. Bu, farklı platformların kendi Suli’sine sahip olduğu anlamına gelir; Arduino için Suli, Mbed için Suli, Suli için….

Suli hakkında birkaç nokta var:

l  Farklı platformların eşdeğer Suli’si vardır.

l  Suli uyumlu Kütüphane platformdan bağımsızdır.

l  Suli uyumlu Kütüphane, Suli’deki fonksiyonu çağıracaktır.

Suli, Suli.h ve Suli.cpp(.c) olmak üzere iki dosyaya sahiptir. Ve Suli, aşağıdaki fonksiyonu uygulamalıdır, bu fonksiyon

[php]

GPIO türü:

typedef     int     IO_T;                           // IO türü

typedef     int     PIN_T;                          // pin adı

typedef     int     DIR_T;                          // pin yönü

typedef int ANALOG_T;                               // pin analog

GPIO durumu:

#define HAL_PIN_INPUT   INPUT                       // INPUT ve OUTPUT Arduino IDE’de tanımlandı

#define HAL_PIN_OUTPUT  OUTPUT

#define HAL_PIN_HIGH    HIGH                        // HIGH ve LOW Arduino IDE’de tanımlandı

#define HAL_PIN_LOW     LOW

Veri türü:

typedef signed char     int8;

typedef unsigned char   uint8;

typedef signed short    int16;

typedef unsigned short  uint16;

typedef signed long     int32;

typedef unsigned long   uint32;

Dijital IO İşlemi:

void seeed_hal_pin_init(IO_T *pio, PIN_T pin);      // pin başlat

void seeed_hal_pin_dir(IO_T *pio, DIR_T dir);       // pin yönünü ayarla

void seeed_hal_pin_write(IO_T *pio, int16 state);   // pin yaz

int16 seeed_hal_pin_read(IO_T *pio);                // pin oku

uint16 seeed_hal_pulse_in(IO_T *pio, uint8 state, uint32 timeout);

Analog IO İşlemi:

void seeed_hal_analog_init(ANALOG_T * aio, PIN_T pin);

int16 seeed_hal_analog_read(ANALOG_T * aio);

Gecikme

void seeed_hal_delay_us(uint32 us);                 // us gecikme

void seeed_hal_delay_ms(uint32 ms);                 // ms gecikme

Zamanlar

uint32 seeed_hal_millis(void);

uint32 seeed_hal_micros(void);

I2C Arayüzü:

void seeed_hal_i2c_init(void * i2c_device);

uint8 seeed_hal_i2c_write(void * i2c_device, uint8 dev_addr, uint8 *data, uint8 len);

uint8 seeed_hal_i2c_read(void * i2c_device, uint8 dev_addr, uint8 *buff, uint8 *len);

UART:

void seeed_hal_uart_init(void * uart_device, int16 uart_num, uint32 baud);

void seeed_hal_uart_send(void * uart_device, int16 uart_num, uint8 *data, uint16 len);

void seeed_hal_uart_send_byte(void * uart_device, int16 uart_num, uint8 data);

uint8 seeed_hal_uart_read_byte(void * uart_device, int16 uart_num);

uint16 seeed_hal_uart_readable(void * uart_device, int16 uart_num);

Suli’nin dijital IO işlemi, analog IO işlemi, I2C ve Uart fonksiyonlarını içerdiğini görebilirsiniz. Çok kapsamlı değil, ama deneyimlerimize dayanarak, birçok kütüphanemiz için yeterli. Elbette bir gün daha fazla fonksiyona ihtiyaç duyduğumuzu fark edersek, ekleyeceğiz.

[/php]

Sonraki ne olacak?

Planımız, tüm Seeed kütüphanelerini Suli uyumlu hale getirmek ve bazı yaygın platformların Suli’sini taşımaktır. Bu platformlar, ilk aşamada Arduino, Mbed, Mesh Bee, Raspberry, LaunchPad’i içerecektir. Bu çalışmanın Haziran’dan önce tamamlanması bekleniyor. Bizi takipte kalın 😀

Daha fazla bilgi için lütfen https://github.com/Seeed-Studio/Suli adresine bakın

Yazan: Loovee

Leave a Reply

Your email address will not be published. Required fields are marked *