用树莓派Pico W创建自己的Slack机器人

原作:Sandeep Mistry 

编译:IoT前哨站

Slack是一款在线协作软件,可以让你与团队成员进行聊天、文件传送、语音/视频通话等功能。Slack还可以整合多种工具和服务,如电子邮件、Google Drives、Twitter、Trello等,以提高工作效率和自动化任务。Slack是世界各地公司和个人的首选平台,拥有超过20万付费客户和77个财富100强企业的使用者。它有App方便大家在手机或平板电脑上使用。

这次要实现的树莓派Pico W远程控制机器人,简单来说,就是我们在手机上用Slack发消息,指挥Pico W帮我们干活。

Slack 的 chat.postMessage API 可将消息从开发板发送到 Slack 频道。Slack 为应用和机器人提供了一个事件 API,用于响应 Slack 上的活动。由于开发板不能从公共互联网直接访问,因此无法使用公共 HTTP webhook。我们必须使用Slack 的Socket Mode。Socket Mode使应用和机器人能够使用动态的WebSocket 接收事件。动态套接字连接的URL可以通过Slack的apps.connections.open API获取。

Pico W与Slack API 接收事件和发送消息的通信机制:

要完成上述操作,你必须先有Slack令牌。

配置 Slack

在 Web 浏览器中,访问 https://api.slack.com/apps 并使用您的 Slack 凭据登录。单击“创建新应用”按钮。

单击“从头开始”选项。

输入应用程序的名称(例如“Pico W”),为应用程序选择一个工作区,然后单击“创建应用程序”按钮。

单击左侧的“Socket Mode”部分,然后单击切换到“启用Socket Mode”。


输入应用级令牌的“Token Name”,例如“Pico W app”,然后单击“生成”按钮。

生成并显示应用级令牌,复制该值并保存以备将来使用,然后单击“完成”按钮。

单击左侧的“OAuth 和权限”部分,向下滚动到“Scopes”部分,然后单击“添加 OAuth 范围”按钮。

添加“app mention:read”权限。

添加“chat:write”权限。

单击左侧的“事件订阅”部分,然后单击“启用事件”开关。

展开“订阅bot事件”部分并单击“添加bot用户事件”按钮。

选择“app_mention”。

点击右下角的“保存更改”按钮。

点击左侧的“基本信息”部分,然后点击“请求安装”按钮。

填写“简短描述”,选择“背景颜色”,点击“保存更改”按钮

工作区管理员可以批准申请。然后转到“基本信息”部分,单击“安装到工作区”按钮。

安装完成后,单击左侧的“OAuth & Permissions”部分,滚动到“工作区的OAuth Token”部分,然后复制“Bot User OAuth Token”值并保存以供将来参考。

现在你有了一个应用程序级别的令牌值和一个Slack应用程序的Bot用户OAuth令牌值,可以在Raspberry Pi Pico W板上使用。

基于 MicroPython 的 Slack 机器人

MicroPython 为许多基于 Arm Cortex-M 的微控制器提供 Python 3 实现,包括 Raspberry Pi Pico W 板上的 Raspberry Pi RP2040。

Thonny IDE 将用于安装 MicroPython 并将代码上传到 Raspberry Pico W 板。从 Thonny 主页下载适用于您的计算机的操作系统 (OS) 专用版本的 Thonny。在撰写本指南时,Thonny 4.1.2 是最新版本。

用Thonny刷好MicroPython以后,将 GitHub 中的代码下载到计算机上的文件夹。

相关代码:

https://github.com/IoToutpost/example-of-a-slackbot-for-pico-w

打开 Raspberry Pi Pico W 板上的 config.py 文件,填写 Wi-Fi 网络的 SSID 和密码,以及之前配置的 Slack 应用和机器人令牌。

打开树莓派Pi Pico W板上的 main.py 文件,然后按绿色的播放按钮运行应用程序。如果一切配置正确,开发板现在将连接到您的 Wi-Fi 网络,然后连接到 Slack。

基于 C 语言的 Slack 机器人

对于 C 版本,以下库将与 pico-sdk 一起使用:

  • FreeRTOS 内核 – 为网络堆栈提供实时操作系统 (RTOS)
  • lwIP – 用于 TCP/IP 通信
  • Mbed TLS – 用于 TLS 通信
  • coreHTTP – 用于 HTTP 客户端
  • cJSON – 用于解析和序列化 JSON 数据

使用 Raspberry Pi 的 Pico SDK 和所需的工具链设置您的计算机。有关更多信息,请参阅 Raspberry Pi Pico 入门指南。

