Advertisement
safwan092

Untitled

Apr 23rd, 2024
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.57 KB | None | 0 0
  1. import tkinter as tk
  2. import numpy as np
  3. #import random
  4. import time
  5. import datetime
  6. import threading
  7. #import Adafruit_DHT
  8. import serial
  9. import string
  10. import pynmea2
  11. import RPi.GPIO as GPIO
  12. import smbus
  13. from time import sleep
  14.  
  15. # Setup GPIO pins
  16. GPIO.setmode(GPIO.BCM)
  17. GPIO.setwarnings(False)
  18. # Set the servo motor pin as output pin
  19. GPIO.setup(4,GPIO.OUT)
  20.  
  21. pwm = GPIO.PWM(4,50)
  22. pwm.start(0)
  23.  
  24. lat=0
  25. newdata="0l"
  26. #pin = 4
  27. #sensor = Adafruit_DHT.DHT22
  28.  
  29.  
  30. #some MPU6050 Registers and their Address
  31. PWR_MGMT_1 = 0x6B
  32. SMPLRT_DIV = 0x19
  33. CONFIG = 0x1A
  34. GYRO_CONFIG = 0x1B
  35. INT_ENABLE = 0x38
  36. ACCEL_XOUT = 0x3B
  37. ACCEL_YOUT = 0x3D
  38. ACCEL_ZOUT = 0x3F
  39. GYRO_XOUT = 0x43
  40. GYRO_YOUT = 0x45
  41. GYRO_ZOUT = 0x47
  42.  
  43.  
  44. bus = smbus.SMBus(1) # or bus = smbus.SMBus(0) for older version boards
  45. Device_Address = 0x68 # MPU6050 device address
  46. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  47. def angle(Angle):
  48. duty = Angle / 18 + 2
  49. GPIO.output(4,True)
  50. pwm.ChangeDutyCycle(duty)
  51. # sleep(1)
  52. GPIO.output(4,False)
  53. # pwm.ChangeDutyCycle(0)
  54.  
  55. def setAngle():
  56. angle(90)
  57.  
  58. def MPU_Init():
  59.  
  60. #write to sample rate register
  61. bus.write_byte_data(Device_Address, SMPLRT_DIV, 7)
  62.  
  63. #Write to power management register
  64. bus.write_byte_data(Device_Address, PWR_MGMT_1, 1)
  65.  
  66. #Write to Configuration register
  67. bus.write_byte_data(Device_Address, CONFIG, 0)
  68.  
  69. #Write to Gyro configuration register
  70. bus.write_byte_data(Device_Address, GYRO_CONFIG, 24)
  71.  
  72. #Write to interrupt enable register
  73. bus.write_byte_data(Device_Address, INT_ENABLE, 1)
  74.  
  75. def read_raw_data(addr):
  76. #Accelero and Gyro value are 16-bit
  77. high = bus.read_byte_data(Device_Address, addr)
  78. low = bus.read_byte_data(Device_Address, addr+1)
  79.  
  80. #concatenate higher and lower value
  81. value = ((high << 8) | low)
  82.  
  83. #to get signed value from mpu6050
  84. if(value > 32768):
  85. value = value - 65536
  86. return value
  87.  
  88. MPU_Init()
  89.  
  90. def tick():
  91. #lat=0
  92. #newdata="0l"
  93. time2=time.strftime('%H:%M:%S')
  94. clock.config(text=time2)
  95. clock.after(200,tick)
  96. #------------------------------------------------------
  97. #Read Accelerometer raw value
  98. acc_x = read_raw_data(ACCEL_XOUT)
  99. acc_y = read_raw_data(ACCEL_YOUT)
  100. acc_z = read_raw_data(ACCEL_ZOUT)
  101.  
  102. #Read Gyroscope raw value
  103. gyro_x = read_raw_data(GYRO_XOUT)
  104. gyro_y = read_raw_data(GYRO_YOUT)
  105. gyro_z = read_raw_data(GYRO_ZOUT)
  106.  
  107. Ax = acc_x/16384.0
  108. Ay = acc_y/16384.0
  109. Az = acc_z/16384.0
  110.  
  111. Gx = gyro_x/131.0
  112. Gy = gyro_y/131.0
  113. Gz = gyro_z/131.0
  114.  
  115. # Uncomment below line to see the Accelerometer and Gyroscope values
  116. # 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)
  117.  
  118. in_min = 1
  119. in_max = -1
  120. out_min = 0
  121. out_max = 180
  122.  
  123. setAngle() # Use this function to set the servo motor point
  124.  
  125. # Convert accelerometer Y axis values from 0 to 180
  126. value = (Ay - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
  127. value = int(value)
  128. print(value)
  129. l3_display.config(text = value)#value)
  130. #------------------------------------------------------
  131. #gps = "Latitude=" + str(lat) + "and Longitude=" + str(lng)
  132. #print(gps)
  133.  
  134. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  135. def get_data():
  136.  
  137. threading.Timer(5, get_data).start()
  138.  
  139. #------------------------------------------------------
  140. lat=0
  141. lng=0
  142. port="/dev/ttyAMA0"
  143. ser=serial.Serial(port, baudrate=9600, timeout=0.5)
  144. dataout = pynmea2.NMEAStreamReader()
  145. newdata=ser.readline()
  146. print(newdata)
  147. if newdata[0:6] == "$GPRMC":
  148. newmsg=pynmea2.parse(newdata)
  149. lat=newmsg.latitude
  150. lng=newmsg.longitude
  151. l1_display.config(text =lat)
  152. l2_display.config(text = lng)
  153.  
  154.  
  155. #humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
  156. #l_display.config(text = newdata)
  157. #if humidity is not None and temperature is not None:
  158. # print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
  159. # l_display.config(text = temperature)
  160. #else:
  161. # print('Failed to get reading. Try again!')
  162.  
  163.  
  164. #return temperature
  165.  
  166.  
  167.  
  168. mainwindow = tk.Tk()
  169. mainwindow.geometry('640x340')
  170. mainwindow.title("Sensor Data Live Feed ")
  171.  
  172. clock=tk.Label(mainwindow,font=("Arial",30), bg='green',fg="white")
  173. clock.grid(row=0, column=0, padx=10, pady=10, sticky="nsew")
  174.  
  175. l_m=tk.Label(mainwindow,text="Sensor Data ",font=("Arial",30),fg="Black")
  176. l_m.grid(row=0,column=1, padx=10, pady=10, sticky="nsew")
  177.  
  178. l1_t=tk.Label(mainwindow, text="Latitude: ",font=("Arial",25))
  179. l1_t.grid(row=1,column=0, padx=10, pady=10, sticky="nsew")
  180.  
  181. l1_display=tk.Label(mainwindow,font=("Arial",25),fg="red")
  182. l1_display.grid(row=1,column=1, padx=10, pady=10, sticky="nsew")
  183.  
  184. l2_t=tk.Label(mainwindow, text="Longitude:",font=("Arial",25))
  185. l2_t.grid(row=2,column=0, padx=10, pady=10, sticky="nsew")
  186.  
  187. l2_display=tk.Label(mainwindow,font=("Arial",25),fg="red")
  188. l2_display.grid(row=2,column=1, padx=10, pady=10, sticky="nsew")
  189.  
  190. l3_t=tk.Label(mainwindow, text="Angle:",font=("Arial",25))
  191. l3_t.grid(row=3,column=0, padx=10, pady=10, sticky="nsew")
  192.  
  193. l3_display=tk.Label(mainwindow,font=("Arial",25),fg="red")
  194. l3_display.grid(row=3,column=1, padx=10, pady=10, sticky="nsew")
  195.  
  196.  
  197. tick()
  198. get_data()
  199.  
  200. mainwindow.mainloop()
  201.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement