ag真人试玩平台-ag真人网站

 
 立即注册
查看: 448|回复: 2

[esp8266-ag真人试玩平台

[复制链接]
发表于 7 天前 | 显示全部楼层 |
项目目标
esp8266设备a读取mpu6050传感器数据,通过mqtt发送数据;


编写代码

main.py
  1. import network
  2. import time
  3. import json
  4. from umqtt.simple import mqttclient
  5. from machine import i2c
  6. from machine import pin
  7. import mpu6050

  8. device_id = "esp0007"
  9. wifi_ssid='fast_20cc'
  10. wifi_password='409409409'
  11. mqtt_serverip='192.168.1.113'
  12. mqtt_serverport=1883
  13. mqtt_clientid=device_id
  14. mqtt_publishtopic=b'espiot-control'

  15. message_template = {}
  16. message_template['source_device'] = mqtt_clientid
  17. message_template['target_device'] = 'server'
  18. message_template['msg_type'] = 'reportrotateencoder'

  19. def connectionwifi(ssid, password):
  20.   wlan = network.wlan(network.sta_if)
  21.   wlan.active(true)
  22.   wlan.connect(ssid, password)
  23.   while true:
  24.     if not wlan.isconnected():
  25.             print ("connecting...")
  26.     else:
  27.       print('connected to network')
  28.       break
  29.     time.sleep(1)

  30. if __name__== '__main__':
  31.   connectionwifi(wifi_ssid,wifi_password)
  32.   
  33.   client = mqttclient(mqtt_clientid,mqtt_serverip,mqtt_serverport)
  34.   client.connect()
  35.   
  36.   i2c = i2c(scl=pin(5), sda=pin(4))       #initializing the i2c method for esp8266
  37.   mpu= mpu6050.accel(i2c)

  38.   while true:
  39.       mpu_data = mpu.get_values()
  40.       print(mpu_data)
  41.       message_template['mpu'] = mpu_data
  42.       client.publish(mqtt_publishtopic,json.dumps(message_template))
  43.       time.sleep_ms(100)
复制代码

  1. import machine

  2. class accel():
  3.     def __init__(self, i2c, addr=0x68):
  4.         self.iic = i2c
  5.         self.addr = addr
  6.         self.iic.start()
  7.         self.iic.writeto(self.addr, bytearray([107, 0]))
  8.         self.iic.stop()

  9.     def get_raw_values(self):
  10.         self.iic.start()
  11.         a = self.iic.readfrom_mem(self.addr, 0x3b, 14)
  12.         self.iic.stop()
  13.         return a

  14.     def get_ints(self):
  15.         b = self.get_raw_values()
  16.         c = []
  17.         for i in b:
  18.             c.append(i)
  19.         return c

  20.     def bytes_toint(self, firstbyte, secondbyte):
  21.         if not firstbyte & 0x80:
  22.             return firstbyte << 8 | secondbyte
  23.         return - (((firstbyte ^ 255) << 8) | (secondbyte ^ 255) 1)

  24.     def get_values(self):
  25.         raw_ints = self.get_raw_values()
  26.         vals = {}
  27.         vals["acx"] = self.bytes_toint(raw_ints[0], raw_ints[1])
  28.         vals["acy"] = self.bytes_toint(raw_ints[2], raw_ints[3])
  29.         vals["acz"] = self.bytes_toint(raw_ints[4], raw_ints[5])
  30.         vals["tmp"] = self.bytes_toint(raw_ints[6], raw_ints[7]) / 340.00 36.53
  31.         vals["gyx"] = self.bytes_toint(raw_ints[8], raw_ints[9])
  32.         vals["gyy"] = self.bytes_toint(raw_ints[10], raw_ints[11])
  33.         vals["gyz"] = self.bytes_toint(raw_ints[12], raw_ints[13])
  34.         return vals  # returned in range of int16
  35.         # -32768 to 32767

  36.     def val_test(self):  # only for testing! also, fast reading sometimes crashes iic
  37.         from time import sleep
  38.         while 1:
  39.             print(self.get_values())
  40.             sleep(0.05)


复制代码
项目截图



mpu6050上报的数据

发表于 6 天前 | 显示全部楼层
以前在立创撸过几个,还没用
 楼主| 发表于 5 天前 | 显示全部楼层
大意了,是三轴加速度和三轴角速度。
直接读值是没有意义的,需要对值进行积分并清理偏移(误差)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

app||小黑屋|关于ag真人试玩平台|联系ag真人网站|法律条款|ag真人试玩平台-ag真人网站

gmt 8, 2023-9-12 11:41 , processed in 0.234000 second(s), 14 queries , redis on.

powered by

© 2006-2023 smzj.net

返回列表
网站地图