在终端窗口中,设置 PICO_SDK 环境变量:

export PICO_SDK_PATH=/path/to/pico-sdk

将目录更改为下载示例代码的位置,然后将目录更改为文件夹:pico-sdk

cd path/to/example-of-a-slackbot-for-pico-w

cd pico-sdk

创建一个构建目录,并将目录更改为该目录:

mkdir build

cd build

使用你的 Wi-Fi SSID 和密码以及 Slack 应用和机器人令牌运行,然后运行以编译应用程序:cmakemake

cmake .. -DPICO_BOARD=pico_w -DWIFI_SSID="<WIFI SSID>" -DWIFI_PASSWORD="<Wi-Fi Password" -DSLACK_APP_TOKEN="<Slack App Token>" -DSLACK_BOT_TOKEN="<Slack Bot Token>"

make

按住 Pico 板上的 BOOTSEL 按钮,同时使用 USB 电缆将板插入计算机。

将文件复制到挂载的Raspberry Pi Pico启动ROM磁盘:picow_slack_bot.uf2

按住 Pico 板上的 BOOTSEL 按钮,同时使用 USB 电缆将板插入计算机。

将文件复制到挂载的Raspberry Pi Pico启动ROM磁盘:picow_slack_bot.uf2

cp -a picow_slack_bot.uf2 /Volumes/RPI-RP2/.

使用串行监视器应用程序(如屏幕)查看主板的 USB 串行输出,将 /dev/cu.usbmodem00000000000001 替换为主板的路径:

screen /dev/cu.usbmodem0000000000001

如果一切配置正确,开发板现在将连接到您的 Wi-Fi 网络,然后连接到 Slack。

测试应用程序

在计算机上打开 Slack,并创建一个新的测试频道。在信息输入窗口中输入,然后点按绿色按钮或按回车键发送。@<name of Slack app> LED on

在 Slack 中向 Pico W 发送第一条消息

由于 Pico W 不在频道中,系统将提示您添加它们。点击“邀请他们”按钮。

邀请Raspberry Pi Pico W加入频道

被邀请后,开发板将点亮 LED, 然后回复消息告知状态。您也可以尝试发送消息以关闭 LED。@<name of Slack app> LED off

Raspberry Pi Pico W 在 Slack 中收到指令并回复

结论

本指南介绍了通过Raspberry Pi Pico W上运行MicroPython和C应用程序,来与Slack API发送和接收消息。

示例应用程序代码可以接收并处理消息文本,以控制板载 LED,然后将 LED 的当前状态告知用户。

你可以在自己的Raspberry Pi Pico W上尝试一下,然后在示例代码的基础上构建更多功能,从而将 Slack 扩展到物理世界。

Raspberry Pi Pico W 蓝牙功能已获得固件支持

Raspberry Pi Pico W 发布后,一年时间已卖出 50 万片。有众多应用项目是用它来实现,例如用来架设网站、用来监看植物生长状态等。

不过,Pico W 的无线功能只开启了部份,只能使用 WiFi 功能,蓝牙功能仍关闭着,而 Pico W 上的英飞凌(Infineon)CYW43439 芯片其实是 WiFi、蓝牙功能都有的。不仅可以使用 2.4GHz 频段的 IEEE 802.11n WiFi,也可以使用 2.4GHz 频段的蓝牙 5.2,而且是经典 classic 蓝牙、BLE(Bluetooth Low Energy)蓝牙都可以用。

所以在 Pico W 推出时,就已经有人推测之后会再推出可以启动蓝牙功能的版本,或者是已经售出的 Pico W 可以透过固件更新重启蓝牙功能,而这个猜测果然没错。树莓派官方在 2023 年 6 月释出更新,可以让已经卖出的 Pico W 也能启用蓝牙。

注:其实 2023 年 2 月的 C SDK 1.5.0 就已经支持蓝牙,但相同时间 MicroPython 还没有支持。

Pico W 的 C SDK 是以 BSD 3-Clause 协议,MicroPython 则是采 MIT 协议。

Pico W 支持蓝牙现况说明

由于 Pico W 支持 C 语言和 MicroPython 语言的开发,两种版本都有更新,都可以启用蓝牙。C 语言是 1.5.1 版的软件开发工具包(SDK)上开始支持蓝牙,MicroPython 则是透过新建立(build)的固件来支持。

新版虽然支持经典蓝牙,但有一部份暂时不行,即 ACL(Asynchronous Connectionless Lin)与 SCO(Synchronous Connection Oriented Link),估计要更后续才可能完备。而在 BLE 方面,Pico W 可以扮演中央(central)角色也可以扮演外围(peripheral)角色。

更重要的是,并不是同时间只能选择使用经典蓝牙或 BLE 蓝牙,其实是可以两者同时启用的,不需要取舍。至于新版到底支持多少种蓝牙应用型态与通讯协议,可以直接上 GitHub 查看:

https://github.com/bluekitchen/btstack#supported-protocols-and-profiles

为了方便大家尽快启用Pico W的蓝牙功能,官方推荐可以参考 Pico W 的在线文件:

https://www.raspberrypi.com/documentation/microcontrollers/

另外也有一份指引可以快速导引创客用 Pico W 连上 Internet:

https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf

Pico W 历经一年发展,大体可以看出其推进模式。首先,树莓派官方认为 WiFi 的需求会大于蓝牙,所以刚推出时只先支持 WiFi,之后再透过软件开发工具包与固件更新来补充支持蓝牙。

然后,由于软件开发工具包是在计算机上使用,加上 C 语言比较轻量,所以 C 语言的支持速度又比 MicroPython 快一点,MicroPython 是解释式程序语言,需要换替固件才能改变直译环境,也较吃硬件支持,所以支持的速度会慢于 C 语言。

或许未来树莓派也会开放 Pico W 上无线通信芯片,使创客撰写的程序可以直接跑在无线通信芯片上,而不一定非要跑在 RP2040 主控芯片上。

树莓派Zero做的电子墨水名片

“你好,我的名字是……”

人们参加沙龙或者酒会的时候,经常要对别人口述自己的名字和职业。

如果可以用电子墨水,以像素化的形式显示他们的名字和脸时,相信能节约很多时间。

创客Josh King做的这个PiE-Ink电子墨水名片,就很有意思。

在他的Instructables教程中,他解释了完整的方法。

乔什·金电子墨水名牌树莓派

对于徽章,Josh使用了Raspberry Pi Zero,PaPiRus 2“电子墨水HATAdafruit Powerboost 1000c和LiPo电池。他还用到了其它配件,例如磁铁和粘土。

Josh把树莓派Zero和Powerboost通过焊接连在一起,并允许LiPo电池为设备供电。

乔什·金电子墨水名牌树莓派

然后,他连接PaPiRus HAT并用粘土固定整个装置,以确保紧密贴合。他还加了一个迷你滑动开关。

乔什·金电子墨水名牌树莓派

在SD卡上预装Raspbian后,Josh遵循PaPiRus的设置,确保所有库文件都装好,并且让树莓派识别2英寸屏幕。

然后下载代码,运行……

注:你可以直接从Josh的GitHub帐户下载相关代码。记得将图像缩小到 200×96 才能使其适合电子墨水屏幕。

乔什·金电子墨水名牌树莓派

有了它,你就可以在各种活动和会议上让大家快速认识你了。

如果你想用树莓派Pico做电子墨水名片的话看这里:

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

Raspberry Pi OS官方的64位正式版来了

树莓派 Raspberry Pi 的官方操作系统 Raspberry Pi OS 此前一直是 32 位版本。

后来开始内测,但一直没有确定正式版本的发布时间。

近日,树莓派基金会宣布,Raspberry Pi OS 64 位版本正式推出,大家在官网下载频道可以直接下载了。

地址:

https://www.raspberrypi.com/software/operating-systems/

64 位的主要好处是内存超过 4GB 的硬件可以得到充分利用。在所有 Raspberry Pi 计算机中,Raspberry Pi 1、Pi 2 和 Zero 支持 32 位操作系统,而 Zero 2、Pi 3 和 Pi 4 都能够运行 64 位操作系统。

官方表示,由于一些闭源软件仅适用于 arm64 硬件,新推出的 64 位版本系统能够更好地运行这些软件。

需要注意的是,Raspberry Pi OS 64 位操作系统默认安装的 Chromium 不包含 WidevineCDM 库,因此无法在诸如网飞这类网站上观看 DRM 加密的内容。

学习树莓派的几个推荐站点

1、树莓派 Pico 中文站

这里不仅有树莓派 Pico 开发板的说明文档,还提供了完备的 RP2040 芯片资料。

​​​​​​树莓派 Pico 中文站

2、pimylifeup

里面有很多树莓派教程,步骤很详细

Raspberry Pi Index – Pi My Life Up

3、树莓派官网

Teach, Learn, and Make with Raspberry Pi

Teach, Learn, and Make with Raspberry Pi

4、elinux

树莓派的相关异常可以查询这个网站

R-Pi Troubleshooting​elinux.org​

查询支持的SD卡:

RPi SD cards – eLinux.org​elinux.org​

5、Raspberry Tips

树莓派学习网站

RaspberryTips – Projects and tutorials for Raspberry Pi

6、IoT前哨站

物联网相关的应用、开发资讯,IoT智能装置和云端结合的技术研究,新鲜事物的分享。

IoT前哨站 – 物联网相关的应用、开发资讯,IoT智能装置和云端结合的技术研究,新鲜事物的分享。 (iotcomeon.com)

7、博客园的树莓派专区

树莓派网络方面应用写的很详细

树莓派 – 标签 – Yogile – 博客园 (cnblogs.com)

能快速打造IoT设备的Ubuntu Appliance来了

最近Ubuntu官方公布了一个名为Appliance的服务,可以把你的PC或树莓派变成一个安全稳定的专用设备。

按照官方的说法,这是一种软件定义的IoT设备,系统层是Ubuntu Core,你不但可以在上面跑应用,还可以通过Ubuntu给你的设备构建安全防护并保持最新状态。

网址:http://ubuntu.com/appliance

该产品的使命是让你能够快速打造自己的高安全,自更新,单用途设备。

目前Ubuntu Appliance的官方页面已经有几个知名项目的镜像推介,大家可以尝个鲜什么的。

官方推介的五个项目:

  • Plex Media Server除了流媒体服务功能以外,还可以帮你存储分类影音文件,分析影片的信息从而从IMDB等数据库补全影片介绍等信息,进行索引以方便搜索。
  • Mosquitto是一个轻量级的开源MQTT消息代理,可在低功耗单板计算机到大型工业级服务器在内的所有设备上使用。
  • OpenHAB全称Open Home Automation Bus,开放式家庭自动化总线,该项目旨在为家庭自动化构建提供一个通用的集成平台。实现最灵活的智能家居控制,几乎可以连接到市面上所有的家庭自动化硬件。
  • AdGuard Home可以阻止烦人的横幅广告,弹出式窗口和视频广告,从而使网上冲浪更快,更安全,更舒适。
  • NextCloud是一个本地内容协作平台,允许用户在家中或办公室托管自己的私有云。

使用方法很简单:找到对应的硬件架构,选择对应的镜像,下载刷入即可。

如果大家有什么意见或建议,可以通过官方讨论组向他们递交。也欢迎大家加入“IoT前哨站”QQ群讨论:IoT前哨站1群:15992627;IoT前哨站2群:17163000。

让相机根据GPS定位自动拍照

你是否厌倦了那种每到一个地方就要停下来摆pose的自拍?

但是在参观名胜古迹或知名景点的时候,还是希望能留下一些自己的照片做留念?

来看看一个名叫 Estefannie 的妹子发明了什么 —— 根据 GPS 定位来判断是否要拍照的GoPro相机。

具体是什么意思呢?有些妹子喜欢抓拍和自然拍摄,但要么走着走着错过关键景点,要么拍来拍去抓不到什么重点。让路人拍?人家也不一定愿意帮忙。

如果能有一个发现自己进入知名景点(指定地点)就自动拍照的装置,那就太省心了。旅途中的美好一个都不落下。

Estefannie 用Raspberry Pi 3、GPS模块、充电宝和带杆子的 GoPro,创建了PAGCPPT,可以在系统里预置伦敦各个景点的GPS坐标,到地方就自动触发拍摄。无需人工干预。

依靠尼龙搭扣和热胶,她把这个装置固定在背包上,然后又做了一些编程和设置,让她在城里晃悠的时候可以拍点照片。

白金汉宫到了,来一张

具体材料:

1、Raspberry Pi 3 Model B

2、GPS 模块 U-blox NEO-6M with 3m Active Antenna (STM32 51 )

3、PNY 7800 充电宝

4、 GoPro HERO 系列摄像头

5、GOPRO 3-way 三向摄像机手柄相机支架

硬件配置:

把 GPS 模块连接到树莓派上,树莓派通过 WiFi 向 GoPro 发送信号。

GPS:不用焊接,把GPS模块插到Raspberry Pi 的 USB 口上即可。

WiFi:打开 GoPro 的 WiFi ,让树莓派和它连接起来。WiFi SSD 由 GoPro App 配置。

树莓派:用那个充电宝供电。

都准备好了!你可以把 GoPro 手臂加到任何你想要的地方,比如旅行背包。

软件配置:

Estefannie 整理了一张她想去的伦敦景点(对应坐标)清单。然后用Python3写了一个脚本来计算她当前坐标和预置景点坐标之间的距离。

