如何让树莓派Pico支持LoRaWAN

LoRaWAN是由LoRa联盟推出的一个低功耗广域网规范,这一技术可以为电池供电的无线设备提供区域、国家甚至全球的网络。

它瞄准了物联网中的一些核心需求,比如安全的双向通讯、移动化和本地服务。该技术无需复杂配置,即可以让智能设备实现无缝的互操作,给物联网领域的用户、开发者和企业自由操作权限。

使用合理的LoRa天线,你可以通过网关将电池供电的传感器连到互联网,信号覆盖半径大约15公里。缺点是可用带宽将以字节为单位,而不是以兆字节甚至千字节为单位。

一个Adafruit RFM95W LoRa无线电装置连接到树莓派Pico

Arduino LoRa库的作者Sandeep Mistry为树莓派Pico搞定了LoRa和以太网支持。

目前他的库能让Semtech SX1276无线电模块更好的工作在Pico和其它RP2040芯片的开发板上。

当然,这意味着像Adafruit的RFM95W、LoRa FeatherWing这样的模块,也可以获得很好的支持。

LoRaWAN覆盖情况

要使用LoRaWAN启用的Pico,你(的设备)需要在LoRa网关覆盖的范围内。幸运的是,有一个名叫“The Things Network”的LoRaWAN网络,它几乎覆盖全球。

关于The Things Network的视频:

https://mp.weixin.qq.com/s/GIPuEb6qQMOmHcPDRXmF9A

这取决于你当前所处的地理位置,很可能你已经在覆盖范围内了。比如英国境内的LoRa网络情况(如图)。

一个LoRaWAN基站的成本在几千美元的日子已经一去不复返了。现在你可以花75英镑买个LoRa网关。

注:The Things Network 是 LoRaWAN 行业里著名的 Network Server 提供方,许多国外的厂家,都是默认连接 TTN 的平台。

作为 LoRa 联盟董事会成员,TTN 现在已经在全球90多个国家和地区部署了3000多个基站,这个数字还在飞速增长中。TTN一直秉承的 “Let’s build this thing together”的开放文化也吸引了超过3万名开发者加入 TTN 社区。

获取源码

如果你已经设置并可以使用树莓派Pico工具链,请确保你的 pico-sdk 是最新的。如果没有,你应该首先设置C/C++ SDK,然后再从GitHub中获取项目。

$ git clone --recurse-submodules https://github.com/sandeepmistry/pico-lorawan.git

$ cd pico_lorawan

PICO_SDK_PATH 在继续操作之前,请确保做好设置。举例来说,如果你要在一个树莓派上构建相关应用,你要先运行 pico_setup.sh 脚本,或者按照我们的指示入门指南。

先设置好环境变量。

$ export PICO_SDK_PATH = /home/pi/pico/pico-sdk

之后,你可以准备构建库和示例应用程序。但是在执行此操作之前,我们需要做另外两件事:在要存储数据的云基础架构上进行配置,并将LoRa无线电模块连接到Raspberry Pi Pico。

设置一个应用程序

The Things Network 目前正在从V2迁移到V3堆栈。由于我的家庭网关是几年前设置的,因此我仍在使用V2软件,尚未迁移。

因此,我将构建一个V2风格的应用程序。但如果你用公共网关或自己构建网关,则可构建V3样式的应用程序。

同理,你可以根据下面的内容逐步完成操作。请注意,对于新的V3堆栈,有一个单独的网络控制台,外观可能有所不同。

地址:https://account.thethingsnetwork.org/users/authorize?client_id=ttn-console&redirect_uri=https:%2F%2Fconsole.thethingsnetwork.org%2Foauth%2Fcallback&response_type=code&state=_wyzCpGx9A

当新网关覆盖范围内的任何LoRa设备将其数据包接收和发送到上游的“The Things Network”时,除非数据包有其它地方可去,否则数据包将被丢弃。换句话说,“The Things Network”需要知道网关接收的数据包路由到哪里。

为了提供此信息,我们首先需要在The Things Network Console中创建一个应用程序 。

然后你需要做的就是输入唯一的Application ID字符串(可以是任何内容)。控制台将生成一个Application EUI和一个默认的Access Key,我们将通过它们,将设备注册到我们的应用程序中。

一旦我们注册了应用程序,我们要做的就是将单个设备(以后可能有多个设备)注册到该应用程序,以便后端知道从该设备路由数据包的位置。

注册设备

可以从控制台的应用程序页面注册我们的设备。

设备ID是易于识别的字符串,用于标识我们的远程设备。

由于Adafruit的RFM9W功能板在包装袋中有像无线入网号那种唯一标识符的贴纸,因此我们可以使用它在字符串后附加以唯一地标识我们的树莓派Pico,因此最终得到类似pico-xy-xy-xy-xy-xy-xy的设备ID名称。

我们还需要生成一个Device EUI2,这是一个64位的唯一标识符。这里我们同样可以使用标签上的唯一标识符,只不过这次我们可以用两个前导零 0000xyxyxyxyxyxyxy填充它,以便生成我们的Device EUI。你也可以使用pico_get_unique_board_id()来生成Device EUI。

相关链接:https://github.com/sandeepmistry/pico-lorawan/blob/main/examples/default_dev_eui/main.c

如果你要在注册后查看“设备”页面,则需要设置Application EUI 2Application Key 2来让开发板与LoRa网络通信。准确地说,是让网络正确地将数据包从你的开发板路由到你的应用程序。

在面包板上接线

现在我们已经设置了云后端,接下来需要做的是将Pico连接到LoRa扩展板。不幸的是,RFM95W breakout 与面包板的连接并不友好 —— 比如这个项目,需要访问电路板两侧的无线电引脚。在这种情况下,板子的分接头宽度有点太大了(对于标准面包板而言)。

幸运的是,这并不是什么大问题,但是你需要准备一束公对母跳线以及面包板。继续接通RFM95W模块和Raspberry Pi Pico。接线板上的引脚和你的Pico之间的映射应该如下所示:

PicoRP20401SX1276 ModuleRFM95W Breakout
3V3 (OUT)VCCVIN
GNDGNDGNDGND
Pin 10GP7DIO0G0
Pin 11GP8NSSCS
Pin 12GP9RESETRST
Pin 14GP10DIO1G1
Pin 21GP16 (SPI0 RX)MISOMISO
Pin 24GP18 (SPI0 SCK)SCKSCK
Pin 25GP19 (SPI0 TX)MOSIMOSI
物理引脚,RP2040引脚,SX1276模块和RFM95W扩展板之间的映射
注:这些引脚是库的默认引脚,可以在软件中更改。

构建和部署软件

现在,我们已经在云上建立了后端,并且我们已经物理上“构建”了无线电,我们可以构建和部署LoRaWAN应用程序。该库提供的示例应用程序之一将从RP2040微控制器上的传感器读取温度,并通过LoRaWAN无线电将其定期发送到你的Things Network应用程序。

void internal_temperature_init() {
    adc_init();
    adc_select_input(4);
    adc_set_temp_sensor_enabled(true);
}

float internal_temperature_get() {
    float adc_voltage = adc_read() * 3.3f / 4096;
    float adc_temperature = 27 - (adc_voltage - 0.706f) / 0.001721f;

    return adc_temperature;
}

继续,进入签出的otaa_temperature_led示例应用程序目录。这个例子用到了OTAA,所以我们需要Device EUI,Application EUI和Application Key。

$ cd examples/otaa_temperature_led/

打开config.h文件,在你喜欢的编辑和更改REGION,DEVICE_EUI,APP_EUI,并APP_KEY在网络控制台中显示的值。该代码期望使用(默认)字符串格式,十六进制数字之间没有空格,而不是字节数组表示形式。

在你喜欢的编辑器中打开config.h文件,并将REGION、DEVICE_EUI、APP_EUI和APP_KEY更改为网络控制台中显示的值。该字符串默认是中间没有空格的十六进制数字,而不是字节数组。

#define LORAWAN_REGION          LORAMAC_REGION_EU868
#define LORAWAN_DEVICE_EUI      "Insert your Device EUI"
#define LORAWAN_APP_EUI         "Insert your Application EUI"
#define LORAWAN_APP_KEY         "Insert your App Key"
#define LORAWAN_CHANNEL_MASK    NULL

我当前位于英国,LoRa广播频率为868MHz。

因此我要将区域设置为LORAMAC_REGION_EU868。

如果你在美国,则使用915MHz,因此需要将区域设置为LORAMAC_REGION_US915。

编辑config.h文件之后,就可以继续构建示例应用程序了。

$ cd ../..
$ mkdir build
$ cd build
$ cmake ..
$ make

如果一切顺利的话,你应该有一个UF2文件在build/examples/otaa_temperature_led/的目录,名字是pico_lorawan_otaa_temperature_led.uf2

现在,你可以按照常规方式将此UF2文件加载到树莓派Pico上。

先接好你的Raspberry Pi Pico开发板和Micro USB电缆,然后再将电缆的另一头插入有集成开发环境的电脑,按住Pico上的BOOTSEL按钮。插入后,松开按钮。

桌面上将会弹出一个名为RPI-RP2的磁盘。

双击将其打开,然后将UF2文件拖放到里面。如果遇到问题,请参阅《入门指南》第4章以 获取 更多信息。

Pico现在将运行LoRaWAN应用程序,如果需要,可以通过打开与Pico的USB串行连接来查看一些调试信息。打开终端窗口并启动 minicom

$ minicom -D /dev/ttyACM0

传送资料

但是,你需要转向Network控制台来查看真实的信息。你应该能看到一个初始连接消息,后面跟着一些帧。每一帧代表一个温度测量值通过LoRaWAN网关,从你的Pico发送到The Things Network网络应用。

有效负载值是Raspberry Pi Pico内部温度传感器以十六进制形式测得的温度。

这有点超出本文的讨论范围,但是你现在可以添加一个解码器和集成功能,使你可以将数据从十六进制解码为人类可读的数据,然后将其保存到数据库中。

为了说明你可以在此处执行的操作的强大功能,请转到应用程序的“有效载荷格式”标签,然后在“解码器”框中输入以下Javascript,然后向下滚动并点击绿色的“保存有效载荷功能”按钮。

function Decoder(bytes, port) {
 
  var decoded = {};
  decoded.temp = bytes[0];
  
  return decoded;
}

返回“数据”选项卡,你应该看到现在以十六进制表示的有效负载已经以摄氏温度为后缀。我们的简单解码器已将有效负载提取并将其转换回Javascript对象。

发送命令

除了发送温度数据之外,该示例应用程序还让你可以直接从The Things Network控制台切换Raspberry Pi Pico上的LED。

进入网络控制台的设备页面,在Downlink Payload框中输入“01”,并点击“发送”按钮。然后切换到Data选项卡。你应该会看到一个“Download scheduled”行,如果继续观察,你应该会看到下行的字节。

当这种情况发生时,你树莓派Pico上的LED应该会亮起!返回网络控制台并在有效载荷箱中输入“00”将(最终)关闭Pico的LED。

请记住,LoRaWAN是远程的,但带宽很低。你不要期望下行命令能即时响应。

接下来还有什么

OTAA示例应用程序是一个非常好的框架,你可以在此基础上构建它,它允许你获取数据并通过LoRa将其发送到云端,还可以从云端向支持LoRa的Pico发送命令。

地址:https://github.com/sandeepmistry/pico-lorawan/tree/main/examples/otaa_temperature_led

小结

可以在树莓派论坛上找到对Pico开发的支持。还有一个(非官方的)Discord频道,很多活跃在社区的人似乎都在那里玩。

地址:https://discord.com/invite/avzEvd6Euv

关于文档的反馈应该作为一个问题发布到GitHub上的pico-feedback仓库,或者直接发布到它关注的相关仓库。

所有的文档,以及其他帮助和链接,都可以在入门页面上找到。

如果你不知道未来它在哪里,你总是可以从你的Pico找到它。如果你要访问相关页面,只需按住你Pico上的BOOTSEL按钮,把它插到你的笔记本电脑或树莓派上,然后释放按钮。最后打开RPI-RP2盘符,单击INDEX.HTM文件。

它将把你带到入门页。

用树莓派和JavaScript做一个自动给水机

国外视频主播Chris Courses一直很认真对待补水的问题,但他觉得自己花在装水上的时间太多。甚至还算了一下 —— 每年15个小时。

Chris经常使用三个不同尺寸的瓶子,并想做一个自动给水机来精确计算这几个瓶子装满所需要的时间。

视频地址:

https://mp.weixin.qq.com/s/TEGHe8TNtjib5tMlR0JTOA

视频段落:

00:00​ Intro
01:02​ Reasoning
02:22​ The Plan
03:10​ Water Filter Hardware
05:02​ Raspberry Pi Setup and Programming
06:51​ 3D Print of the Shell
08:07​ Finishing the Shell
09:25​ Epoxy Pours
10:51​ Component Insertion
11:32​ Perfboard Soldering
12:18​ Component Clean-Up
13:50​ LED Programming and Setup
14:42​ Installation and Mounting
16:17​ The Finished Product

硬件

1、树莓派
2、滤水器(这种滤水器,可以在带有内置饮水机的冰箱中找到)
相关链接:https://ecopure.com/product/5-year-in-line-refrigerator-filter-epinl30/
3、电磁阀(仅在收到电信号时打开)
4、灯条(HJHX WS2812B)

软件:

JavaScript

如何工作

电磁阀确定水何时可以通过,在它的两端分别是瓶子和滤水器,而树莓派控制电磁阀。

树莓派在这个项目中起什么作用?

树莓派将信号发送到电磁阀,告诉它特定的时间打开,并适时关闭(即装满特定水壶所需的时间)。Chris将其设置为单击物理按钮运行。

能否让这个装置好看一点?

Chris对灯光进行了编程,让其在注水时闪耀。事实证明,这种手动编码是该项目中最耗时的部分。

他还用3D打印了一个漂亮的外壳来容纳这个“Hydrobot 5000”(Chris小哥给这个设备起的名字)。

这是一个光滑的黑色外壳,可以挂在冰箱旁边的墙上。

最后,还需要连接水源,因此他将软管从“Hydrobot 5000”延伸到厨房的水槽。

成品:

看看这灯光,Chris小哥你是不是经常去蹦迪?

编译:王文文
线索:Raspberrypi.org

可将照片自动同步到苹果电脑的PiPhoto

用传统数码相机拍完照总是要导照片,但要把SD卡上的照片导到苹果电脑上并不容易。一般都得要USB转接头什么的。

如果拍完照,能直接通过网络,自动同步SD卡里的照片到电脑上,那该多好啊。

别担心,PiPhoto可以帮你实现这个需求。

自动化解决方案

一名名叫Lou Kratz的国外网友几乎每个周末都花很多时间在镜头前记录自己的冒险经历。但是他受不了每次都手动导入,所以他发明了PiPhoto,使流程自动化。

视频地址:

从视频中你可以看到,Lou Kratz用了一个非常简单的方案。只需将SD卡插入Raspberry Pi中,照片就会自动上传到计算机上。

树莓派上的LED用于显示状态:

在处理过程中,绿色指示灯将开始闪烁。绿色常亮表示作业成功,红色闪烁表示作业失败。

相关代码:

https://github.com/IoToutpost/pi-photo-sync

安装步骤:

下载代码,在树莓派上运行:
sudo ./install.sh

创建一个新的配置文件,并对其进行编辑。:
sudo cp config/piphoto.conf.example /etc/piphoto.conf

需要设置的变量是:
mount_point – SD卡的安装位置(应与以下udev规则中的位置相匹配。)
run_as_user – 用于运行同步程序的用户。
sync_command – 运行什么命令来同步照片。(请参见上面的目标)。

作者最新的改进可以让Raspberry Pi按日期整理所上传的照片,具体用法可参考代码。

树莓派支持Visual Studio Code了

作为开发者来说,IDE是一个必不可少的工具。

不过大部分火力强劲的IDE都是跑在x86架构上的,除非某些大厂为了兼容自己的产品,否则鲜有支持其它架构的大众流行IDE。

没想到的是,最近树莓派官方支持VS Code了。

VS Code是一款免费的开源IDE,最初是为x86架构的Windows,macOS和Linux准备的。开箱即用,支持常规文本编辑和git源代码控制,本地或远程调试。扩展功能强大,可支持JS、Python、Golang等广泛的编程语言。

如果你的树莓派正在运行Raspberry Pi OS ,那现在只需要运行两条命令,VS Code就能在你的系统上跑起来了。

sudo apt update 
sudo apt install code -y

安装VS Code之后,你可以从Raspberry Pi菜单中的Programming目录里运行它。

顺便说一句,尽量用4GB内存或更高版本的树莓派哦。

将树莓派打造成RFID和NFC的识别装置

用华为和苹果的朋友,应该知道自己的手机上基本都带NFC支付功能。

实际上NFC相关的场景不只是支付,还涵盖我们生活中的方方面面。比如IoT前哨站之前发过的一篇:DIY带数据的NFC“袖扣”

NFC(近场通信)基于RFID(射频识别)标准,两者都允许设备从被动令牌或电子标签接收数据(这意味着它不需要外部电源即可工作)。

市场上有现成的RFID和NFC识别设备出售,但可定制化程度不高。不过熟悉树莓派的朋友,可以凭借WaveShare的RFID/NFC扩展板,DIY一个更极客的识别装置。

和树莓派适配后的成品

开始之前,你需要一个能跑Raspberry Pi OS Lite(Buster)的树莓派,还有一个WaveShare NFC扩展板(大约人民币几十块)。

登录系统后,先更新系统。

sudo apt -y update && sudo apt -y upgrade

启用串行接口

该扩展版能够通过三个不同的接口进行通信:I2C,SPI和UART。

我们这里使用UART,因为它演示起来最简单。首先运行sudo raspi-config,进入“接口选项”,然后选择“串行接口”。

当系统询问你是否要登录控制台时,请选择“否”。当询问你是否要启用串行接口时,请选择“是”。

你需要立即重启,这将允许WaveShare HAT通过串行接口与我们的Raspberry Pi对话。

Waveshare HAT包含许多设置。请务必阅读说明!

配置并安装扩展板

如上所述,我们可以通过更改扩展板本身的某些物理开关来选择不同的接口。默认情况下,我们可以将其配置为UART / Serial,但具体接法最好到以下网址核对:

https://www.waveshare.com/wiki/PN532_NFC_HAT#Raspberry_Pi_examples

一般I1和I0处的跳线均应短接“ L”,D16和D20应短接,在DIP开关上,除RX和TX外,所有其他器件均应关闭。

仔细检查,然后将板子插到树莓派GPIO口上,启动。

然后执行如下命令:

sudo apt install rpi.gpio p7zip-full python3-pip
pip3 install spidev pyserial

wget https://www.waveshare.com/w/upload/6/67/Pn532-nfc-hat-code.7z
7z x Pn532-nfc-hat-code.7z

在尝试任何操作之前,需要编辑示例文件,以便我们使用UART。请根据自身要求将其注释或启用。

cd ~/raspberrypi/python
nano example_get_uid.py

pn532 = PN532_UART(debug=False, reset=20)

拿RFID令牌来测试一下

试试看!

如下所示启动示例代码:
python3 example_get_uid.py

如果一切顺利,屏幕将会显示与扩展板连接的信息。

现在,你可以将RFID令牌放在标有“ NFC”的HAT区域上。十六进制数字会开始在屏幕上滚动。这意味着,你的令牌已被检测到!

每个RFID令牌都有唯一的编号,因此可以用来标识不同人员的身份。

但是,该扩展板的功能远不止于此,因为它还支持NFC,并且可以与MIFARE Classic等通用标准进行通信,该标准允许卡上存储1kB的存储空间。

对应的example_dump_mifare.py文件在同一目录中(请确保你已正确设置串行连接)。

更进一步

现在,你可以读取RFID和NFC令牌上的唯一标识符了。

如前所述,如果你用的是MIFARE或NTAG2标准,还可以将数据写到卡上。

examples文件夹包含一些C程序,你可以试一下。

在卡上读取和写入少量数据,可以产生一些有趣的项目。在2018年的电磁场节上,整个游戏都是基于查找物理位置并使用MIFARE卡注册玩家的存在来进行的。

智能手机还可以使用NFC交换任何形式的数据,以及更多可能。

来自:Raspberrypi.org

编译:王文文

用树莓派和Lobe-python做智能垃圾分类

国外一个名叫Jen Fox的创客分享了一个由Raspberry Pi驱动的垃圾分类设备,该设备能告诉我们,当前的垃圾是可回收的,可堆肥的,还是有害的。

这个项目对初学者很友好,因为你不需要任何代码来训练机器学习模型,只需要稍微花点时间就可以将其加载到Raspberry Pi上。

这也是一个相当经济的装置,包括Raspberry Pi 4在内,价格不到70美元。

硬件:

Raspberry Pi 4B
树莓派摄像头模块
Adafruit 按钮
Adafruit LED

软件:

免编码的机器学习模型是用Lobe创建的,这是一个免费的桌面应用程序,可根据显示的对象自动训练图像分类器。

图像分类器认出了瓶盖

训练图像分类器:

基本上,你要上传一大堆的图片,然后告诉Lobe(分类程序)每一张图片显示的是什么对象。

比如哪些图片是可堆肥垃圾,哪些是可回收利用的物品,哪些是对生物有害的垃圾。当然,正如Jen所说,“你拥有的图片越多,模型识别起来越准确。”

接好摄像头模块的树莓派4B

你只需要编写少量代码就可以将图像分类器加载到树莓派上。Raspberry Pi摄像头充当图像分类器的“眼睛”,因此树莓派可以认出你要区分的垃圾种类。

将按钮和LED连接到Raspberry Pi的GPIO引脚,让它们与摄像头一起工作,并根据图像分类器识别“看到”的内容,点亮相应的LED。

将按钮和LED连接到GPIO引脚的示意图

当然,你要先找个盒子,最好可以安在墙上。

然后在纸板箱上钻一个方形的孔,以确保摄像头可以“看到”垃圾。

再钻几个孔,以便用户能看到LED灯,并可以接触按钮。

记得为Raspberry Pi的电源留出空间,以便接线。

Jen把盒子装在墙上,开始识别一个塑料袋

该项目源码地址:

https://github.com/IoToutpost/TrashClassifier

来自:Raspberrypi.org

编译:王文文

树莓派计算模块CM4上市,最低单价25美元

树莓派基金会近日发布了第四代树莓派计算模块 —— Raspberry Pi Compute Module 4。

共有 32 个具体型号,售价从 25 美元起。最低配置 1GB RAM/Lite/无无线版本,最高配置 8GB RAM/32GB Flash/无线增强版,90 美元。对应着 4 种不同内存和是否有无线通讯功能。

CM4 核心模块配置如下:

1.5GHz 4 核心 64-bit ARM Cortex-A72 CPU
VideoCore VI 图形,支持 OpenGL ES 3.x
H.265 (HEVC) 4Kp60 视频硬解码
H.264 (AVC) 视频 1080p60 硬解码和 1080p30 硬编码
双 HDMI 接口分辨率高达 4K
单通道 PCI Express 2.0 接口
双 MIPI DSI 显示器和双 MIPI CSI-2 摄像头接口
1GB, 2GB, 4GB 或 8GB LPDDR4-3200 SDRAM
可选 8GB, 16GB 或 32GB eMMC Flash 存储
可选 2.4GHz 和 5GHz IEEE 802.11b/g/n/ac 无线网卡和蓝牙 5.0
支持 IEEE 1588 的千兆以太网 PHY
28 个 GPIO 引脚,6 个 UART、6 个 I2C 和 5 个 SPI

详细价格表:


为配合计算模块核心使用,官方推出了一款新的 IO 板。

配置如下:

两个全尺寸 HDMI 接口
千兆以太网接口
两个 USB 2.0 接口
MicroSD 卡插槽(仅 Lite 有)
PCI Express Gen 2 x1 插槽
带有 40 针脚的 GPIO 接口
12V 输入接口(如果不使用 PCIe,可支持最高 26V)
摄像头和显示器 FPC 接口
实时时钟

IO 板的官方定价为 35 美元。

这是迄今为止性能最强的树莓派计算模块,性能远超之前的树莓派 CM3+。基金会表示每年销售的 700 万个树莓派产品中,有超过一半的产品被用于工业和商业应用。

Mini Raspberry Pi ——受波士顿动力启发的四足机器人

波士顿动力的机器狗,每次升级都会让大家眼前一亮。

波士顿动力-机器狗

但大家能不能用开源软件DIY一只呢?

一个外国朋友就在Raspberry Pi 3B的基础上开发了“Spot Micro”四足机器人。

树莓派开发的机器狗

通过构建此项目,redditor/thetrueonion(又名Mike)用C++和Python自学机器人软件开发,让机器人行走并掌握速度和方向控制。

Mike受到了Spot的启发,而Spot是波士顿动力公司为工业开发的机器人之一,可以执行远程操作和自主感应。

它如何行走?

迷你“Spot Micro”机器人通过键盘调整三轴角度命令/身体姿势控制模式,可以实现“步行状态”或“小跑状态”。

前者是一种四阶段步态,一次有两条腿对称运动(就像小跑)。

后者是八阶段步态,一次腿部摆动,并且在两者之间进行身体移动以保持平衡(就像人类走路一样)。

在此广泛的演练中,Mike分解了如何使机器人行走,并按顺序将舵机连接到PCA9685控制板。

操作系统和框架

Ubuntu 16.04 + ROS

用到那些零件?


1、树莓派3B
2、舵机控制板:PCA9685,通过I2C控制
3、舵机:12×PDI-HV5523MG
4、液晶面板:16×2 I2C液晶面板
5、电池:2s 4000 mAh锂电池,直接连接至电源伺服器
6、UBEC:HKU5 5V/5A ubec,作为5V稳压器为Raspberry Pi,LCD面板,PCA9685控制板供电
7、“Spot Micro”的Thingiverse 3D打印文件

代码地址:

https://github.com/mike4192/spotMicro

用树莓派驱动的青蛙泡泡机

吹泡泡机可能大家小时候都玩过,加满肥皂液,接上电源以后,它就会自动吹出泡泡。

现在有了树莓派,可以把它改成互联网控制的自动泡泡机了。

改造之前,泡泡机由手动开关控制,该开关可打开或关闭青蛙体内的电机。如果你想看到电机驱动青蛙吹出泡泡,则需要自己轻触此开关。

