【得捷电子Follow me第1期】+ GPS智能手杖定位器
[复制链接]
内容一:3-5分钟短视频
0611
内容二: 项目总结报告
1. 项目描述
GPS智能手杖定位器是一款智能化辅助设备,它可以通过GPS技术获取当前位置信息,方便用户了解设备的活动范围和行踪,同时也可以通过设置安全围栏,一旦设备离开围栏区域,会自动向用户发送警报信息,提高用户的安全保障。
除了实时定位和安全围栏功能外,GPS智能手杖定位器还具备多项实用功能,如电子时钟、温度预警、SOS求救、低功耗模式等。其中,电子时钟可以显示当前时间,温度预警可以在温度超出设定阈值时发出蜂鸣器警报,SOS求救可以通过设备上的SOS按钮向用户发送求救信息,并提供当前位置信息,低功耗模式可以通过降低功耗延长设备的使用时间,节约能源。
在实现这些功能的过程中,我们需要利用PICO相应模块,实现带有网络、显示、声音功能的创意制作,可以增加其它传感器、外设。首先,需要通过网络获取时间,ADC获取温度,配置PWM控制蜂鸣器,UART获取GPS信息,全都打印到屏幕上,这样用户可以一目了然地看到设备的状态信息。其次,在一个while循环里判断是否超出温度、GPS设定的阈值,超出则报警,实现安全围栏和温度预警等功能。
在扩展这个项目时,可以考虑增加历史轨迹功能,让用户可以查看设备过去一段时间内的运动轨迹,便于了解设备的活动范围和行踪。同时,也可以进一步优化SOS求救功能,可以通过联网实现将位置信息上传到云端服务器,用户可以在手机或电脑上查看设备所在位置,提高用户的安全保障。
此外,为了提高用户的使用体验,可以考虑增加语音播报功能,让设备可以通过声音提示用户当前的状态,如时间、温度、位置等。同时,也可以增加蓝牙功能,将设备与手机或其他智能设备进行连接,方便用户实现更多的操作和功能。
此外,还可以考虑增加生物识别功能,如指纹识别、面部识别等,提高设备的安全性和私密性。另外,可以增加心率监测、步数计数等健康监测功能,让设备可以成为用户健康生活的助手。
总之,GPS智能手杖定位器是一款实用性强的智能化辅助设备,可以为用户提供多种功能,如实时定位、安全围栏、电子时钟、温度预警、SOS求救、低功耗模式等,同时也可以通过扩展功能,如历史轨迹和云端上传等,进一步提升用户的使用体验和安全保障。未来,随着技术的不断进步,GPS智能手杖定位器也将不断升级和完善,为用户带来更加便利和舒适的使用体验。
2. 各功能对应的主要代码片段及说明
配置联网:
#配置联网
ssid = '汤圆和奶茶'
password = 'tangyuan888'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid,password)
#尝试联网
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print("等待连接")
time.sleep(1)
#判断联网状态
if wlan.status() != 3:
raise RuntimeError("联网失败")
else:
print("网络已连接")
status = wlan.ifconfig()
print("ip = " + status[0])
配置各种外设
#配置OLED屏幕
#Grove Shield For Pi Pico I2C1
i2c = I2C(1,sda=Pin(6),scl=Pin(7),freq=400000)
oled = SSD1306_I2C(128, 64, i2c)
#配置温度传感器
sensor_temp = machine.ADC(4)
conversion_factor = 3.3/(65535)
#配置蜂鸣器
# Construct PWM object, with BEEP on Pin(16).
pwm = PWM(Pin(16))
# Set the PWM frequency.
pwm.freq(1000)
#配置GPS
#Grove Shield For Pi Pico UART0
uart0 = UART(0, baudrate=9600, tx = Pin(0), rx = Pin(1))
#print(gps_module)
time.sleep(0.1)
rxData = bytes()
my_gps = MicropyGPS()
实时显示温度
#显示实时温度
read = sensor_temp.read_u16() * conversion_factor
temp = 27 - (read - 0.706) / 0.001721
print("温度:{:.1f}".format(temp))
oled.fill(0)
oled.text(f'temp is {temp:.1f}', 0, 12, 1)
#oled.show()
显示实时时间
#显示实时时间
timezone=8
rtc = RTC()
now = time.time()
now += timezone * 3600
t = time.localtime(now)
year, month, day, hour, minute, second, *_ = t
time_str = f"{year}-{month:02d}-{day:02d} {hour:02d}:{minute:02d}:{second:02d}"
print("时间:", time_str)
oled.text(time_str, 0, 0, 1)
#oled.show()
温度报警
#温度超出30度报警
if temp>32:
pwm.duty_u16(1000)
time.sleep(1)
pwm.duty_u16(0)
显示GPS模块并实现安全围栏
if uart0.any():
stat = my_gps.update(uart0.read(1).decode('ascii')) # Note the conversion to to chr, UART outputs ints normally
if stat:
#显示GPS信息
stat = my_gps.update(uart0.read(1).decode("ascii"))
# Note the conversion to to chr, UART outputs ints normally
print("纬度:", my_gps.latitude_string())
print("经度:", my_gps.longitude_string())
print(
"Speed:",
my_gps.speed_string("kph"),
"or",
my_gps.speed_string("mph"),
"or",
my_gps.speed_string("knot"),
)
lat_disp = my_gps.latitude_string()
oled.text(lat_disp,0,24,1)
lon_disp = my_gps.longitude_string()
oled.text(lon_disp,0,36,1)
lon_disp = my_gps.speed_string()
oled.text(lon_disp,0,48,1)
oled.show()
#安全围栏
if my_gps.latitude_string()>'30' and my_gps.longitude_string()>'123':
pwm.duty_u16(1000)
time.sleep(1)
pwm.duty_u16(0)
3. 功能展示及说明
-
实时定位:可以通过 GPS 技术获取当前位置
-
安全围栏:可以设置安全围栏,一旦设备离开围栏区域,会自动向用户发送警报信息。(场地原因无法拍照实现)
-
电子时钟:显示屏实时显示当前时间。
-
温度预警:超出温度蜂鸣器将会报警。
4. 对本活动的心得体会
很高兴参加这样一场面向电子爱好者的活动,通过购买指定的开发板和器件,参与者可以学习到如何使用这些设备实现各种功能,同时还可以获得报销和奖励。这种方式不仅提高了参与者的DIY技能,也推广了这些开发板和器件的使用。希望未来还能有更多这样的活动,让更多人加入到电子爱好者的行列中。
内容三:可编译下载的代码
|