Fork me on GitHub

乘风破浪

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/Freshman/
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/Freshman/homework/11202
这个作业的目标 树莓派+Python进行人机交互

设计思路

在形形色色的社会生活中,我们每天不知道要面对的是什么,当危险悄悄来临时,能有一样自救物品在身边,多一份机会。我想到的是利用树莓派与Python结合进行定位和呼叫,紧急情况下可以触发按钮,将自己的位置共享或者感到危险时,可以提前告知亲人等,提高在外生活的安全性。
查阅网站https://shumeipai.nxez.com/
(树莓派实验室里有许多创意,也从中获取许多灵感,有想到一个是做一个心情收纳站,把喜怒哀乐都储藏起来,再结合语音助手。另一个思路是做一个红外线体温感应,帮助盲人避开障碍物。后来都被我pass掉了,最后想到可以应用到实际生活中的产品。)
这是初略做的一个脑图

学习报告

  • 材料:树莓派,GPS+BD模块,GPS有源天线,杜邦线,需要安装移动app
  • 步骤
    1. 连接各模块
    2.修改串口设置
    3.获取串口数据
  • 核心代码
import serial     
import pynmea2  
import time
ser = serial.Serial("/dev/ttyAMA0",9600)
while True:
    line = ser.readline()
    if line.startswith('$GNRMC'):
        rmc = pynmea2.parse(line)
        prin["tLatitude:  ", float(rmc.lat)/100]
        print[ "Longitude: ", float(rmc.lon)/100]
        break   #读取位置信息
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)#使用Broadcom SOC通道编号设置GPIO
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)#设置为上拉(常闭位置) #设置InstaPush变量
appID = ""# 将其设置为Instapush中的应用程序ID
appSecret = ""#将此设置为Instapush的应用程序机密
pushEvent = "DoorAlert"# 将此设置保留为DoorAlert,除非您在Instapush中将事件命名为不同的名称
pushMessage = "Door Opened!"#将此设置为您希望推送消息显示的内容
buffer = StringIO()# 使用StringIO从pushapi调用捕获响应
c = pycurl.Curl()# 使用Curl发布到Instapush API
c.setopt(c.URL, 'https://api.instapush.im/v1/post')# 设置Instapush API URL
c.setopt(c.HTTPHEADER, ['x-instapush-appid: ' + appID,
'x-instapush-appsecret: ' + appSecret,
'Content-Type: application/json'])# 为身份验证变量和内容类型设置自定义
json_fields = {}# 为要发布到Instapush的JSON数据创建字典结构
json_fields['event']=pushEvent
json_fields['trackers'] = {}
json_fields['trackers']['message']=pushMessage
postfields = json.dumps(json_fields)# 设置JSON值
c.setopt(c.POSTFIELDS, postfields)# 确保用post发送JSON
c.setopt(c.WRITEFUNCTION, buffer.write)# 设置这个以便我们可以在缓冲区中捕获响应
c.setopt(c.VERBOSE, True)# 取消注释以查看发送的帖子
if True:# 设置一个不确定的循环,寻找打开/关闭的门
    print("Door Opened!\n")# 检测到门打开
c.perform()# 在门打开时,发送推送请求
body= buffer.getvalue()# 从服务器捕获响应
print(body)# 打印响应
buffer.seek(0)#重置缓冲区
print("Door Closed!\n")# 检测到门关闭
input()

Ps:两条代码分别是位置定位和手机发送通知,至于如何连接,还在尝试中。两条代码均由其它网站复刻过来的,然后经Python运行进行些微改变。

学习网站

1.这个网站是关于树莓派3b连接GPS+BD模块并用python获取数据,在这里,获得读取位置信息。
https://blog.csdn.net/qq_32384313/article/details/77745386
2.接着,我在树莓派实验室中找到如何用树莓派给智能手机发送推送通知,并获取代码。
https://shumeipai.nxez.com/2014/12/14/send-push-notifications-from-raspberry-pi.html
3.其它一些小点则是通过GitHub、B站、知乎查阅。

posted @ 2020-09-23 11:33  颜嘉馨  阅读(51)  评论(0编辑  收藏