用树莓派Raspberry Pi和Micro:bit做一个自拍器
在这个项目中,我们将使用python来构建一个由micro:bit触发树莓派raspberry pi和相机模块的自拍器。这是开始使用硬件和简单文本编程的好方法。
我们将学习:
如何设置raspberry pi相机
如何在micro:bit和raspberry pi上使用输入和输出引脚
用python代码控制gpio引脚
用python代码控制相机模块
材料:
带有sd卡和常规外围设备的raspberry pi
raspberry pi camera module
micro:bit
usb a to micro usb-b cable
双头鳄鱼夹线3条
软件安装:
更新的raspbian并安装mu。
安装配件pi camera, 驱动及库文件请从raspberry pi官方网站下载。
将micro:bit和pi camera module连接到raspberry pi主板上
1.将公母对跳线连接到raspberry pi上的gpio引脚4。
2.拿一条鳄鱼夹电缆,将一端连接到您的micro:位标记为0的焊盘,另一端连接到标有gnd或地线的引脚。
3.将另一根电缆连接到针脚1,将另一端连接到您的raspberrypi上使用的跳线的阳端,如下图所示:
这样就创建好触发电路。接下来启动raspberry pi并加载mu。
1.打开mu,然后单击new打开一个空白的未命名的文件。
2.单击保存,将文件命名为microbit-trigger.py,然后按键盘上的enter键。
3.您的文件中的第一行应该已经输入,并且显示为:
from microbit import *
该行导入了micropython的python库模块供您使用。
4.接下来,键入以下命令创建一个循环:
while true:
注意:大写字母和小写字母在输入python代码时非常重要。请注意,true最后有大写t和冒号。在这一行之后写的所有内容都应该缩进四个空格。
5.现在我们需要设置一个条件,以便当连接到micro:bit上的引脚0的电缆被触摸时,它会在led矩阵上显示一条消息并触发相机。我们在python中使用这个词来做到这一点:
1. while true:
2. if pin0.is_touched():
3. display.scroll("saycheese!")
4. sleep(500)
5. pin1.write_digital(1)
6. sleep(5000)
pin1.write_digital(0)
6. 每次绕这个循环,计算器询问连接到引脚0的电缆是否被触摸。如果是,那么消息“说奶酪!”应该出现并告诉销1变高或打开。这是连接到raspberry pi的针。我们将在下一步中使用该引脚来触发相机拍摄照片并进行存储。
7. 保存文件,然后点击flash将代码发送到你的micro:bit。您必须执行此步骤来测试您的触发器是否正常工作。一旦micro:bit背面的黄色灯停止闪烁,按下它旁边的复位按钮,然后触摸地面并插入0个鳄鱼夹电缆。这应该导致文本滚动播放在micro:bit上的led矩阵。
现在开始编辑pi camera.
1.点击编程,从主菜单中找到并打开python3(idle)。这是您将为您的相机编写您的python代码的地方。
2.创建一个新文件并将其保存为microbit-camera.py。
3.首先通过输入以下内容导入此程序中所需的所有库和模块:
from picamera import picamera
from gpiozero import button
from time import sleep
接下来,您需要告诉计算器哪个引脚将用于触发相机拍摄照片。您将microbit连接到gpio引脚4.在导入下方,键入:
button = button(4, pull_up = false)
然后写入指令序列,以在触摸微位置电缆的人触发时拍摄照片。首先,从相机显示预览,键入以下内容:
with picamera() as camera:
camera.start_preview()
sleep(5)
虽然显示的是预览,您可以抓到到自拍器的位置中。
在下面,键入等待the micro:bit触发的指令:
button.wait_for_press()
camera.capture('selfie.jpg`)
camera.stop_preview()
该程序将等待micro:bit的触发器,然后拍摄照片并将其存储在名为selfie.jpg的文件中,然后停止相机预览。
保存文件。检查您的micro:bit触发器是否正常工作,然后单击运行和运行模块以启动摄像头代码,一个自拍器就成功了。
原文参考
https://mp.weixin.qq.com/s?__biz=mzu0mtg0odizna==&mid=2247483907&idx=1&sn=de57f662ad04ea75f64ababe9f5e3c5e&chksm=fb22e5c6cc556cd0bdf07ea24bb1c1f9fd6a9b5e2e24218198b7f66e3eb4eec59fbe8d1bc873#rd