Motion Control With Raspberry Pi and LIS3DHTR, 3-Axis Accelerometer, Using Python

by Dcube Tech Ventures in Circuits > Sensors

5208 Views, 7 Favorites, 0 Comments

Motion Control With Raspberry Pi and LIS3DHTR, 3-Axis Accelerometer, Using Python

IPad_Air-min.jpg
Raspberry Pi LIS3DHTR 3-Axis Accelerometer Python Tutorial

Beauty surrounds us, but usually, we need to be walking in a garden to know it. - Rumi

As the educated group that we seem to be, we invest the vast majority of our energy working before our PCs and cell phones. Therefore, we frequently let our wellbeing take the secondary lounge, never truly finding an ideal opportunity to go to the gym or a fitness class and as a rule picking fast food over much more beneficial choices. The uplifting news is whether all you need is some assistance with record-keeping or to monitor your advancement, you can utilize today's innovation to manufacturing some gadget to help yourselves.

Technology is developing quick. Consistently, we catch wind of some new innovation that will change the world and the way we learn in it. When you are into PCs, coding, and robots or just likes to tinker, there's a tech blessing out there. Raspberry Pi, the micro, single board Linux computer, is dedicated to improving the way you learn with the innovative technology but also the key to improving education learning around the world. So what are the possible results that what we can do if we have a Raspberry Pi and a 3-axis Accelerometer close by ? How about we find this! In this task, we will check the acceleration on 3 perpendicular axes, X, Y and Z utilizing Raspberry Pi and LIS3DHTR,a 3-axis accelerometer. So we ought to see on this journey to create a system to check the 3-dimensional acceleration up or G-Force.

Basic Hardware We Require

Raspberry Pi-1-min.jpg
Pi adapter side-1-min.jpg
LIS3DHTR Front-1-min.jpg
I2C Cable-1-min.jpg
Cables-min.jpg

The issues were less for us since we have a huge amount of stuff lying around to work from. In any case, we know how it's troublesome for others to amass the right part in immaculate time from the helpful spot and that is defended paying little heed to every penny. So we would help you. Follow the accompanying to get a complete parts list.

1. Raspberry Pi

The initial step was getting a Raspberry Pi board. The Raspberry Pi is a single-board Linux based PC. This little PC packs a punch in computing power, utilized as a part of gadgets activities, and straightforward operations like spreadsheets, word preparing, web scanning and email, and games.

2. I2C Shield for Raspberry Pi

The primary concern the Raspberry Pi is truly absent is an I²C port. So for that, the TOUTPI2 I²C connector gives you the sense to use Rasp Pi with ANY of I²C devices. It's available on DCUBE Store

3. 3-axis accelerometer, LIS3DHTR

The LIS3DH is an ultra low-power high performance three axes linear accelerometer belonging to the “nano” family, with digital I2C/SPI serial interface standard output. We acquired this sensor from DCUBE Store

4. Connecting Cable

We acquired the I2C Connecting cable from DCUBE Store

5. Micro USB cable

The smallest bewildered, yet most stringent to the extent power need is the Raspberry Pi! The easiest way to deal is by the use of the Micro USB cable.

6. Web Access is a Need

INTERNET kids NEVER sleep!

Get your Raspberry Pi associated with an Ethernet (LAN) cable and connect it to your network router. Elective, search for a WiFi connector and utilize one of the USB ports to get to the remote system. It's a keen decision, simple, little and shoddy!

7. HDMI Cable/Remote Access

The Raspberry Pi has an HDMI port which you can connect specifically to a screen or TV with an HDMI cable. Elective, you can utilize SSH to associate with your Raspberry Pi from a Linux PC or Macintosh from the terminal. Likewise, PuTTY, a free and open-source terminal emulator sounds like a decent alternative.

Connecting the Hardware

Pi & Adapter-min.jpg
LIS3DHTR Cable Conn-1-min.jpg
LIS3DHTR Final Conn-1-min.jpg

Make the circuit according to the schematic appeared. Draw up a diagram and take after the outline precisely.
Imagination is more important than Knowledge.

Connection of the Raspberry Pi and I2C Shield

Above all else, take the Raspberry Pi and spot the I2C Shield on it. Press the Shield delicately over the GPIO pins of Pi and we are finished with this progression as simple as pie (see the snap).

Connection of the Sensor and Raspberry Pi

Take the sensor and Interface the I2C Cable with it. For the appropriate operation of this Cable, please recall I2C Output ALWAYS associates with the I2C Input. The same must be taken after for the Raspberry Pi with the I2C shield mounted over it the GPIO pins.

We endorse the usage of the I2C cable as it negates the necessity for examining pinouts, fastening, and discomfort brought about by even the littlest screw-up. With this fundamental attachment and play cable, you can present, swap out gadgets, or add more gadgets to an application effectively. This facilitates the work weight up to a significant level.

Note : The brown wire ought to dependably follow the Ground (GND) connection between the output of one device and the input of another device.

Web Network is Key

To make our endeavor a win, we require an Internet association for our Raspberry Pi. For this, you have choices like interfacing an Ethernet (LAN) cable join with the home network. Furthermore, as an alternative, be that as it may, an accommodating course is to use a WiFi USB connector. As a rule for this, you require a driver to make it work. So incline toward the one with Linux in the description.

Power Supply

Plug in the Micro USB cable into the power jack of Raspberry Pi. Punch up and we are ready.

Connection to Screen

