英国威廉希尔Sparkfun教程 urn:uuid:5902bec3-4187-acaf-e181-2f685478e85a Buck Boost连接指南 Alex the Giant https://www.英国威廉希尔sparkfun.com/users/10274 urn:uuid:a5230747-85ec-98ba-ee18-be8ea97b797f 2019年5月10日00:00:00-06:00

Buck Boost连接指南williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t895

介绍

我们抓到她了!的Buck-Boost Converter是SparkFun的最新突破,允许您微调项目接收的电量。英国威廉希尔英国威廉希尔它可以从任何地方获得输入电压3-16V然后可以调节到输出电压之间。2.5-9V.开关在板的底部,您可以将公共输出电压设置为3.3V和5V,但是我们还提供了一个自定义设置,允许您根据您的自定义电压需求来填充一个电阻。另外,为了更好的控制,我们已经在板的顶部拔出了GPIO管脚。加油!

英国威廉希尔Sparkfun Buck Boost转换器

英国威廉希尔Sparkfun Buck Boost转换器

COM—15208
9.95美元

所需材料

要遵循本教程,你需要以下材料。你可能不需要一切,取决于你有什么。Add it to your cart,通读指南,并根据需要调整手推车。

Tools

You may also need a soldering iron,焊料,和通用焊接附件.

Soldering Iron - 60W (Adjustable Temperature)

Soldering Iron - 60W (Adjustable Temperature)

TL-14566
12.95美元
无铅焊锡-15克管

无铅焊锡-15克管

TL—09163
3.50美元

建议阅读

如果您不熟悉以下概念,我们建议在继续之前先查看这些教程。

如何焊接:通孔焊接

本教程涵盖了关于通孔焊接的所有知识。

逻辑层次

williamhill英格兰Learn the difference between 3.3V and 5V devices and logic levels.

电力

An overview of electric power,能量传递速率。我们来谈谈权力的定义,watts,方程,和额定功率。1.21千兆瓦的教程乐趣!

硬件概述

The Buck-Boost board is centered around the TPS63070 Buck-Boost converter,which will take your input power and either regulate the output voltage up or down to your set output voltage.在本节中,我们将更详细地了解转换器的工作原理,以及如何将其纳入到下一个项目中。英国威廉希尔

降压升压板

电源插头

Power connections highlight

降压升压板的输入电压范围为3-16V.您可以直接向电路板焊接电线或使用我们的3.5mm screw terminals.

螺杆式顶升

The output is adjustable from2.5-9V使用单刀三掷开关。该板配置有两个您可能使用的更常见的电压,3.3V5V,但是有一个不受欢迎的PTH电阻允许设置一个特定的电压。

设置输出电压

电压选择开关的亮点

The output voltage of the Buck-Boost is set by voltage divider connected to the feedback pin.The Buck-Boost board has one fixed resistor at 68.1kΩ and the switch changes the second resistor between VOUT and the feedback pin.要改变输出电压,将开关移到三个位置中的一个位置3.3V,5V,or CUST.CUST位置允许您通过将电阻焊接到下面突出显示的PTH电阻垫上,将电压设置为所需的任何值。

自定义电阻突出显示

使用下面的公式根据所需的输出电压确定所需的电阻值。

电阻值计算公式

输入输出引脚

The Buck-Boost board will work out of the box,但是如果你需要多一点控制,大部分多余的别针都断了,如下所示。

I/O引脚的高亮显示

Pin 描述
Vin 功率级的电源电压。可用于向项目其他部分供电,英国威廉希尔或用于设置逻辑级别。
启用输入。拉高以启用设备。拉低以禁用设备。默认值:高通过10kΩ上拉电阻连接到VIN。
GND 地面。可用于将I/O引脚设置为低。
PS 省电。Pull low for forced PWM.为省电模式拉高。In power save mode,the switching frequency will adjust to the most efficient frequency.您也可以应用时钟信号来同步到外部频率。默认值:高通过10kΩ上拉电阻连接到VIN。
前列腺素 电源良好,开漏输出。
VOUT 额外的降压升压转换器输出。

压水堆LED

电源LED亮点

The power LED indicates red when voltage is present on the output pins.因为LED有一个固定的1K串联限流电阻,the brightness of the LED will vary depending on the output voltage.通过切断板背面的跳线,可以禁用LED,如下所示。

切割LED跳线

推卸责任的技巧和技巧

最大输出电流与输入电压

One of the benefits of the Buck-Boost,除了从较低的输入电压提高输出电压外,是否使用开关式DC/DC转换器,比线性调节器更有效。效率越高,热量的浪费就越少。However,这并不意味着TPS63070在负载下不会变热。TPS63070的工作模具温度范围为-40至+125°C,using the graphs below should provide a good rule of thumb for the maximum output current available at various output voltages as a function of the input voltage.

The temperature was recorded using a FLIR camera with an air temperature of 25°C,最高外壳温度为100°C。Each output voltage graph has a showing the maximum output current both with and without a散热器.

最大输出电流图

单击照片获得完全分辨率

添加散热器

在最大输出电流部分,图中显示了带和不带散热器的情况。散热器的好处是它为空气提供了更多的表面积来散热,which will allow the Buck-Boost board to output the maximum amount of current across a wider input voltage range.要添加散热器,您需要我们的两种产品:Aheatsink (of course),以及我们的热敏胶带.

要添加散热器,请先将热胶带切割成大致尺寸:

Thermal tape cut to rough size

剥下其中一层保护层并将散热器连接到热胶带上:

连接到热胶带的散热器

用一个嗜好刀,按照散热器的周界将胶带切割成最终尺寸:

切割热胶带

Remove the remaining protective covering of the tape and attach the heatsink to the TPS63070,试图将散热器置于集成电路的中央:

附在板上的散热器

连接您的负载

取决于连接到输出的负载的大小,you may need to wait between when the enable pin is pulled high and the load is connected to the board.时间延迟相对较短(约10毫秒)。但是如果负载是<3.3mA,3.3V,或<700毫安5.0V.如果自定义电阻被填充以输出电压大于5V,you should be able to leave the load connected if the load is<650Ma.

Resources and Going Further

有关Buck Boost的更多信息,看看下面的链接:

Need more inspiration?看看这些相关的教程!

为LilyPad领导的项目供电英国威廉希尔

williamhill英格兰了解如何计算LilyPad项目可以供电的LED数量和持续时间。英国威廉希尔

BLynk董事会项目指南英国威廉希尔

A series of Blynk 英国威廉希尔projects you can set up on the Blynk Board without ever re-programming it.

如何建立远程杀伤开关

williamhill英格兰了解如何构建无线控制器以在事情发生时切断电源…有知觉。

QWIIC单继电器连接指南

Get started switching those higher power loads around with the Qwiic Single Relay.

williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

使用家庭助理扩展家庭自动化 Alex the Giant https://www.英国威廉希尔sparkfun.com/users/10270 urn:uuid:596b7135-c73b-8f51-b8fe-b96fe6c2dba4 2019年5月9日00:00:00-06:00

使用家庭助理扩展家庭自动化williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t900

介绍

In this tutorial,你将学到所有你williamhill英格兰需要知道的东西,开始控制你的家Home Assistant,一个开源家庭自动化中心,将本地控制和隐私放在首位,A的流出覆盆子皮.在本教程中,我们将介绍如何设置家庭助理,无论您是自己创建设备还是购买现成的物联网设备,get them working together in harmony.

当本指南引导您完成家庭助理的设置时,这不是一个关于如何让家庭助理发挥最大作用的教程(但是,在谷歌上快速搜索家庭助理教程将为您提供无止境的链接)。

家庭助理徽标

图片由家庭助理提供。

所需材料

要遵循本教程中的示例,您将需要以下硬件。但你可能并不需要一切,这取决于你拥有什么。Add it to your cart,通读指南,并根据需要调整手推车。

可选材料

根据您的设置,您可能还需要以下内容。

microSD Card with Adapter - 16GB (Class 10)

microSD Card with Adapter - 16GB (Class 10)

COM—13833
19.95美元
Raspberry Pi液晶显示器- 7

覆盆子PI LCD-7“触摸屏

LCD-13733
64.95美元
三十九
LCD Touchscreen HAT for Raspberry Pi - TFT 3.5in.(480x320)

LCD Touchscreen HAT for Raspberry Pi - TFT 3.5in.(480x320)

LCD-1476
24.95美元
多媒体无线键盘

多媒体无线键盘

WIG-1427
$29.95

建议阅读

如果您不熟悉以下概念,我们建议在继续之前先查看这些教程。

覆盆子Pi3入门套件连接指南

使用覆盆子Pi3模型B和覆盆子Pi3模型B+启动套件的指南。

How to Use Remote Desktop on the Raspberry Pi with VNC

使用RealVNC连接到树莓Pi,以远程控制网络上的图形桌面。

Introduction to MQTT

An introduction to MQTT,与物联网(IOT)一起使用的主要通信协议之一。

ESP32 Thing Plus连接指南

Hookup guide for the ESP32 Thing Plus using the ESP32 WROOM's WiFi/Bluetooth system-on-chip in Arduino.

安装家庭助理

To get started,我们首先需要安装家庭助理为设备下载图像.家庭助理的安装页面非常出色,它概述了如何将图像闪存到SD卡,但下载完图像后,您需要安装hass.io,方法是将SD卡连接到计算机,然后使用名为巴莱纳彻.

提供互联网连接

接下来,我们需要确保您的PI有一个互联网连接。为了快速、可靠地启动和运行,我们将使用到路由器的硬接线连接。But if you'd prefer WiFi,您可以使用带有FAT32分区的空白USB插件(标记为“CONFIG”的分区),在根目录(/)中,create anetwork/my-networkfile.或者在Hassio SD卡的第一个可引导分区上,创造配置/网络/我的网络file.对于网络文件的结构,follow the哈索斯霍托.

一旦建立了网络,插入SD卡和U盘,if used,进入PI。Connect power to the Pi,等待操作系统启动。第一次开机时,家庭助理将下载最新版本,大约需要20分钟。

After the very long first boot,您可以通过浏览器访问您的设备,网址为网址:http://hassio.local:8123(假设您的路由器支持MDN)。威廉希尔公司在哪如果您的路由器不支持MDN,威廉希尔公司在哪或者你不确定,您需要使用PI的IP地址(例如192.168.1.108:8123)。您可以通过登录到路由器(通常通过在浏览器的地址栏中键入192.168.1.1)来找到IP地址,找到你的圆周率(应该叫哈西奥)。

HassIO IP image

单击图像以更近距离查看。

登录家庭助理

Once Home Assistant has finished updating and you're able to connect to the Pi,您应该看到一个登录屏幕来创建一个用户名和密码来登录到家庭助理。确保跟踪所使用的登录名。稍后在设置ESP设备时,我们将需要这些凭据。

家庭助理帐户创建

一旦登录,主屏幕将欢迎您。Home Assistant will automatically scan your network to add devices.您可能会收到一些通知来设置找到的设备,典型地,这些是家庭媒体设备,比如google cast,丛,等。

家庭助理主屏幕

单击图像以更近距离查看。

配置家庭助理

Now that we have Home Assistant set up,we need to configure it.One of the benefits of Home Assistant is it's open source,允许社区成员在官方支持的附加组件之上创建自己的附加组件,威廉希尔公司在哪这使得定制比其他选项更快更容易。在本节中,我们需要启用两个扩展:配置器和MQTT。

To view the available add-ons,click on the哈西奥在左侧菜单上,然后点击附加存储如下图所示(同样,你可以去http://hassio.local:8123/hassio/store/商店

附加存储

单击图像以更近距离查看。

添加配置器附加项

不管你最终用家庭助理做什么,one add-on that will make configuring Home Assistant easy without having to SSH into your Pi is the Configurator under Official add-ons.配置器允许您浏览和修改PI上的文件。稍后,我们将使用此附加组件修改configuration.yaml和automatics.yaml文件。

To add the Configurator,单击配置器加载项,然后单击“安装”。安装附加组件后,您需要单击开始并启用“在边栏中显示”选项,在重新加载页面后,这将在左侧菜单栏中添加一个名为“配置器”的新选项。

Configurator Highlight

单击图像以更近距离查看。

在我们获得更多硬件设置之后,我们将需要使用这个附加组件。

添加蚊子经纪人

Mosquitto is an open source MQTT broker server that receives and distribute messages over the MQTT server.有关MQTT的更多信息,退房MQTT教程.We'll setup the Mosquitto broker the same way we did the Configurator.首先单击附加商店的官方附加组件部分下的Mosquitto代理。单击安装,等待家庭助理下载并添加蚊子。下载完成后,单击开始以启用MQTT代理。

MQTT附加项

单击图像以更近距离查看。

使用配置器来运行…配置

在我们开始使用mqtt之前,我们需要配置家庭助理的MQTT代理。首先点击左侧菜单栏中的“配置程序”。

点击配置器

单击图像以更近距离查看。

我们从附加存储中启用了MQTT,但现在我们需要对其进行配置。所有配置都存储在名为配置.yaml.YAML文件是一种人类可读的数据序列化语言,类似于C++中的头文件,通常用于配置文件。类似于python,yaml文件使用缩进来表示嵌套,所以在修改yaml文件时要小心缩进。

要打开配置文件,首先单击文件夹图标浏览文件系统。

Click On Folder Icon Highlight

单击图像以更近距离查看。

导航到位于的配置文件/配置/配置.yaml

configurations.yaml文件的突出显示

单击图像以更近距离查看。

这个配置页面是我们初始化MQTT代理和设备的地方。我们首先要初始化的是代理。将以下行复制到配置文件中。It doesn't matter where these lines go in the file,但我们会把它放在发现的下方。确保将IP地址替换为PI的IP。

mqtt:broker:192.168.1.-这是PI的IP地址,可以从路由器的客户端列表中找到

完成后,我们可以按保存图标保存更改。

保存图标指针

单击图像以更近距离查看。

每次我们更改任何文件时,我们首先要检查配置是否有效,and then restart Home Assistant.要检查配置,go to the tab labeled Configuration不是配置程序沿着左边,选择General,然后单击“校验配置“。如果语法正确,它将显示消息“配置有效”。如果没有,它将显示一条调试消息,显示错误发生的位置,需要修复。一旦配置有效,按下“RESTART“在服务器管理下,并等待一分钟以应用更改。

配置选项卡,click general

Check configuration and restart server

单击图像以更近距离查看。

示例1:mqtt+esp32

注:This Arduino code used in this example has been written and tested on Arduino IDE version 1.8.6.否则,确保在桌面上使用最新稳定版本的Arduino IDE。如果这是你第一次使用Arduino,请回顾我们的教程 安装Arduino IDE。如果您以前没有安装过Arduino库,请查看我们的 安装指南。

现在我们已经运行了MQTT服务器,是时候添加一些设备了。对于第一个示例,我们将连接两个ESP32 Thing Plus通过MQTT连接到我们的网络。如果您不确定什么是MQTT以及它是如何工作的,有一个向导!查看下面的MQTT教程:

Introduction to MQTT

11月7日,2018

An introduction to MQTT,与物联网(IOT)一起使用的主要通信协议之一。

我们将添加的第一个设备将是一个等待连接到IO引脚0的按钮的开关。按下按钮后,将发布到主题room/light信息为“开”或“关”。第二个ESP32将订阅同一主题room/light听开关发出的信息。当收到消息“on”时,它将打开连接至IO引脚13的LED,当收到“关闭”时,关闭LED。为此,我们需要使用Arduino用一些代码刷新ESP32 Thing Plus板。

MQTT开关

将下面的代码复制并粘贴到您的Arduino IDE中,确保选择ESP32 DEV模块作为板,并选择正确的COM端口。填写WiFi凭据信息(您的WiFi网络必须与Raspberry PI位于同一网络上)。您为家庭助理创建的用户名和密码,和PI的IP地址。

语言:C/****************************************************************************mqtt_switch_example.ino使用mqtt switchby控制灯光的示例:alex wende,英国威廉希尔sparkfun electronics此草图将ESP32连接到MQTT代理并订阅Topicroom/Light。When the button is pressed,客户端将在发布“打开”和“关闭”之间切换。包括
       
        包括:
        
         //WiFi网络证书,COSST CHAR*SSID=“-----”;//您的WiFi网络名称const char*password=“-----”;//wifi网络的密码//家庭助理凭证cst char*ha_user=“-----”;const char*ha_pass=“-----”;//mqtt networkipaddress broker(192168,1,-);//您的mqtt代理的IP地址,例如192.168.1.50常量字节开关_pin=0;// Pin to control the light withconst char *ID = "Example_Switch";//设备名称,must be uniqueconst char *TOPIC = "room/light";//要订阅tofficilient wclient;pubsubclient client(wclient)的主题;//设置mqtt clientbool state=0;//连接到WiFi网络void设置_wifi()serial.print(“\n连接到”);序列号.println(ssid);WiFi。开始(ssid,password);// Connect to network  while (WiFi.status() != WL_CONNECTED) { // Wait for connection    delay(500);序列号。打印(“.”);}serial.println();serial.println(“WiFi连接”);serial.print(“IP地址:”);Serial.println(WiFi.localIP());}// Reconnect to clientvoid reconnect() {  // Loop until we're reconnected  while (!client.connected()) {    Serial.print("Attempting MQTT connection...");//尝试连接if(client.connect(id,ha_user,ha_pass))serial.println(“connected”);serial.print(“发布到:”);serial.println(主题);Serial.println('\n');}else serial.println(“5秒钟后重试”);//在重试延迟(5000)前等待5秒;}}}void setup()serial.begin(115200);//在115200波特PINMODE(开关管脚,输入)下启动串行通信;// Configure SWITCH_Pin as an input  digitalWrite(SWITCH_PIN,HIGH);//启用上拉电阻(低有功)延时(100);StUpUIWiFig();//连接到network client.setserver(broker,1883);void loop()if(!client.connected())//如果连接丢失,则重新连接reconnect();}client.loop();//如果按下开关(DigitalRead(Switch_Pin)==0)状态=!状态;//切换状态if(state==1)//on client.publish(topic,"on");Serial.println((String)TOPIC + " => on");}否则//关闭client.publish(主题,“关闭”;(字符串)主题+(“=> off”);}while(digitalread(switch_pin)==0)//等待释放开关延迟(20);} }
        
       

一旦代码上传,打开终端窗口,确保交换机成功连接到WiFi,并已连接到MQTT网络。如果你能连接到网络而不是PI,make sure the IP address is correct,以及家庭助理的证书。If both of those are right,可能没有正确设置MQTT代理。

MQTT灯

将下面的代码复制并粘贴到您的Arduino IDE中,确保选择ESP32 DEV模块作为板,并选择正确的COM端口。填写WiFi凭据信息(您的WiFi网络必须与Raspberry PI位于同一网络上)。家庭助理的用户名和密码,和PI的IP地址。

语言:C/****************************************************************************mqtt_light_example.ino使用mqttby控制灯光的示例:alex wende,英国威廉希尔SpkFoelEngigs.该草图将ESP32的东西加在MQTT经纪人身上,并把它归附于专题室/灯光。当收到“开”时,插脚灯“插脚”设置为高。当收到“关闭”时,the pin LIGHT_PIN is set LOW.******************************************************************************/#include
       
        包括:
        
         // WiFi Network Credentialsconst char *ssid = "-----";/你的WiFi NoWorksCist*密码* =“-----”;//wifi网络的密码//家庭助理凭证cst char*ha_user=“-----”;const char*ha_pass=“-----”;//mqtt networkipaddress broker(192168,1,-);//您的mqtt代理的IP地址,例如192.1681.50CONST字节LITHON PIN=13;// Pin to control the light withconst char *ID = "Example_Light";//设备名称,must be uniqueconst char *TOPIC = "room/light";//要订阅的主题toconst char*state_topic=“room/light/state”;//主题发布轻量级状态WClient;PubSub客户端客户端(WClient);//安装mqtt客户机//处理来自brokervoid回调的传入消息(char*主题,byte* payload,无符号int长度){字符串响应;对于(int i=0);i < length;i++) {    response += (char)payload[i];}serial.print(“消息到达[”);连续打印(主题);serial.print(“]”);serial.println(响应);如果(response=“on”)//打开灯数字写入(light_pin,高);client.publish(STATE_TOPIC,"on");}  else if(response == "off")  // Turn the light off  {    digitalWrite(LIGHT_PIN,低);client.publish(state_topic,“off”);}}//连接到WiFi网络void设置_wifi()serial.print(“\n连接到”);序列号.println(ssid);WiFi。开始(ssid,password);// Connect to network  while (WiFi.status() != WL_CONNECTED) { // Wait for connection    delay(500);序列号。打印(“.”);}serial.println();serial.println(“WiFi连接”);serial.print(“IP地址:”);Serial.println(WiFi.localIP());}// Reconnect to clientvoid reconnect() {  // Loop until we're reconnected  while (!client.connected()) {    Serial.print("Attempting MQTT connection...");//尝试连接if(client.connect(id,ha_user,ha_pass))client.subscribe(topic);serial.println(“已连接”);serial.print(“订阅至:”);serial.println(主题);Serial.println('\n');}else serial.println(“5秒钟后重试”);//在重试延迟(5000)前等待5秒;}}}void setup()serial.begin(115200);//以115200波特的pinmode(light_pin,OUTPUT);//将灯针配置为输出延迟(100);StUpUIWiFig();//连接到network client.setserver(broker,1883);client.setcallback(callback);//初始化回调例程void loop()if(!client.connected())//如果连接丢失,则重新连接reconnect();}client.loop();
        
       

一旦代码上传,打开终端窗口,确保灯成功连接到WiFi,并已连接到MQTT网络。两个设备连接好后,您可以按下按钮连接到IO引脚0的ESP32的东西加上作为一个开关和LED上的IO引脚13的灯应该打开。Pressing the button a second time should turn off the LED.

示例1.5:从家庭助理控制ESP32

在第一个例子中,我们将两个ESP32 Thing Plus板连接到家庭助理的蚊子经纪人。即使服务器在后台运行,Home Assistant doesn't know what topics the Thing Plus boards are subscribing and publishing to.要解决这个问题,我们需要让家庭助理订阅这些主题,这是通过将组件添加到配置文件来完成的。返回configurator选项卡,再次打开configuration.yaml文件。

我们要添加的第一个设备是交换机组件,就像我们添加了mqtt组件一样,无论我们在哪里将交换机添加到配置文件中,但为了保持组织有序,我们将在MQTT初始化下面添加以下行。

switch:-平台:mqtt name:“example_switch”command_topic:“room/light”payload_on:“on”payload_off:“off”

首先,我们告诉家庭助理我们要添加一个开关组件。交换机使用MQTT平台,并且有一个名为“example_switch”。开关将命令(或发布到)一个名为“房间/灯光”的主题,this is the same name of the mqtt topic we're publishing to in the ESP32's Switch Arduino sketch.有效负载是通过命令主题发送的消息,用于打开和关闭灯。

我们要添加的第二个设备是位于开关组件正下方的灯组件,它有一条空行,将开关组件与灯组件分隔开。

灯:-平台:mqtt名称:“示例灯”命令主题:“房间/灯”状态主题:“房间/灯/状态”有效载荷“打开:”打开“有效载荷”关闭:“关闭”

与开关元件类似,we told Home Assistant that we would like to add a light component.The light uses the MQTT platform,有一个名字叫“示例灯”。The light will listen for commands from the topic "room/light",这是我们在ESP32的轻阿尔杜诺素描中定义的相同主题。我们监听的有效载荷是“打开”来打开灯,and "off" to turn the light off.一旦添加了这些行,配置文件应如下所示:

Configuration file with light and switch

单击图像以更近距离查看。

一旦添加了灯和开关组件,我们需要再次保存配置文件,检查配置是否有效,然后重新启动服务器。服务器重新启动后,单击Overview从左侧菜单栏。从那里你可以看到你的灯和开关元件,否则,您可能需要进行故障排除。

如果你能看到你的组件,点击灯的滑动开关或开关的闪电符号将打开ESP32的LED。你也可以从家庭助理那里看到,the light bulb symbol of the light also turned on.家庭助理可以通过使用状态主题在配置文件中以及从灯光的Arduino草图发布到主题中。如果我们移除了状态主题从光中,我们可以控制光线,but we wouldn't be able see from Home Assistant if the light is on or off.

所以我们可以添加自己的设备,我想这很酷,但这基本上在MQTT教程中有效。那么为什么要使用家庭助理呢?下一个示例将显示您不仅可以添加自己的设备,但是,你可以购买设备,并且可以在开箱即用的情况下工作。

故障排除提示

未使用实体

如果你看不到你的灯和开关,它们可能在未使用的实体中。看他们,单击右上角的3个垂直点并选择未使用实体如下所示。Or click on following link to load your unused entities page (http://hassio.local:8123/lovelace/hass-unused-entities

Show unused entities

单击图像以更近距离查看。

在此页面中,您将看到所有未使用的实体,包括示例灯和示例开关:

Unused entities page

单击图像以更近距离查看。

任何一个组件都不显示

如果您仍然可以看到所有组件,问题可能是您的MQTT代理。要解决这个问题,go into the configurator and open your configuration file.从配置文件,删除mqtt组件和代理IP地址,但是离开灯和开关组件。完成后按保存,然后重新启动服务器。一旦它重新上线,单击左侧菜单栏上的配置,点击积分(http://hassio.local:8123/config/integrations/dashboard(本地:8123/config/integrations/dashboard)

Highlight of Integrations

单击图像以更近距离查看。

如果您的mosquitto broker附加组件已启用并正在运行,您应该在发现部分中看到一个MQTT组件;点击配置.

MQTT发现

单击图像以更近距离查看。

From this page,您可以选中启用发现框,然后按提交。And your devices should now be visible either from the overview or unused entities pages.

设置MQTT

Example 2: Adding Commercial Switches

在第一个示例中,我们使用自己编程的设备将设备添加到家庭助理。添加商用设备更容易。In this example we're going to be adding WiFi plug switches that can easily be bought online.要查看家庭助理当前支持哪些设备,威廉希尔公司在哪退房组件页.从那里你可以找到流行的制造商,如亚马逊Alexa,鸟巢,SmartThings,眨眼,WeMo还有更多。如果你没有立即看到你的设备,您可以尝试根据设备的功能在左侧栏下搜索设备。

在这个例子中,我们将在品牌iselector下添加智能插头。他们没有什么特别的地方,只是一个便宜的WiFi插头开关,与亚马逊Alexa和谷歌助手一起工作。它们确实要求您下载应用程序以将插头连接到无线网络。If you're searching for your own smart devices and aren't sure if they'll work with Home Assistant,使用设备+家庭助理的谷歌搜索至少应该给你一些家庭助理论坛的问题和答案,以帮助你决定。

ISelector智能插头

图片由amazon.com提供

With the iSelector plugs,他们使用一个叫做智能生活的应用程序,这需要你注册一个免费帐户。当我们将插件添加到家庭助理时,我们需要应用程序的名称和登录凭据。

向家庭助理添加插头

一旦您有了兼容的设备并将其添加到网络中,是时候把它和家庭助理结合起来了。i选择器设备在Tuya Light组件下工作,so to add the device we'll the following to our configuration file after our MQTT light:

图雅:用户名:“用户名”替换为您的用户名密码:“密码”替换为您的密码国家/地区代码:“1”您用于注册的国家/地区代码。美国是一个平台:“智能生活”用于创建帐户的应用程序的名称

After adding those lines,我们的configuration.yaml文件应该如下所示:

configuration file with mqtt and tuya components added

Once again,save the configuration file,检查配置,然后重新启动服务器。When the server comes back online,您可以回溯到概览或未使用的实体页,并且应该看到您的设备在交换机下添加。Clicking on the slider will turn the switch on and off.

带WiFi插头的未使用实体页面

单击图像以更近距离查看。

例3:自动化

如果你熟悉这个,那么这个(ifttt)自动装置,它们的工作原理非常相似。Automations consist of three parts: Thetrigger开始处理自动化规则,可选的条件可用于防止触发时发生的动作(例如)。只有在一段时间内,或者仅当开关当前打开或关闭时,和行动自动启动时,家庭助理将执行哪个操作。

在本例中,我们将创建从第一个MQTT示例触发的自动化,以切换第二个示例的WiFi插头,以显示如何使用Home Assistant获取您制作并编程以控制商用设备的设备,或者在我们的例子中是一个WiFi插头开关。

创建自动化

要创建自动化,您可以使用配置工具编辑automatics.yaml文件,或者在这种情况下,使用自动化工具生成代码。要创建自动化,从左侧菜单栏中选择配置,然后单击自动化(或转到http://hassio.local:8123/config/自动化)单击右下角的“添加自动化”按钮。

添加自动化,箭头指向添加新的自动化

单击图像以更近距离查看。

我们需要做的第一件事就是给自动化命名。The name is only used to remember what the automation does,so we can simply put "MQTT -> WiFi Plug".For the trigger,我们将选择mqtt作为触发器类型,主题设置为“房间/插头”,对于有效载荷,输入“toggle”。

添加MQTT自动化触发器

单击图像以更近距离查看。

我们不需要为自动化增加任何条件,因此,对于这些操作,我们将把操作类型设置为“调用服务”。For the service we'll select "switch.toggle",and for our service data we'll enter "{ "entity_id": "switch.xxxxxxxxxxxxx" }" where the x's represent your plug's serial number.完成后,按右下角的“保存”按钮,and go back to configuration -> general and check the config and restart the server.

向自动化添加操作

单击图像以更近距离查看。

查找实体ID

如果您很难找到设备的实体ID,您可以在左侧菜单栏“服务”下的“开发人员工具”部分中查找它。

Opening developer tools

从服务页面,您可以选择服务“switch.toggle”,从实体中选择插头。从那里,您可以复制所有服务数据并将其粘贴到服务数据条目中,以实现自动化。

检查服务数据

单击图像以更近距离查看。

ESP32码

当我们等待服务器重新启动时,我们需要从第一个示例修改开关草图。在第一个示例中,我们通过“on”和“off”的MQTT在“room/light”主题上发送消息。为了让我们的自动化系统正确触发,我们要将主题更改为“room/plug”,并将我们发送的消息更改为“toggle”,以匹配自动化的触发事件。将以下代码复制并粘贴到您的Arduino IDE中,然后上传到ESP32。

语言:C/****************************************************************************mqtt_switch_example.ino使用mqtt switchby控制灯光的示例:alex wende,英国威廉希尔sparkfun electronics此草图将ESP32连接到MQTT代理,并将消息“toggle”发布到主题“room/plug”。*************************************************************************************/包括
       
        包括:
        
         //WiFi网络证书,COSST CHAR*SSID=“-----”;//您的WiFi网络名称const char*password=“-----”;//wifi网络的密码//家庭助理凭证cst char*ha_user=“-----”;const char*ha_pass=“-----”;//mqtt networkipaddress broker(192168,1,-);//您的mqtt代理的IP地址,例如192.168.1.50常量字节开关_pin=0;// Pin to control the light withconst char *ID = "Example_Switch";//设备名称,must be uniqueconst char *TOPIC = "room/plug";//要订阅toconst char*message=“toggle”的主题;//要发布到topicwificlient wclient;pubsubclient客户端(wclient)的消息;// Setup MQTT client// Connect to WiFi networkvoid setup_wifi() {  Serial.print("\nConnecting to ");序列号.println(ssid);WiFi。开始(ssid,password);// Connect to network  while (WiFi.status() != WL_CONNECTED) { // Wait for connection    delay(500);序列号。打印(“.”);}serial.println();serial.println(“WiFi连接”);serial.print(“IP地址:”);Serial.println(WiFi.localIP());}// Reconnect to clientvoid reconnect() {  // Loop until we're reconnected  while (!client.connected()) {    Serial.print("Attempting MQTT connection...");//尝试连接if(client.connect(id,ha_user,ha_pass))serial.println(“connected”);serial.print(“发布到:”);serial.println(主题);Serial.println('\n');}else serial.println(“5秒钟后重试”);//在重试延迟(5000)前等待5秒;}}}void setup()serial.begin(115200);//在115200波特PINMODE(开关管脚,输入)下启动串行通信;// Configure SWITCH_Pin as an input  digitalWrite(SWITCH_PIN,HIGH);//启用上拉电阻(低有功)延时(100);StUpUIWiFig();//连接到network client.setserver(broker,1883);void loop()if(!client.connected())//如果连接丢失,则重新连接reconnect();}client.loop();//如果按下开关(digitalread(switch_pin)=0)client.publish(topic,消息);serial.println((string)topic+“=>toggle”);while(digitalread(switch_pin)==0)//等待释放开关延迟(20);} }
        
       

一旦代码上传,服务器重新启动,转到概述或未使用的实体,确保您的自动化已启用。一旦是,当您按下ESP32上连接到IO引脚0的按钮时,插头应切换状态。

启用自动化

单击图像以更近距离查看。

低功耗更进一步

有恒定的电源,ESP32抽取的电流量并不是什么大问题。但是有了一个WiFi遥控器,电池电源可能更适合将开关移动到任何你想移动的地方。为了充分利用电池,你会想要画尽可能少的电流,所以,要做到这一点,我们将把ESP32置于低功率模式,当按下按钮时,我们想唤醒ESP32,连接到WiFi和MQTT服务器,发送我们的信息然后回去睡觉。下面的草图,在睡眠模式下,ESP32 Thing Plus将消耗大约5毫安的电流,在发送mqtt包时,最高可达160ma。

语言:C/****************************************************************************低功耗_mqtt_开关_示例。使用mqtt开关控制灯光的示例:alex wende,英国威廉希尔sparkfun electronics此草图进入低功率模式,等待按下IO引脚0。受压后,ESP32唤醒,连接到WiFi和MQTT代理,andpublishes "toggle" to the topic "room/plug" and goes back to low power mode.******************************************************************************/#include
       
        包括:
        
         //WiFi网络证书,COSST CHAR*SSID=“-----”;//您的WiFi网络名称const char*password=“-----”;//wifi网络的密码//家庭助理凭证cst char*ha_user=“-----”;const char*ha_pass=“-----”;//mqtt networkipaddress broker(192168,1,-);//您的mqtt代理的IP地址,例如192.168.1.50常量字节开关_pin=0;// Pin to control the light withconst char *ID = "Example_Switch";//设备名称,must be uniqueconst char *TOPIC = "room/plug";//要订阅toconst char*message=“toggle”的主题;//要发布到topicwificlient wclient;pubsubclient客户端(wclient)的消息;// Setup MQTT client// Connect to WiFi networkvoid setup_wifi() {  Serial.print("\nConnecting to ");序列号.println(ssid);WiFi。开始(ssid,password);// Connect to network  while (WiFi.status() != WL_CONNECTED) { // Wait for connection    delay(10);序列号。打印(“.”);}serial.println();serial.println(“WiFi连接”);serial.print(“IP地址:”);Serial.println(WiFi.localIP());}// Reconnect to clientvoid reconnect() {  // Loop until we're reconnected  while (!client.connected()) {    Serial.print("Attempting MQTT connection...");//尝试连接if(client.connect(id,ha_user,ha_pass))serial.println(“connected”);serial.print(“发布到:”);serial.println(主题);Serial.println('\n');}else serial.println(“5秒钟后重试”);//在重试延迟(5000)前等待5秒;}}}#用hex/*方法定义按钮_pin_bitmask 0x200000000//2^33,打印从睡眠中唤醒esp32的原因*/void wakeup reason()esp _sleep _wakeup _cause _t wakeup _reason;wakeup_reason=esp_sleep_get_wakeup_cause();if(wakeup_reason==esp_sleep_wakeup_ext0)设置_wifi();//连接到network client.setserver(broker,1883);如果(!)如果丢失连接{ReNeldType(),连接/()连接/ /重新连接;}client.loop();client.publish(主题,消息);serial.println((string)topic+“=>toggle”);while(digitalread(switch_pin)==0)//等待释放开关延迟(20);}}}void setup()serial.begin(115200);唤醒_reason();/*首先,我们配置唤醒源,将ESP32设置为唤醒外部触发器。There are two types for ESP32,EXT0和Ext1。ext0使用rtc_io唤醒,因此需要开启rtc外围设备,而ext1使用rtc控制器,因此不需要开启外围设备。Note that using internal pullups/pulldowns also requires  RTC peripherals to be turned on.*/esp_sleep_启用_ext0_唤醒(gpio_num_0,0);/ / 1=高,0=低//转到sleep now serial.println(“going to sleep now”);esp_deep_sleep_start();void loop()//这不会被调用
        
       

当你这次按下按钮时,您应该注意到在插头打开或关闭之前有一个延迟。The main reason is the time it takes to connect to the WiFi network and then to the MQTT server.我们还能怎么做呢?这些例子是为了演示简单的概念验证演示。通过焊接更多的按钮和添加一个箱子,你可以创建一个遥控器,可以打开和关闭一束灯光,一次一个,或者分组,只需添加更多的自动操作,并设置远程上的每个按钮以发送不同的mqtt命令。

Resources and Going Further

这本指南甚至没有触及家庭助理的能力。并与QWIIC连接系统在ESP32 Thing Plus上,你可以向家庭助理添加大量的设备,而不必等待烙铁加热。有关家庭助理的更多信息,看看下面的链接:

下一个项目需要一些灵感吗?英国威廉希尔查看以下一些相关教程:

在Edison上加载Debian(ubilinux)

如何将Debian发行版(特别是ubilinux)加载到Edison上。

WiFi Controlled Robot

This tutorial will show you how to make a robot that streams a webcam to a custom website that can be remotely controlled.

ESP32 Thing Plus连接指南

Hookup guide for the ESP32 Thing Plus using the ESP32 WROOM's WiFi/Bluetooth system-on-chip in Arduino.

现场Spotify专辑艺术展示

williamhill英格兰Learn how to turn our 64x64 RGB LED Matrix Panel into a display for your current Spotify album art using an ESP32.

williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

用GPS模块显示坐标 布兰登J。威廉姆斯 https://www.英国威廉希尔sparkfun.com/users/10219 urn:uuid:5D9cab57-e0f3-721a-58e7-fdd9df081b79 2019年4月30日00:00:00-06:00

用GPS模块显示坐标williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t892

介绍

什么比学习更好?williamhill英格兰全球定位系统?williamhill英格兰好好学习!今天我们将做一个简单的项目来帮助你的脚与GPS湿。英国威廉希尔由于我们的英国威廉希尔QWIIC连接系统.The general idea is to push a button and see your latitude and longitude coordinates.我们开始可能很简单,但是,对于更高级的用户来说,当然还有空间修改和扩展这个项目!英国威廉希尔

软件开发人员从“你好,世界!”每个硬件工程师都记得他们的第一个LED电路,正确的?因此,让我们通过创建一个接收GPS信号并将其输出到用户屏幕的项目来融合这些想英国威廉希尔法。然后我们可以让它移动起来。I've got just the thing in mind!

英国威廉希尔project parts image

所需材料

要遵循本教程,你需要以下材料。你可能不需要一切,取决于你有什么。Add it to your cart,通读指南,并根据需要调整手推车。

建议阅读

如果你不熟悉QWIC系统,我们推荐阅读这里概述一下.

QWIIC连接系统
QWIIC连接系统

如果您不熟悉以下教程,我们还建议您查看它们。

I2C

I2c简介,one of the main embedded communications protocols in use today.

Qwiic Micro OLED Hookup Guide

Get started displaying things with the Qwiic Micro OLED.

Redboard QWIIC连接指南

This tutorial covers the basic functionality of the RedBoard Qwiic.本教程还介绍了如何开始闪烁LED和使用QWIIC系统。

英国威廉希尔Sparkfun GPS突破(Zoe-M8Q和Sam-M8Q)连接指南

The 英国威廉希尔SparkFun ZOE-M8Q and SAM-M8Q are two similarly powerful GPS units but with different 英国威廉希尔project applications.我们将在每次启动和运行之前比较两个芯片。

硬件概述

我们使用三个大部件,9V电池,和QWIIC电缆。让我们先看看更大的部件,然后才开始。

红木QWIC

首先,我们项目的核心。英国威廉希尔这个开发板是我们经典红板的一个演变。No change to programming with Arduino,所以软件仍然很简单。However,这使得我们可以简化QWIIC的开发,而不需要屏蔽。如果你有一个经典的红板并且仍然想做这个项目,英国威廉希尔武装自己,抓住盾牌!

英国威廉希尔Sparkfun红板QWIIC

英国威廉希尔Sparkfun红板QWIIC

DEV-15123
19.95美元

QWIIC微型OLED

我们将使用一个简单的OLED屏幕读取坐标。Our product page describes this component best: "This version of the Micro OLED Breakout is exactly the size of its non-Qwiic sibling,它的屏幕宽64像素,高48像素,宽0.66英寸,所以我们有一个小而有力的屏幕,这是我们理想的选择。

英国威廉希尔SparkFun Micro OLED Breakout (Qwiic)

英国威廉希尔SparkFun Micro OLED Breakout (Qwiic)

LCD-14532
16.95美元

Sam-M8Q芯片天线GPS分接头

最后,we will use a GPS module and we have one perfect for this occasion.新的GPS突破带来了轻松,质量,and affordability from a great line of GPS modules from u-blox.最大的特点是热启动和低锁定时间与可充电硬币电池。这意味着我们有一个强大的,价格便宜的GPS,适合在一个小空间,将做我们所有的与上面的卫星通话!

英国威廉希尔Sparkfun GPS突破芯片天线,SAM-M8Q (Qwiic)

英国威廉希尔Sparkfun GPS突破芯片天线,SAM-M8Q (Qwiic)

GPS-15210
39.95美元

硬件连接

Technically,我们只有一个元件可以焊接——按钮开关。说实话,你可以用一些鳄鱼夹,甚至不需要熨斗。我们有其他颜色,但我偏向绿色,我非常喜欢金属瞬间开关的强度和感觉。当我们将连接焊接到适合Redboard上的头段的跨接导线上时,我假设你已经掌握了一些焊接技能。If not,那很好。我们有一个辅导的也为了这个。Feel free to head over there and then put those wizard skills to work!

如果你在焊接,然后你可以跟我联系。There are many ways to use switches,but I went for a momentary digital low.这就意味着,当我按下按钮时,指定的数字管脚上的电压将从5伏降至0伏。On the bottom of the switch you'll see a '+' and a '-'.These are for the LED backlight,分别为5伏和接地。When you angle the button and look at that bottom portion,你会看到一些标号为“C1”的PIN指示器,“NC1”,“NO1”。NC1 and NO1 stand for normally closed and normally open.我们要焊接C1和NO1。当我们按下按钮时,这个组合会使我们的数字变低。

按钮及其插脚的图像

按如下方式将按钮销连接到Redboard QWIIC上:

按钮销 红木钉
+ 5V
- GND
C1 GND
NO1 数字引脚2

组装的下一部分非常简单。只需将我们的电路板与Qwiic电缆连接起来,秩序并不重要!

您的最终组装应该如下所示:

装配的皱褶图像

很难看到电路?单击图像以更近距离查看。

如果您想在步骤中进行上述操作,那么可以将每个组件分别连接到Redboard进行实验。如果你想跳过它,把谨慎抛诸脑后,then please jump down to final code.

软件设置

注:此代码/库已在Arduino IDE 1.8.5版上编写和测试。否则,确保在桌面上使用最新稳定版本的Arduino IDE。

如果这是你第一次使用Arduino,请回顾我们的教程 安装Arduino IDE。如果您以前没有安装过Arduino库,请查看我们的 安装指南。

英国威廉希尔Sparkfun微型OLED库

第一,您需要下载并安装SparkFun Micro OLED库。英国威廉希尔您可以通过Arduino库管理器通过搜索来安装库'英国威廉希尔Sparkfun微型OLED突破'.或者,您可以从Github存储库或者使用下面的按钮:

英国威廉希尔Sparkfun U-Blox Arduino图书馆

您还需要为GPS设备安装ublox库。The 英国威廉希尔SparkFun U-blox Arduino library can be downloaded with the Arduino library manager by searching '英国威廉希尔斯巴克菲尔或者你可以从这里拿拉链Github存储库

从连接导轨,我希望你对我们如何建立这个项目有很好的了解。英国威廉希尔我们想读取一个GPS定位,并输出我们的纬度和经度到微型OLED屏幕,这样我们就可以看到我们在哪里。听起来很简单。让我们从Qwiic微型OLED屏幕开始。

示例代码

微OLED码

我修改了我们的连接指南中的一段代码,对向OLED屏幕写入文本的小测试进行了修改。在使用之前,确保已安装Micro OLED库,如中所列软件设置以上章节。复制代码,粘贴到Arduino IDE中,select theArduino/Genuino乌诺,以及COM端口,点击上传测试!

语言:C包括
       
        //如果使用I2c include
        
         //include the sfe欷microoled library/////////////////////////////////microoled definition///////////////////////////////////////库假定需要重置pin。QWIIC OLED具有第一个硬接线,因此,选择一个未被使用的仲裁IO插脚define插脚reset 9//DC U跳线是I2c地址选择跳线。如果跳线打开(默认),则设置为1。或在关闭时设置为0。定义DC覕跳线1///////////////////////////////////////////microoled对象声明////////////////////////////////////////////microoled OLED(pin重置,跳远运动员;// I2C declarationvoid setup(){  delay(100);Wire.begin();OLED。OLED.清除(全部);OLED。延迟(1000);oled.clear(page);void loop()printTest(“lat:-45.97760\nlong:42.91841”,0);void printtest(字符串标题,int字体)oled.clear(page);oled.setFontType(font);oled.setcursor(0,0);oled.print(title);OLED。延迟(1500);OLED.CLEAR(第页);
        
       

一旦库安装好,我们就可以简单地编译并在屏幕上看到一个虚拟文本。

带坐标的微光致冷器图像

GPS编码

One done,两个去。接下来我们将测试我们的Sam-M8Q GPS模块。我个人发现示例3获取位置由Nathan Seidle编写的代码是最容易和最方便的实验代码。我们在下面找到这个草图文件>实例>英国威廉希尔.找不到吗?确保已按照上述说明安装了此GPS模块的库。软件设置.没关系,我会等的。I may perhaps make some tea.准备好后告诉我,把数据传给Arduino串行监视器.If that's new to you,只需验证并上传代码板,点击右上角的放大镜。将波特率设置为十一万五千二百,除非你想知道我们的外星霸主必须说什么。

连接到Redboard的GPS模块

最终代码

如果你在这里,I take it that you've mastered the OLED Screen and SAM-M8Q module?我相信你已经准备好了!严肃地说,这是简单的部分。我混合了前面两段代码,使用该按钮触发GPS模块的读取,并将纬度和经度输出到OLED屏幕。如果你觉得聪明,通读一遍,然后对我所做的进行逆向工程,这样你就可以做出辉煌的修改!I say williamhill英格兰learn by breaking,通过重建掌握。

语言:C包括
       
        包括:
        
         #包括“sparkf英国威廉希尔un-ublox-u-arduino-library.h”//http://librarymanager/all sparkfun-ublox-u-gps define-pin reset 9 define-dc跳线1sfe ublox u-gps-mygps;微冷OLED(pin reset,DC_JUMPER);const int buttonPin = 2;const int ledPin =  13;int buttonState = 0;void setup() {  Wire.begin();延迟(100);OLED。OLED.清除(全部);OLED。延迟(1000);oled.clear(PAGE);OLED。oled.setFontType(0);oled.setcursor(0,0);引脚模式OUTPUT);针脚(钮扣)INPUT_PULLUP);}void loop() {     buttonState = digitalRead(buttonPin);if(buttonstate==low)if(mygps.begin()==false)oled.clear(page);OLED打印(“无GPS”);OLED。延迟(1500);oled.clear(PAGE);OLED。oled.setcursor(0,0);}if(mygps.begin()==true)mygps.seti2cOutput(com_type_ubx);mygps.saveconfiguration();float latitude = myGPS.getLatitude();纬度=纬度/10000000;float经度=mygps.get经度();经度=经度/10000000;//////////////////////////////////////////////取消高度注释,添加到输出//////////////////////////////////////////////////////////////float altitude=mygps.getaltitude();/////////////////////////////////////////////////////////////////////////////////////////OLED.clear(page);OLED打印(“LAT:”);oled.print(latitude,6);oled.print(“\n日志:”);OLED打印(经度,6);OLED。delay(10000);oled.clear(PAGE);OLED。oled.setcursor(0,0);}    }}
        
       

一切都联系在一起,按下按钮查看OLED上的坐标!Instead of using your USB for power,将9V电池连接到Redboard以移动!

GIF of pushing button and getting coordinates

我们把它包起来吧

“嘿,聪明的家伙!这是怎么教我GPS的?”在这个蓝色的大球上我们都占有一个特定的位置。有几十颗卫星在我们的上空盘旋。This 英国威廉希尔project gives you the tools to talk to them and physically see your coordinates in the simplest of means.最好的部分是谷歌地图采用纬度/经度坐标。这意味着你可以看到你在地图上的位置。对,对,你的手机有GPS接收器和谷歌自动修复到你的位置,but this is so much more fun!

为了我自己,这个项目有英国威廉希尔特殊的用途。我喜欢钓鱼,我是个书呆子。所以我在这个项目中的用途是绘制捕获物的地图英国威廉希尔。当我破纪录地捕捉到了不可思议的大小(好吧,我的大部分奖杯都在4英寸左右,但让我们继续前进,我拍张照片,然后安全地释放那个小家伙。我想做的是使用我从小工具上写下的坐标对捕获物进行地理标记,然后将它们固定到捕获物的图片上。这样我就可以回头看我最大的捕获量在哪里,这样我就可以再次去那里,或者只是做一些关于湖泊健康的假设。你知道的,everyday normal things.

我希望你和我一样喜欢这个教程。让我们知道您是如何使用这个项目的,或者您是如何修改它的。英国威廉希尔如果你抓到了一些大家伙,那就尽你所能给那个地方贴上QWIIC标签!

Resources and Going Further

如果您想更深入地了解本教程中使用的位和bob,看看下面的链接:

英国威廉希尔Sparkfun红板QWIIC

英国威廉希尔SparkFun Micro OLED Breakout (Qwiic)

英国威廉希尔Sparkfun GPS突破芯片天线,SAM-M8Q (Qwiic)

卫星星座


williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

无线手势控制机器人 博博霍 https://www.英国威廉希尔sparkfun.com/users/10192 urn:uuid:bfa32ca5-bcdc-e61d-ee56-971c68aa469a 2019-04-25T00:00:00-06:00

无线手势控制机器人williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t889

介绍

使用加速度计和XBees,根据手的移动无线控制Redbot!

Full Demo

所需材料

要遵循本教程,你需要以下材料。但你可能并不需要一切,这取决于你拥有什么。Add it to your cart,通读指南,并根据需要调整手推车。

Tools

你需要电线,wire strippers,一个烙铁,焊料,和通用焊接附件.

连接线-种类(实心,22 AWG)

连接线-种类(实心,22 AWG)

PRT-11367
16.95美元
二十九
Soldering Iron - 60W (Adjustable Temperature)

Soldering Iron - 60W (Adjustable Temperature)

TL-14566
12.95美元
无铅焊锡-15克管

无铅焊锡-15克管

TL—09163
3.50美元
剥线钳-20-30AWG

剥线钳-20-30AWG

TL-14763
14.95美元

你也需要

  • Glove
  • Scissors
  • 非导电螺纹

建议阅读

如果您不熟悉以下概念,我们建议在继续之前先查看这些教程。本教程从无线手套控制器带Arduino和XBees的无线遥控机器人tutorials.请务必检查指南。

新!

无线手套控制器

4月24日,2019

用Arduinos建立一个无线手套控制器,用XBee触发一个LED!

带Arduino和XBees的无线遥控机器人

March 12,2019

In this tutorial,我们将扩展Redbot的sik,用xbee无线电无线控制机器人!我们将探索一种不同的微控制器,并远程无线控制Redbot。

加速度计基础

快速介绍加速度计,它们是如何工作的,以及为什么它们被使用。

XBee Shield Hookup Guide

如何开始使用XBee Shield和Explorer。创建一个遥控器Arduino!

Assembly Guide for RedBot with Shadow Chassis

Redbot工具包的装配指南。This tutorial includes extra parts to follow to go along with the RedBot Inventor's Kit tutorial.

探索XBees和XCTU

如何使用计算机设置XBEE,X-CTU软件,以及XBEE Explorer接口板。

Experiment Guide for RedBot with Shadow Chassis

This Experiment Guide offers nine experiments to get you started with the 英国威廉希尔SparkFun RedBot.本指南是为那些熟悉我们的SparkFun发明家工具包并希望将他们的机器人技术知识提升到下一个层次的人而设计的。英国威廉希尔

了解你的线路

无线手套控制器

此项目的连接应与英国威廉希尔initial circuit.唯一的区别是加速度计和模拟参考针的连接,如下图所示。

无线手势控制器电路图

模拟加速度计

由于ADXL335需要3.3V,我们需要把VCC插头连接到3.3V。To complete the connection for power,您需要将GND连接到GND。然后为X,Yand z pins,您需要将它们连接到针脚2,1,0,分别。

配置AREF

由于ADXL335为3.3V,我们需要连接Arduino's AREF pin至3.3V插脚。这将配置用于加速度计模拟输出的参考电压。因此,我们可以测量较小的电压(即your 3.3V output) with the best resolution on a 5V Arduino.

Assembled Shadow Chassis

我们假设你有一个带阴影底盘的组装机器人.

Assembly Guide for RedBot with Shadow Chassis

5月28日,二千零一十五

Redbot工具包的装配指南。This tutorial includes extra parts to follow to go along with the RedBot Inventor's Kit tutorial.

硬件连接

修改XBee屏蔽

在手套上加上无线手套控制器辅导的,拆下胶带并将编织线与屏蔽线断开。Then pull the XBee shield off the RedBoard.

顶视图V1手套

使用电路图用加速度计,焊料ADXL335转接板连接到护罩。在这种情况下,female headers were used with male headers soldered on the breakout.然后带状实心芯,挂钩钢丝把它们焊接在两个针之间。如果你跟在后面,您的板应该看起来类似下面的图像。当你准备好了,stack the board back on top of the RedBoard and secure the battery.

焊接在XBEE屏蔽上的部件的俯视图 带电线和跳线的底视图
焊接在XBEE屏蔽上的部件的俯视图 带电线和跳线的底视图

配置XBees

要配置XBees,我们将使用XBEE Series 1固件。建议使用XBeeExplorer USB配置每个XBee。

xbee插入的int xbee explorer USB配置

如果你还没有,退房从XCTU开始section under Exploring XBees and XCTU to configure your XBees.

探索XBees和XCTU

March 12,二千零一十五

如何使用计算机设置XBEE,X-CTU软件,以及XBEE Explorer接口板。

点对点配置

为简单起见,we will be sending commands with the XBees in transparent mode set for a point-to-point configuration.如果您的ch和pan id中有两个以上的xbee,请确保为每个xbee配置一个唯一的my地址。然后,您需要调整每个XBEE的DL地址。

设置 首字母缩略词 传输XBEE节点1
(无线手套控制器)
接收XBee节点2
(机器人)
通道 CH C C
泛ID 身份证件 三千三百三十三 三千三百三十三
目标地址高 DH
目标地址低 动态链接库
16位源地址 我的

设置Arduino

注:此示例假设您正在桌面上使用ARDUNO IDE的最新版本。如果这是你第一次使用Arduino,请回顾我们的教程 安装Arduino IDE。

Redbot主板

FTDI驱动程序

Remember,为你的机器人编程,您首先需要安装一些FTDI驱动程序。Follow the steps in如何安装ftdi驱动程序这样做。这在Redbot指南中也有解释。

如何安装ftdi驱动程序

6月4日,二千零一十三

如何在Windows上安装FTDI驱动程序,Mac OS X,和Linux。

阿杜诺图书馆

注:如果您以前没有安装过Arduino库,请查看我们的 安装指南。

确保按照中的说明安装Redbot库。Redbot库快速参考.您还可以找到ReBBOT图书馆的快速概览,类,方法,和变量。


例子

无线手套代码

在本部分示例中,we'll have the glove send a character when the thumb and middle finger make contact.只要两个手指有接触,the robot will move forward,向前向左,回来,或者根据手的方向向前-向右。当自定义按钮未被按下时,当你挥手或“猛击”空气时,蜂鸣器会发出熟悉的8位声音。RGB LED将根据手的模式和方向亮起。

复制代码,粘贴到Arduino IDE中,选择你的董事会(Arduino/Genuino乌诺)和COM端口。然后把代码上传到手套上。

语言:C//我们将使用SoftwareSerial与XBEE通信:包括
       
        //对于ATMEGA328P,/XBEE的DOUT(TX)连接到插脚2(Arduino的软件Rx)//XBEE的DIN(Rx)连接到插脚3(Arduino的软件Tx)软件串行XBEE(2,3);/接收,Tx//对于ATMega2560,ATMEGA32 U4,etc.//xbee的dout(tx)连接到pin 10(Arduino的软件rx)//xbee的din(rx)连接到pin 11(Arduino的软件tx)//softwareSerial xbee(10,11);/接收,TX//set analog read pinsconst int xPin = 2;//x=A2const int yPin = 1;//y=A1const int zPin = 0;//z=A0//read the analog values from the accelerometerint xRead = analogRead(xPin);int yRead = analogRead(yPin);int zRead = analogRead(zPin);//LED Status Indicatorint ledR = 5;//hardware PWMint ledG = 6;//hardware PWMint ledB = 9;//硬件脉宽调制//加速按钮定义加速按钮4//用于加速按钮的引脚const int ledpin1=13;//按钮上的LED布尔值电流_buttonAccelerate _state;void setup()//将数字管脚初始化为LED PinMode(ledPin1,OUTPUT);皮诺德(LeDR)OUTPUT);皮诺德(LeDG)OUTPUT);品德模式OUTPUT);analogreference(external);//参考3.3V,因为使用3.3V加速度计pinmode(加速按钮,INPUT_PULLUP);//启用加速按钮d2的上拉电阻//将两个端口设置为9600波特。This value is most important  // for the XBee.确保波特率与xbee的配置//设置匹配。开始(9600);对于(int i=0);I<3;i++)数字写入(ledpin1,高);延迟(50);数字写入(Ledpin1,低);延迟(50);}sequencetest();//可视化初始化serial.begin(9600);serial.println(“无线XBee手套控制器初始化”);void loop()current_buttonAccelerate_state=digitalread(Accelerate_button);//读取加速度计轴通过ADC//Note:基于加速度计模式的特征XRead=类比(XPIN)检查顶部的结果;serial.print(“模拟xpin(a2=”);序列号.println(xread);yRead =类比(YPIN);serial.print(“模拟ypin(a1=”);序列号.println(yread);Zread=模拟读取(Zpin);serial.print(“模拟Zpin(A2)=”);序列号.println(zread);serial.println(“”);/ /延迟(500);//放慢打印速度,根据测试需要调整if(current_button accelerate_state==low)if(xread<430)serial.print(“drive forward,XRead=“”;序列号.println(xread);serial.println(“a”);xbee.write(“a”);绿色();}否则,如果(xread>590)serial.print(“向后驱动,XRead=“”;序列号.println(xread);串行打印(“C”);xbee.write(“c”);蓝光();}否则,如果(Yread>590)serial.print(“向右行驶,yRe= =“”;序列号.println(yread);serial.println('b');xbee.write(“b”);氰();}    else if (yRead < 430) {      Serial.print("Drive Forward Left,yRe= =“”;序列号.println(yread);serial.println(“d”);xbee.write(“d”);氰();}else serial.println(“海岸”);serial.println('j');XBee.write('J');MaGeTaNon();}}否则如果(xread>670)serial.println(“硬币声音,XRead=“”;序列号.println(xread);serial.println('x');xbee.write(“x”);allOFF();延迟(50);黄色();延迟(50);}如果(zread<400)serial.println(“火球声音,ZRead=“”;序列号.println(zread);序列号.println(“y”);xbee.write(“y”);ReNoD();延迟(50);allOFF();延迟(50);ReNoD();延迟(50);allOFF();延迟(50);}else serial.println(“停止”);serial.println('k');xbee.write(“k”);ReNoD();延迟(750);}  }  //show that we are sending a character  digitalWrite(ledPin1,高);延迟(50);数字写入(Ledpin1,低);延迟(50);//结束loopvoid alloff()模拟写入(LEDR,0);类比写作(ReDG)0);模拟写入(LEDB,0);void allon()模拟写入(LEDR,150);类比写作(ReDG)255);模拟写入(LEDB,255);void redon()模拟写入(ledr,255);类比写作(ReDG)0);模拟写入(LEDB,0);void magentaon()模拟写入(ledr,150);类比写作(ReDG)0);模拟写入(LEDB,255);}void blueON() {  analogWrite(ledR,0);类比写作(ReDG)0);模拟写入(LEDB,255);}void cyanON() {  analogWrite(ledR,0);类比写作(ReDG)255);模拟写入(LEDB,255);}void greenON() {  analogWrite(ledR,0);类比写作(ReDG)255);模拟写入(LEDB,0);void yellowon()模拟写入(ledr,150);类比写作(ReDG)255);模拟写入(LEDB,0);void sequencetest()redon();延迟(50);MaGeTaNon();延迟(50);蓝光();延迟(50);氰();延迟(50);绿色();延迟(50);黄色();延迟(50);();延迟(50);allOFF();延迟(50);
       

接收XBEE机器人代码

控制Redbot的命令应该与上一个无线RC机器人的例子中使用的代码相同,该例子带有Arduino和XBees教程。Head over to实验4.2:使用atmega328p添加音频如果您还没有将代码上传到Redbot主板。

你应该看到什么

上传后,用拇指和中指之间的金属别针将机器人向左移动,向前地,右前方,或落后。根据手的方向,RGB LED将亮起。分开你的手指,像打空气一样问号块听上面的硬币声音效果!挥动你的手,看看你是否能产生火球的声音效果!

手套控制机器人全演示

Resources and Going Further

下一个项目需要一些灵感吗?英国威廉希尔查看这些相关教程,为您的无线手套添加更多功能!

柔性传感器连接指南

An overview of the flex sensor - a bendable variable resistor.另外,example circuits and Arduino code to get you started!

Lilypad Vibe板连接指南

Lilypad Vibe板是一个小型振动电机,可以用导电线缝合到项目中,由Lilypad Arduino控制。英国威廉希尔该板可作为服装和服装的物理指示器,用于触觉反馈。

QWIIC柔性手套控制器连接指南

你的手指弯曲了吗?你的手指是直的吗?QWIIC柔性手套控制器板将用柔性传感器回答这个古老的问题!

williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

QWIIC键盘连接指南 QCPETE https://www.英国威廉希尔sparkfun.com/users/10205 urn:uuid:169cd96e-9f11-dd97-35b4-bc40718392d8 2019-04-25T00:00:00-06:00

QWIIC键盘连接指南williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t271

介绍

Keypads are very handy input devices,but who wants to tie up 7 GPIO pins,wire up a handful of pull-up resistors,写固件浪费宝贵的处理时间扫描输入键?让我们简化开发过程!的英国威廉希尔Sparkfun Qwiic键盘完全组装,使用简单的QWIC接口.不焊接,无电压转换,不知道我C pin是sda或scl,插上插头就行了!

英国威廉希尔Sparkfun Qwiic键盘-12按钮

英国威廉希尔Sparkfun Qwiic键盘-12按钮

COM—15290
9.95美元

QWIIC键盘在第一个输入中读取并存储最后15个按键,先进先出(FIFO)堆栈,所以你不需要不断地从你的微控制器上轮询键盘。这些信息,然后,可通过QWIIC接口访问。Qwiic键盘甚至有一个可配置的软件iC地址,这样你可以有多个IC设备在同一总线上。

所需材料

英国威廉希尔Sparkfun Qwiic键盘你需要一些额外的项目来开始;支持QWIIC的微控制器和QWIIC电缆。You may already have a few of these items,因此,请根据您的需要随意修改您的购物车。

英国威廉希尔Sparkfun Thing Plus-ESP32警告

英国威廉希尔Sparkfun Thing Plus-ESP32警告

WRL 1468
20.95美元
英国威廉希尔Sparkfun Redboard Turbo-SAMD21开发板

英国威廉希尔Sparkfun Redboard Turbo-SAMD21开发板

DEV-14812
24.95美元
英国威廉希尔Sparkfun红板QWIIC

英国威廉希尔Sparkfun红板QWIIC

DEV-15123
19.95美元
英国威廉希尔Sparkfun Qwiic电缆套件

英国威廉希尔Sparkfun Qwiic电缆套件

KIT-150
$7.95

建议阅读

如果你不熟悉跳线垫或者我C一定要检查一些基础教程。

逻辑层次

williamhill英格兰Learn the difference between 3.3V and 5V devices and logic levels.

I2C

I2c简介,one of the main embedded communications protocols in use today.

如何使用跳线垫和PCB跟踪

处理印刷电路板跳线垫和痕迹是一项基本技能。williamhill英格兰了解如何切割印刷电路板痕迹,add a solder jumper between pads to reroute connections,如果痕迹损坏,用绿线法修复痕迹。

Redboard QWIIC连接指南

This tutorial covers the basic functionality of the RedBoard Qwiic.本教程还介绍了如何开始闪烁LED和使用QWIIC系统。
注:For a greater understanding of how the firmware works to multiplex the keys,看看这些教程。

按钮板连接指南

An introduction to matrix scanning,使用Sparkfun英国威廉希尔 4x4按钮垫。

多路复用器分接连接指南

如何使用74HC4051多路复用器分接头驱动八个LED,读取八个按钮输入,或监视八个电位计。

Arduino Kepad教程
Arduino键盘库
Arduino键盘教程

QWIIC连接系统

QWIIC键盘使用QWIIC连接系统.我们建议来让自己熟悉的逻辑层次C使用之前的教程。点击上面的横幅了解更多关于我们的williamhill英格兰QWIC产品.

硬件概述

Keypad

这是一个基本的12按钮键盘,设计为方便用户输入和功能。按钮以矩阵格式设置。这允许阁楼84扫描7个输出插脚,查看12个按钮中的哪个被按下。

按钮的注释图像

键盘上的12个按钮中的每一个都有标签*,和γ并被格式化为与电话键盘相同的布局。每个按键的电阻范围在10-150Ω之间。

功率发光二极管

电源状态指示灯有助于确保QWIIC键盘通电。你可以通过极化 QWIC连接器系统或breakout pins压水堆GND提供。QWIIC系统旨在运行3.3V,使用QWIIC系统时,请确保没有使用其他电压。QWIIC键盘的功耗非常低,使用量小于4mA3.3V.

Annotated image of Power LED

ATtiny84

使用预装的固件,阁楼84充当一个中间(微控制器)多路复用输入按钮。这允许QWIIC键盘存储FIFO堆栈中的按钮,以便在I上读取C.虽然ATITYY84具有很宽的电压范围,因为这是QWIIC产品,用户应使用标有3.3V.

阁楼的注释图像84

第一,先进先出(FIFO)堆栈

在固件中,FIFO堆栈存储最新的15个按钮输入。一旦堆栈已满,任何以前的输入都将被覆盖。使用FIFO手动增加FIFO堆栈。命令寄存器。如果FIFO堆栈中没有存储更多值,输出将为0x00或空。

FIFO演示
FIFO演示:(1)用输入填充FIFO堆栈,(2)覆盖旧输入,以及(3)增加和读取FIFO。

注:Technically,先进先出 堆栈实际上是一个循环缓冲区,跟踪 堆栈.

FIFO递增的条件是在updateFIFO寄存器设置为0x01之后发生请求事件(寄存器被读取)。

FIFO增量操作顺序
  1. 输入:将updatefio寄存器设置为0x01。
  2. 固件:等待请求事件。
  3. 输入:创建一个请求事件(读取一个寄存器)。
  4. 固件:
    1. 将updatefio寄存器设置为0x00。
    2. 为FIFO缓冲区增加新索引。
    3. 确定“下一个按钮值。
    4. 计算“之后的时间”下一个按钮“已按下。
    5. 更新用新值注册(用于下一个button" and time since the "下一个按下按钮)。
  5. 输入:等待下一次更新FIFO命令.

Qwiic和我C

C地址

在固件中,QWIIC键盘的iC地址是可配置的,所以您可以添加一堆他们到相同的总线没有冲突的问题。

出厂默认值IC从机地址:0x4B

C Registers

地址 描述
0x00 缺省iC从机地址(存储在EEPROM中)
0x01-0x02 固件版本(MSB优先)
0x03 Oldest Button Press (aka First-Out from FIFO stack)
0x04-0x05 Time in ms since the button was pressed (MSB First,16位=最大值65535 ms)。
0x06 FIFO Increment命令:将位0设置为增量FIFO。
0x07 Current/Set IC从机地址(写)。Stored in EEPROM.

连接

使用QWIIC键盘的最简单的方法是通过QWIC连接系统。连接器被极化为IC连接和电源。(*它们被系在相应的断开销上。)

QWIIC连接器的注释图像
QWIIC连接器。

However,该板还提供六个带标签的断接销。You can connect these lines to the I微控制器的C总线和电源插脚(3.3VGND)如果没有QWIIC连接器。The interrupt and reset pins are also broken out to use for triggered events.

I2c连接的注释图像
C连接-销系在QWIIC连接器上。

中断引脚

中断针( 活性低)用于指示FIFO堆栈中有可用条目。有效地,如果它与你的微控制器上的中断联系在一起,并且你用它来增加FIFO栈,然后每次按下按钮都会触发。用一个 4.7KΩ电阻,将 低的如果有条目。Int Pin将返回 高的一旦FIFO被清除。

中断插针的注释图像

复位销

重置别针系在阁楼上的重置别针上。拉扯时 低的,这将有效地重置QWIIC键盘并重新启动设备,加载I 存储在EEPROM中的C地址。主要是,为了重新编程ATTIYY84而崩溃了。

Annotated image of reset pin

跳线运动员

板上有跳线,允许用户在不同的I之间进行选择。C地址以及从I移除上拉电阻C引脚,如果需要的话。

C地址

桥接IC地址跳线将从机地址从存储在EEPROM中的值更改为IC跳线默认(或备用):0x4a.

  • 开/切:工厂或集IC从机地址:0x4B(出厂设置)或0xx(User Set)
  • 桥接:C跳线默认从地址:0x4a(交替)

I2c地址跳线的注释图像

C拉起

切割C跨接器将移除2.2kΩpull-up resistors from the IC总线。如果你的i上有很多设备C总线,您可能想拆除这些跳线。不知道怎么剪跳投?在这里阅读!

Annotated image of pullup jumper

Hardware Assembly

使用QWIIC连接器系统,组装硬件很简单。你所需要做的就是用QWIIC电缆将QWIIC键盘连接到支持QWIIC的微控制器上。否则,you can use the IC引脚,如果你的微控制器板上没有QWIIC连接器。只要知道你的输入电压和任何你可能需要做的逻辑电平转移。

使用Redboard QWIIC的示例设置

使用Redboard QWIIC的示例设置。

阿杜诺图书馆

注:This tutorial assumes you are familiar with Arduino products and you are using the latest stable version of the Arduino IDE on your desktop.如果这是你第一次使用Arduino IDE,请回顾我们的教程 安装Arduino IDE。如果您以前没有安装过Arduino库,请查看我们的 安装指南。

安装Arduino库的最简单方法是搜索英国威廉希尔Sparkfun Qwiic键盘在Arduino图书馆管理器中。要手动安装,head on over to theGithub存储库或者在这里随意下载图书馆!

库函数

对Arduino库进行了注释,函数应该是自解释的。However,下面是可用库函数的详细列表。

开始().begin(Wire,设备地址
创建到i的连接C device over the IC bus using the default or specified I地址C。

输入:UIT88T 设备地址
设备地址的未分配8位整数。如果没有定义,库将使用默认的i 存储在I中的C地址 C库(0x4b)。
输出:布尔

真的-连接到我C装置。
False- No device found or connected.

ISCONTIOND()
尝试连接到位于i的设备存储在库中的C地址。

输出:布尔

真的-连接到我C装置。
False- No device found or connected.

GETVIEWN()
返回固件版本号的字符串。

输出:字符串 AAA.BBB

AAA-固件版本(主要)
BBB-固件版本(次要)

.seti2caddress(新地址)
Changes the IC地址到新地址.一旦改变,新的我C address is saved in the EEPROM of the Qwiic Keypad.我重新连接设备使用新的地址C。(新地址打印在串行监视器.)

输入:UIT88T 新地址

设备地址的未分配8位整数。

输出:串行

地址:0xx哪里0xx是新的我地址C。
地址更改失败-如果微控制器无法更改I,则错误输出地址C。
错误:地址超出8-119范围-如果新的iC地址超出可用范围。

警告:如果我 C地址跳线桥接。If the function is able to connect to the device,库函数可以更改存储在EEPROM中的I2c地址。However,默认情况下,固件将保留在 交替的C jumper address ( 0x4a)最后一部分功能将无法连接到键盘进行固件打印输出和未来的I C address changes.

GETButON()
返回堆栈顶部的按钮(也称为最旧的按钮)。为了第一次读取这个寄存器,the FIFO needs to be incremented with theUPDATEFIFO()功能第一。

输出:字节

Value of the button.

.GetTimesIncpressed()。
This function reads the register that holds the time since the button (at the top of the FIFO stack) was pressed.在固件中,Attiny85实际上响应一个请求事件(寄存器读取),并计算自按钮被按下并更新寄存器以来的时间。像GETButON()函数,为了第一次使用这个函数,the FIFO needs to be incremented with theUPDATEFIFO()功能第一。

Output: uint16_t

自按下按钮以来,未分配的16位整数[0-65535]的时间(毫秒)。

注:由于时间计算发生在所有寄存器值更新之前,并且时间计算仅在FIFO增量时发生,时间计算只能在第一个寄存器读取期间进行一次。因此,calling this function multiple times without a FIFO incrementation will report the same value,which corresponds to the time of the initial register read.

UPDATEFIFO()
用于增加库中的FIFO堆栈,此函数将updateFIFO寄存器设置为0x01。一旦出现请求事件(即GETButON().GetTimesIncpressed()。)FIFO递增,固件将更新FIFO寄存器清除回0x00。

注:在固件中,在出现请求事件(或寄存器读取)之前,FIFO不会递增。因此,如果没有请求事件,则不能多次使用此函数,to scroll through the FIFO.一旦FIFO增加,固件将更新FIFO寄存器清除回0x00。

实例

There are六例在QWIIC键盘Arduino库中,您可以开始使用QWIIC键盘。这些示例文件的名称都是自解释的,但如果你想要更多的信息,请参见下面的说明。

  • 实例1-读按钮

    此示例使用默认i连接到QWIC键盘。C地址保存在库中。草图通过读取FIFO堆栈顶部的按钮寄存器并增加FIFO来循环。The example then prints out the value over the串行监视器.的*由一个空间和γ用新行(或回车)表示。

  • 示例2:readwithtime

    此示例的操作与实例1-读按钮,除了按下按钮后的时间外,该按钮在串行监视器.按钮按下检查之间延迟约1秒。

  • 示例3更改地址

    警告:如果我 C地址跳线桥接。

    此示例使用默认i连接到QWIC键盘。在库中设置C地址,然后打印出IC地址和固件版本串行监视器.然后草图,从串行监视器获取输入以更改I使用十进制值(dec)的C地址。一旦我C地址更改,它存储在QWIIC键盘的EEPROM中。之后,素描连接到键盘使用新的我C地址并再次读取固件版本的寄存器。然后,示例再次在串行监视器上打印出这些值。

  • 示例4-I2c扫描仪

    此示例来自C扫描仪示例在Arduino Playground的网页上。草图扫描I上的设备C总线并在串行监视器.This is useful for users who have forgotten the changed IC董事会地址。

  • 示例5中断读取

    注:这个例子需要焊接。电线必须焊接到int引脚,并连接到一个中断引脚在您的微控制器。如书面的,该示例假定您使用的是基于ARDUINO UNO的板,like our RedBoard.草图将插脚2指定为中断插脚。

    此示例的操作与实例1-读按钮,除了在主循环中不断地轮询键盘上的按键之外,它响应中断(int)引脚。利用一个中断,使得MCU能够执行一组特定的指令(即button read),在主循环之外。有关中断的详细信息,check out this tutorial on处理器中断Arduino.

  • Example6_Keycode

    This example is a use case example,其中用户必须输入正确的密钥代码:.草图还实现了一个超时,以便用户必须在30秒内输入正确的代码。

Arduino示例

示例1:读取按钮

代码实例1-读按钮connects to the Qwiic Keypad and prints out the value over the Serial Monitor.下面是从串行监视器按顺序按下按钮:*,和γ.

串行监视器读数,例如1

串行监视器读数,例如1。

例2:随时间阅读

代码示例2:readwithtimeoperates exactly like the实例1-读按钮,except the time between since the last button press is printed.下面是一个样本读数。

串行监视器读数,例如2

例如串行监视器读出2。

示例3:更改iC地址

警告:如果我 C地址跳线桥接。

代码示例3更改地址使用默认i连接到QWIC键盘在库中设置C地址,然后打印出IC address and firmware version over the Serial Monitor.然后草图,从串行监视器改变我使用十进制值(dec)的C地址。一旦我C地址更改,它存储在QWIIC键盘的EEPROM中。之后,素描连接到键盘使用新的我C地址并再次读取固件版本的寄存器。然后,示例再次在串行监视器上打印出这些值。如下面的样本读数所示,the input value must between 8-119 (DEC) of unreserved IC地址。

Serial Monitor readout for Example 3

Serial Monitor readout for Example 3.

Example 4: IC扫描器

第四个例子,示例4-I2c扫描仪,扫描i上的设备C总线并在串行监视器.This is useful for users who have forgotten the changed IC董事会地址。

串行监视器读数,例如4

串行监视器读数,例如4。

例5:用中断针读取

注:这个例子需要焊接。电线必须焊接到int引脚,并连接到一个中断引脚在您的微控制器。如书面的,该示例假定您使用的是基于ARDUINO UNO的板,like our RedBoard.草图将插脚2指定为中断插脚。

代码示例5中断读取操作类似于实例1-读按钮,except that instead of constantly polling the keypad for button presses in software,它响应中断(int)引脚上的硬件触发器。有关中断的详细信息,check out this tutorial on处理器中断Arduino.

Serial Monitor readout for Example 5

串行监视器读数,例如5。

例6:输入代码

最后一个例子,Example6_Keycode,是一个用例示例,其中用户必须输入正确的密钥代码:.

Serial Monitor readout for Example 6

Serial Monitor readout for Example 6.

Resources and Going Further

更多信息,查看以下资源:

Need help getting started with Arduino and IC?在这里查看这些资源:

下一个项目需要一些灵感吗?英国威廉希尔看看这个热键项目,英国威廉希尔类似于此博客帖子通过ALEX THE巨人从几年前开始。

查看其他一些Qwiic产品教程:

QWIIC人类存在传感器(AK9753)连接指南

如何开始您的QWIC启用AK953人类存在传感器。

QWIIC磁强计(MLX90393)连接指南

弄清楚磁场的方向,不用焊接任何东西。

ESP32 Thing Plus连接指南

Hookup guide for the ESP32 Thing Plus using the ESP32 WROOM's WiFi/Bluetooth system-on-chip in Arduino.
新!

键盘快捷键,QWIC键盘

一个简单的项目使用英国威廉希尔Qwiic键盘和Redboard Turbo创建自己的自定义热键板。

williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

键盘快捷键,QWIC键盘 Santa Claus Impersonator https://www.英国威廉希尔sparkfun.com/users/10207 UUN:D55 E76A1-7FA3-26CA-8D92-A8A152EA336 2019-04-25T00:00:00-06:00

键盘快捷键,QWIC键盘williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t883

介绍

你可能没有意识到,但你可能经常使用键盘快捷键对于常见的任务,否则,以前非常单调。这些快捷方式的一个完美例子是切割,复制,Paste命令,现在几乎在所有的计算机应用中都普遍使用。原来,人们过去常常(用特殊的剪刀)手动剪切和粘贴这些更改。

在本指南中,我们将讨论如何利用红极板涡轮增压器模拟HID键盘,响应来自QWIC键盘创建自己的自定义快捷键小键盘。这非常适合游戏热键,需要两个以上按钮组合的键盘快捷键,或用于命令行/数据/文本项。

热键键盘

这将类似于网络日志:按下按钮,但是没有复杂的焊接。虽然不必要,it would be good to review the blog post.

请注意,下面的示例代码是为在上显式运行而编写的 视窗10.
  • 您可以使用以前的Windows操作系统-如果您解决了以下问题:Redboard Turbo的SparkFun SAMD21驱动程序是英国威廉希尔当前不支持威廉希尔公司在哪在之前的Windows操作系统上赢8.
  • 您可以使用以前的Mac OS——如果您修改了相应的Mac OS键代码的代码。

所需材料

对于这个项目,英国威廉希尔您将需要以下产品。You may already have a few of these items,因此,请根据您的需要随意修改您的购物车。

英国威廉希尔Sparkfun Redboard Turbo-SAMD21开发板

英国威廉希尔Sparkfun Redboard Turbo-SAMD21开发板

DEV-14812
24.95美元
QWIIC电缆-100毫米

QWIIC电缆-100毫米

PRT-14427
$1.50
英国威廉希尔Sparkfun Qwiic键盘-12按钮

英国威廉希尔Sparkfun Qwiic键盘-12按钮

COM—15290
9.95美元

建议阅读

如果你还没有看过这些部件的连接指南,我们强烈建议从这里开始了解每个板的基本功能:

新!

QWIIC键盘连接指南

如果你厌倦了使用GPIO管脚,连接一堆上拉电阻,使用固件扫描密钥占用宝贵的处理时间…查看新的QWIIC键盘。

Redboard涡轮增压器连接指南

Redboard Turbo简介。使用强大的SAMD21 Arm Cortex M0+处理器提升您的Arduino技能!

QWIIC连接系统

This 英国威廉希尔project utilizes theQWIIC连接系统.我们建议来让自己熟悉的逻辑层次C使用之前的教程。点击上面的横幅了解更多关于我们的williamhill英格兰QWIC产品.

为了更好地理解示例代码的工作方式,请查看您感兴趣的平台的以下参考资料:

英国威廉希尔项目概况

在这个示例项目中,英国威廉希尔我们将关注三种不同类型的快捷方式,它们可能对读者最有用。

按钮组合

这些是需要按钮组合的快捷方式。这不仅仅局限于像Ctrl键+Xthat you may use often.通常在程序应用程序中,there will be a number of shortcut button combinations available for users.这些快捷方式甚至可以使用+3按钮的组合,或者看起来并不总是直观的。

Win10/Linux:

  • Ctrl键+中高音+一层楼:用于在虚拟桌面之间切换。

强制退出应用程序

  • 胜利10:Ctrl键+中高音+ESC
  • Mac OSX:γ+选择权+ESC

Microsoft Excel:

  • Ctrl键+Shift+U展开或折叠公式条
  • 中高音+F8创建,跑,edit,或删除宏
  • 中高音+F11:打开Microsoft Visual Basic for Applications编辑器
  • 中高音+H+D+C删除列
  • 中高音+H+H:选择填充颜色
  • 中高音+H+添加边框

功能按钮

这些是现代键盘上的消费功能或多媒体按钮。通常,这些按钮有特殊的图标,可能位于正常键盘布局之外。(如果在键盘布局中,它们可能需要特殊的按钮。FN.)

示例函数:Web搜索,体积上升/下降 ,哑巴,计算器,或增大/减小屏幕亮度。

文本串

文本字符串,这些可能是你每天必须写的东西。把它当作一个快速输入或保存的剪贴板。基本上,这些按钮将自动为保存的文本字符串生成键盘条目。

例如,我负责编写教程和连接指南,并且经常需要创建类似下面列出的HTML功能。我记得他们中的大多数,but it still takes a few seconds to type everything out.我们将使用HTML表作为下面其中一个按钮代码的示例。

HTML排序列表:

例子:
代码:
  1. 事物A
  2. 事物B
  3. 事物C

           
  1. 事物A
  2. 事物B
  3. 事物C

HTML表:

例子:
代码:


C
C
* + =

           


C
C
* + =

HTML Alerts or Wells:

例子:
Heads up!这是某种警告。
代码:

       
Heads up!这是某种警告。

Hardware Assembly

注:Don't forget to 安装SAMD21驱动程序for the RedBoard Turbo,如有必要。

使用QWIIC连接器系统,组装硬件很简单。你需要做的就是连接你的QWIC键盘到A红极板涡轮增压器用一个QWIC电缆.

Hardware assembly

如果您希望创建自定义外壳,this can easily be done with a laser cutter and or 3D printer.For custom button faces,你可以使用可打印的贴纸或一些纸和胶水。

贴纸示例
贴纸
键盘上的标签
小键盘上的标签。(Click to enlarge)

阿杜诺示例

注:This tutorial assumes you are familiar with Arduino products and you are using the latest stable version of the Arduino IDE on your desktop.如果这是你第一次使用Arduino,请回顾我们的教程 安装Arduino IDE。如果您以前没有安装过Arduino库,请查看我们的 安装指南。

阿杜诺图书馆

安装Arduino库的最简单方法是搜索英国威廉希尔Sparkfun Qwiic键盘HID项英国威廉希尔目在Arduino图书馆管理器中。要手动安装,前往各自的Github存储库:

or feel free to download the libraries below:

使用QWIIC键盘库

The functionality of the Qwiic Keypad library is pretty straight forward.示例代码,主要从示例1:readbutton.inosketch.下面是示例代码中使用的库函数的快速摘要。

  • keypad1.begin()-用于连接QWIIC键盘。
  • keypad1.updateFifo()。-用于增加FIFO。
  • char button=keypad1.getbutton()。-用于从FIFO读取按钮压力,值存储为变量中的字符。按钮.

Using the HID-英国威廉希尔Project Library

HID-英国威廉希尔Project library,built by尼古拉类似于Arduino键盘库.It is also compatible with the原来键定义,just make sure you use the name,不是数字。( 键盘.写入(0xb0) 不会工作,使用 keyboard.write(回车键) instead.)

按钮组合

要使用按钮组合创建快捷方式,找出快捷方式的按钮组合。这些应该在您的程序或操作系统的用户手册中列出;否则,互联网是一种很好的资源。在编程之前,请确保测试快捷方式是否有效。

在Arduino编写快捷方式代码,使用键盘-印刷机定义键)函数,指定单个密钥。将多个键按在一起,call this function again while designating each of the individual keys.然后使用Keyboard.releaseAll()to release all the按键按下at once.请参阅改进的键布局.h来自HID项目库的头文件,用于每个键盘键的命名约定英国威廉希尔(或keycode)。

例子:Ctrl键+中高音+一层楼

代码:

language:cKeyboard.press(KEY_CTRL);Keyboard.press(KEY_F1);Keyboard.press(KEY_ALT);Keyboard.releaseAll();

功能按钮

要在Arduino中创建一个功能快捷方式,使用消费者写作定义键)函数,指定要执行的功能键。请参阅消费品来自HID项目库的头文件,用于可用键的命名约定(或英国威廉希尔键代码)。

例子:

代码:

语言:consumer.write(media_volume_down);delay(50);keyboard.releaseall();

文本串

要在Arduino中键入文本字符串,使用键盘。打印(“文本")键盘.println(“文本")功能。

示例文本:

         
代码:
键盘.println(“
         
          “);键盘.println(”
          
            “);键盘.println(”
            “);键盘.println(”
            “);键盘.println(”
            “);键盘.println(”
           “);键盘.println(”
           
            “);键盘.println(”
            “);键盘.println(”
            “);键盘.println(”
            “);键盘.println(”
           “);键盘.println(”
           
            “);键盘.println(”
            “);键盘.println(”
            “);键盘.println(”
            “);键盘.println(”
           “);键盘.println(”
          
“”;

示例代码

在下面的示例代码中,我实现了满足个人需求的特定键盘快捷键。你也会注意到,在某些情况下,我结合了一系列不同的快捷方式来实现更大的功能。

语言:C/*快捷键键盘作者:Wes Furuya Sparkfun Electronics日期:3月2英国威廉希尔7日,2019许可证:此代码是公共域,但如果您使用此代码,我们有一天会遇到您,请向我购买啤酒(Beerware许可证)。想支持我们的工作吗?威廉希尔公司在哪从星巴克买一个棋盘!英国威廉希尔https://www.英国威廉希尔sparkfun.com/products/14641 //www.765754.com/products/14812此草图允许Redboard Turbo模拟HID键盘。QWIIC键盘上的按钮是为特定的键盘输入设置的。有关详细信息,please refer to the 英国威廉希尔project guide:  htwilliamhill英格兰tps://英国威廉希尔learn.sparkfun.com/tutorials/keyboard-shortcut-qwiic-keypad*///#include "Keyboard.h"#include "HID-Project.h"#include
       
        #包括“sparkf英国威廉希尔un_qwiic_keypad_arduino_library.h”//点击此处获取库:http://librarymanager/all_sparkfun_keypad keypad pad1;//创建此objectvoid设置的实例(void)//初始化串行输出//serialusb用于调试发送到串行监视器serialusb.begin(9600)的消息;延迟(3000);serialusb.println(“qwiic keypad example”);//如果(keypad1.begin()==false),则将turbo连接到qwiic keypad//注意,using begin() like this will use default I2C address,0x4b。// You can pass begin() a different address like so: keypad1.begin(Wire,0x4a)。serialusb.println(“键盘似乎未连接)。请检查接线。冻结……“;(1);}serialusb.print(“初始化。固件版本:“);SerialUSB.println(keypad1.getVersion());serialusb.println(“按一个按钮:*来做一个空格。#转到下一行。“);//初始化键盘函数keyboard.begin();Consumer.begin();}void loop(void){//  Checks for next keypad press  keypad1.updateFIFO();//键盘需要将按钮从堆栈拉到可读寄存器延迟(50);char button=keypad1.getbutton();if(button=-1)serialusb.println(“未检测到键盘”);延迟(1000);}否则如果(按钮!=0)serialusb.print(按钮);if(button='1')//静音按钮consumer.write(媒体音量静音);Keyboard.releaseAll();}else if(button='2')//音量降低consumer.write(媒体音量降低);Keyboard.releaseAll();}else if(button='3')//音量增大consumer.write(媒体音量增大);Keyboard.releaseAll();}else if(button='4')//计算器consumer.write(consumer_calculator);Keyboard.releaseAll();}否则,如果(button='5')//在shortcut属性中使用自定义快捷方式启动截图工具//,设置为:ctrl+alt+insert keyboard。按(key_left_ctrl);Keyboard.press(KEY_LEFT_ALT);键盘。按(键插入);Keyboard.releaseAll();}否则,如果(button='6')//windows按钮键盘。按(key_left_windows);Keyboard.releaseAll();延迟(50);//在search keyboard.println(“ter”)中输入“ter”;延迟(50);//Presses enter button to select entry      //On my computer,这是Teraterm键盘。按(回车键);Keyboard.releaseAll();}否则,如果(button='7')//剪切选定的输入键盘。按(key_left_ctrl);键盘。按(X键);Keyboard.releaseAll();延迟(50);//键入文本键盘。打印(“
        “”;键盘。打印(“
        “”;键盘.println(“
        
“”;}else if(button='8')//键入文本keyboard.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“ “”;键盘.println(“
“”;}否则,如果(button='9')//剪切选定的输入键盘。按(key_left_ctrl);键盘。按(X键);Keyboard.releaseAll();延迟(50);//键入文本键盘。打印(“
注:“”;延迟(50);//粘贴输入键盘,按(左键\u ctrl);键盘。按(键V);Keyboard.releaseAll();延迟(50);//Types text Keyboard.println("
“”;}else if(button='*')//剪切选定的输入键盘。按(key_left_ctrl);键盘。按(X键);Keyboard.releaseAll();延迟(50);//Types text Keyboard.print("-> [![alt text](");延迟(50);//粘贴输入键盘,按(左键\u ctrl);键盘。按(键V);Keyboard.releaseAll();延迟(50);//键入文本键盘。打印(“”)(“”);延迟(50);//粘贴输入键盘,按(左键\u ctrl);键盘。按(键V);Keyboard.releaseAll();延迟(50);//Types text Keyboard.println(") <-");键盘.println(“
*字幕*
“”;否则,如果(按钮==‘0’){//剪切选择的入口键盘。按下(KEY-LIFTTH-CTRL);键盘。按(X键);Keyboard.releaseAll();延迟(50);//键入文本键盘。打印(“
“\”
“”;键盘.println(“
解说词
“”;} else if (button == '#') { //Cuts selected entry Keyboard.press(KEY_LEFT_CTRL);键盘。按(X键);Keyboard.releaseAll();延迟(50);//键入文本键盘。打印(“ “”;延迟(50);//粘贴输入键盘,按(左键\u ctrl);键盘。按(键V);Keyboard.releaseAll();延迟(50);//键入文本键盘。打印(““”;}else keyboard.println(按钮);}}//做点别的。不要给你的键盘打太多电话,否则你会把I2c总线延迟(25)绑起来;/ 25是好的,越多越好

circuitpython示例

为了利用Redboard Turbo的Circuitpython功能,我还包括circuitpython示例代码。当你把Redboard涡轮增压器插入电脑时,它应该显示为USB驱动器。If not,退房故障排除下面的部分介绍如何重新安装Circuitpython。把你的代码上传到你的板上,必须将python文件保存在插入板时出现的驱动器上。

注:本教程假设您熟悉Arduino产品和Circuitpython。如果你需要帮助,please consult the Circuitpython文档.

导入circuitpython库

安装库

可能还有比这些更好的指示,但这正是我将Circuitpython库移植到Redboard Turbo上所做的。您也可以使用下面的按钮直接下载库。

  1. Go to the发行版GitHub存储库的选项卡。
  2. 下载.zip文件,其中包含“小精灵”或单击下面的按钮。
  3. 解压缩文件。
  4. 将lib文件夹从文件复制到板上。

注:导入circuitpython库的指令对我来说很混乱;我最初下载了 主人zip文件,而不是 释放.zip file.

利用图书馆

要利用代码中的库,你需要进口他们。Below,是用于导入示例python代码中的库的行。

语言:pythonimport timeimport boardimport businofrom adafruit_hid.keyboard import keyboard from adafruit_hid.keyboard_layout_us import keyboardlayoutusfrom adafruit_hid.keybode import keybode from adafruit_hid.consumer_control import consumer control code

实现circuitpython

查询小键盘

使用来自QWIIC键盘连接指南,QWIIC键盘使用两个寄存器来查询按键。第一个是寄存器0x03,这是为FIFO中最古老的条目读取的(首先,先出)堆栈.第二个是FIFO增量命令寄存器,0x06,used to update register0x03使用“下一步”按钮值。

我的设置C

设置您的IC连接,您需要导入以下库。您还需要定义用于i的管脚C总线这是建立在board用于涡轮增压器的SAMD21库。Finally,the IQWIIC键盘的C地址作为变量存储。

language:pythonimport timeimport boardimport busioi2c = busio.I2C(board.SCL,board.sda)I2cAddress=75等于0x4b(十六进制)
读寄存器

以下代码用于读取FIFO中最旧按钮的值。堆栈从寄存器0x03.

语言:pythoni2c.writeto(I2cAddress,字节([0x03])开始=0,结束=8,stop=True)time.sleep(.2)i2c.readfrom_into(i2caddress,结果2、开始=0,结束=1)
写入/设置寄存器

The following code is used to write0x01登记0x06增加FIFO堆栈,更新寄存器中的值存储0x03.

语言:pythoni2c.writeto(I2cAddress,字节([0x06,0x01]),开始=0,结束=16,停止=真)

创建快捷方式

利用HID库

Circuitpython HID库与前一节中使用的Arduino库类似。为了引用键码和命名约定,我使用了以下文档的组合:

按钮组合

要使用按钮组合创建快捷方式,找出快捷方式的按钮组合。这些应该在您的程序或操作系统的用户手册中列出;否则,互联网是一种很好的资源。在编程之前,请确保测试快捷方式是否有效。

要在circuitpython中编写快捷方式,使用kbd.press(定义键)函数,指定单个密钥。将多个键按在一起,call this function again while designating each of the individual keys.然后使用kbd.release_all()。to release all the按键按下at once.有关每个键盘键的命名约定(或键码),请参阅上面列出的文档。

例子:Ctrl键+中高音+一层楼

代码:

语言:pythonkbd.press(keycode.control)kbd.press(keycode.alt)kbd.press(keycode.insert)kbd.release_all()

功能按钮

要在circuitpython中创建功能快捷方式,使用cc.send(定义键)函数,指定要执行的功能键。有关可用密钥的命名约定(或密钥代码),请参阅上面列出的文档。

例子:

代码:

语言:pythoncc.send

文本串

To type out a string of text in CircuitPython,使用布局(写入)文本功能。

示例文本:

         
代码:
布局(写入)
         
          \ n’)布局.write('
          
            \ n’)布局.write('
            \ n’)布局.write('
            \ n’)布局.write('
            \ n’)布局.write('
           \ n’)布局.write('
           
            \ n’)布局.write('
            \ n’)布局.write('
            \ n’)布局.write('
            \ n’)布局.write('
           \ n’)布局.write('
           
            \ n’)布局.write('
            \ n’)布局.write('
            \ n’)布局.write('
            \ n’)布局.write('
           \ n’)布局.write('
          
\n')

示例代码

在下面的示例代码中,我实现了满足个人需求的特定键盘快捷键。你也会注意到,在某些情况下,我结合了一系列不同的快捷方式来实现更大的功能。

注:您的代码必须保存在名为 密码在将Redboard Turbo插入计算机时出现的驱动器上。
语言:python“”“hot shortcut keypadby:wes furuyaspaskfun e英国威廉希尔lectronicsdate:3月27日,2019license:这个代码是公共领域的,但是如果你用它的话,你会给我买一瓶啤酒,我们有一天会见面(啤酒制品许可证)。想支持我们的工作吗?威廉希尔公司在哪从星巴克买一个棋盘!http://英国威廉希尔www. SPARKFUN.COM/PROSPIDS/1464 1HTTPS://www. SpkFun.COM/Studio/14812这个草图允许RealBooTurbo仿真HID键盘。The buttons on the Qwiic Keypad are set for specific keyboard entries.有关详细信息,please refer to the 英国威廉希尔project guide:htwilliamhill英格兰tps://英国威廉希尔learn.sparkfun.com/tutorials/keyboard-shortcut-qwiic-keypad """import timeimport boardimport busio# https:#github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/tag/20190326# 1.下载“bundule-3.x”:https:github.com/adafruit/adafruit_circuitpython_bundle/releases/download/20190326/adafruit-circuitpython-bundle-3.x-mpy-20190326.zip_2。解压缩3。将lib文件夹复制到boardFrom adafruit_hid.keyboard import keyboardFrom adafruit_hid.keyboard_layout_us import keyboardlayoutusFrom adafruit_hid.keycode import keycodeFrom adafruit_hid.consumer_control_code import consumerControlcodecc=consumerControl()kbd=keyboard()layout=keyboardlaYoutus(KBD)I2c=业务I2c(board.scl,board.sda)i2caddress=75等于0x4b(在hexcalculator=402_等于0x192(在hexcalculator=402_等于0x192,而不是i2c中)。try_lock():passwhile true:result2=bytearray(1)i2c.writeto(i2caddress,字节([0x03])开始=0,结束=8,stop=true)I2c.readfrom_into(I2c地址,结果2、开始=0,结束=1)如果结果2!=字节([0x00]):如果result2==b'1':cc.send(consumerControlCode.mute)print(result2)elif result2==b'2':cc.send(consumerControlCode.volume_decrement)print(result2)elif result2==b'3':cc.send(consumerControlCode.volume_increment)print(result2)elif result2==b'4':cc.send(calculator)cc.send(402)print(result2)elif result2==b'5':kbd.press(keycode.control)kbd.press(keycode.alt)kbd.press(keycode.insert)kbd.release_all()print(result2)elif result2==b'6':kbd.send(227)windows button time.sleep(.05)layout.write('ter')time.sleep(.1)kbd.send(keycode.enter)print(result2)elif result2==b'7':剪切所选条目kbd.press(keycode.control)kbd.press(keycode.x)kbd.release ou all()time.sleep(.05)l写下
       \ n’)布局.write('
       \ n’)布局.write('
       
'' ELIF RESULT2==B′8′:α类型文本布局。 \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write(' \ n’)布局.write('
\ n')elif result2==b'9':剪切所选条目kbd.press(keycode.control)kbd.press(keycode.x)kbd.release all()time.sleep(.05)键入文本布局.write('
注:时间:睡眠((05))。进入大骨节病。按(控制)大骨节病。按(5月5日)大骨节病。睡眠时间。睡眠(05)。
')elif result2==b'*':剪切所选条目kbd。按(keycode.control)kbd。按(keycode.x)kbd.release ou all()time.sleep(.05)键入文本布局.write('->[![alt text](')time.sleep(.05)粘贴条目kbd.press(keycode.control)kbd.press(keycode.v)kbd.release ou all()time.sleep(.05)键入文本布局.write(')](')time.sleep(.05)粘贴条目kbd.press(keycode.control)kbd.press(keycode.v)kbd.release_all()time.sleep(.05)types text layout.write(')<-')layout.write('
*字幕*
')elif result2==b'0':剪切所选条目kbd.press(keycode.control)kbd.press(keycode.x)kbd.releal()time.sleep(.05)键入文本布局.write('
')layout.write('
解说词
')elif result2==b'':剪切所选条目kbd。按(keycode.control)kbd。按(keycode.x)kbd.release_all()time.sleep(.05)键入文本布局.write('时间:睡眠((05))。进入大骨节病。按(控制)大骨节病。按(5月5日)大骨节病。睡眠时间。睡眠(05)。(另):打印(结果2)时间。睡眠(05)I2C。字节([0x06,0x01]),开始=0,结束=16,停止=真)

故障排除

Drivers

将板插入计算机后,确保在您的计算机上安装了SAMD21的驱动程序。对于Mac OSX和Win 10,这应该在插上电路板后自动完成。I believe this also applies for the more popular flavors of Linux as well.

如果需要,您可以使用下面的按钮下载Windows驱动程序。您可以在SAMD21 MiniDev连接指南.

请注意Spk乐趣SAMD21驱动程序是英国威廉希尔 当前不支持威廉希尔公司在哪在之前的Windows操作系统上 赢8.

Double-Tapping Into the Bootloader

引导加载程序允许我们通过一个简单的USB接口加载代码。如果你用砖把木板砌好了,尝试从引导加载程序模式上载代码。To manually enter bootloader mode,rapidly double-tapping the reset button(after hitting the reset button once,you have about half a second to hit it again).在电源循环(上传代码后自动发生)或再次点击重置按钮(一次)之前,板将保持引导加载模式。

在涡轮上,这里有一个提示,说明它是否处于引导加载程序模式:

  • RGB LED(针脚44上)将solid green.
  • D13 LED指示灯将为纯蓝色(可能会淡入和淡出一点)。
  • Charge indicator LED will be flashing constantly.
  • 板将出现在不同的COM端口下。

双串行端口

需要注意的一个全局问题是,在您的计算机上,每个SAMD21板都显示为两个USB设备,你的电脑会分配两个不同的端口号到SAMD21板-一个用于引导加载程序,另一个是草图。

  • 确认您正在为板选择可用的串行端口。
  • If your computer isn't registering the board try double-tapping it into bootloader mode.

串行端口未出现在端口菜单中

如果您的SAMD21板已插入—电源指示灯亮起—但它未出现在您的Arduino端口列表中,首先,make sure you have the已安装驱动程序(仅限Windows计算机)。然后按照以下步骤查看是否可以取回端口:

  1. 关闭全部的Arduino窗户。(别忘了保存!)
  2. 从计算机上拔出SAMD21板。
  3. Wait a few seconds for the device to be detached.
  4. 重新插入SAMD21板。
  5. 打开Arduino备份,再次检查端口菜单。

上传失败或冻结

如果草图上传时间比平时长,or fails entirely,尝试resetting into the bootloader直接上传到那里。如果SAMD21处于引导加载程序模式,你可能需要重新选择端口--这一次选择引导加载程序端口。

  • 关闭串行监视器上传前也可以使上传更加可靠。

Reinstalling CircuitPython

如果你在Arduino发展,你会发现在上传你的第一个草图之后,红板涡轮不再像以前那样弹出一个可移动的USB设备。这是意料之中的。在本节中,我们将介绍几个简单的步骤,让Circuitpython重新上传到您的Redboard Turbo上。

  1. 将板重置为引导加载程序

    We want the board to reset to the UF2 bootloader,which enables the board to act like a flash drive.为此,我们将doubletap the reset button.在你这么做之后不久,该板将作为名为涡轮靴.

  2. 下载并拖动circuitpython固件

    下载以下Circuitpython固件(也可在Github产品存储库)拖动名为涡轮增压器在你的身上涡轮靴USB驱动器和USB驱动器应立即消失,只会重新显示为电路化的USB drive instead.

  3. Re-install the CircuitPython Libraries (to get example code working)

    下载下面的Circuitpython库包,然后拖动国际清算银行文件夹放在U盘上,用于Redboard Turbo。有关更多详细信息,请参阅说明在上面.

英国威廉希尔项目说明

This is the end of the 英国威廉希尔project documentation,排除下面链接的资源。以下是我在完成项目教程后所做的一些注释。英国威廉希尔

电路Python

不幸的是,这是我第一次使用circuitpython,让一切正常工作有点困惑。明确地,我不确定我是否实现了c为circuitpython提供适当的(如预期的)功能,但它是为这个项目的目的而工作的。英国威廉希尔Feel free to comment below on any changes that should be made.

在我最初尝试运行Qwiic键盘时,我能从所有的寄存器中读取数据。However,我无法实现一个写操作来以类似的方式使用写成功能。直到我看了代码是如何用逻辑分析仪操作的,我意识到这些功能在一个较低的层次上运行。尽管能够读取整个寄存器块,这些函数实际上是用于读写位操作的,如上所示。

语言:pythentry:初始尝试结果1=bytearray(8)i2c.readfrom_into(i2c地址,结果1、开始=0,end=7)打印(结果1)时间。睡眠(3)最后:I2c.Unlock()

使用宏进一步

您是否有一个重复的任务,您每天在您的计算机上执行,您希望自动化?如果你更精通电脑,您可能已经使用或创建了自己的简单对于更复杂的任务,不能用键盘快捷键或热键来处理。虽然本指南不介绍宏,它们很简单,强大的工具。

多么简单…

Even a grade schooler,可以轻松使用Microsoft Excel在VBA中记录自定义宏。

多么强大…

宏基本上可以执行,用鼠标和键盘几乎可以实现任何功能。如果你特别邪恶,this is an easy way to prank your friends...您可以轻松地创建和隐藏宏,以引起鼠标移动或随机播放特定的音频文件。However,请注意使用宏所涉及的安全风险(请参见下面的注释)。

Danger:启用时,macros,虽然有用,may open up your computer to security risks.在过去的宏中,已经 被认为是安全漏洞to access computers for private information.在任何计算机上使用或启用宏之前,请确保彻底研究风险。

Resources and Going Further

更多信息,查看以下资源:

如果您还没有阅读本项目中使用的组件的连接指南,英国威廉希尔我们强烈建议从这里开始了解每个板的基本功能:

新!

QWIIC键盘连接指南

如果你厌倦了使用GPIO管脚,连接一堆上拉电阻,使用固件扫描密钥占用宝贵的处理时间…查看新的QWIIC键盘。

Redboard涡轮增压器连接指南

Redboard Turbo简介。使用强大的SAMD21 Arm Cortex M0+处理器提升您的Arduino技能!

在这里查看其他QWIIC产品和教程:

用于覆盆子皮连接指南的QWIIC帽子

开始使用你的Qwiic板和覆盆子圆周率接口。此QWIIC连接I2C总线(GND,3.3V,SDA,和scl)在您的Raspberry PI上连接到一组Qwiic连接器。

Redboard QWIIC连接指南

This tutorial covers the basic functionality of the RedBoard Qwiic.本教程还介绍了如何开始闪烁LED和使用QWIIC系统。

Qwiic Joystick Hookup Guide

Looking for an easy way to implement a joystick to your next Arduino or Raspberry Pi 英国威廉希尔project?This hookup guide will walk you through using the Qwiic Joystick with the Arduino IDE on a RedBoard Qwiic and in Python on a Raspberry Pi.

QWIIC秤连接指南

使用QWIIC秤快速、方便地创建自己的数字秤!

williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

无线手套控制器 博博霍 https://www.英国威廉希尔sparkfun.com/users/10233 urn:uuid:4b68f6b5-2E18-867d-95c9-c8cf95e0f0c5 2019年4月24日00:00:00-06:00

无线手套控制器williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:HTTP//SFE.IO/T7699

介绍

In this tutorial,我们将与Arduino一起建立一个无线手套控制器,使用XBEE远程触发LED!

Full Demo

所需材料

要遵循本教程,你需要以下材料。但你可能并不需要一切,这取决于你拥有什么。Add it to your cart,通读指南,并根据需要调整手推车。

Tools

你需要电线,wire strippers,一个烙铁,焊料,和通用焊接附件.

连接线-种类(实心,22 AWG)

连接线-种类(实心,22 AWG)

PRT-11367
16.95美元
二十九
Soldering Iron - 60W (Adjustable Temperature)

Soldering Iron - 60W (Adjustable Temperature)

TL-14566
12.95美元
无铅焊锡-15克管

无铅焊锡-15克管

TL—09163
3.50美元
剥线钳-20-30AWG

剥线钳-20-30AWG

TL-14763
14.95美元

你也需要

  • Glove
  • Scissors
  • 非导电螺纹
  • 磁带

建议阅读

如果您不熟悉以下概念,我们建议在继续之前先查看这些教程。

如何焊接:通孔焊接

本教程涵盖了关于通孔焊接的所有知识。

赛维实验5:自制开关

williamhill英格兰Learn to create and integrate your own handmade switch into an e-textile circuit.

XBee Shield Hookup Guide

如何开始使用XBee Shield和Explorer。创建一个遥控器Arduino!

探索XBees和XCTU

如何使用计算机设置XBEE,X-CTU软件,以及XBEE Explorer接口板。

LilyPad Basics: E-Sewing

williamhill英格兰Learn how to use conductive thread with LilyPad components.

了解你的线路

无线手套控制器

最简单的输入形式是按键,所以我们将使用这个项目的按钮远程控制LED,如下图所示。英国威廉希尔

Circuit Diagram Transmitting XBee

Custom Button

因为电子设备是戴着手套的,通常的瞬间按钮在手指上不会是最舒服的。相反,我们将使用可折断的别针制作我们自己的自定义按钮,conductive thread,和电线。你需要在拇指之间做一个接触,中间的,环,小指接地,引脚4,引脚11,和引脚12,分别。

发光二极管

如果反馈表明我们已经无线发送了一个角色,我们将焊接一个LED和330Ω限流电阻to the protoboard between pin 13 and ground.You could use the on-board LED on the RedBoard but it would be harder to see under the shield.此外,我们将附上一个diffused,共阴极RGB发光二极管引脚5,6,9。Make sure to add a second 330Ω current limiting resistor between the common cathode and GND,分别。


接收XBee节点

对于接收XBee,我们将模拟手套上用于反馈的LED。电路是一样的,that is without the custom buttons as shown in the diagram below.该板翻转过来,以说明接收xbee节点。

接收XBEE的电路图


硬件连接

修改XBee屏蔽

使用前面的电路图,焊料XBEE屏蔽的组件。然后带实心连接线把它们焊接在两个针之间。如果你跟在后面,您的板应该看起来类似下面的图像。

修改后的XBee无线屏蔽的俯视图 XBee无线屏蔽的底视图
焊接在XBEE屏蔽上的俯视图组件 带电线和跳线的底视图

连接硬至软材料

抓起四根不同颜色的12”F/F跨接导线,并将它们切成两半。在这一点上,我们需要从一个标准的导线上焊接一个电线圈,这样我们就可以很容易地把导电线连接到每个手指的可扣针上。另一种选择是将多股钢丝穿过可折断的销上的一个孔,然后将它们焊接在一起。

硬-软连接

将板和电线固定到手套上

完成后,抓针,将不导电的线穿过眼睛,and sew the RedBoard's mounting holes to the glove of your choice.我发现三个洞足够了。一定不要把手套的顶部和底部缝在一起。栈A配置的XBEE,XBee盾牌,和红板一起。然后将内壳插入护罩的直角收割台。

把电线编在一起然后用一些不导电的线把它固定在手套上。对于每根电线,当电线靠近手指时,你需要把它们分开。确保板和连接之间有足够的空间,使板不会压在电线上。测试一下,确保有足够的公差,这样手移动时电线不会损坏。

用非导电线将红板和电线缝到手套上

缝制自定义按钮

要使用导电线连接到可折断的销,我们需要用小针。两个小针头针头组需要把针缝下来。Find a spot for the snappable pin to make contact with the other finger.我们从拇指开始。抓住小针,穿导电线穿过针眼,把针缝好。如果你把四个孔中的一个用导电织物缝合几圈就足够了。你可以在剩余的孔上使用不导电的线。再一次,避免将顶部和底部面料缝合在一起。

用导电线缝合内扣针,并与线环连接

在可折断的销孔周围绕了几圈之后,在手的顶部缝一个活针,然后将金属环连接到相应的针连接上。按照电路图,拇指应该连接到地线上。打结并切断多余的线。

连接到电线

对每个可扣针重复。

扣在手套上的金属针

组合式无线手套控制器

完成后,你的手套应该像下面的图片!Feel free to click on the images for a closer look.

装配好的无线手套俯视图 组合无线手套底视图
Top View Bottom View

如果你决定远程使用手套,添加一个9V电池并将其固定到手套上。在这种情况下,用胶带把电池固定在电路板上。随意缝在一起9V电池袋为了更安全的方法。

Glove with Battery Secured

配置XBees

要配置XBees,我们将使用XBEE Series 1固件。建议使用XBeeExplorer USB配置每个XBee。

xbee插入的int xbee explorer USB配置

如果你还没有,退房从XCTU开始section under Exploring XBees and XCTU to configure your XBees.如果您使用的是Xbee3,确保使用Series 1固件配置固件,以便与本教程一起使用。

探索XBees和XCTU

March 12,二千零一十五

如何使用计算机设置XBEE,X-CTU软件,以及XBEE Explorer接口板。

点对点配置

为简单起见,we will be sending commands with the XBees in transparent mode set for a point-to-point configuration.如果您的ch和pan id中有两个以上的xbee,请确保为每个xbee配置一个唯一的my地址。然后,您需要调整每个XBEE的DL地址。

设置 首字母缩略词 传输XBEE节点1
(无线手套控制器)
接收XBee节点2
(即LED/机器人/舞蹈服)
通道 CH C C
泛ID 身份证件 三千三百三十三 三千三百三十三
目标地址高 DH
目标地址低 动态链接库
16位源地址 我的

示例1:发送和接收

注:此示例假设您正在桌面上使用ARDUNO IDE的最新版本。如果这是你第一次使用Arduino,请回顾我们的教程 安装Arduino IDE。

If you've never connected an FTDI device to your computer before,you may need to install drivers for the USB-to-serial converter.看看我们的 如何安装ftdi驱动程序安装帮助教程。

示例1a:用手套发送字符

在本部分示例中,我们会让手套在按下按钮时发送一个字符。尽管你可以打开串行终端to check if characters were received during testing,it would just not be as fun as blinking an LED wirelessly after a button press.

复制代码,粘贴到Arduino IDE中,选择你的董事会(Arduino/Genuino乌诺)和COM端口。然后把代码上传到手套上。

语言:C//我们将使用SoftwareSerial与XBEE通信:包括
       
        //对于ATMEGA328P,/XBEE的DOUT(TX)连接到插脚2(Arduino的软件Rx)//XBEE的DIN(Rx)连接到插脚3(Arduino的软件Tx)软件串行XBEE(2,3);/接收,Tx//对于ATMega2560,ATMEGA32 U4,etc.//xbee的dout(tx)连接到pin 10(Arduino的软件rx)//xbee的din(rx)连接到pin 11(Arduino的软件tx)//softwareSerial xbee(10,11);/接收,tx//发送常数int按钮1pin=4;//push buttonconst int status_LED = 13;//按钮上的指示灯char send_char='a';//默认发送字符//初始化要读取的变量buttonsInt button1State;//要检查button1 stateBoolean prev_button1State=false;Boolean current_button1State=false;/**********************setup loop**********************/void setup();//声明pin模式pin模式(button1pin,INPUT_PULLUP);//将内部上拉电阻与发送按钮pinmode(状态\u LED,输出);//指示字符发送时间的LED//状态LED,查看发送XBEE是否正在初始化(int i=0;I<3;i++)数字写入(状态指示灯,高);//设置状态LED开启延迟(50);数字写入(状态指示灯,低);//设置状态LED关闭延迟(50);}//声明用于调试串行的串行连接。begin(9600);serial.println(“Arduino serial ready”);开始(9600);Serial.println("Glove Controller's XBee Ready to Communicate");}//end setup()void loop() {  button1State = digitalRead(button1Pin);/***按钮1状态-低或0表示按下-高或1表示未按下****///如果按下按钮,如果(按钮1状态==低)数字写入(状态_LED,高);//turn push button LED ON    current_button1State = true;//按钮被按下一次if(prev_button1State!=current_button1State)//检查按钮是否仍被按下serial.println(“button is pressed.”);xbee.write(send_char);//发送字符else//不执行任何操作,因为手指仍在按钮上一个按钮1状态=当前按钮1状态;}  //button has not been pressed,它将再次变高,否则当前按钮1状态=假;数字写入(状态指示灯,低);//关闭按钮LED上一个按钮1状态=当前按钮1状态;} //结束环()
       

Example 1b: Receiving XBee Node

在这部分代码中,we'll have the receiving XBee blinking the LED connected to pin 13 as well.Copy the code below,粘贴到Arduino IDE中,选择你的董事会(Arduino/Genuino乌诺)和COM端口。Arduino应该在不同的COM端口上枚举,因此请确保调整COM端口。然后将代码上传到接收XBee的ARDUINO。

语言:C//我们将使用SoftwareSerial与XBEE通信:包括
       
        //对于ATMEGA328P,/XBEE的DOUT(TX)连接到插脚2(Arduino的软件Rx)//XBEE的DIN(Rx)连接到插脚3(Arduino的软件Tx)软件串行XBEE(2,3);/接收,Tx//对于ATMega2560,ATMEGA32 U4,etc.//xbee的dout(tx)连接到pin 10(Arduino的软件rx)//xbee的din(rx)连接到pin 11(Arduino的软件tx)//softwareSerial xbee(10,11);/接收,tx//声明字符“c_data”char c_data;//led以检查led是否已初始化。const int status_led=13;/************************setup loop******************************/void setup()//将设置代码放在此处,to run once:  //Declare pin modes  pinMode (status_LED,输出);//指示字符发送时间的LED//状态LED,查看接收XBEE是否正在初始化(int i=0;I<3;i++)数字写入(状态指示灯,高);//设置状态LED开启延迟(50);数字写入(状态指示灯,低);//设置状态LED关闭延迟(50);}//声明用于调试串行的串行连接。begin(9600);serial.println(“Arduino serial ready”);开始(9600);Serial.println("XBee Ready to Receive");}//end setup()void loop() {  //Check if XBee is receiving data from other XBee  if (XBee.available() || Serial.available()) {    if (XBee.available()) {      c_data = XBee.read();//store received value from XBee into variable    }    else if (Serial.available()) {      c_data = Serial.read();//store received value from Serial Monitor into variable    }    //Check to see if character sent is letter A    if (c_data == 'A') {      digitalWrite(status_LED,高);//turn ON Status LED      Serial.println("Character Received,“”;Serial.println(c_data);}否则//不做任何事延迟(100);数字写入(状态指示灯,低);//关闭状态LED//结束循环()
       

你应该看到什么

上传后,touch the metal snap pins between your thumb and middle finger.这应该将手套中的一个字符发送到接收XBEE。因此,只要按下按钮,手套上的LED就会一直亮着。当接收到字符时,接收XBee的LED将闪烁。作为设计的一部分,按下按钮后,我们只发送一次字符。发送另一个字符,把你的大拇指从中指移开,然后再把金属别针碰在一起。

无线控制LED手套

Example 2: Controlling an RGB LED

实例2A:RGB无线手套控制器

We'll build on the first example and have the glove a send character to control an RGB LED.We'll use the snappable pins on the ring and pinky to switch between the colors.

复制代码,粘贴到Arduino IDE中,选择你的董事会(微控制器)和COM端口。确保在上传前将COM端口切换回手套所列举的端口。准备好后,把代码上传到手套上。

语言:C//我们将使用SoftwareSerial与XBEE通信:包括
       
        //对于ATMEGA328P,/XBEE的DOUT(TX)连接到插脚2(Arduino的软件Rx)//XBEE的DIN(Rx)连接到插脚3(Arduino的软件Tx)软件串行XBEE(2,3);/接收,Tx//对于ATMega2560,ATMEGA32 U4,etc.//xbee的dout(tx)连接到pin 10(Arduino的软件rx)//xbee的din(rx)连接到pin 11(Arduino的软件tx)//softwareSerial xbee(10,11);/接收,tx//发送按钮const int button1pin=4;//push buttonconst int status_LED = 13;//按钮上的指示灯char send_char='a';//默认发送字符//初始化要读取的变量buttonsint button1State;//要检查button1 stateBoolean prev_button1State=false;Boolean current_button1State=false;//up buttonconst int button2pin=11;//push buttonInt button2state;boolean prev_button2state=false;boolean current_button2state=false;//down buttonconst int button3pin=12;int button3state;boolean prev_button3state=false;boolean current_button3state=false;//led status indicatorInt ledr=5;//hardware pwmint ledg=6;//hardware p//硬件pwmint模式=0;//pattern/************************setup loop*************************/void setup()//声明pin模式pinmode(button1pin,INPUT_PULLUP);//将内部上拉电阻与发送按钮pinmode(状态\u LED,output);//指示何时发送字符的LED指示灯pinmode(button2pin,INPUT_PULLUP);//使用内部上拉电阻pinmode(button3pin,INPUT_PULLUP);//使用内部上拉电阻//状态LED查看发送XBee是否正在初始化(int i=0;I<3;i++)数字写入(状态指示灯,高);//设置状态LED开启延迟(50);数字写入(状态指示灯,低);//设置状态LED关闭延迟(50);}//将数字管脚初始化为LED PinMode(LEDR,OUTPUT);皮诺德(LeDG)OUTPUT);品德模式OUTPUT);sequencetest();//可视化初始化//为调试serial.begin(9600)声明串行连接;serial.println(“Arduino serial ready”);开始(9600);Serial.println("Glove Controller's XBee Ready to Communicate");}//end setup()void loop() {  button1State = digitalRead(button1Pin);button2状态=数字读取(button2pin);button3State=数字读取(button3pin);/***按钮x状态-低或0表示已按下-高或1表示未按下****/////————————检查是否已按下“发送”按钮————————//如果已按下按钮,如果(按钮1状态==低)数字写入(状态_LED,高);//turn push button LED ON    current_button1State = true;//按钮被按下一次if(prev_button1State!=current_button1State)//检查按钮是否仍被按下serial.println(“button is pressed.”);write(send_char);//通过发送字符else//告诉Sequencer切换到模式,因为手指仍在按钮prev_button1State=current_button1State上;}//-----------End Check for SENT Button----------  //button has not been pressed,它将再次变高,否则当前按钮1状态=假;数字写入(状态指示灯,低);//关闭按钮LED上一个按钮1状态=当前按钮1状态;}//——————————————————————————————————————————————————————————————如果(button2state==low)当前button2state=true;//如果(上一个按钮2状态),则按下一次向上按钮!=current_button2state)//检查按钮是否仍被按下pattern=pattern+1;//如果(pattern<0_pattern>8)//重置pattern=0,则在按下按钮后更改LED模式;}}否则//什么都不做,因为手指仍在按钮上一个按钮2状态=当前按钮2状态;}//未按向上键,它将为高,否则当前按钮2状态=假;上一个按钮2状态=当前按钮2状态;}//——————————————————————————————————————————————————————————————如果(button3state==low)当前_button3state=true;//按钮被按下一次if(prev_button3state!=current_button3state)//检查按钮是否仍被按下pattern=pattern-1;//change LED pattern after button has been pressed      if (pattern < 0 || pattern > 8) {        //reset pattern        pattern = 7;}}否则//什么也不做,因为手指仍在按钮上一个按钮3状态=当前按钮3状态;}  //button has not been pressed,它将为高,否则当前按钮3状态=假;上一个按钮3状态=当前按钮3状态;}/——————————————————————————————————延时(50);//save send character into variable depending on button press and change status led switch(pattern)case 1:redon();延迟(50);发送“char='b'”断裂;案例2:品红色();延迟(50);发送“char='c'”断裂;案例3:蓝本();延迟(50);发送“char='d'”断裂;例4:氰基();延迟(50);发送“char='e'”断裂;案例5:greenon();延迟(50);发送“char='f'”断裂;case 6:      yellowON();延迟(50);send_CHAR = 'G';断裂;案例7:alloff();延迟(50);发送“char='h'”断裂;默认值:allon();发送“char='a'”断裂;}//end switch//end loop()/*查看基本颜色混合的维恩图:https://learn.sparkfun.com/tutorials/lilypad protwilliamhill英格兰osnap 英国威廉希尔plus activity guide/2-basic-color-mixing*/void redon()analogwrite(ledr,255);类比写作(ReDG)0);模拟写入(LEDB,0);void magentaon()模拟写入(ledr,150);类比写作(ReDG)0);模拟写入(LEDB,255);}void blueON() {  analogWrite(ledR,0);类比写作(ReDG)0);模拟写入(LEDB,255);}void cyanON() {  analogWrite(ledR,0);类比写作(ReDG)255);模拟写入(LEDB,255);}void greenON() {  analogWrite(ledR,0);类比写作(ReDG)255);模拟写入(LEDB,0);void yellowon()模拟写入(ledr,150);类比写作(ReDG)255);模拟写入(LEDB,0);void alloff()模拟写入(LEDR,0);类比写作(ReDG)0);模拟写入(LEDB,0);void allon()//白色模拟写入(LEDR,150);类比写作(ReDG)255);模拟写入(LEDB,255);void sequencetest()redon();延迟(50);allOFF();延迟(50);MaGeTaNon();延迟(50);allOFF();延迟(50);蓝光();延迟(50);allOFF();延迟(50);氰();延迟(50);allOFF();延迟(50);绿色();延迟(50);allOFF();延迟(50);黄色();延迟(50);allOFF();延迟(50);();延迟(50);allOFF();延迟(50);
       

Example 2b: RGB Receiving XBee Node

在本部分示例中,我们将模仿手套发出的颜色。复制代码,粘贴到Arduino IDE中,选择你的董事会(微控制器)和COM端口。Make sure to switch the COM port back to the receiving XBee's Arduino before uploading.准备好后,将代码上传到接收XBee的Arduino。

语言:C//我们将使用SoftwareSerial与XBEE通信:包括
       
        //对于ATMEGA328P,/XBEE的DOUT(TX)连接到插脚2(Arduino的软件Rx)//XBEE的DIN(Rx)连接到插脚3(Arduino的软件Tx)软件串行XBEE(2,3);/接收,Tx//对于ATMega2560,ATMEGA32 U4,etc.//xbee的dout(tx)连接到pin 10(Arduino的软件rx)//xbee的din(rx)连接到pin 11(Arduino的软件tx)//softwareSerial xbee(10,11);/接收,tx//声明字符“c_data”char c_data;//led检查LED是否初始化。const int status_led=13;/led status indicatorint ledr=5;/hardware pwmint ledg=6;/hardware pwmint ledb=9;//hardware pwm/***************************setup loop*************************/void setup()//将安装代码放在此处,to run once:  //Declare pin modes  pinMode (status_LED,输出);//指示字符发送时间的LED//状态LED,查看接收XBEE是否正在初始化(int i=0;I<3;i++)数字写入(状态指示灯,高);//设置状态LED开启延迟(50);数字写入(状态指示灯,低);//设置状态LED关闭延迟(50);}//将数字管脚初始化为LED PinMode(LEDR,OUTPUT);皮诺德(LeDG)OUTPUT);品德模式OUTPUT);sequencetest();//可视化初始化//为调试serial.begin(9600)声明串行连接;serial.println(“Arduino serial ready”);开始(9600);Serial.println("XBee Ready to Receive");}//end setup()void loop() {  //Check if XBee is receiving data from other XBee  if (XBee.available() || Serial.available()) {    if (XBee.available()) {      c_data = XBee.read();//store received value from XBee into variable    }    else if (Serial.available()) {      c_data = Serial.read();//store received value from Serial Monitor into variable    }    //Check to see if character sent is letter A    if (c_data == 'A') {      digitalWrite(status_LED,高);//打开状态LED allon();Serial.println("Character Received,“”;Serial.println(c_data);}否则,如果(c_data='b')digitalwrite(status_led,高);//打开状态指示灯redon();Serial.println("Character Received,“”;Serial.println(c_data);}否则,如果(C_data=‘C’)数字写入(状态_LED,高);//打开状态LED品红色();Serial.println("Character Received,“”;Serial.println(c_data);}否则,如果(c_data=‘d’)数字写入(状态_LED,高);//打开状态指示灯blueon();Serial.println("Character Received,“”;Serial.println(c_data);}否则,如果(C_data=‘e’)数字写入(状态_LED,高);//turn ON Status LED      cyanON();Serial.println("Character Received,“”;Serial.println(c_data);}否则,如果(c_data='f')digitalwrite(status_led,高);//打开状态指示灯greenon();Serial.println("Character Received,“”;Serial.println(c_data);}否则,如果(c_data=‘g’)数字写入(状态_LED,高);//打开状态指示灯yellowon();Serial.println("Character Received,“”;Serial.println(c_data);}否则,如果(c_data='h')digitalwrite(status_led,高);//turn ON Status LED      allOFF();Serial.println("Character Received,“”;Serial.println(c_data);}否则//不做任何事延迟(100);数字写入(状态指示灯,低);//关闭状态LED//end loop()/*查看基本颜色混合的维恩图:https://learn.sparkfun.com/tutorials/lilypad protosnap plus awilliamhill英格兰ctivit英国威廉希尔y guide/2-basic-color-mixing*/void redon()analogwrite(ledr,255);类比写作(ReDG)0);模拟写入(LEDB,0);void magentaon()模拟写入(ledr,150);类比写作(ReDG)0);模拟写入(LEDB,255);}void blueON() {  analogWrite(ledR,0);类比写作(ReDG)0);模拟写入(LEDB,255);}void cyanON() {  analogWrite(ledR,0);类比写作(ReDG)255);模拟写入(LEDB,255);}void greenON() {  analogWrite(ledR,0);类比写作(ReDG)255);模拟写入(LEDB,0);void yellowon()模拟写入(ledr,150);类比写作(ReDG)255);模拟写入(LEDB,0);void alloff()模拟写入(LEDR,0);类比写作(ReDG)0);模拟写入(LEDB,0);void allon()//白色模拟写入(LEDR,150);类比写作(ReDG)255);模拟写入(LEDB,255);void sequencetest()redon();延迟(50);allOFF();延迟(50);MaGeTaNon();延迟(50);allOFF();延迟(50);蓝光();延迟(50);allOFF();延迟(50);氰();延迟(50);allOFF();延迟(50);绿色();延迟(50);allOFF();延迟(50);黄色();延迟(50);allOFF();延迟(50);();延迟(50);allOFF();延迟(50);
       

你应该看到什么

用拇指接触戒指和小指的可折断的别针,RGB LED将在颜色之间切换。按拇指和中指将发送与RGB LED关联的字符。每当发送字符时,接收XBEE应模仿RGB LED的颜色。

Glove Wirelessly Controlling an RGB LED

Resources and Going Further

下一个项目需要一些灵感吗?英国威廉希尔查看这些相关教程,为您的无线手套添加更多功能!

柔性传感器连接指南

An overview of the flex sensor - a bendable variable resistor.另外,example circuits and Arduino code to get you started!

Lilypad Vibe板连接指南

Lilypad Vibe板是一个小型振动电机,可以用导电线缝合到项目中,由Lilypad Arduino控制。英国威廉希尔该板可作为服装和服装的物理指示器,用于触觉反馈。

QWIIC柔性手套控制器连接指南

你的手指弯曲了吗?你的手指是直的吗?QWIIC柔性手套控制器板将用柔性传感器回答这个古老的问题!
新!

无线手势控制机器人

使用加速度计根据手的移动无线控制Redbot,阿杜伊诺还有XBees!

寻找更多数据手套的例子?查看Kobakant的各种手套。

Example Gloves from Kobakant
各种电子纺织数据手套项目英国威廉希尔科巴坎特

或者查看这些博客文章中的一些想法:


williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

LED Gumball Machine 内特 https://www.英国威廉希尔sparkfun.com/users/10165 urn:uuid:62cf6763-3b26-63ec-5a5e-ee8e02d62182 2019年4月24日00:00:00-06:00

LED Gumball Machinewilliamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t890

介绍

你需要一个发光二极管吗?答案总是肯定的。但是如果你需要一个正确的呢现在?把自己打造成一台LED胶球机,再也不要用完!

充满LED的胶球机

约3000个红色5毫米发光二极管准备闪烁

This machine was created for the英国广播公司实验室在Cu博尔德,因为学生不断需要LED,但填充零件箱似乎总是下降到公地悲剧.我们把1000个发光二极管放进垃圾箱,不到两周它们就会消失。

点胶发光二极管

使用LED胶球分配器,LED可以持续一个多学期。It's amazing how much a 15 second pause will cause people to think twice.

建议阅读

什么是Arduino?

这到底是什么“阿杜诺”的东西?

脉宽调制

介绍脉宽调制的概念。

交换基础

关于电子产品最容易被忽视和低估的部件的教程:开关!在这里,我们解释瞬时和保持开关之间的区别,以及那些缩写词(不)。NC,单刀双掷SPST,……站着。

业余伺服教程

伺服电机可以让你精确地控制输出轴的旋转,为机器人和其他项目提供各种可能性。英国威廉希尔

英国威廉希尔Sparkfun发明家工具包实验指南-v4.0

The 英国威廉希尔SparkFun Inventor's Kit (SIK) Experiment Guide contains all of the information needed to build all five 英国威廉希尔projects,包括16个电路,in the latest version of the kit,V4.0A。

And if you really want to get geeky,have a look at this posting on状态机.状态机是在“等待用户按下按钮”和“忽略按钮,现在不分配”状态之间切换的好方法。

硬件概述

以下是此项目的部件列表:英国威廉希尔

英国威廉希尔Sparkfun红板QWIIC

英国威廉希尔Sparkfun红板QWIIC

DEV-15123
19.95美元
伺服-通用高扭矩连续旋转(标准尺寸)

伺服-通用高扭矩连续旋转(标准尺寸)

ROB-0934
13.95美元
墙壁适配器电源-5V DC 2A(筒式千斤顶)

墙壁适配器电源-5V DC 2A(筒式千斤顶)

TL—1288
5.95美元
十六
英国威廉希尔SparkFun ProtoShield Kit

英国威廉希尔SparkFun ProtoShield Kit

小精灵
10.95美元
金属按钮-瞬时(16毫米,Red)

金属按钮-瞬时(16毫米,Red)

COM11966
5.95美元

原盾构工作很好。我们使用了旧盾我们躺在那里,但你可以使用任何有几个GPIO断开的屏蔽,你可以焊接到。

你当然需要一台胶球机。我们还没有对不同品牌的连续伺服系统进行验证,但我们对此很有信心胶球机将使用本教程。

Tools

这个项目的工具非常普遍。英国威廉希尔您可能拥有或可能没有各种工具,因此请仔细检查您是否可以访问以下内容:

连接线-种类(实心,22 AWG)

连接线-种类(实心,22 AWG)

PRT-11367
16.95美元
二十九
无铅焊锡-100克线轴

无铅焊锡-100克线轴

TL—09325
$7.95
WELLER WLC100焊接站

WELLER WLC100焊接站

TL—14228
44.95美元
剥线钳-22-30AWG

剥线钳-22-30AWG

TOL-14762
12.95美元

连续旋转伺服

LED胶球机的神奇之处在于,一个连续旋转的伺服装置与机器内的点胶齿完全梦幻般地配合在一起。

伺服头与碗底齿轮对齐

大扭矩连续旋转伺服只是获得自动售货机电子控制装置的票。

Most servos come with a variety of控制角.这些是不同形状的塑料块,你可以拧入伺服系统,将伺服系统连接到你的应用程序上。In this tutorial we'll want the star control horn (highlighted below).出于完全的运气,这个喇叭的音高和牙龈球机上的牙齿差不多。

Various servo control horns

伺服有相当大的扭矩,我们希望应用到分配器机构。我们用拉链和热胶安装了伺服。第一,使用扎带将伺服大致安装到位。一旦你得到伺服头和分配器齿轮之间的对准使用热胶凝固一切到位。这种组合创造了正确的粗对准和刚性的组合,以便将伺服系统的大部分扭矩转移到分配器上。

安装伺服带拉链和热胶

Button

我们选择了一个瞬时亮起按钮.

按钮应该在哪个位置

This fit superbly into the existing hole where the twist knob originally resided.一旦安装,it was a small matter to figure out which pins illuminated the LED and which pins shorted together when the button was pressed.

瞬时按钮后面的接线

RedBoard

为了把它绑在一起,我们用了RedBoardand an old迷笛盾.MIDI部分不重要。相反,在电路板边缘的一排引出针使得很容易将伺服和按钮上的几根电线焊接到电路板上,然后将屏蔽层插到红板上。

所有部件接线在一起

这是一种比点焊接到主板I/O上的SMD焊盘更有弹性的连接方法。我们也可以使用原盾构Arduino Pro迷你版但我们把这些零件放在周围。

RedBoard with shield connected to servo and button

功率

伺服需要相当大的电流在5伏,所以我们使用5V 2A墙壁电源.电力电缆通过基座柱和安装板连接到Arduino。

胶球机

Obviously you're going to need a gumball machine.

充满LED的胶球机

这些小机器非常神奇,设计良好,可用于粗暴使用和易于维护。我们不为LED充电,所以我们使用的区域通常是我们的电子设备存储区。

Cavity showing electronics inside machine

一定要买一台有金属底座和空心柱的机器。金属底座使您的安装时间更长(学生对设备的要求比土狼略低),空心立柱允许我们通过底座连接电源。我不得不把几个孔扩大到1/2英寸,以便让直流管插头插入。

软件

我们希望胶球机在按下按钮时发出发光二极管,这很简单。但我们要避免配药全部的发光二极管。也,we don't want someone to stand in front of the free machine and continually hit the ‘gimme' button.We implement a timeout of 15 seconds that prevents users from activating the servo constantly.你可以得到软件在这里.

分配脉宽调制

几乎所有伺服操作PWM.在我们的机器中安装连续伺服之前,我们发现伺服的响应方式如下:

  • 写入(95);-停止连续伺服运动
  • gumballServo.write(200);- Servo turns CCW rapidly
  • 写入(10);-伺服快速顺时针转动(但未使用)

我们的胶球分配器设计为按时钟方向操作,所以我们只能逆时针操作伺服。

Handful of LEDs

这种分配器显然是为胶球设计的,因此当分配LED时,实际出来的LED数量变化很大。一般来说,当伺服启动1秒时,用户会收到1到5个LED。This works well.在LED无法分配的最终情况下,the user just has to wait 15 seconds to try again.既然我们不收取任何费用,这是一个可以接受的结果。

语言:cgumballservo.detach();//Be sure the servo won't move

After dispensing we detach the servo.这将关闭流向伺服的PWM信号,确保伺服不会移动。我们注意到伺服在90度时抖动或移动非常缓慢(当它不应该移动时),所以这个额外的步骤可以确保LED胶球机不会在一夜之间慢慢地吐到地毯上。

按照同样的思路,我们注意到,分配机构有时会结合起来,导致伺服机构在短时间内消耗更多的电流。这会导致电源关闭,使Arduino复位。您将在设置()的开头看到

语言:cgumballservo.attach(胶球伺服);//确保伺服不会移动gumballservo.write(95);//停止连续ServogUMballservo.detach()上的移动;//Be sure the servo won't move

The above code is the first thing the Arduino runs and insures any previous servo movement is stopped.这有助于防止奇怪的滚动复位情况,即伺服导致断电,当Arduino回到在线状态时,伺服开始移动,causing a brownout,etc...

按钮监控

当按下按钮时,按钮会对地短路,因此当按钮处于pressed.

该按钮有一个内置的LED,因此我们将按钮背面的+/-引脚直接连接到一个启用了PWM的引脚和接地。LED在5伏电压下测量到12毫安,well below the 20mA max so we didn't need a resistor.

语言:c//如果(millis()-lastDispenteTime<minTimeBetweenPress)serial.println(“嗯,先生热切的。轮到你了。”);同时(数字读取(按钮)==低)延迟(10);//等待用户停止按返回按钮;/不要给你喝汤!}

在上面的代码中,我们检查一下,从最后一个按钮按下后,是否已经过了足够的时间让我们再次销售。

语言:狡猾的长时间介于两个状态之间=15*1000;//让用户在分配之间等待这么多毫秒

We found 15 seconds (15,000 milliseconds) between vends was enough time to dissuade students from taking全部的发光二极管。

Resources and Going Further

我们希望您喜欢阅读我们的LED点胶机。If you liked this one,还有好多!

上拉电阻

快速介绍上拉电阻-它们很重要,and how/when to use them.

逻辑层次

williamhill英格兰Learn the difference between 3.3V and 5V devices and logic levels.

电机和选择正确的电机

williamhill英格兰了解各种不同类型的电机及其工作原理。

Python编程教程:Raspberry PI入门

This guide will show you how to write programs on your Raspberry Pi using Python to control hardware.

MyoWar肌肉传感器套件

与来自Advancer Technologies的Myoware肌肉传感器合作的产品系列

运动控制可穿戴式LED舞具

使用加速度计根据您的移动控制LED!当你躺在地板上时,通过淡入淡出来让你的发光二极管呼吸,移动到您的一侧时关闭LED,或者让LED在倒立状态下闪烁!

交互式3D打印LED钻石道具

In this tutorial,我们将学习如何通williamhill英格兰过使用不可寻址的RGB LED条带和AT42QT1011电容式触摸感应3D打印半透明钻石道具,创建一个互动的戏剧道具来实现性能。

williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

英国威廉希尔Sparkfun Qwiic AS3935闪电探测器连接指南 埃利亚斯最闪耀 HTTPS://www.英国威廉希尔 SPARKFUN.COM/USERS/10101 URU:UBID:5B590CD8B4D9C49—759588F796E3705 2019年4月18日00:00:00-06:00

英国威廉希尔Sparkfun Qwiic AS3935闪电探测器连接指南williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t871

介绍

火花玩具英国威廉希尔QWIIC AS3935雷电探测器为您的下一个气象站或下一次骑自行车增加闪电探测功能。你担心远处隐约出现的云吗?那场风暴到底有多远?闪电探测器可以告诉你到40公里外风暴前面的距离,精确到1公里。它有错误的正面拒绝,并带有许多可配置的特性。为了获得这些特性,我们编写了一个库,让您在检测室内和室外时可以访问诸如风暴感应灵敏度之类的设置,或者触发中断所需的雷击次数!董事会支持威廉希尔公司在哪C and SPI,因此,我们推出了Qwiic连接器,使其易于集成到Qwiic环境中。

英国威廉希尔Sparkfun闪电探测器-AS3935(QWIIC)

英国威廉希尔Sparkfun闪电探测器-AS3935(QWIIC)

SEN-15266
24.95美元

所需材料

要遵循本教程中使用的示例代码,您还需要以下材料。但你可能并不需要一切,这取决于你拥有什么。Add it to your cart,通读指南,并根据需要调整手推车。

英国威廉希尔Sparkfun红板QWIIC

英国威廉希尔Sparkfun红板QWIIC

DEV-15123
19.95美元
USB micro-B电缆-6英尺

USB micro-B电缆-6英尺

CAB-10215
4.95美元
十二
QWIIC电缆-50毫米

QWIIC电缆-50毫米

PRT-14426
0.95美元
带尾纤的IC挂钩

带尾纤的IC挂钩

CAB-0971
4.95美元

如果您需要不同尺寸的QWIIC电缆,我们会提供包含多种尺寸的套件,但我们也会单独携带:

英国威廉希尔Sparkfun Qwiic电缆套件

英国威廉希尔Sparkfun Qwiic电缆套件

KIT-150
$7.95
QWIIC电缆-100毫米

QWIIC电缆-100毫米

PRT-14427
$1.50
Qwiic Cable - Breadboard Jumper (4-pin)

Qwiic Cable - Breadboard Jumper (4-pin)

PRT-14425
$1.50
QWIIC电缆-500 mm

QWIIC电缆-500 mm

PRT-14429
1.95美元

Tools

根据您的设置,你可能需要一个烙铁,焊料,和通用焊接附件.

Soldering Iron - 60W (Adjustable Temperature)

Soldering Iron - 60W (Adjustable Temperature)

TL-14566
12.95美元
无铅焊锡-15克管

无铅焊锡-15克管

TL—09163
3.50美元

建议阅读

如果你不熟悉QWIC系统,我们推荐阅读这里概述一下.

QWIIC连接系统
QWIIC连接系统

如果您不熟悉以下教程,我们还建议您查看它们。

串行外围接口(SPI)

SPI is commonly used to connect microcontrollers to peripherals such as sensors,移位寄存器,和SD卡。

I2C

I2c简介,one of the main embedded communications protocols in use today.

如何使用跳线垫和PCB跟踪

处理印刷电路板跳线垫和痕迹是一项基本技能。williamhill英格兰了解如何切割印刷电路板痕迹,add a solder jumper between pads to reroute connections,如果痕迹损坏,用绿线法修复痕迹。

Redboard QWIIC连接指南

This tutorial covers the basic functionality of the RedBoard Qwiic.本教程还介绍了如何开始闪烁LED和使用QWIIC系统。

硬件概述

功率

你可以提供3.3Vthrough the Qwiic connector on the board or through the3V3通孔集管上有标记的销。当你正确地给电路板供电时,车载电源指示灯将点亮。

Input Power

发光二极管

产品上有一个红色LED指示灯,当板上通电时会亮起。您可以通过切断标签产品下面的跳线来断开此LED。发光二极管.

功率发光二极管

Qwiic Connector or IC引脚

板上有一个QWIIC连接器,可通过i轻松连接到传感器C.If you prefer the old school method of connecting to the IC引脚,we've also broken out those four pins on the side of the board as plated through holes.

QWIIC连接器或I2c

中断引脚

The interrupt pin turns high when the lightning detector has sensed an event,不管是闪电,骚扰者,或噪音。确保连接到该针以检查是否检测到事件。

中断引脚

跳线运动员

本产品下面有四个跳线。

板后跳线

从左到右从底部开始:有两个地址跳线药品不良反应这让你可以改变。缺省iC地址是0x03但它可以更改为其他三个选项:0x020x010x00.我们推荐0x03和0x02,但是如果你真的知道你在做什么,那么你也可以使用0x01或0x00。These two addresses are reserved for special IC命令,您可以阅读更多关于我C本文中的地址.

在两个地址跳线旁边是Ic上拉电阻跳线。If you have many IC devices chained together you may have tocut these jumpers.在你旁边,有SPI关闭时启用SPI的跳线。Finally,右上角是电源LED断开跳线。如果电源指示灯有刺激性或不必要,然后剪断那件套衫。

天线

板上的大的ISH部分是电路板的天线。Keep the area around the antenna free as it is what picks up lightning events.这样说,check below for some common sources of false positives and noise.

天线

假阳性和噪声

有许多源可以导致误报,但闪电探测器本身可以在默认情况下可靠地过滤掉这些源。If not,您可以使用Lightning Detector库配置许多设置,以增强芯片对噪声和误报的鲁棒性。However,it can help to know some potential sources of noise (from the AS3935 fact sheet) fluorescent lighting,微波炉,和开关。从数据表中,它指出智能手机和智能手表显示,and DC-DC converters can also trigger as noise.请记住,您可能需要将您的闪电探测器放在手机顶部,以便进行注册。I found that using the lightning detector in the office was near impossible because I'm surrounded by at least ten computers,三台3D打印机,还有许多烙铁。

Hardware Assembly

如果您有一个像Redboard Qwiic那样支持Qwiic的微控制器,那么这个很容易组合在一起。将QWIIC电缆插入Redboard QWIIC和Sparkfun AS3935闪电探测器之间。英国威廉希尔您还需要在红板QWIIC的针脚4和QWIIC AS3935的内部针脚之间焊接导线。为了快速测试,安集成电路钩子使用。为了安全连接,我们推荐软钎焊二者之间的头或线。

AS3935接Arduino

注:The sensor has a logic level of 3.3V.我已将中断连接到Redboard QWIIC的插脚4,即使插脚为5伏。这不会伤害AS3935,因为我们在做一个简单的 数字读入().

库安装

注:此示例假设您正在桌面上使用ARDUNO IDE的最新版本。如果这是你第一次使用Arduino,请回顾我们的教程 安装Arduino IDE。如果您以前没有安装过Arduino库,请查看我们的 安装指南。

我们为Sparkfun闪电探测器提供了一个库,用于配置IC提供的所有英国威廉希尔可用设置。一些特性包括修改天线的灵敏度,无论你在里面还是在外面,当IC触发中断时进行微调,or modifying the resonance frequency of the antenna.您可以在Arduino库管理器中搜索“Sparkfun闪电探测器”,英国威廉希尔or you can click the button below to get the library and install it manually.Finally,您也可以从吉图布回购.

示例代码

下面的示例将从中的基本功能开始示例1:basiclifting.ino.打开示例进行后续操作。

在最上面,我们有一些定义可以帮助我们区分闪电探测器探测到的事件类型。有三种可能的“事件”。当然是第一个闪电,but we may also get afalse闪电事件称为干扰器,最后我们可以听到噪音.

语言:C包括
       
        包括:
        
         #包括“sparkf英国威廉希尔un_as3935.h”//0x03为默认值,but the address can also be 0x02,0x01或0x00//调整产品底部的地址跳线。#define as3935_addr 0x03 define indoor 0x12 define outdoor 0xE define lightning_int 0x08 define disturber_int 0x04 define noise_int 0x01//如果使用SPI,实例化不带地址的类://sparkfun_as3935 lightning英国威廉希尔;//如果您使用的是i-squared-c,请保留以下行。地址设置为//默认。英国威廉希尔sparkfun_as3935 lightning(as3935_addr);//interrupt pin for lightning detection const int lightningint=4;It NosieFoLoor=2;//这个变量保存代表雷电探测器发出的闪电或非闪电/事件的数字。int=0;
        
       

在设置中,我们将IC设置为在内部运行,因为我假设您在计算机上运行此代码。If you're outside change the parameter to室外.

language:cvoid setup()//检测到闪电时,中断插针变高。PinMode(LightningInt,输入);开始(115200);serial.println(“AS3935富兰克林闪电探测器”);//spi.begin()线.begin();// Begin Wire before lightning sensor.如果(!)lightning.begin())//初始化传感器。如果……闪电。Beginspi(9,2000000)//取消对SPI的注释。serial.println(“闪电探测器没有启动,冷冻!”;(1);}else serial.println(“schmow zow,闪电探测器准备好了!”);//闪电探测器默认为室内设置,灵敏度较低,如果您计划在户外使用此功能,/请取消对以下行的注释:://lightning.setindooroutdoor(outdoor);}

…最后是肉。这里我们只是监视中断插针。如果针脚读数高,然后集成电路听到了某种事件。然后,我们将读取中断寄存器来查看事件是什么,不管是不是闪电,一干扰器,或噪音.每个事件都打印在串行窗口115200波特.然而,闪电事件也将打印出风暴前部的估计距离。记住,这不是到闪电的距离,而是风暴。

language:cvoid loop()if(digitalread(lightningint)==high)//硬件已向我们发出事件警报,现在我们读取中断寄存器//来查看它到底是什么。intval=lightning.readInterruptReg();if(intval==noise_int)serial.println(“noise.”);//reduceneoise();/请参阅下面的上述还原函数。}else if(intval==disturber_int)serial.println(“disturber.”);}else if(intval==lightning_int)serial.println(“检测到雷击!”);/闪电!现在有多远?距离估计考虑到//过去15秒内任何以前看到的事件。字节距离=Lightning.DistanceTostorm();serial.print(“近似值”);序列号打印(距离);serial.println(“公里外!”);}}延迟(100);//我们不要太疯狂。

如果你坐在电脑前,你所在区域有很多射频噪声,那么你可能需要一种方法来降低闪电探测对这些事件的敏感度。调用此函数并将其输入一个小于7的数字,以增加其噪声阈值。同样地,您可以将此函数放入上面列出的noise if语句中,它将在每次出现noise事件时增加该阈值。这可以让你知道哪个数字最适合你所在的地区。

语言:cvoid reducenoise()+noisefloor;//制造商的默认值为2,最大值为7。if(noise floor>7)serial.println(“noise floor is at max!”);返回;} Surviv.PrimTLN(“增加事件阈值”);闪电。设置噪声电平(噪声地板);}

如果你听到闪电,然后在Arduino串行窗口中看到以下内容。

模拟噪声和闪电的示例输出

Resources and Going Further

关于AS3935的更多信息,查看以下链接:

需要一些其他天气感应部件你的项目?英国威廉希尔看看下面列出的一些。

气象表

气象表

SEN-08942
76.95美元
二十六
英国威廉希尔Sparkfun环境组合突破-CCS811/BME280(QWIIC)

英国威廉希尔Sparkfun环境组合突破-CCS811/BME280(QWIIC)

SEN-14434
$35.95
十二
英国威廉希尔SparkFun Pressure Sensor Breakout - MS5803-14BA

英国威廉希尔SparkFun Pressure Sensor Breakout - MS5803-14BA

SEN-12909
59.95美元
英国威廉希尔Sparkfun挡雨板

英国威廉希尔Sparkfun挡雨板

DEV-13956
39.95美元

下一个项目需要一些灵感吗?英国威廉希尔Check out some of these related tutorials to sense your environment!

英国威廉希尔Sparkfun发明家光子实验工具包指南

利用Sparkfun发明家的光子工具包,深入物联网的世界。英国威廉希尔

Photon Weather Shield Hookup Guide V11

利用Sparkfun天气防护罩为光子创建互联网连接的天气项目。英国威廉希尔英国威廉希尔

Arduino防风雨罩连接指南V12

读取湿度,压力和亮度迅速而容易。增加风速,direction and rain gauge for full weather station capabilities.

CCS811 Air Quality Breakout Hookup Guide

本教程向您展示如何使用I2c接口从CCS811分接板获取数据。

williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado

如何为micro:bit创建makecode包 Englandsaurus https://www.英国威廉希尔sparkfun.com/users/10116 urn:uuid:9ce5d601-bd5e-a313-6484-791837bea82e 2019年4月16日00:00:00-06:00

如何为micro:bit创建makecode包williamhill英格兰learn.英国威廉希尔sparkfun.com tutorial

可在线访问:http://sfe.io/t896

介绍

Microsoft MakeCode is a block based coding language designed to introduce people to coding.makecode很好,因为它允许算法设计中使用的基本结构和思想过程发生,而不必担心语法或数据类型。在引擎盖下,MaCeCODE是基于静态类型脚本和JavaScript。In this tutorial,我们将为土壤水分传感器使用现有的SparkFun扩展。英国威廉希尔

A Few Existing 英国威廉希尔SparkFun Extensions in MakeCode for micro:bit

A Few Existing 英国威廉希尔SparkFun Extensions in MakeCode for micro:bit

你需要的是

第一,让我们建立我们的构建环境,我们先下载和安装J.N..

您还需要一个Github帐户。现在继续打开任何旧命令提示并导航到存储GitHub文件的位置(我在C:所以对我来说这是C:GITHUB)然后继续运行以下命令。这将安装一些要使用的NPM包。

语言:bashnpm installnpm install jakenpm install typings

然后,我们将把pxt目录克隆到github文件夹中,并运行我们刚刚安装的这些NPM包。最后,再次返回到github文件夹。这是通过以下命令完成的。

语言:BASHGIT克隆HTTPS://GITHUBCOM/MICROSOFT/PXTCD PXTGIT签出V0NPM安装类型安装JAKECD。

然后我们将在micro:bit目标中克隆,在那里安装PXT。

语言:bashgit clone https://github.com/microsoft/pxt-microbitcd pxt microbitnpm install-g pxtnpm installcd..

这应该是我们建设项目所需要的一切,英国威廉希尔现在让我们克隆一个现有的Sparkfun MakeCode包并英国威廉希尔开始编辑它。

language:bashgit clone https://github.com/英国威廉希尔sparkfun/pxt-gator-light

改变什么

我们继续,然后创建新的Github存储库for our new MakeCode package,we'll call itPXT Gator水分.将此repo克隆到您的github文件夹中,然后继续复制闪光灯回购协议。我们主要看这两个gatorlightfiles,这个杰克逊文件,这个读数,最终,PNG.

PXT Gator水分

我们必须更改这些文件。单击图像放大

第一,我们要把所有的东西都重新命名为含水量,so go ahead and rename the twogatorlightfiles,一旦我们重新命名了它们,去开门吧杰克逊替换单词的每个实例light具有潮湿.的*.json文件告诉makecode要包含哪些文件,既然我们更改了文件名,我们也要在这里换。不要忽略将版本号回滚到0.0.1以及将描述更改为更有意义的内容。然后我们要打开两个含水量再次锉削并用水分替换每一个光照实例。

现在让我们看看代码在我们的代码块后面的实际位置,the blocks live in the*.ts当实际函数位于*CPP.我们来看看*CPP第一。我们确保包括PXT每个包裹,以及使用PXT命名空间。然后我们创建一个名称空间,“含水量并将从给定ADC值计算力士的函数。这是一个非常简单的函数,但我们可以从*.ts文件,which is what we really wanted.

语言:C包括“PXT.H”
       
        包括:
        
         using namespace pxt;namespace gatorMoisture {    /*    * Calculates the light in Lux based on the ADC value passed in.AdcVal中的1步等于.488uA或.976lux(在5V*///%uint16_t getlux(int16_t adcVal)返回AdcVal*.976;}
        
       

当我们在这里的时候,让我们改变格特鲁克斯到A获得水分函数返回介于0和1之间的浮点值,而不是以lux为单位的值。For this,我们将简单地划分阿德瓦尔通过ADC(1023)的满刻度范围传入。最后,我们的佳得乐水分.cpplooks like the following.

语言:C包括“PXT.H”
       
        包括:
        
         using namespace pxt;namespace gatorMoisture {    /*    * Calculates the light in Lux based on the ADC value passed in.adcval 1步等于.488uA或.976lux,在5V*///%浮动获取水分(int16_t adcval1)返回adcval 1023.0;}
        
       

现在,我们来看看如何在*.ts文件,当我们把所有的东西从光变湿后,应该是这样的。

语言:Cenum GatorMoistureType Moisture=1,adcval=2,/%color=f442442 icon=“\uf185”命名空间GatorMoisture//用于从GatorMoisture中读取湿度或直接ADV值的函数/***读取数字*//%weight=30 blockid=“GatorMoisture _Moisture”block=“get Moisture on Pin%Pin in%MoistureType”导出功能湿度(Pin:AnalogPin,类型:GatorMoistureType):编号让adcVal=管脚。AnalogReadPin(管脚)开关(类型)CASE GatorMoistureType.Moisture:返回GetMoisture(adcVal)CASE GatorMoistureType.adcVal:返回adcVal默认值:返回-11111111/***用于模拟器的功能,实际实现在gatormoisture.cpp中*///%shim=gatormoisture::getmoisture函数getmoisture(adcval:number)//模拟器返回0的假函数

If we want to have options in dropdowns for our blocks,我们使用枚举创建它们。我们可以选择是否需要水分,介于0和1之间的值,或者直达。所以在名称空间之外,我们为可能的数据类型创建一个枚举(如下所示)。

语言:Cenum GatorMoistureType Moisture=1,ADCVAL=2,}

We then must pick a color and icon for our extension,这是在声明命名空间之前在行中完成的。颜色可以是任何6位数字,十六进制值,而图标将使用来自丰塔维斯梅图标库。The color and icon declarations are shown below.

language:c//% color=#f44242 icon="\uf185"

We then need to define what our block looks like and where it sits relative to other blocks.这是通过设置重量块标识,和.权重为100的块将在权重低于100的块上方和权重高于100的块下方列出自己。This allows you to decide how you want all of your blocks to be listed.小伙子必须mynamespacetitle_functionTitle所以为了我们潮湿块,哪个在含水量命名空间,我们的blockid是gatorMoisture_moisture.Finally,we decide exactly what goes into the text for the block using the字符串。我们想要成为下拉列表的任何变量都将在前面加上%.下面的代码将创建一个带有用于Pin选择下拉列表和允许您在两者之间进行选择的下拉列表的块潮湿adcVal.此块将调用函数潮湿使用从下拉列表中选择的任何参数。

language:c//% weight=30 blockId="gatorMoisture_moisture" block="Get moisture on pin %pin | in %gatorMoistureType"

Finally,我们需要编写一个函数来读取我们的pin。Any function that is declared asexportwill appear as a block in MakeCode.此函数的参数将是我们声明为支持下拉的变量的任何参数,我们通常需要基于类型设置switch语句,以返回所选每个类型的正确值。注意我们怎么打电话获得水分,我们的*CPP当我们的类型是潮湿.We also must declare what the function returns,在这种情况下,一个数字。

语言:cexport功能水分(pin:analogpin,类型:GatorMoistureType):编号让adcVal=管脚。AnalogReadPin(管脚)开关(类型)箱GatorMoistureType.Moisture:返回getMoisture(adcVal)箱GatorMoistureType.adcVal:返回adcVal默认值:返回-11111111

我们的任何功能*CPP模拟器需要一个虚拟函数。我们为我们的获得水分功能如下。注意如何,因为它没有出口,我们不会在makecode中看到它。

language:c//%shim=gatormoisture::getmoisture function getmoisture(adcval:number)//仿真器假函数返回0

Finally,我们需要更改自述文件(第49行)到我们的名称空间,后跟github地址,这看起来像GatorMoisture=Github:英国威廉希尔Sparkfun/PXT Gator土壤并允许将包识别为makecode扩展。

编译您的代码

Now that we've written all of our code,是时候编译和测试它了,继续打开命令提示符窗口,导航到MaCeCODE包所在的目录。曾经在那里,运行以下命令链接以安装必要的PXT工具以生成代码

language:bashnpm installnpm install typingsnpm install jakenpm link ../pxtpxt target microbitpxt install

We then want to build our code and commit and push our changes to GitHub.

语言:bashpxt buildgit add-togg commit-m“Changing names to gator:moisture”pxt bump

PXT凸点命令将提示您输入用于标记发布的版本号,只需确保它高于或等于提示您输入的版本。然后,命令将标记您的提交并将其推送到GITHUB作为发布。

PXT Bump

PXT Bump

测试,冲洗,重复!

为了测试我们的代码,我们去打开makecode网站导航到扩展。

扩展

扩展

From there,我们将用记号登录到GITHUB,要做到这一点,单击时只需按照说明操作登录到GITHUB.

登录到GITHUB

登录到GITHUB

登录后,我们可以将github repo的URL粘贴到扩展搜索栏中,点击结果包括它!如果它不弹出,确保您的存储库是公共的。

一旦你包括了你的分机,随时查看它的各种功能,edit the code as necessary and re-upload it to GitHub until you're satisfied!

Resources and Going Further

最后,we'll eventually want our extension to be approved by Microsoft.要做到这一点,填写这种形式to get started getting your package approved.

Check out the resources below.


williamhill英格兰学习.spa英国威廉希尔rkfun.com|CC BY-SA 3.0| 英国威廉希尔Sparkfun电子公司Colorado