Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- import numpy as np
- #import random
- import time
- import datetime
- import threading
- #import Adafruit_DHT
- import serial
- import string
- import pynmea2
- import RPi.GPIO as GPIO
- import smbus
- from time import sleep
- # Setup GPIO pins
- GPIO.setmode(GPIO.BCM)
- GPIO.setwarnings(False)
- # Set the servo motor pin as output pin
- GPIO.setup(4,GPIO.OUT)
- pwm = GPIO.PWM(4,50)
- pwm.start(0)
- lat=0
- newdata="0l"
- #pin = 4
- #sensor = Adafruit_DHT.DHT22
- #some MPU6050 Registers and their Address
- PWR_MGMT_1 = 0x6B
- SMPLRT_DIV = 0x19
- CONFIG = 0x1A
- GYRO_CONFIG = 0x1B
- INT_ENABLE = 0x38
- ACCEL_XOUT = 0x3B
- ACCEL_YOUT = 0x3D
- ACCEL_ZOUT = 0x3F
- GYRO_XOUT = 0x43
- GYRO_YOUT = 0x45
- GYRO_ZOUT = 0x47
- bus = smbus.SMBus(1) # or bus = smbus.SMBus(0) for older version boards
- Device_Address = 0x68 # MPU6050 device address
- #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- def angle(Angle):
- duty = Angle / 18 + 2
- GPIO.output(4,True)
- pwm.ChangeDutyCycle(duty)
- # sleep(1)
- GPIO.output(4,False)
- # pwm.ChangeDutyCycle(0)
- def setAngle():
- angle(90)
- def MPU_Init():
- #write to sample rate register
- bus.write_byte_data(Device_Address, SMPLRT_DIV, 7)
- #Write to power management register
- bus.write_byte_data(Device_Address, PWR_MGMT_1, 1)
- #Write to Configuration register
- bus.write_byte_data(Device_Address, CONFIG, 0)
- #Write to Gyro configuration register
- bus.write_byte_data(Device_Address, GYRO_CONFIG, 24)
- #Write to interrupt enable register
- bus.write_byte_data(Device_Address, INT_ENABLE, 1)
- def read_raw_data(addr):
- #Accelero and Gyro value are 16-bit
- high = bus.read_byte_data(Device_Address, addr)
- low = bus.read_byte_data(Device_Address, addr+1)
- #concatenate higher and lower value
- value = ((high << 8) | low)
- #to get signed value from mpu6050
- if(value > 32768):
- value = value - 65536
- return value
- MPU_Init()
- def tick():
- #lat=0
- #newdata="0l"
- time2=time.strftime('%H:%M:%S')
- clock.config(text=time2)
- clock.after(200,tick)
- #------------------------------------------------------
- #Read Accelerometer raw value
- acc_x = read_raw_data(ACCEL_XOUT)
- acc_y = read_raw_data(ACCEL_YOUT)
- acc_z = read_raw_data(ACCEL_ZOUT)
- #Read Gyroscope raw value
- gyro_x = read_raw_data(GYRO_XOUT)
- gyro_y = read_raw_data(GYRO_YOUT)
- gyro_z = read_raw_data(GYRO_ZOUT)
- Ax = acc_x/16384.0
- Ay = acc_y/16384.0
- Az = acc_z/16384.0
- Gx = gyro_x/131.0
- Gy = gyro_y/131.0
- Gz = gyro_z/131.0
- # Uncomment below line to see the Accelerometer and Gyroscope values
- # print ("Gx=%.2f" %Gx, u'\u00b0'+ "/s", "\tGy=%.2f" %Gy, u'\u00b0'+ "/s", "\tGz=%.2f" %Gz, u'\u00b0'+ "/s", "\tAx=%.2f g" %Ax, "\tAy=%.2f g" %Ay, "\tAz=%.2f g" %Az)
- in_min = 1
- in_max = -1
- out_min = 0
- out_max = 180
- setAngle() # Use this function to set the servo motor point
- # Convert accelerometer Y axis values from 0 to 180
- value = (Ay - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
- value = int(value)
- print(value)
- l3_display.config(text = value)#value)
- #------------------------------------------------------
- #gps = "Latitude=" + str(lat) + "and Longitude=" + str(lng)
- #print(gps)
- #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- def get_data():
- threading.Timer(5, get_data).start()
- #------------------------------------------------------
- lat=0
- lng=0
- port="/dev/ttyAMA0"
- ser=serial.Serial(port, baudrate=9600, timeout=0.5)
- dataout = pynmea2.NMEAStreamReader()
- newdata=ser.readline()
- print(newdata)
- if newdata[0:6] == "$GPRMC":
- newmsg=pynmea2.parse(newdata)
- lat=newmsg.latitude
- lng=newmsg.longitude
- l1_display.config(text =lat)
- l2_display.config(text = lng)
- #humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
- #l_display.config(text = newdata)
- #if humidity is not None and temperature is not None:
- # print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
- # l_display.config(text = temperature)
- #else:
- # print('Failed to get reading. Try again!')
- #return temperature
- mainwindow = tk.Tk()
- mainwindow.geometry('640x340')
- mainwindow.title("Sensor Data Live Feed ")
- clock=tk.Label(mainwindow,font=("Arial",30), bg='green',fg="white")
- clock.grid(row=0, column=0, padx=10, pady=10, sticky="nsew")
- l_m=tk.Label(mainwindow,text="Sensor Data ",font=("Arial",30),fg="Black")
- l_m.grid(row=0,column=1, padx=10, pady=10, sticky="nsew")
- l1_t=tk.Label(mainwindow, text="Latitude: ",font=("Arial",25))
- l1_t.grid(row=1,column=0, padx=10, pady=10, sticky="nsew")
- l1_display=tk.Label(mainwindow,font=("Arial",25),fg="red")
- l1_display.grid(row=1,column=1, padx=10, pady=10, sticky="nsew")
- l2_t=tk.Label(mainwindow, text="Longitude:",font=("Arial",25))
- l2_t.grid(row=2,column=0, padx=10, pady=10, sticky="nsew")
- l2_display=tk.Label(mainwindow,font=("Arial",25),fg="red")
- l2_display.grid(row=2,column=1, padx=10, pady=10, sticky="nsew")
- l3_t=tk.Label(mainwindow, text="Angle:",font=("Arial",25))
- l3_t.grid(row=3,column=0, padx=10, pady=10, sticky="nsew")
- l3_display=tk.Label(mainwindow,font=("Arial",25),fg="red")
- l3_display.grid(row=3,column=1, padx=10, pady=10, sticky="nsew")
- tick()
- get_data()
- mainwindow.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement