【得捷电子Follow me第1期】+ “gps时区闹钟”
[复制链接]
本帖最后由 swzswz 于 2023-6-24 21:21 编辑
内容一:视频简介
播放器加载失败: 未检测到Flash Player,请到 安装
项目
内容二:项目总结报告
项目总体思路:
综合考虑板子所带的模块,其有GPS定位模块,可以获取位置信息;有蜂鸣器模块,可以获取进行报警;有OLED模块,可以进行文字显示;另外板载wifi模块,通过网络可以获取时间,板载LED,可以作为指示灯。综上考虑,本项目做一个在不同地区的闹钟。思路为:由于不同地区的区分是按照离地位置来进行区分的,因此,首先必须获得地区的位置,通过gps模块后去经纬度,再转换为大致的时区;网络这块,由于时区确定,首先获取wifi,通过wifi利用网络功能得到时间,按照预定的时间对比,当时间到达就进行闹钟播报,蜂鸣器和LED按照指令发出声音和灯的指示。
GPS模块:
GPS是获取位置信息的,起主要返回参数为经度和纬度,根据地理知识,经度和纬度可以判断大致时区。我们根据时区再进行时间转换。GPS是采用串口通讯的,需要设置串口引脚,例如Tx引脚和Rx引脚,串口的波特率,其次经度和维度按照字符串读取,利用按行读取获取经纬度。
网络模块:
网络模块首先是连接wifi,wifi首先设置好wifi热点名称和wifi密码,然后开启判断,按照扫描参数判断wifi是否连接成功,没有连接成功继续连接,直到成功为止。连接成功后,需开启服务器和偏移时间,一般以UTC0为标准时间,其时区按照偏移来进行显示,最后利用RTC模块获取时间,铜鼓截取字符串位置提取时间的小时,分钟,秒等参数,然用字符串连接蕲艾,作为判断参数。
蜂鸣器模块:
蜂鸣器利用pwm控制,其不同的pwm形状影响其整体电流大小,故蜂鸣器能发出不同的声音,我们采用两个循环模块控制声音的大小。
led模块:
通过引脚,控制LED的电平大小,控制灯的亮灭。
总体逻辑:
GPS位置,确定时区---网络模块获取时间,根据时区转换时间显示---给定一个时间--判断得到的时间是否与给定的时间相等---是,LED点亮,蜂鸣器发出声音
GPS模块:
- com = UART(0,baudrate=9600, tx=Pin(0), rx=Pin(1))
- my_gps = MicropyGPS(8)
- my_gps.local_offset
-
- time.sleep(1)
-
- def gps():
- cc = com.readline()
- for x in cc:
- my_gps.update(chr(x))
- gps_values = str(my_gps.latitude[0] + (my_gps.latitude[1] / 60)) + ',' + str(my_gps.longitude[0] + (my_gps.longitude[1] / 60))
- gp_va = gps_values.split(",")
- return gp_va[0], gp_va[1]
网络模块:
- wlan = network.WLAN(network.STA_IF)
- wlan.active(True)
- wlan.connect("swz","swz273220swz")
-
- while not wlan.isconnected() and wlan.status() >= 0:
- print("Waiting to connect:")
- time.sleep(1)
-
- print(wlan.ifconfig())
-
- if wlan.status() != 3:
- raise RuntimeError('network connection failed')
- else:
- print('connected')
- status = wlan.ifconfig()
- print( 'ip = ' + status[0] )
- def sync_ntp():
- ntptime.NTP_DELTA = 3155644800
- ntptime.host = 'ntp1.aliyun.com'
- ntptime.settime()
LED灯:
蜂鸣器:
主程序:
- if __name__ == '__main__':
- time = "14:21:56"
- print(time)
- for i in range(10000000):
- rtc = RTC()
- while time == str(rtc.datetime()[4])+":"+str(rtc.datetime()[5])+":"+str(rtc.datetime()[6]):
- Led.value(1)
- beep.on()
- gps = gps()
- print("经度是"+str(gps[0])+"维度"+str(gps[0]))
- print("闹钟时间到了,请起床")
- break
- print("闹钟时间未到")
- print("结束")
-
功能展示:
自动给定一个时间,当时间到了之后会在串口打印时间到了,并且蜂鸣器报警。
- 2023年6月24日21:10:14
- 闹钟时间未到
- 2023年6月24日21:10:14
- 闹钟时间未到
- 2023年6月24日21:10:14
- 闹钟时间未到
- 2023年6月24日21:10:14
- 闹钟时间未到
- 2023年6月24日21:10:14
- 闹钟时间未到
- 2023年6月24日21:10:15
- 经度是0.0维度0.0
- 闹钟时间到了,请起床
灯熄灭,蜂鸣器发出声音。
播放器加载失败: 未检测到Flash Player,请到 安装
效果
总结:
本次参加得捷电子社区活动,学习了很多,首先是利用python进行嵌入式开发,这在以前是没有的,是一个非常大的收获。同时利用python的库进行学习,有一定的缺陷,不知道底层I2C或者UART驱动是怎么养,我目前这个OLED还没有点亮,是非常大的遗憾,后面想继续解决这个问题。另外,利用python学习,主要考察逻辑,这也是一个好的锻炼。总之,得捷的这个活动非常好,感谢得捷!
内容三:项目总结报告
|