Easy Arduino Data Logging and Telemetry
HTML-код
- Опубликовано: 14 июл 2024
- Here's a program that I wrote to make it easy to visualize data from an Arduino or other microcontroller. The microcontroller sends data to the PC as CSV text. The software can visualize that data in the form of line charts, histograms, Fourier transforms and statistical calculations.
The video starts with two demos: first an STM32-based balancing robot that streams out accelerometer, gyro and magnetometer sensor readings. Then a demo with an Arduino that has a CdS light sensor, a potentiometer and a thermistor.
I cover how to write the Arduino sketch, and then show how to use the Telemetry Viewer program.
The rest of the video is an explanation of how the Java source code is laid out. A model-view-controller methodology is used.
To use the program you will need to have Java 8 installed.
Download the program and source code here:
www.farrellf.com/TelemetryViewer/
github.com/farrellf/Telemetry...
Telemetry Viewer is free and open source. If you find it useful and want to "buy me a coffee" that would be awesome: paypal.me/farrellfarahbod
Edit: There's a new version available, check out the updated video:
• GPU-Accelerated Arduin... Наука
You have no idea how helpful this is. I've been searching for a month for this exact video.
Thank you very much for sharing this! I've been looking around for something like this. I tried to do it on my own but didn't succeed. :) You are the best!
Thank you for sharing and taking the time to make the video.
What an amazing soft !
This is exactly what I'm looking for.
Thank you so much for this and for your tutorial !
i signed up just for leaving my like. THANK YOU SO MUCH!!!
This looks like a really great application.
Well done!
This is amazing! Thanks for sharing this with us!
Thanks so much, been looking for something like this for ages!
Thank you so much, I've been looking so long for this explanation
Good design. Few suggestions: 1) Time instead of samples on x axis. Either absolute time of a day, or relative time from the start of measurements. 2) When reading from serial also dump data in parallel to a file (or files) for offline analysis with other programs. 3) Ability to have multiple different time bases on different charts. I.e. one showing only last 60 seconds, and another showing same data from last 6 hours, with decimated data (min/avg/max).
Thanks for this amazing job !! Exactly what I was looking for, even better !
Very impressive - that must have been a lot of work and time to write . Well done Mr upgrdman!
This is amazing!
Thank you so much for sharing and explaining , you earned a huge like!
I wish my java teacher would have implemented something like that to spice up the boring projects he gives us!
Thank you!
Beautiful work mate! Thank you for sharing this!
Awesome Project...! Clearly laid out...! Thank you for this..!
Thank you so much. It was something I was looking for. Your work is commendable.
That's bad ass man. Incredible application!
Very nicely done. I'll give it a try. It gave me an idea on how to think about my data differently. Helpful for us if you make the code bigger to see from our end.
Absolutely EXCELLENT !!! You saved me a lot of time. Thanks a lot.
This is awesome! Thank you for sharing this.
Very useful for a student comparing data transfer speeds!
Thanks you so much !! the world need guy like you
Excellent work, thank you for sharing.
DUDE This is awsome!!!!!!!!!!! Thank you for sharing keep up the good work.....
The Real MVP!!! Well done!
Really great job. Greetings from Perú
dude u just made my day love u man...
Awesome video and program.
Brilliant, and thank you for sharing. Hopefully I can get it working
this made my day!!
great work thumbs up :)
well, i have written my own in python few days back... :-D thanks for sharing video of yours as the inspiration is mind blowing! :-D
Amazing work as usual. Just got exactly, what I need. Bundle of thanks.
Thanks for the kind feedback.
terrific video - thank you very much
We had a strong earthquake in Croatia, and we don't have money for decent seismology equipment. (it is sad because Andrija Mohorovičić was born here..)
Your software will help us to build a web of smaller stations all around the country and track the data. I am planning to upgrade our meteor web (Visnjan Observatory started a project of tracking meteors with web of cameras all around the country years ago). We have 24/7 running servers and cameras on 350 locations. We will now start upgrading those stations to track earthquakes and I will personally make sure that as soon as this project gets going you receive as much money as possible. Thank you very much!
Muy buen código, simple y concreto. mejor no puede estar. Muchas gracias por compartir, Saludos desde Colombia.
Hey John, podrias ayudarme con algo, por favor? Gracias
Just what i need :D, Thank you so much !!
Nice job! Looks like a handy tool. Thx..
Thank you very much for sharing......great tool !!!
This is really cool. Thanks for sharing
Very nice software, thanks!!
This is not easy at all .. But is amazing!, great programming work ! This inspires me ti keep learning !
Thanks for the kind feedback! Good luck with your projects.
Awesome app. Thanks. You cleared my thirst from Arduino's serial plotter. Only daring wish is; it would been nice if there was a way to clear data while app is still up.
you saved me man, thanks a lot
wow bro!! this is amazing .. we can use this technique in model rocket for seeing the performance of the rocket
That is excellent!!! just one thing missing... connect it to a rtc
thank you..
this helps a lot.
thank you for sharing, nice tool!!!
very very thanks for this useful software :)
Great video!
Amazing work and big like from me.
Really good job
Thank you very much sir. I like it.
Hello, I'm happy that you alwas uploading your telemery viewer! Relly good job
Woult to be possible to change the BACKGROUD Color to black?, It will look even better
at night.. thanx
excellent tutorial. thanks for sharing.
i used this for the string if helps anyone
Serial.println(String() + sensor1 + "," + sensor2 + "," + sensor3);
Very amazing, let me share.
Amazing just what i needed. Thank you so much for the great work. Just one thing how do a add distance and time + speed. Using rotary encoder for speed and pot for distance.
Thank you Kind Sir.
very nice my friend tank you
Thank you big teacher .
Fantastic buddy
Thank you So much.
Thanks man. Very Cool!.
Superb tool
Great way to visualise and understand data - I especially like the different ways to scale so that you may be able to look at data over a particular period of time. Saw on the connection preferences that other than COM ports you also support UDP and TCP methods. Do you have any code samples to use these options? Your robot would've used either I figure
Hey, just found the answer in another of your great tutorials. So all good :)
Amazing ..thank you..
hi, thanks for sharing.
can you specify the data that collected from sensor and equation you used to plotting the graph ?
really nice!
Amazing and flexible program. Thanks for sharing it! Do you use the serial-comm library for Java as in one of your previous videos?
Thanks. Yes, I am using the same jSerialComm library as before.
Thank you! :)
I am doing a project based on the transmission of signals through telemetry and your program helps me a lot. By means of the fourier transform, the signal can be visualized in a different way compared to the time domain, for example, or is it also the final form of the information?
thanks a ton
great project
That is just great
Brilliant.
Thank you for sharing with us this amazing program ! i used this program to visualise graphs of an 3 axis accelometer and it works very good but i have a question why fourier transforms is shown up with power(watts) ? (i will be so grateful if you answer my question)
Thanks for your amazing software. I'm using it to monitor my little greenhouse. Just displaying some moisture, temperature and humidity values. Any chance I can modify it to have the time stamp instead of the sample numbers?
you the man
This is crazy awesome , got it going in no time, how do i store the data when hook up to a laptop?(very new to this)
Thank you for such a great tutorial.
Can you tell me how can I do this telemetry using Esp 8266 (wireless one) rather than using com port(wired one)
Thanks
I LOVE IT
Amazing
Hi there, this is very amazing, the effort, the explanation everything, and pretty useful too!
Thank you very much for this.
I have one question, how can i see the saved values?
I am reading battery voltage every 5 minutes from a 48v system, and saving it in an SD card,
and i want it to display the graph of a whole day or so.
Thanks again.
Farrell Farahbod, thank you for your effort and time to code and to make this video. I went through the code and it is amazingly coded. I have some questions if it's not too much to ask. First of all, do you think it is possible to add more codes to include bluetooth device on the communication module?? I do not want to mess the beautifully crafted code. The second is, is it possible to calculate some parameters on the fly for example (velocity, displacement etc from the real time data) received from the comport and plot them?? I know it is possible to calculate on the arduino and send them, but one of the real challenges for wireless communication especially bluetooth is data rate. So is it possible to receive like two or three parameters, calculate some more quantities from the received data and plot in real time??
Hello! Thank you for sharing this with us, it's very interesting. I would like to ask a beginner's question, the sample code with an "analogRead" I understand, but I have difficulty applying it when the signal is digital. A simple example, when I use an HC-SR04 (distance) sensor, I have a "digitalRead" and I also need to calculate the distance.
(distance= int (0.017*time)
I tried different codes, but to no avail.
Thank you
thank you for share it!
Hi. The gyroscope data in CSV file, I mean gy, gy, and gz, can be set each one in columns? Thank you.
Hi, nice project. Is it possible to add Time stamp of computer in X-Axis ?
First :) I cant wait to watch the video
hey it have a saving data mechanism means lke edr(event data recoreder)
Thank you so much for sharing you software and code.
Just a question (from a java noobie), if i want to make a botton/command that "start" and "stop" the data aquisition for the plots so that i can save then, it would be a simple modification in the code?
Thank you again for the work and video.
Just disconnecting and reconnecting to the serial port should do the trick.
Hi , great video . Is it possible to log normal rs232 data ? For example .
Communication is based on standard RS232 at 19200,n,8,1
.Each data frame consits of 5 bytes
typdef struct
{
ubyte channel;
ubyte idChar;
ubyte valueH;
ubyte valueL;
ubyte checksum;
}
Ive all the needed data .
Thanks
legend
hello. is it possible to upload a jar executable file
to an Nextion HMI?
Actually I am sending Frequency and voltage data of my sensor on UART using ARM cortex M7 controller. Is it possible to plot voltage according to my frequency data using telemetry view software. if yes then how i can ??
how I adjust size of windows, because in small monitor don't show all information. Great work
can u develop fishfinder by using ultrasonic sensor datapresentation with netbeans
Is it possible to change the code so it will receive from the serial port String values such as the name of a team or some status sent from an arduino in csv and making some filter to save that string values on some database without adding them in the graphs because they will make the program crash?
I cannot open the file. Could you help me? Maybe my laptop requirements some settings for opening java file.
How did u sperate the csv data from arduino?
I need to find a way to capture the oscillation point of a moving object.
To visualize this, Picture a rail with a distance sensor at each end. The target would oscillate between the 2 end points with the center being 180. To the left the max measurement would be 270 and max 90 to the right. When the target moves to the right then switches direction I want to capture the farthest measurement lowest number serial data to trigger a device when the target is at a certain point on the left. Then I want to capture the oscillation point highest number on the left to in turn trigger the device at a certain point on the right. Due to changing loads on the device being triggered the oscillation points will change randomly.
Can this be done?
Below is a rough draft of comments without any code.
//Arduino uno
// vl53l0x sensors
// distance sensor1 value 181 to 270 degrees
//distance sensor2 value 179 to 90 degrees
//1 stepper Nemo 17 or 23
//Stepper full rotation 0-359 steps (clock wise count 0 north)
//Home 180, max rotation from 270 to 90 degrees.
// orientations. 270 right, 90 left.
//sensors placed at the ends of a rail with oscillating target.
//if sensor1 value oscillates set sensor1 to highvalue of oscillation
Oscillation at 172-173-172 would set value at 173
// if sensor2 lowalue is = 178
// run stepper to 183 when sensor1 reaches 182 //1degrees
// if sensor2 lowalue is =177
// run stepper to 184 when sensor1 reaches 183
// if sensor2 lowalue is =176
// run stepper to 185 when sensor1 reaches 184
// if sensor2 lowalue is = 175
// run stepper to 186 when sensor1 reaches 185
// if sensor2 lowalue is =174
// run stepper to 187 when sensor1 reaches 186
// if sensor2 lowalue is =173
// run stepper to 188 when sensor1 reaches 187
// if sensor2 lowalue is = 172
// run stepper to 189 when sensor1 reaches 188
// if sensor2 lowalue is =171
// run stepper to 189 when sensor1 reaches 188
//Etc....... to lowvalue of 90
//use < at end max run to 270
//If sensor 2 value oscillates set sensor2 to lowvalue of oscillation
Ocilation at 186 - 185 - 186 would set value at 185
// if sensor1 highvalue is 182
// run stepper to 177 when sensor2 reaches 178
// if sensor1 highvalue is 183
// run stepper to 176 when sensor2 reaches 177
// if sensor1 highvalue is 184
// run stepper to 175 when sensor2 reaches 176
// if sensor1 highvalue is 185
// run stepper to 174 when sensor2 reaches 175
//Etc........to highvalue of 270.......
//use > at end max run to 90.
Дякую, дуже допомогло
З мене лайк і підписка на канал )