使用 PIR 传感器作为触发器拍摄照片并将其上传到 tumblr。
有两种配置 Yùn 的方法。
第一个是上传示例 YunFirstConfig
并设置所需的参数。
打开您的 Arduino IDE 并转到example -> Bridge -> YunFirstConfig
如果您使用的是 YunShield,请务必选择它所连接的板的名称,而不是 Yun 板!
上传草图并打开串行监视器。您将在下面的屏幕截图中看到一条消息。
按照几个简单的步骤为您的开发板设置名称、密码和网络。现在您可以将 Yùn 连接到互联网了!
配置开发板的第二种方法是通过浏览器进行。
在开始之前确保你的 yun-shield 处于访问模式。在您的计算机上的可用 WiFi 网络中检查云的名称。它应该是这样的
Arduino Yun-90A2DAF200DI
连接到该网络并在浏览器中键入地址
192.168.240.1
现在你应该被重定向到 yun 的配置页面,你可以在这里设置名称、密码和你想要连接的 WiFi 网络。
注意默认密码是arduino
完毕!现在您的云盾有了名字和密码,并且可以上网了!
对于这个项目,我们使用了 quickcam communicate stx 。这是一个廉价且兼容 linux 的网络摄像头,我们可以通过 USB 连接到我们的 yun-shield。
在进行这项工作之前,我们需要下载一些驱动程序:
打开你的终端并通过 ssh 连接到 yun-shield(确保你的计算机连接到 yun-shield 的同一网络)并下载所需的包
ssh root@name_of_your_yun.local
opkg update
opkg install kmod-video-gspca-zc3xx
opkg install python-openssl
opkg install fswebcam
opkg install mjpg-streamer
请注意,许多网络摄像头都适用于 UVC 驱动程序。在这种情况下使用命令:
opkg install kmod-video-uvc libwebcam libuvc
现在我们可以使用此命令拍照并存储它们
fswebcam test.png
图片将保存为.png 并命名为test。
为了让事情更有条理,我们可以创建一个文件夹来保存照片,只需在终端(通过 ssh 连接到 yun-shield)输入命令:
mkdir photos
现在要将照片保存在该文件夹中,请使用命令
fswebcam -r 640x480 photos/my_photo.jpg
我们刚刚拍了一张 640x480 分辨率的照片,将其命名为 my_photo.jpg并将其保存在文件夹photos 中。
在上传任何照片之前,我们首先需要创建一个连接到我们博客的 tumblr 应用程序。为此,请访问 https://www.tumblr.com/oauth/apps 并注册一个新应用程序。我们需要此应用程序来获取向 tumblr 发出 http POST 请求所需的所有令牌。
在表格中填写应用程序名称、描述和电子邮件联系方式。您可以使用您想要的任何链接填充其余字段,例如默认回调 URL,我们不会将它们用于此项目。
现在您应该可以访问您的 OAuth Consumer Key和 OAuth Consumer Secret。将这些标记保存在文本文件中,我们将在接下来的步骤中需要它们。
现在我们还想获得OAuth Token和OAuth Token Secret
转到Tumblr API 控制台并使用您已有的令牌对您的应用程序进行身份验证,然后在右上角按显示密钥按钮。你应该看到类似的东西:
现在我们有了令牌,我们可以写下将完成所有工作的 python 代码。您可以复制并粘贴下面的代码或从本教程的软件部分下载它。
请记住用您的凭据填写空白字段。
import glob
import json
import os
import time
import urllib2
import urlparse
import oauth2
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers
class APIError(StandardError):
def __init__(self, msg, response=None):
StandardError.__init__(self, msg)
class TumblrAPIv2:
def __init__(self, consumer_key, consumer_secret, oauth_token, oauth_token_secret):
self.consumer = oauth2.Consumer(consumer_key, consumer_secret)
self.token = oauth2.Token(oauth_token, oauth_token_secret)
self.url = "http://api.tumblr.com"
def parse_response(self, result):
content = json.loads(result)
if 400 <= int(content["meta"]["status"]) <= 600:
raise APIError(content["meta"]["msg"], result)
return content["response"]
def createPhotoPost(self, id, post):
url = self.url + "/v2/blog/%s/post" %id
img_file = post['data']
del(post['data'])
req = oauth2.Request.from_consumer_and_token(self.consumer,
token=self.token,
http_method="POST",
http_url=url,
parameters=post)
req.sign_request(oauth2.SignatureMethod_HMAC_SHA1(), self.consumer, self.token)
compiled_postdata = req.to_postdata()
all_upload_params = urlparse.parse_qs(compiled_postdata, keep_blank_values=True)
for key, val in all_upload_params.iteritems():
all_upload_params[key] = val[0]
all_upload_params['data'] = open(img_file, 'rb')
datagen, headers = multipart_encode(all_upload_params)
request = urllib2.Request(url, datagen, headers)
try:
respdata = urllib2.urlopen(request).read()
except urllib2.HTTPError, ex:
return 'Received error code: ', ex.code
return self.parse_response(respdata)
register_openers()
#Insert here your tokens
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
OAUTH_TOKEN = '****'
OAUTH_TOKEN_SECRET = '****'
DIR = 'photos/'
FILE_MASK = '*.jpg'
BLOG = '****' # put here the name of your blog i.e. arduino.tumblr.com
api = TumblrAPIv2(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
for img in glob.glob( os.path.join(DIR, FILE_MASK) ):
date = time.gmtime(os.path.getmtime(img))
post = {
'type' : 'photo',
'date' : time.strftime ("%Y-%m-%d %H:%M:%S", date),
'data' : img,
'tags' : "I am a tag",
'caption' : "I am a caption"
}
try:
response = api.createPhotoPost(BLOG,post)
if 'id' in response:
print response['id']
else:
print response
break
except APIError:
print "Error"
break
print "Done!"
为了在 Yun_Shield 上上传这个脚本,我们首先需要知道我们开发板的 IP 地址。通过 ssh 和数字连接:
ifconfig
现在我们有了 IP,我们可以继续上传脚本了。您可以使用此命令将your_path替换为文件夹的路径以访问 python 脚本。
scp /your_path/YunTumblr.py root@
your_ip_address
:
请记住还要上传您可以在软件部分找到的 auth.py 文件:
scp /your_path/auth.py root@
your_ip_address
:
最后一步是下载 python 库。通过 ssh 连接到 yun shield 并使用这些命令
ssh root@name_of_your_yun.local
opkg update
opkg install python-pip
pip install oauth2
pip install poster
我们完了!!!
要测试它,你可以数字:
fswebcam -r 640x480 photos/my_photo.jpg
python YunTumblr.py
将它们上传到 tumblr 可能需要几分钟时间,但如果一切正常,您应该会收到照片的 ID 号作为回复。
通常所有 PIR 传感器都带有三根电线。黑色的用于接地,红色的用于 5V,彩色的用于数据。
请注意,有时电线颜色可能会因传感器而异!
上传云盾草图
Yun Shield 可以插入每个 Arduino/Genuino 开发板。
插入扩展板后,您必须从 Arduino IDE 中选择扩展板连接到的板,而不是 Arduino Yun 。例如,如果将 Yun Shield 插入 Arduino Leonardo,则必须在 IDE 中选择
工具/板/Arduino Leonardo
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !