818|2

83

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子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 # 可选 UTC+8偏移时间(秒),不设置就是UTC0
  • ntptime.host = 'ntp1.aliyun.com' # 可选,ntp服务器,默认是"pool.ntp.org"
  • 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("结束")

功能展示:

自动给定一个时间,当时间到了之后会在串口打印时间到了,并且蜂鸣器报警。

  • 202362421:10:14
  • 闹钟时间未到
  • 202362421:10:14
  • 闹钟时间未到
  • 202362421:10:14
  • 闹钟时间未到
  • 202362421:10:14
  • 闹钟时间未到
  • 202362421:10:14
  • 闹钟时间未到
  • 202362421:10:15
  • 经度是0.0维度0.0
  • 闹钟时间到了,请起床

灯熄灭,蜂鸣器发出声音。

播放器加载失败: 未检测到Flash Player,请到安装
效果

 

总结:

  本次参加得捷电子社区活动,学习了很多,首先是利用python进行嵌入式开发,这在以前是没有的,是一个非常大的收获。同时利用python的库进行学习,有一定的缺陷,不知道底层I2C或者UART驱动是怎么养,我目前这个OLED还没有点亮,是非常大的遗憾,后面想继续解决这个问题。另外,利用python学习,主要考察逻辑,这也是一个好的锻炼。总之,得捷的这个活动非常好,感谢得捷!

内容三:项目总结报告

总代码: final.py (1.9 KB, 下载次数: 0)

 

最新回复

OLED还没有点亮的原因是什么   详情 回复 发表于 2023-6-24 21:38
点赞 关注
 
 

回复
举报

1717

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

OLED还没有点亮的原因是什么

 
 
 

回复

83

帖子

1

TA的资源

一粒金砂(中级)

板凳
 

我上次测试I2C的两个管脚,发现均是低电平,这个不知道怎么解决?sck和scl一直是低电平。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表