We can have the HDMI cable associated with another screen. In some cases, you have to get to a Raspberry Pi without interfacing it to a screen or you might need to view some data from it from somewhere else. Conceivably, there are innovative and financially savvy approaches to doing as such. One of them is utilizing -SSH (remote command-line login). You can also likewise utilize the PUTTY software for that. These are for advanced users. So the details are not included here.

Python Coding for Raspberry Pi

Screen Shot 2016-09-23 at 2.10.46 PM-min.png

The Python Code for the Raspberry Pi and LIS3DHTR Sensor is accessible in our Github Repository.

Before proceeding to the code, ensure you read the rules given in the Readme archive and Set up your Raspberry Pi according to it. It will just respite for a moment to do all things considered.

An accelerometer is an electromechanical gadget that will gauge acceleration forces. These powers might be static, similar to the constant force of gravity pulling at your feet, or they could be alterable - brought on by moving or vibrating the accelerometer.

The accompanying is the python code and you can clone and adjust the code in any way you incline toward.

# Distributed with a free-will license.
# Use it any way you want, profit or free, provided it fits in the licenses of its associated works. # LIS3DHTR # This code is designed to work with the LIS3DHTR_I2CS I2C Mini Module available from dcubestore.com # http://dcubestore.com/product/lis3dhtr-3-axis-accelerometer-digital-output-motion-sensor-i%C2%B2c-mini-module/

import smbus import time

# Get I2C bus bus = smbus.SMBus(1)

# LIS3DHTR address, 0x18(24) # Select control register1, 0x20(32) # 0x27(39) Power ON mode, Data rate selection = 10 Hz # X, Y, Z-Axis enabled bus.write_byte_data(0x18, 0x20, 0x27) # LIS3DHTR address, 0x18(24) # Select control register4, 0x23(35) # 0x00(00) Continuous update, Full-scale selection = +/-2G bus.write_byte_data(0x18, 0x23, 0x00)

time.sleep(0.5)

# LIS3DHTR address, 0x18(24) # Read data back from 0x28(40), 2 bytes # X-Axis LSB, X-Axis MSB data0 = bus.read_byte_data(0x18, 0x28) data1 = bus.read_byte_data(0x18, 0x29)

# Convert the data xAccl = data1 * 256 + data0 if xAccl > 32767 : xAccl -= 65536

# LIS3DHTR address, 0x18(24) # Read data back from 0x2A(42), 2 bytes # Y-Axis LSB, Y-Axis MSB data0 = bus.read_byte_data(0x18, 0x2A) data1 = bus.read_byte_data(0x18, 0x2B)

# Convert the data yAccl = data1 * 256 + data0 if yAccl > 32767 : yAccl -= 65536

# LIS3DHTR address, 0x18(24) # Read data back from 0x2C(44), 2 bytes # Z-Axis LSB, Z-Axis MSB data0 = bus.read_byte_data(0x18, 0x2C) data1 = bus.read_byte_data(0x18, 0x2D)

# Convert the data zAccl = data1 * 256 + data0 if zAccl > 32767 : zAccl -= 65536

# Output data to screen print "Acceleration in X-Axis : %d" %xAccl print "Acceleration in Y-Axis : %d" %yAccl print "Acceleration in Z-Axis : %d" %zAccl

The Workability of the Code

Screen Shot 2016-09-20 at 5.27.36 PM-min.png

Download (or git pull) the code from Github and open it in the Raspberry Pi.

Run the commands to Compile and Upload the code in the terminal and see the yield on Screen. Taking after a couple of minutes, it will demonstrate each one of the parameters. Consequent to guaranteeing that everything works effortlessly, you can take this dare to a more noteworthy undertaking.

Applications and Features

Manufactured by STMicroelectronics, the LIS3DHTR has dynamically user selectable full scales of ±2g/±4g/±8g/±16g and it is capable of measuring accelerations with output data rates from 1Hz to 5kHz. The LIS3DHTR is appropriate for Motion activated functions and Free-Fall Detection. It quantifies the Static Acceleration of Gravity in Tilt-Detecting Applications, and in addition Dynamic Acceleration upcoming about because of Motion or Shock. Other applications include the likes of Click/Double Click Recognition, Intelligent Power Saving For Handheld Devices, Pedometer, Display Orientation, Gaming And Virtual Reality Input Devices, Impact Recognition And Logging And Vibration Monitoring And Compensation.

Conclusion

Trust this undertaking spurs further experimentation. This I2C sensor is phenomenally adaptable, modest and available. Since it's a to an awesome degree impermanent framework, there are interesting ways you can expand this assignment and enhance it even.

For example, You can start with the idea of a Pedometer using the LIS3DHTR and Raspberry Pi. In the above task, we have utilized fundamental computations. Acceleration can be the relevant parameter to analyze the ruling a walking. You can check the three components of motion for an individual that are forward (roll, X), side (pitch, Y) and vertical (yaw axis, Z). A typical pattern of all 3 axes is recorded. At least 1 axis will have relative large periodic acceleration values. So peak direction and an algorithm are essential. Taking account of steps Parameter (Digital Filter, Peak Detection, Time Window, etc.) of this algorithm, you can recognize and count steps, as well as measure distance, speed, and—to an extent—calories burned. So you could utilize this sensor in various ways you can consider. We trust you all like it! We will attempt to make a working rendition of this pedometer sooner rather than later, the configuration, the code, the part computing the means to separate walking and running and Calories burned.

For your solace, we have an intriguing video on YouTube which may assist your examination. Trust this venture motivates further exploration. Continue mulling over! Remember to look for after as more is persistently coming up.