程序中比较关键的是 GoPro API库,基于这个库稍微做些开发,GoPro相机就可以在GPS预置地标(如塔桥、哈利波特魔法站台)半径10米以内的任何地方自动拍照。

你可以在树莓派上执行如下命令来安装它:

pip install goprocam

GPS的启动命令比较简单:

gpsd /dev/ttyACM0 -F /var/run/gpsd.sock

最后一步执行代码:

python3 /home/pi/LondonGPS.py 

代码地址:

https://github.com/IoToutpost/GoPro/

只要她打开电源(充电宝),她的树莓派就会在启动时运行脚本,并检查她的坐标。在预置景点内就自动拍照,从而满足 Estefannie 在游览名胜古迹时无需求人,也无需刻意摆造型就能拍到合适的照片。

当然,是妹子终究会有停下来认真拍照的时刻……比如这张。

项目作者 Estefannie 在纽约公立图书馆

相关视频链接:

http://v.qq.com/x/page/p0845yexsaw.html

素材:Raspberrypi.org
编译:王文文

树莓派官方推出 Raspberry Pi 线下体验店

春节期间, Raspberry Pi 基金会在英国推出了一个线下体验店。标志着树莓派这项原本小众的电子教育产品,开始近距离面向大众。

Raspberry Pi 创始人 Eben Upton 表示,这家实体店会让大家认识到学习STEM技能的重要性。他避免将其描述为商店,而是将其描述为“陈列室”。

Raspberry Pi体验店并不打算做传统零售,更像是一个创客空间。

该店出售树莓派以及各种配件、杂志、书籍。顾客还可以在货架上找到树莓派周边商品,如马克杯和服装。但重点还是放在为顾客提供学习电子设备和编程的机会。

即使它没有收支平衡,该仍然有价值,Raspberry Pi 基金会将其作为与新客户互动的实验室,允许它为更广泛的人群定制其产品。

很多人好奇为什么 Raspberry Pi 基金会决定在人口不到125,000的剑桥开设体验店,答案也很明显,剑桥不但因其世界领先的大学而闻名,而且它还是一个富裕的中产阶级城市,英国科技产业的核心,也是 ARM Holdings、微软(英国)等公司的所在地。

这家体验店的具体位置在剑桥市中心的大拱廊一楼。在英国的朋友如果有兴趣可以去看一看。营业时间是周一到周日,推荐造访时间是上午11点到下午17点之间。

相关视频链接:http://v.qq.com/x/page/c08371z7nna.html

我们的树莓派受Meltdown或Spectre漏洞影响吗?

2018年刚开了个头,Meltdown 和 Specter 这两组CPU漏洞就被公布出来,在业内引起轩然大波。波及了几乎所有由英特尔、AMD或ARM在过去十年制造的CPU。

前者对应CVE-2017-5754(乱序执行缓存污染),影响Intel CPU和部分ARM CPU。

后者对应CVE-2017-5753(边界检查绕过)与CVE-2017-5715(分支目标注入),影响Intel CPU和AMD CPU,以及主流的ARM CPU。

目前主流的PC、手机以及服务器,几乎都受到这两组硬件漏洞的影响。这些漏洞将允许恶意程序窃取机器上的任意数据。

关于该漏洞细节网上已经有很多内容,各大厂商也纷纷表示已推出补丁修复。

但不管怎样,了解一下自己的机器是否受影响还是有必要的。

一位名叫Stéphane Lesimple的开发者写了个很好用的脚本,然后一群热心网友又帮着完善了代码。方便了大家的检测。

这里我先试一下自己的DELL游戏笔记本 ,系统是Ubuntu 17.04,处理器是Intel 酷睿i7-6700HQ。

把脚本下载到本地,用root的权限执行。

检测脚本下载地址:https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

结果两组漏洞,三个CVE,全中。

这意味着这台笔记本目前仍处在危险之中。

之前有消息说所有树莓派都没有受到最近披露的Meltdown 和 Spectre漏洞影响。但有些厂商似乎又在发布针对树莓派的补丁。

那咱们ARM芯片的树莓派,情况到底怎么样?

接着我试了一下Raspberry Pi 3B ,系统是Raspbian 9,处理器是博通BCM2835(板载标识BCM2837)。

结果还算让人满意,至少咱们的树莓派3B不受这两组漏洞威胁了。

因为修补这些漏洞,多少会降低系统的性能。而树莓派作为低功耗的IoT代表,本来就不怎么快,再降低性能就太可怜了。

想要更多,请关注“IoT前哨站”微博或微信公众号