Figure 1 - Smart IoT Stroller Team - Mark Davis, Joshua Sackos, Brian Lancaster, Jacob Wolf, Monique Tucker
This article will discuss the Smart IoT Stroller developed at the 2014 PDX-Transportation Hackathon hosted by Intel, and show you how to make a Smart IoT Stroller on your own. The stroller features an Intel® Edison board, automatic braking system, turn signals, data synchronization to the cloud, and an Android* app for pulling data from the cloud.
Motivation for the Smart IoT stroller came from a YouTube* video of a baby stroller falling off the edge of a train loading platform onto the tracks below. This spurred research into how technology can help prevent these events from occurring in the future. The main intent of this project was to prevent runaway strollers; however, given the simplicity of the design, additional features were added throughout the development process to enrich a parent’s strolling experience.
Whenever the parent lets go of the stroller’s handlebar the front wheel locks preventing it from rolling away. Once the parent touches the handlebar the lock on the front wheel disengages and the stroller is free to move. The turn signals on the Smart IoT Stroller are LED strips that toggle while active. However, when both are activated at the same time, both LED strips remain illuminated and do not toggle to indicate braking. Data is uploaded to the cloud via the Intel Edison board’s onboard Wi-Fi* and allows parents to access the strolling trip information stored in the cloud at a later time from their smartphones.
What You Will Need
Intel® Edison board mounted on the Intel® Arduino expansion board with the latest firmware version.
For the latest firmware see: http://communities.intel.com/docs/DOC-23242
Intel® XDK IoT Edition
3 x Grove* - Smart Relays (v 1.1)
4 x Grove* - Touch Sensors (v1.0)
7 x Grove* - Connectors (minimum)
1 x Base Shield v2
2 x LED strips (12V)
1 x Pull type solenoid (12V)
1 x RadioShack 276-159B Board
1 x 12V battery
1 x Jogging baby stroller
5 to 10 ft. of 22AWG wire as needed for extending connections
How It Works
The automatic braking system consists of two capacitive touch sensors (Grove* - Touch Sensors), a relay (Grove* - Smart Relay), and a 12V pull-type solenoid. The capacitive touch sensors are mounted to the handlebar of the stroller, and the sensor outputs are connected to input pins on the Intel® Arduino expansion board. When either the left or right touch sensors are high (parent is touching the handlebar) an output pin is asserted (driven high) to activate the relay that controls the pull-type solenoid, and the brake disengages. Conversely, when both touch sensors are low (parent is not touching the handlebar) the output pin is deasserted (driven low) to deactivate the relay and the front wheel brake engages. The metallic rod that is pulled in or pushed out by the solenoid acts as a brake by obstructing the path of the front wheel spokes on the stroller. For a graphical representation of the braking mechanics and control circuit details see Figure 2.
Figure 2 - Smart Brake Mechanics and Control Circuit
The turn signal system consists of two 12V LED strips, two relays, and two additional capacitive touch sensors mounted to the stroller handlebar. Like the braking system, the capacitive touch sensor outputs are connected to input pins on the Intel Arduino expansion board. Each turn signal consists of a capacitive touch sensor, a relay, and an LED strip. When the parent touches only the left capacitive touch sensor turn signal, an output pin that controls the left LED turn signal is toggled, and the left LED turn signal begins to blink. When the parent is touching only the right capacitive touch sensor turn signal, a different output pin that controls a separate relay is toggled and the right LED turn signal begins to blink. If the parent is touching both the left and right capacitive touch sensor turn signals, both LED strips will illuminate and do not toggle to imply that they are braking. For circuit details see Figure 3.
Figure 3 - Turn Signal Circuit
Cloud Storage and Android* App
The data that is logged to the cloud consists of sensor data, braking events, left turns, and right turns. The Android app consisted of three rectangles for left turn, right turn, braking events, and a text display area for showing each logged event. HTTP posts were used for writing JSON-encoded data structures to the cloud. This article will not cover the development of the Android app or the setup of cloud storage. Figure 4 is a picture of the Android app developed for the Smart IoT Stroller.
Figure 4 - Smart IoT Stroller Android* App
Smart IoT Schematic
Figure 5 is the complete schematic of the Smart IoT Stroller. Note that in the figure, the pin connections between the Intel Arduino expansion board and the peripheral hardware components (Smart Relay, Touch Sensor) do not display the use of the Base Shield v2, which the Grove connectors need. The Base Shield v2 is a hardware module that plugs directly into the Arduino headers on the expansion board and routes some of the digital/analog pins to Grove connectors.
Figure 5 - Smart IoT Stroller Complete Hardware Schematic
The relays, LED strips, solenoid, and Intel Arduino expansion board (via DC barrel jack) all need access to the 12V battery. Therefore, a custom power distribution board is needed. Figure 6 shows an unmodified RadioShack 276-159B board with the connections needed for powering all of the hardware components used in the Smart IoT Stroller design. A 12V rail is created by soldering a connection from the positive battery terminal to node A, and then soldering jumper wires between nodes A, B, C, D, and E as shown in Figure 6. Similarly, a ground (GND) rail is created by soldering a connection from the negative battery terminal to node F and then soldering jumper wires between nodes F, G, H, I, and J. Each hardware peripheral obtains its power via the 12V rail and all share a common ground via the GND rail. This example utilizes 8 "AA" batteries in series via a RadioShack battery holder with a snap connector to supply the needed 12V power.
Figure 6 - Power Distribution Board
Grove* - Smart Relay
Figure 7 is a picture of the Grove - Smart Relay with the reference designators used in the Smart IoT Stroller Complete Schematic (Figure 5). The SIG, NC, Vcc, and GND pins are part of the Grove female header shown in Figure 7. The voltage used to power peripherals controlled by the relay is input to the wire terminal block on the Grove - Smart Relay. Figure 7 shows the Vin pin located on the left side of the wire terminal block and the Vout pin located on the right side of the wire terminal block.
Figure 7 - Grove* - Smart Relay
1 – Mount the Intel® Edison board and Base Shield v2
To get started, mount both the Intel Edison board and Base Shield v2 to the Intel Arduino expansion board. The Intel Edison board should plug into reference designator J7 on the Intel Arduino expansion board. Next, secure the Intel Edison board via the small nuts and bolts provided with your expansion board. Mount the Base Shield v2 by plugging it into the Arduino headers on the expansion board and make sure that the voltage selector switch on the Base Shield v2 is set to 5V. See Figure 8 for details on mounting locations and what your hardware setup should look like after mounting the components.
Figure 8 - Intel® Edison and Base Shield v2 mounting before and after
2 – Smart Brake
Connect the positive lead of the solenoid to Vout on the relay used for controlling the solenoid. Use a Grove connector to connect the Smart Relay to Grove connector D2 on the mounted Base Shield v2.
3 – Left Turn Signal
Connect the 12V input wire on the left turn LED strip to Vout on the relay used for switching the left turn signal. Use a Grove connector to connect the Smart Relay to Grove connector D3 on the mounted Base Shield v2.
4 – Right Turn Signal
Connect the 12V input wire on the right turn LED strip to Vout on the relay used for switching the right turn signal. Use a Grove connector to connect the Smart Relay to Grove connector D4 on the mounted Base Shield v2.
5 – Touch Sensors
Use Grove connectors to connect the capacitive touch sensors to the mounted Base Shield v2 as outlined in Table 1.
|Table 1. Capacitive Touch Sensor to Base Shield V2 Mapping |
|Signal ||Base Shield V2 Grove* Connector |
|Left Touch ||D7 |
|Left Turn ||D8 |
|Right Touch ||D6 |
|Right Turn ||D5 |
6 – Connecting the Power Distribution Board
- Use jumper wires to connect Vin on the Smart Relays to the 12V power rail on the power distribution board (see Figure 6).
- Similarly, the negative wires (ground wires) on the solenoid, left turn LED, and right turn LED need to be connected to the GND plain on the power distribution board (see Figure 6). Use jumper wires to connect these peripherals.
- Connect the DC barrel jack soldered to the power distribution board to jack J1 on the expansion board.
- Refer to Figure 6 above to see the connections.
7 – Completed Connections
After completing steps 1-6 above your hardware configuration should look similar to what is shown in Figure 9.
Figure 9 - Completed Hardware Connections
8 – Create Intel® IoT XDK Project
Open Intel XDK IoT Edition and create a new project called "Smart_IoT_Stroller". For help with Intel XDK IoT Edition see:
9 – Smart IoT Stroller Code
Inside the function defined as argument 1 of the setInterval() function call, each capacitive touch sensor is read and is used to control the states of the solenoid, left turn LED strip, and right turn LED strip. Any changes to the state of the capacitive touch sensors, solenoid, left turn LED, and right turn LED are logged to the cloud via the save_to_cloud() function.
Application Note: Replace the ‘CLOUD_STORAGE_URL’ variable on line 41 with your cloud storage URL.
GitHub URL: https://github.com/joshsackos/smart_iot_stroller/blob/master/main.js
To perform HTTP posts in the Smart IoT Stroller the request client must be included in the Intel XDK dependencies list. Open the package.json file located in the left-hand navigation of the Intel XDK IDE. In the package.json file add request:latest between the dependencies curly braces and save the document. After adding the request client to the dependency list, your package.json file should be similar to the package.json file located at the GitHub URL below.
GitHub URL: https://github.com/joshsackos/smart_iot_stroller/blob/master/package.json
10 – Build and Program your Intel® Edison board
Connect the Intel Arduino expansion board to your PC with theMicro-USB cables, and connect to your board from in the Intel XDK IDE. Build the Smart_IoT_Stroller project and upload it to the Intel Edison. Disconnect both USB cables from your expansion board. See Figure 10 for details.
Figure 10 – Intel® XDK IDE - Connect, Build, Program
11 – Cloud Storage and Android App
The cloud storage utilized in the Smart IoT Stroller project was achieved using Microsoft Azure* Mobile services. The Android cell phone application was built with Xamarin. Setting up the cloud storage and developing the Android app are not covered in this document; however, the links below should get you started with your cloud storage and Android app development.
12 – Connecting the Battery
Insert 8 "AA" batteries to power your Smart IoT Stroller. After powering your design wait about 20 seconds for the Intel Edison to boot up.
13 – Working Smart IoT Stroller Configuration
Once the Intel® Edison board has finished booting complete the different touch combinations outlined in the video below. If your Smart IoT Stroller hardware configuration is functioning properly, you are ready to mount the hardware onto your jogging stroller. If your hardware configuration is not functioning properly, work through this document again and make sure that all hardware and software configurations are correct.
14 – Working Smart IoT Stroller Configuration
Mount the working Smart IoT Stroller hardware/software configuration to your jogging stroller. Figure 11 below is the mounting configuration used for the Smart IoT Stroller project.
Figure 11 - Smart IoT Stroller with Hardware Mounted
This design is intended to demonstrate how IoT devices can make everyday objects smarter and is not intended to be used in real-world applications as is. If the stroller is in motion and the battery used for the system reaches a critical level, the solenoid will lose power and extend the metallic rod. This is the same as applying the brake and such an event could inadvertently cause the stroller to flip over. An alternative would be to have a manual brake system that can also be controlled by the Intel® Edison board, so functionality is not lost in the event the battery loses charge.
Integrating technology into everyday objects increases convenience, allows for data collection, provides access to cloud services, and enhances the quality of people’s lives. IoT enables the collecting of health and fitness data, communications, statuses of important systems, and scientific measurements. IoT is an emerging market with nearly endless possibilities.
What will you make?
About the Author
Joshua Sackos is an electrical and computer engineering graduate student at Portland State University. He has 10+ years computer programming experience and 2.5 years embedded systems experience. He was previously part of a team that built a single event upset mitigation system for reconfigurable devices operating in the space environment. In addition to embedded systems he also has experience in digital design using HDLs, sensors, HPC, and e-commerce web development. He completed his B.S. in Computer Engineering at Washington State University in 2013.
You can find out about future projects at http://www.joshsackos.com.
Get access to the new Intel® IoT Developer Kit, a complete hardware and software solution that allows developers to create exciting new solutions with the Intel® Galileo and Intel® Edison boards. Visit the Intel® Developer Zone for IoT.