hi everyone so I recently start on a new
project involving Internet of Things IOT
cyber-physical systems and I found
myself having to collect a significant
amount of data process it run it through
various algorithms before pushing it to
the cloud so I just thought of sharing
the work I did now you guys might be
able to use some of these methods if you
have similar projects but for now let's
start off with the very basics and
that's how to send data from an Arduino
to Python using Pyserial now if you guys
like this video don't forget to give me
a thumbs up by clicking the like button
below and if you haven't done so already
please subscribe I'm Chams and welcome
to thats engineering
so when using an Arduino if you want to
collect a significant amount of sensor
data crosses it maybe run it through
various algorithms use it in machine
learning or AI or even to develop things
like webpages or dashboards then the
arduino ide isn't the friendliest thing
to use we are better off using something
like MATLAB or Python for example now
MATLAB has an Arduino library and add-on
which you can download and use it to
control the Arduino and read data
directly off its ports Python on the
other hand isn't that straightforward
but we do have access to the Py serial
library which allows us to read data
from the serial port of the Arduino and
that's what we are going to have a look
at in this video today now before we get
started let's have a quick look at the
physical system so I'm using over here a
dht11 temperature and humidity sensor
now you can use whatever sensor you want
or any number of sensors that you want
and you would have to connect it as such
the arduino on the other hand has to be
connected to the computer using a USB
cable so that you can transmit data and
have it picked up by python so for this
sensor the positive is connected to five
volts the negative is connected to
ground and the data pin is connected to
any digital pin on the Arduino I have
used pin number four alright guys so now
let's go through the Arduino code this
code along with the python script will
be available in a link down in the
description below so you can have a look
at that but I will run through these
codes very briefly so you guys know
what's going on so I started by
including the library for my DHT sensor
and in the setup I started serial
communication at a baud rate of 9600
in the loop I initialized the DHT sensor
and collected the temperature and
humidity readings and stored them in
their respective variables so this is
the main part of the code now for python
to pick up the data you have to place
the data on the serial port and
place it on the serial port you just
have to simply write the data on to the
serial monitor which is exactly what
I've done here I have the temperature
value followed by an X followed by the
humidity value so the X actually acts as
a delimiter so that later on we can
split the temperature and humidity data
and identify them separately so what
happens is when the data is put onto the
serial port and when Python reads the
data it has to decode it the decoded
value can be stored as a string and this
string has to be split so that we know
what the temperature value is and what
the humidity reading is and we will be
using this X to split it up right now
I'll just plug in my Arduino and go to
the serial monitor
I'm already uploaded the code and you
should see the temperature followed by X
followed by the humidity reading all
right now let's have a quick look at the
Python script so this is the Python
script I'm using three libraries the
serial which is the Py serial library
time and schedule now video is just used
for automation of this code you don't
necessarily need to use it
but I'm used it so I can periodically
collect data values without having to
come back and run this code every time I
want to collect a new data point now you
can find these libraries online just go
to pypi.org and type in the name of the
library for example Py serial and you
would get the library over here you can
install this by running this command on
your command or terminal window and you
can find the documentation as well over
here
similarly you can do the same for the
shitty old library which is for job
scheduling and you can install it by
running this command so I'm using pi
charm but you can use whatever Python
editor you want to use you just go to
your command or terminal window and type
in tip install pyserial and you would
get so I'm already installed it so it
tells me
is already been satisfied but if you
haven't installed it the installation
process should start similarly you can
install the shield library as well and
the installation for that should proceed
right now let's have a quick look at the
code so the code starts all the way at
the bottom over here at this particular
command so it starts machining the
command and I'm said shiny moon every 10
seconds and every 10 seconds I've asked
it to run this particular function which
is the function I've defined up over
here
I've then used while loop and I've told
it to run the pending functions what
happens here is it will just keep
checking to see if the 10 seconds has
expired and once it does expire it will
run this particular function that I am
specified right so let's have a quick
look at this function I'm started by
establishing a serial connection to the
Arduino and I've specified the serial
port and the board wait now if you go
back to your arduino ide go to tools and
you can check your serial port by going
to port so - con 3 right so the serial
port and the baud rate you can then use
this attribute read line to get the
serial data and that's what I've done
and store it in this variable arduino
data the data has to be decoded which is
what's happening in this line and it's
then converted into a string right so
here based on the X we can split the
temperature and humidity readings so
everything on either side of the data X
is split into two separate values and
stored in this variable list values now
the data is in the form in the format of
a string so I've used a for loop to
store the data to change the format of
the data into a floating point number
and append it to this variable list
influence and then I've just printed out
the data I in that variable which is the
temperature and the humidity ready so
you can actually add whatever functions
you want to add over here too
depending on what sort of application
you are trying to develop so you can
call other functions over here to run
whatever code you want to do it after
that just clear your variables and close
the connection with your Arduino right
so that's about it let's go ahead and
run this code all right and the program
started so every 10 seconds it should
get a new reading so that's weird for 10
seconds right so that's the first
reading and again after 10 seconds it
should get a new reading and the second
radio so similarly this will just keep
on going until well until you stop the
code but if we collect data every 10
seconds you can change that over here by
specifying for example 10 minutes or 10
hours days weeks so on and so forth all
right guys so that's all for this video
if you guys liked it don't forget to
give me a thumbs up by clicking the like
button below now if you guys have any
questions or clarifications on the work
we just did involving sending data from
an Arduino to Python please leave a
comment and I will do my best to get
back to you if you want access to the
chords or the circuit diagram that I've
used in this video you will find it in a
link in the description down below if
you haven't done so already please hit
that subscribe button right now thank
you all for watching and I'll see you in
the next video
Cheers
