Android IoT

3zcsمنذ 3 سنوات

بسم الله الرحمن الرحيم 

أطلقت google مؤخراً Android IoT وفي هذه المقالة البسيطة سنقوم بثبيت النسخة على ٌRaspberry Pi 3 وعمل مشروع بسيط.

بداية عليك تحميل النسخة الخاصة بالـ Raspberry Pi 3 من هنا وبعد ذلك تثبيته على SD card حسب النظام الذي تستخدمه, بالنسبة لمستخدمي Ubuntu كالتالي 


sudo dd if=Downloads/androidthings_rpi3_devpreview_4.img of=/dev/yourFlash

 بعد ذلك ادخل SD card في Raspberry Pi وأوصل الكهرباء, وسلك Ethernet يفترض أن ترى مثل هذه الشاشة 

 piad.png.5bad0c25130046f4ada201c01b7d8e0b.png

 

لاحظ وجود IP في أسفل الصفحة فهو الذي سنستخدمه في التواصل مع Raspberry Pi وإيصاله بالشبكة.

الان نفتح  Android studio وعن طريق terminal الموجود فيه نقوم بكتابة الأمر التالي 


adb connect <ip-address>

ip address هو الرقم المكتوب لديك في أسفل الشاشة بعد Ethernet IP, لو تم الاتصال بشكل صحيح سيظهر هذا السطر 


connected to <ip-address>:5555

, بهذه الطريقة نكون متصلين بالـ Raspberry Pi لكن, نريد أن نجعل الأتصال عن طريق wifi 

 فنقوم بكتابة الأمر التالي 


adb shell am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid <Network_SSID> \ 
    -e passphrase <Network_Passcode> 

ssid أسم الشبكة المراد الاتصال بها 

passcode الرقم السري الخاص بالشبكة 

انتهينا من فقرة التثبيت إن صح التعبير وقد يتخللها الكثير من الإشكالات وdebug وأرحب بأي استفسار لتجاوز هذه المهمة, الان لننتقل إلى برمجة الـ board.

 أولا علينا أن نقوم بتوصيل كما في الصورة 

 

 

blog.vikki_.in_led_blink.thumb.png.8ee96feca3ca83f8ca50dbf49a7e7d14.png

 

وهنا شرح لـ pins الخاصة بـ Rpi

الكود كالتالي 


public class MainActivity extends Activity {
    private Gpio mLedGpio;
    private boolean mLedState = false;
    Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButton = (Button) findViewById(R.id.button);
        PeripheralManagerService service = new PeripheralManagerService(); //system service responsible for managing peripheral connections
        try {
            String pinName = "BCM4";//pin number
            mLedGpio = service.openGpio(pinName);
            mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);//Output pin ,start with 0v 
        } catch (IOException e) {
            e.printStackTrace();
        }
        mButton.setOnClickListener(v -> {
            try {
                if (mLedState) {
                    mLedGpio.setDirection(Gpio.ACTIVE_HIGH);//5v 
                    mLedState = false;
                }else {
                    mLedGpio.setDirection(Gpio.ACTIVE_LOW);//0v 
                    mLedState = true;
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }

}

 أما الـ UI فيحتوي button واحد id الخاص فيه هو button 

591e9af08c7e2_Screenshotfrom2017-05-1910-12-32.png.d486b882a1cfd1faebe755daa22c4f8c.png

بداية لدينا 


        PeripheralManagerService service = new PeripheralManagerService();

 PeripheralManagerService هي Service من من نظام الأندرويد تسهل لك التعامل مع pin الخاصة بـ Rpi

بعد ذلك قمنا بختيار pin عن طريق اسمه 


            String pinName = "BCM4"; 
			mLedGpio = service.openGpio(pinName);
            mLedGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);

وربطه بمتغير من نوع Gpio, ثم قمنا بضبط إعداده بأن يكون output ويبدأ بـ 0 فولت ويوجد العديد من Constant التي تساعد في هذه الاعدادت


        mButton.setOnClickListener(v -> {
                if (mLedState) {
                    mLedGpio.setDirection(Gpio.ACTIVE_HIGH);
                    mLedState = false;
                }else {
                    mLedGpio.setDirection(Gpio.ACTIVE_LOW);
                    mLedState = true;
                }

هنا قلنا في حال تم الضغط على button تأكد من حالته, في حال كان  on اجعله off والعكس, ونلاحظ أننا قمنا بأستخدام المزيد من Constant  التي تحدثنا عنها في السطر السابق.

ونلاحظ أيضا أننا كتبنا الدالة الخاصة بنا بطريقة lambda.

 

لمعلومات أكثر عن أساسيات hardware

واللاستزادة :

https://developer.android.com/things/sdk/index.html

كلمات دليلية:
0
إعجاب
831
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !