Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoT Design Thinking, Prototyping and Ideation

Ngesa Marvin
November 11, 2017

IoT Design Thinking, Prototyping and Ideation

This presentation was given at GDG DevFest Nairobi 2017, Strathmore University on the 11th November 2017 during the second session on IoT. It covers the steps and tools you need to go from your developer kit prototype to fabricating custom boards for your own product.

Ngesa Marvin

November 11, 2017
Tweet

More Decks by Ngesa Marvin

Other Decks in Technology

Transcript

  1. Determining the Need The application of the PCB, such as

    medical or automotive, will often determine the materials in the PCB
  2. • Circuit • Tweezers • Soldering Gun • Components •

    Soldering Station (Iron) What you need:
  3. GPIO PMW I2C SPI UART I2S Peripheral I/O – Low

    Level Access Hardware Intergration
  4. GPIO PMW I2C SPI UART I2S Peripheral I/O – Low

    Level Access Hardware Intergration Button GPS RGB LED Strip PWM Servo Temperature Sensor Capacitive Touch Buttons Peripheral Driver Library - GitHub + many more…
  5. dependencies { provided 'com.google.android.things:androidthings:...' } <application ...> <uses-library android:name="com.google.android.things"/> <activity

    ...> ... <!-- Launch activity automatically on boot --> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.IOT_LAUNCHER"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application> Home Activity
  6. // Open a peripheral connection PeripheralManagerService service = new PeripheralManagerService();

    Gpio button = service.openGpio(GPIO_PIN_NAME); // Configure the peripheral button.setDirection(Gpio.DIRECTION_IN); button.setEdgeTriggerType(Gpio.EDGE_FALLING); // Attach callback for input events button.registerGpioCallback(new GpioCallback() { @Override public boolean onGpioEdge(Gpio gpio) { Log.i(TAG, "GPIO changed"); // Return true to continue listening to events return true; } }); Simple Peripheral I/O
  7. private GpioCallback callback = new GpioCallback() { @Override public boolean

    onGpioEdge(Gpio gpio) { int keyAction = gpio.getValue() ? KeyEvent.ACTION_DOWN : KeyEvent.ACTION_UP; inputDriver.emit(new KeyEvent[]{ new KeyEvent(keyAction, KeyEvent.KEYCODE_SPACE)}); return true; } }; Button User Driver InputDriver driver = new InputDriver.Builder(InputDevice.SOURCE_CLASS_BUTTON) .setName(DRIVER_NAME) .setVersion(DRIVER_VERSION) .setKeys(new int[]{KeyEvent.KEYCODE_SPACE}) .build(); UserDriverManager.getManager().registerInputDriver(driver);
  8. GPIO PWM I2C I2S SPI Audio Input Sensors Peripheral Driver

    Library Peripheral I/O User Drivers GPS UART
  9. dependencies { compile 'com.google.android.things.contrib:driver-button:...' } ButtonInputDriver inputDriver = new ButtonInputDriver(

    GPIO_PIN_NAME, Button.LogicState.PRESSED_WHEN_LOW , KeyEvent.KEYCODE_SPACE ); inputDriver.register(); Button Library Driver
  10. Google's IoT Developers Community https://g.co/iotdev Android Things SDK https://developer.android.com/things Hackster.io

    Community https://hackster.io/google What’s Next? Ngesa N. Marvin IoT Champion for GDGs, SSA +Ngesa Marvin @Ngesa254