1、pinpong库是一套控制开源硬件主控板的Python库,基于Firmata协议并兼容MicroPython语法,5分钟即可让你上手使用Python控制开源硬件。借助于pinpong库,直接用Python代码就能给各种常见的开源硬件编程。其原理是给开源硬件烧录一个特定的固件,使开源硬件可以通过串口与电脑通讯,执行各种命令。
pinpong库的名称由“Pin”和“Pong”组成,“Pin”指引脚,“PinPong”为“乒乓球”的谐音,指信号的往复。pinpong库的设计,是为了让开发者在开发过程中不用被繁杂的硬件型号束缚,而将重点转移到软件的实现。哪怕程序编写初期用Arduino开发,部署时改成了掌控板,只要修改一下硬件的参数就能正常运行,实现了“一次编写处处运行”。
2、pinpong库导入方法
pinpong库由于支持众多的主控板及开源硬件,因此分成了3个包,board、extension和libs,board包中放置主板支持的功能及常用库,extension为定制类主控,libs中放置其他传感器的扩展库。pinpong库支持多块主控板的使用,因此可以指定板型及端口号并生成对象,因为行空板上固定为协处理器并且端口号固定,因此可以省略掉这些参数而直接初始化。
from pinpong.board import xxx #board包中的库
from pinpong.libs.xxx #libs包中的库
from pinpong.extension.xxx #extension包中的主板
Board().begin() #初始化,连接协处理器,检查固件为空或版本不对则自动烧录
3、实验硬件
4、9G舵机
是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机主要由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。
PWM信号和舵机转动角度的关系
说到舵机的控制信号,一般是脉宽调制(PWM)信号,如下图,直观反映了PWM信号和舵机转动角度的关系,你也可以简单的理解为,通过给舵机通电的时间控制,结合角度传感器的反馈信号检测和控制,实现了舵机的精确角度控制。舵机的控制信号周期为20MS的脉宽调制信号(PWM),其中脉宽从0.5ms-2.5ms,相应的舵盘位置从0-180度,呈线型变化。也就是说,给舵机提供一定的脉宽,他的输出轴就会保持一定的对应角度,无论外接转矩怎么改变,知道给他提供另外一个脉冲信号,他才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期为20MS,宽度为1.5MS的脉冲信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。舵机是一种位置伺服驱动器,转动范围不能超过180度,适用于那些需要不断变化并可以保持的驱动器中,比喻说机器人的关节、飞机的舵面等。
【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
行空板测试外接传感器模块——Mind+代码编程
测试程序二十一:行空板P21口控制舵机
实验接线:行空板P21口接9G舵机模块
#【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
#行空板测试外接传感器模块——Mind+代码编程
#测试程序二十一:行空板P21口控制舵机
#实验接线:行空板P21口接9G舵机模块
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from pinpong.board import Servo
import time
Board().begin()
servo1 = Servo(Pin((Pin.P21)))
while True:
servo1.write_angle(45)
time.sleep(2)
servo1.write_angle(90)
time.sleep(2)
servo1.write_angle(180)
time.sleep(2)
servo1.write_angle(0)
time.sleep(2)
实验测试视频(29秒)
https://v.youku.com/v_show/id_XNTg4MTgyMDg0OA==.html
【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
行空板测试外接传感器模块——Mind+图形编程
测试程序二十二:行空板P21口控制舵机
实验接线:行空板P21口接9G舵机模块
实验串口返回情况
实验场景图
5、DHT11温湿度传感器
DHT11是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
模块描述
(1)可以检测周围环境的湿度和温度
(2)传感器采用DHT11
(3)湿度测量范围:20%-95%(0度-50度范围)湿度测量误差:±5%
(4)温度测量范围:0度-50度 温度测量误差:±2度
(5)工作电压3.3V-5V
(6)输出形式 数字输出
(7)设有固定螺栓孔,方便安装
(8)小板PCB尺寸:3.2cm*1.4cm
(9)电源指示灯(红色)
(10)每套重量约为8g
【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
行空板测试外接传感器模块——Mind+代码编程
测试程序二十三:行空板P21口读取DHT11温湿度传感器数值
实验接线:行空板P21口接DHT11温湿度传感器模块
#【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
#行空板测试外接传感器模块——Mind+代码编程
#测试程序二十三:行空板P21口读取DHT11温湿度传感器数值
#实验接线:行空板P21口接DHT11温湿度传感器模块
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from pinpong.board import DHT11
import time
Board().begin()
print("行空板P21口读取DHT11温湿度传感器数值")
DHT11 = DHT11(Pin((Pin.P21)))
while True:
print("温度=")
print(DHT11.temp_c())
print("湿度=")
print(DHT11.humidity())
time.sleep(1)
实验串口返回情况
【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
行空板测试外接传感器模块——Mind+图形编程
测试程序二十四:行空板P21口读取DHT11数值并控制LED
实验接线:行空板P21口接DHT11温湿度传感器模块
行空板P22口接LED模块
实验串口返回情况
实验场景图
6、蜂鸣器
(1)有源蜂鸣器(Active buzzer)内建了一组固定的频率,只要接通电源,就会发出固定的音调。蜂鸣器的源,这里指的是震荡源。也就是说有源蜂鸣器内部带有多谐振荡器,可以产生 1.5kHZ-2.5kHZ 的电压信号,由此有源蜂鸣器才能发声。有源蜂鸣器、无源蜂鸣器的外型很像,一般有源蜂鸣器会在上面贴一个白色贴纸,另外,有源蜂鸣器底部也会有胶封,无源蜂鸣器的底部可以直接看到电路板。有源蜂鸣器往往比无源的贵一点,就是因为里面多个震荡电路。有源蜂鸣器的优点是,编程控制简单方便,适合大部分的简单使用场景。缺点是只能在固定频率上运行,从而降低了随着应用需求变化而实现备用频率的灵活性。有源蜂鸣器工作的理想信号是直流电,通常标示为VDC、VDD等。因为蜂鸣器内部有一简单的振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,从而实现磁场交变,带动铝片振动发音。但是在某些有源蜂鸣器在特定的交流信号下也可以工作,只是对交流信号的电压和频率要求很高,此种工作方式一般不采用。
(2)无源蜂鸣器(Passive Buzzer)在字义上说,即不带振荡源,在没有振荡电路情况下接上直流电,因输出电压没有变化,蜂鸣器片仍然保持沉默,所以我们需从外接振荡器。看似不方便,但亦有其优点。首先,零件数量少,售价较低是常识吧!其次,我们可脱离一般蜂鸣器只可发出单音的局限,自由控制输出声音频率,便可透过编程写出不同音阶和延续时间,合成一首旋律美妙的音乐。无源蜂鸣器没有内部驱动电路,有些公司和工厂称为讯响器,国标中称为声响器。无源蜂鸣器工作的理想信号方波。如果给予直流信号蜂鸣器是不响应的,因为磁路恒定,钼片不能振动发音。
【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
行空板测试外接传感器模块——Mind+代码编程
测试程序二十五:行空板P21口驱动蜂鸣器(无源)
实验接线:行空板P21口接蜂鸣器模块
#【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
#行空板测试外接传感器模块——Mind+代码编程
#测试程序二十五:行空板P21口驱动蜂鸣器(无源)
#实验接线:行空板P21口接蜂鸣器模块
from pinpong.extension.unihiker import *
from pinpong.board import Board,Pin
from pinpong.board import Tone
import time
Board().begin()
tone1 = Tone(Pin((Pin.P21)))
while True:
tone1.on()
tone1.freq(200)
time.sleep(1)
tone1.off()
time.sleep(1)
【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
行空板测试外接传感器模块——Mind+图形编程
测试程序二十六:声光经警报器
实验接线:行空板P21口接蜂鸣器模块,P22口接LED
实验场景图
7、超声波测距模块
(1)主要参数
使用电压:DC—5V
静态电流:小于2mA
电平输出:高5V
电平输出:底0V
感应角度:不大于15度
探测距离:2cm-450cm
高精度 可达0.2cm
接线方式:VCC、trig(控制端)、echo(接收端)、 GND
测距原理
超声波具有频率较高,沿直线传播、方向性好、绕射小、穿透力强、传播速度慢(约340m/s,与声速相同)等特点。超声波对固体和液体的穿透能力强,尤其对于在阳光下不透明的固体,可以穿透几十m的深度。超声波遇到杂质或分界面时会产生反射波,利用这一特性可构成超声波探伤仪或测距仪。超声波遇到移动物体时会产生多普勒效应(DopplerEffect),使接收到的频率发生变化,由此可制成多普勒测距系统。超声波测距原理是超声波发射探头发出的超声波脉冲,经媒质(空气)传到物体表面,反射后通过媒质(空气)传到接收探头,测出超声脉冲从发射到接收所需的时间,根据媒质中的声速,求得从探头到物体表面之间的距离。设探头到物体表面的距离为L,超声在空气中的传播速为v,从发射到接收所需的传播时间为t,则有:L=vt/2。由此可见,被测距离L与传播时间之间具有确定的函数关系,只要能测出时间t,即可求出距离L,通过软件实现直接在显示器上显示L的值。
(3)【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
行空板测试外接传感器模块——Mind+图形编程
测试程序二十七:行空板P21驱动超声波测距
实验接线:行空板P21口接Trig,P22口接Echo
(4)实验串口返回情况
(5)实验场景图