几个国外的创客制作了这款自动泡泡机,该机器由树莓派供电和控制,并且可以通过互联网启动。

他们选择了青蛙形的泡泡机,但你可以根据自己的喜好重新调整。改造使用两节AA电池运行的模型会更容易。

在解剖了“塑料两栖朋友”之后,他们通过继电器模块将其电机连接到Raspberry Pi。他们分享了相关的技术细节,可将继电器模块连接到Raspberry Pi的GPIO引脚。

相关技术介绍:

https://tutorials-raspberrypi.com/raspberry-pi-control-relay-switch-via-gpio

现在,我们可以用代码打开和关闭青蛙体内的马达。

通过在:

https://remo.tv/join/rffrwxr

这个地址登录,命令Raspberry Pi打开泡泡机的开关。

为了让互联网泡泡迷们看到一键劳动的成果,我们设置了Raspberry Pi摄像头模块,并将其构建的装置连接到机器人流媒体平台remo.tv。

别忘了加肥皂水。

用料清单:

泡泡机(最好是用两节AA电池运行的那种)
树莓派
5V继电器模块
Raspberry Pi摄像头模块
Remo.tv帐户
跳线

剩下的问题是:最好的泡沫肥皂配方是什么?

来自:​Raspberrypi.org

编译:王文文

OWL 项目:努力让大家在灾难中保持联络

当自然灾害破坏了传统的通信连接时,配置在多跳网络mesh network的物联网设备可以迅速部署以提供基本的连接。

OWL项目负责人在最近的开源峰会上说,一个以多跳网络、物联网和 LoRa 连接为中心的开源项目可以帮助急救和受灾人员在遭难后依然保持联系。

OWL项目的应用场景:当自然灾害频繁发生导致蜂窝网络和有线网络大范围中断以后,依然可以通过某种方式提供急救服务、供给或者可以解决关键问题的信息流。

该项目通过一大群“鸭子duck”(便宜、易于部署且不需要现有基础设施支持的小型无线模块)实现这个目的。一些“鸭子”是太阳能的,其它一些则用的是耐用电池。每只“鸭子”配备一个 LoRa 通信模块,用于在网络上和其它“鸭子”进行通信,同时配备有 Wi-Fi,而且可以加装蓝牙和 GPS 来实现其他功能。

这个想法是这样的,当网络瘫痪时,用户可以用他们的智能手机或者笔记本电脑与“鸭子”建立一个 Wi-Fi 连接,这个“鸭子”可以将小块的信息传递到网络的其他部分。信息继续向网络后端传递,直到到达“鸭子爸爸papaduck”,“鸭子爸爸”装备了可以与云上 OWL 数据管理系统连接的卫星系统(OWL 代表 “组织organization位置whereabouts物流logistics”)。信息可以通过云计算在智能手机或者网页上进行可视化,甚至可以通过 API 插入到现有的系统。

秘密在于“鸭群ClusterDuck” 协议,即使在一些模块不能正常工作的网络中,它仍然能保持信息流通。将其集成到一个开源固件,然后跑在大量便宜且容易获取的计算硬件上,类似树莓派,这样可以更容易且更快捷的建立一个“鸭群”网络。

创始人 Bryan Knouse 表示,这个项目的创建,是因为在 2017 年和 2018 年的毁灭性飓风中,要与受影响社区进行有效通信面临巨大的困难。

“我们的一些创始成员经历了这些灾难,然后我们会问自己:该做些什么?”,他说道。

在马亚圭斯,该项目吸引了一批来自波多黎各大学的学生和教授,大多数的系统测试都在那里进行。Knouse 说,校园中目前有 17 个太阳能“鸭子”,分布在屋顶和树上,并且计划增加数量。

他说,“这种合作关系实际上等于创建了一个开源社区,这些学生和教授正在帮助我们开发这个项目。”

该项目官方网站:https://www.project-owl.com/