37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百零一:DFRobot 行空板 python 教学微型计算机架构开发板 Linux WiFi 蓝牙
知识点:行空板(unihiker)
是一款由上海智位机器人(DFRobot)专为Python编程教育而设计的开源硬件,是一块有着树莓派级别性能,如micro:bit一样简单易上手,可以运行完整Python程序的神奇板子!行空板拥有自主知识产权,自带Linux操作系统和Python环境,还预装了常用的Python库,能够轻松胜任各种编程相关的开发场景,如搭建物联网系统、体验人工智能应用、编写电子游戏、进行科学实验、设计声光互动、开发可穿戴设备等。同时,行空板作为智能终端设备,其板子本身采用微型计算机架构,集成LCD彩屏、WiFi蓝牙、多种常用传感器和丰富的拓展接口。
6、基础GPIO使用
行空板引脚操作与pinpong通用语法相同。
(1)数字输出
【科普知识点】数字信号的输出是高、低电平,负载端需要数字处理电路,将收到的脉冲进一步转化为需要的信号。二进制的数字信号为010100101100101010100111……,数字输出的波形如图。
行空板板载四路3pin引脚(P2.0三针接口),包括P21(A)\P22(A)\P23(~)\P24,具体位置见图。
所有引脚均支持数字输出,电平电压为3.3V。
【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
行空板基础GPIO使用——Mind+代码编程
测试程序十四:制外接LED灯一秒闪烁一次
实验接线:在行空板P21接一个LED灯
#【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
#行空板基础GPIO使用——Mind+代码编程
#测试程序十四:外接LED灯一秒闪烁一次
#实验接线:在行空板P21接一个LED灯# -*- coding: UTF-8 -*-
import time
from pinpong.board import Board,PinBoard().begin() #初始化
print("外接LED灯一秒闪烁一次") led = Pin(Pin.P21, Pin.OUT) #引脚初始化为电平输出while True:#led.value(1) #输出高电平 方法1led.write_digital(1) #输出高电平 方法2print("1") #终端打印信息time.sleep(1) #等待1秒 保持状态#led.value(0) #输出低电平 方法1led.write_digital(0) #输出低电平 方法2print("0") #终端打印信息time.sleep(1) #等待1秒 保持状态
实验串口返回情况
实验场景图
【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
行空板基础GPIO使用——Mind+图形编程
测试程序十五:外接LED灯0.5秒闪烁一次
实验接线:在行空板P21接一个LED灯
实验串口返回情况
(2)数字输入
【科普知识点】数字信号是指用一组特殊的状态来描述信号,典型的就是当前用最为常见的二进制数字来表示的信号,之所以采用二进制数字表示信号, 其根本原因是电路只能表示两种状态,即电路的通与断。在实际的数字信号传输中,通常是将一定范围的信息变化归类为状态0或状态1, 这种状态的设置大大提高了数字信号的抗噪声能力。不仅如此,在保密性、抗干扰、传输质量等方面,数字信号都比模拟信号要好,且更加节约信号传输通道资源。数字信号输入是逻辑编码,由0和1组成。
行空板板载四路3pin引脚(P2.0三针接口),包括P21(A)\P22(A)\P23(~)\P24,具体位置见图。
所有引脚均支持数字输入,电平电压为3.3V。
【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
行空板基础GPIO使用——Mind+代码编程
测试程序十六:使用按钮控制行空板外接LED灯的亮灭
实验接线:在行空板P21接一个LED灯,在行空板P22接口接一个按钮模块
#【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
#行空板基础GPIO使用——Mind+代码编程
#测试程序十六:使用按钮控制行空板外接LED灯的亮灭
#实验接线:在行空板P21接一个LED灯,在行空板P22接口接一个按钮模块#-*- coding: UTF-8 -*-
import time
from pinpong.board import Board,PinBoard().begin() #初始化
print("使用按钮控制行空板外接LED灯的亮灭")btn = Pin(Pin.P22, Pin.IN) #引脚初始化为电平输入
led = Pin(Pin.P21, Pin.OUT) #L灯引脚初始化为输出while True:#v = btn.value() #读取引脚电平方法1v = btn.read_digital() #读取引脚电平方法2print(v) #终端打印读取的电平状态#led.value(v) #将按钮状态设置给led灯引脚 输出电平方法1led.write_digital(v) #将按钮状态设置给led灯引脚 输出电平方法2time.sleep(1)
实验串口返回情况
实验场景图
(3)模拟输出(PWM)
【科普知识点】模拟量输出是计算机或控制系统输出的模拟量,在单片机控制系统中,输出信号中模拟量为数不少,它们是单片机输出的数字信号经过模拟量输出通道处理后得到的。模拟量输出通道的任务是把计算机处理后的数字量信号先通过数据总线、隔离装置,再通过D/A转换器转换成模拟电压或电流信号,经放大用以驱动相应的执行器,从而达到控制的目的。
【科普知识点】PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。PWM的一个优点是从处理器到被控系统信号都是数字形式的,再进行数模转换。可将噪声影响降到最低(可以跟电脑一样)。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。
行空板支持8路10位PWM,分别对应引脚为: P21 P22 P23(金手指部分P0 P2 P3 P10 P16)
注意: 其中P8与P2共用一路PWM,P9与P10共用一路PWM,因此P8与P9也可以使用PWM,但使用时P2和P10不能使用。
【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
行空板基础GPIO使用——Mind+代码编程
测试程序十七:PWM输出实验,控制LED灯亮度变化
实验接线:外置LED灯接到行空板P21引脚上
#【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
#行空板基础GPIO使用——Mind+代码编程
#测试程序十七:PWM输出实验,控制LED灯亮度变化
#实验接线:外置LED灯接到行空板P21引脚上# -*- coding: UTF-8 -*-
import time
from pinpong.board import Board,PinBoard().begin() #初始化
print("PWM输出实验,控制LED灯亮度变化")# PWM模拟输出引脚支持: P0 P2 P3 P10 P16 P21 P22 P23
#pwm21 = PWM(Pin(Pin.P21)) #将引脚传入PWM初始化 模拟输出方法1
pwm21 = Pin(Pin.P21, Pin.PWM) #初始化引脚为PWM模式 模拟输出方法2while True:for i in range(1023):print(i)#pwm21.duty(i) #PWM输出 方法1pwm21.write_analog(i) #PWM输出 方法2time.sleep(0.05)
实验串口返回情况
实验场景图
【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
行空板基础GPIO使用——Mind+图形编程
测试程序十八:PWM输出实验,控制LED灯亮度变化
实验接线:外置LED灯接到行空板P21引脚上
实验串口返回情况
(4)模拟输入(ADC)
【科普知识点】模拟输入是指输入模拟信号(模拟量)。可以说,模拟输入就是输入连续信号。模拟输入是指传统方式的输入.数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。模拟量是与数字量对应的,所谓“模拟量”就是一般经常见到的,未经转化的连续变化量;数字量是断续的量,一般是(但不全是)经过转化的,可以用数字表示的量。举例说:用数字万用表测一个电压或电流信号,显然这时的量是连续变化的,所以是模拟量。到了万用表里,经过转换(称为A/D转换),就变成可以用数字计算机处理的量,这时就叫数字量了。再如:传统的手表,指针是连续移动的,所显示的时间就是模拟量的时间,而石英表、电子表显示的就是数字量的时间。所以,可以说,模拟输入就是输入连续信号。
【科普知识点】模拟数字转换器(英语:Analog-to-digital converter, ADC, A/D 或 A to D)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。一个模拟数字转换器可以提供信号用于测量。与之相对的设备成为数字模拟转换器。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。然而,有一些模拟数字转换器并非纯的电子设备,例如旋转编码器,也可以被视为模拟数字转换器。模拟数字转换器的分辨率是指,对于允许范围内的模拟信号,它能输出离散数字信号值的个数。这些信号值通常用二进制数来存储,因此分辨率经常用比特作为单位,且这些离散值的个数是2的幂指数。例如,一个具有8位分辨率的模拟数字转换器可以将模拟信号编码成256个不同的离散值(因为28 = 256),从0到255(即无符号整数)或从-128到127(即带符号整数),至于使用哪一种,则取决于具体的应用。
行空板支持8路12位高精度模拟输入ADC,分别对应引脚为: P0 P1 P2 P3 P4 P10 P21 P22
【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
行空板基础GPIO使用——Mind+代码编程
测试程序十九:打印行空板P21口模拟值
实验接线:行空板P21口接一个电位器模块
#【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
#行空板基础GPIO使用——Mind+代码编程
#测试程序十九:打印行空板P21口模拟值
#实验接线:行空板P21口接一个电位器模块# -*- coding: UTF-8 -*-
import time
from pinpong.board import Board,PinBoard().begin() #初始化
# ADC模拟输入引脚支持: P0 P1 P2 P3 P4 P10 P21 P22
#adc21 = ADC(Pin(Pin.P21)) #将Pin传入ADC中实现模拟输入 模拟输入方法1
adc21 = Pin(Pin.P21, Pin.ANALOG) #引脚初始化为电平输出 模拟输入方法2
print("打印行空板P21口模拟值")while True:#v = adc21.read() #读取模拟信号数值 0-4095 模拟输入方法1v = adc21.read_analog() #读取模拟信号数值 0-4095 模拟输入方法2print("P21=", v)time.sleep(0.5)
实验串口返回情况
【花雕体验】10 行空板硬件控制pinpong库的系列测试(之三)
行空板基础GPIO使用——Mind+图形编程
测试程序二十:打印行空板P21口模拟值
实验接线:行空板P21口接一个电位器模块
实验串口返回情况
实验场景图