have crazy high monthly fees • Gotta have a camera on each room • IP cameras are hackable • Setup is complicated • Can’t see anything from a WAN without DDNS • OEM and 3rd party remote viewing apps are unreliable Motivation
use email to send you alerts • Alert! A leaf moved! (notifications are irrelevant) • No face detection nor facial recognition • No image classification • Can’t find your pet if it walked out of frame Motivation
• Entertainment…? Throw a tennis ball to Fido from anywhere! • Check if your pets have food or water • Keep an eye on the kids • See if a delivery arrived Motivation
public static final String I2C_DEVICE_NAME = "I2C1"; // Motor Hat Address private static final int MOTOR_HAT_I2C_ADDRESS = 0x60; // Motor Hat private AdafruitMotorHat mMotorHat; // Motors private AdafruitDcMotor motorFrontLeft, motorFrontRight, motorBackLeft, motorBackRight; https://github.com/zugaldia/android-robocar
motorBackRight.run(AdafruitMotorHat.FORWARD); } private void turnRight() { Log.d(LOG_TAG, "Turning right."); motorFrontLeft.run(AdafruitMotorHat.FORWARD); motorFrontRight.run(AdafruitMotorHat.FORWARD); motorBackLeft.run(AdafruitMotorHat.BACKWARD); motorBackRight.run(AdafruitMotorHat.BACKWARD); } DC and Stepper Motor Hat Driver
= new AdafruitServoHat(I2C_DEVICE_NAME, SERVO_HAT_I2C_ADDRESS); // Variables to configure the servos according to their manufacturer specs double minAngle = 20.0; double maxAngle = 150.0; double minPulseDurationRange = 0.7; // ms double maxPulseDurationRange = 1.50; // ms int frequency = 40;
they are connected from index 0 to 15 mPanServo = new AdafruitServo(0, frequency); mPanServo.setPulseDurationRange(minPulseDurationRange, maxPulseDurationRange); mPanServo.setAngleRange(minAngle, maxAngle); mPanServo.setAngle(SERVO_INITIAL_PAN_ANGLE); mServoHat.addServo(mPanServo); mTiltServo = new AdafruitServo(1, frequency); ... mServoHat.addServo(mTiltServo); … // Add the servos to the hat in the order they are connected from index 0 to 15 mServoHat.rotateToAngle(mPanServo, 90); mServoHat.rotateToAngle(mTiltServo, 90); 16 Channel Servo HAT Driver
Write down a list of materials and a list of desirable features • Research about the technologies such as APIs, protocols, etc. you’ll need to achieve the desired features, research about the parts and materials before purchasing them; pros/cons matter! • Use Etcher to push Android Things image to an SD Card • Learn to love adb and make a command cheat sheet
and analyze sample code (GitHub), ask questions (forums, Stack Overflow), watch how it is done (YouTube) • Redundancy (if you can, buy more than 1 board) • Learn about circuits, voltages and currents beforehand and be mindful about power requirements • Use rechargeable batteries • Always have a wired USB keyboard, mouse and an HDMI cable at hand • Try not to burn your fingers when soldering headers (It hurts!)