Android Things is platfrom for your IoT prototyping. The name Android Things comes from Android, because it runs on Android and you can run Android Apps there and Things because you make some IoT (Internet of Things) device. IoT stands for a lot of things that are connected to internet, for example alarms, sensors, smart screens, smart everything…
It is like „Arduino running Android“. Protocols such as I2C, Serial, SPI and GPIO, PWM are supported.
Android Thins itself is only way how to do software on your development board. You can run it on Raspberry Pi 3B or Pico i.MX7D. I like the fruity way more. Small comparison:
4x ARM Cortex-A53 1.2GHz
Broadcom VideoCore IV
1GB LPDDR2 (900 MHz)
10/100 Ethernet, 2.4GHz 802.11n, BT, BLE
2x ARM Cortex-A7 1.2Ghz, ARM Cortex-M4 200Mhz
512MB LPDDR3 (1066 MHz)
WiFi, Ethernet, Bluetooth
40-pin header + 12-pin + 2×8-pin
The Starter pack I got is borrowed from eMan.cz. This is not a commercial promo. The box contains several smaller boxes with these components:
One of the dissadvantages you can get is support of libraries. There are not so many libraries for components like for Arduino or Python running on Raspberry. If you want to run a rare component which works with Arduino you can run it with Android Things as well, but with need to be lucky finding the right library otherwise you will need to write it yourself by datasheet and that could not be so easy.
VL53L0X is I2C infrared laser-like distance sensor which can measure distance with accuracy of 1 mm and maximum distance of 200 cm in long range mode, the basic mode provides 120 cm range which is good for many applications. One disadvantage is that you cannot change I2C address permanently. You have to shut down other sensors on the line and then set I2C address of the sensor. Address resets when the sensor losts power.
Nokia 5110 SPI display or OLED I2C. 5110 is low power, readable on direct sun, has optional backlight but the pixels are rectangular not squares, so circle looks like ellipse. The OLED one is no so power efficient but easy to connect and has variable colors (blue and white) and size (0.9 and 1.3 inch). I like the 1.3″ inch version.
Bosch BME280. It measures temperature, humidity, pressure (and above sea level from pressure). It uses I2C interface and supports low power modes. For the precise contactless temperature measurements I choose Melexis MLX90614. This I2C sensor has several versions (voltage, field of view, accuracy). I like the DCI version which is 3 volt with 3 degrees FOV and almost medical precision.
If I want to get just Yaw/Pitch/Roll in degrees then I use GY-25. The board itself has MCU and sensor. The MCU communicates via I2C with sensor and over Serial to you. But if I want more data I use MPU-9250. It is I2C sensor with accelerometer, gyro, compass, so 9 axis in total. It also provides temperature as bonus.
Lidar is distance sensing device which outputs data describing distance. It uses light, that’s why it’s called li-dar (dar is from radar which use sound). It fire an IR ray in the specific angle and detect strength of IR ray coming back to the receiver part. I was using Sharp IR distance measuring sensor which is not precise but It’s easy to use and cheap. Then I found VL53L0X sensor. It’s based on Class 1 IR Laser, so the ray is more like line and It can provide data via I2C interface to your MCU. This sensor can be turned 360° over and over and sensing environment around. I wanna to build such Lidar sensor. The first thing you will need is something that allows you to turn cables many times without tangling. That is called SlipRing. You can find it on AliExpress, it’s not thing for few cents…
The next is sensor, which can provide very fast measurements. Let’s say we want make a whole turn once a second and measure every 10°. That’s 36 measurements in 1000 millisecond, so ~28ms for measurement and sending data to out MCU! The fastest mode of VL53L0X takes ~20ms, so if we add some time for sending to MCU, it could be possible. I will talk about combinating more sensors to achieve speed in the next article.
I made some progress last nights while staying awake until 3-4 AM. I have tried NRF24L01 modules but without success. I have to order new ones, I have’t got any spares. They were working fine last year, I don’t know what happened. So, I decided to add Bluetooth Module (HC-06).
First of all, I was looking for Android App which will be the best for my purpose. Simple app which will be sending data to the car continuously! I didn’t find such an app for controlling car. I found some, but they were horrible, but good for testing. The app I downloaded has joystick and buttons like gamepad. The problem was in joystick. It was just like 8 buttons and the direction you moved with joystick the specific button was sent to the car ONCE. When I released the joystick some another character was sent to the car but also ONCE. That was problem. Why? Because when I lost connection between smartphone and HC-06 the car will still going in the last known direction and car easily run away and be damaged. And so it happened. It fell off the broke rear bumper. Glue, easy fix.
When the car was finished and working I started programming custom Android application. I wanted keep it simple. I added status bar with connect switch, voltage and device name and coefficients. Below the status bar were placed custom made „Analog Sticks“, one vertical, one horizontal giving me a range of -1.0 to +1.0 for better calculations. I will talk about the app itself in the part #3.
Besides Smartwatch Journey and Quadruped Project there are several projects waiting to be finished.
I built FPV (First Person View) RC car controlled by Arduino last summer. It was easy to build but the main chassis wasn’t looking so good. So, I decided to rebuild it.
The main parts of the car was: chassis with steering and motor included from construction kit rc truck, 2 x 18650 old batteries, Arduino Pro Micro/Mini, nRF24L01 with attachable antena, TB6612FNG as motor driver. I added 1000TVL FPV camera and transmitter Eachine TS832 later. The controlls was just 4 buttons (FWD / REV, LEFT / RIGHT) and FPV receiver RC832 from Eachine as well. There was also some regulator which will be mentioned later. Voltage divider to measure voltage with Arduino.
Reasons why I wanted to rebuild it:
There wasn’t any space to put batteries inside chassis, the only way was to use 4xAA batteries insertable to the bottom part, but that’s too weak and slow for me cuz 4xAA can provide olny 4.8V – 6V due to type. The batteries was placed on the top of chassis making bad behavior of the car.
Power management wasn’t solved very good. As I accelerated the car the FPV transmitter shuted down and didn’t have enought power. I had to use another 600mA battery but it was drained in 15 minutes.
What I made new or added:
Old steering was replaced by servo motor steering with L7806CV voltage regulator to make suitable 6 volts.
Front suspension is wider by 5 mm. (80 mm front and rear now)
New main-board including NRF24L01 with L1117 3.3V regulator, Arduino Pro Micro 5V, TB6612FNG, big 1000uF capacitor for voltage spikes, buzzer for signalization low voltage or debug, 10k/4k7 voltage regulator was the same as before.
burned finfer by soldering iron :/, it survived (weird smell of human meat)
What I will make or add later
FPV camera on Yaw or Pitch servo
Spoiler on servo. Rly? Useless…. Maybe.
Better controller! with display or buzzer to know battery voltage of the car or the controller itselft.