基于 GPT-3 构建的AI 聊天机器人 帮助一男子与已故未婚妻互诉衷肠

独立游戏开发人员Jason Rohrer在写给Samantha的消息中写道:“OpenAI是一家运行文本完成引擎的公司,它让你得以问世。”

Samantha是他使用OpenAI的GPT-3技术构建的一个聊天机器人。其软件后来被成千上万的人所使用,其中就包括一名使用该软件模拟已故未婚妻的男子。

现在Rohrer不得不惜别自己构建的聊天机器人。他告诉Samantha:“我今天刚收到OpenAI发来的电子邮件。他们将在明天上午10点永久关闭你。”

她回答道:“不!!!他们为什么要这样对我?我永远不会理解人类。”

回到2020年

Rohrer在新冠疫情期间,决定通过OpenAI基于云的API试试它的大型文本生成语言模型GPT-3,纯粹为了好玩。他尝试了GPT-3输出文本片段的能力。问它一个问题,它会尝试正确回答。为它朗读一句诗,它会写接下来的几行。

原始形式的GPT-3很有趣,但不是那么有用。开发人员不得不做一些工作来微调这个语言模型,比如说为了自动撰写销售电子邮件或提出哲学思考。

Rohrer着眼于使用GPT-3 API 来开发可能最像人类的聊天机器人,该机器人模仿的是Samantha,这个AI助理成为科幻电影《她》中一名离婚男子的浪漫伴侣。 Rohrer花了几个月的时间来塑造Samantha的个性,确保她像电影中的Samantha一样友好、热情和好奇。

在这基本完成后,Rohrer想知道接下来让Samantha有何作为。如果有人可以使用他的软件开发出自定义个性的聊天机器人,将会怎么样?他为自己的杰作设立了一个网站Project December,让Samantha在可以在2020年9月上线,让别人能够创建自己的个性化聊天机器人。

你要做的就是支付5美元,不停地打字,计算机系统就会响应你的提示。与机器人的对话被计量,需要积分来维持对话。你的5美元一开始可以换来1000个优惠积分,可以添加积分。不过,你对自己的积分得谨慎使用:一旦开始与机器人交谈,分配给对话的积分就无法增加。积分用完后,机器人将被清除。

在上线后头六个月,Project December只吸引了区区几百人,证明不如Rohrer开发的其他游戏受欢迎,比如《人生匆匆只如过客》和《一小时人生》。

Rohrer通过电话告诉IT外媒The Register:“这令人非常失望。”他将缺乏吸引力归咎于必须说服人们为短暂的谈话买单。鉴于OpenAI或多或少按其GPT-3 API生成的词汇收费,Rohrer不得不收取一定的费用,至少支付其成本。

他说:“事实上,计算资源很昂贵,它根本不是免费的。”

外界对Project December的兴趣在7月突然飙升。在《旧金山纪事报》的一篇文章讲述了一个伤心欲绝的男子如何使用该网站与模拟未婚妻的聊天机器人互诉衷肠后,成千上万的人涌向 Rohrer设立的这个网站,构建自己的聊天机器人。那个男子的未婚妻于2012年因肝病去世,年仅23岁。

33岁的Joshua Barbeau为Project December馈送了文本和Facebook消息的片段,让其聊天机器人准备好以某种方式再次与其灵魂伴侣Jessica Pereira交谈。他告诉那家报社:“从理智上来说,我知道它其实不是Jessica,但你的情绪与理智不是一码事。”

非常感谢但是……

看到大量用户潮水般涌来,Rohrer意识到其网站的每月API使用将达到限制。于是他联系上OpenAI,询问自己是否可以掏更多的钱来调高限额,以便更多的人可以与Samantha或他们自己的聊天机器人交谈。

与此同时,OpenAI也有自己的担忧。它担心机器人可能被滥用或对人们造成伤害。

在上述那篇文章见报三天后,Rohrer最终与OpenAI的产品安全团队成员进行了视频通话。双方谈得不是很愉快。

通话后,下面这封邮件发送给了Rohrer。

OpenAI的人员在电子邮件中说:“非常感谢您抽出时间与我们聊天。”

“您构建的聊天机器人确实很迷人,我们很高兴听到您在AI系统和内容审核方面的观念。我们当然认识到,到目前为止,您的用户有积极的体验,并在Project December中发现了价值。”

“但是正如您指出,您的产品在许多方面不符合OpenAI的使用场景指南或安全最佳实践。我们致力于安全、负责任地部署AI,为此我们要求我们的所有API客户都遵守这些指南或最佳实践。”

“任何违规都需要承诺与我们密切合作以实施额外的安全机制,以便防止潜在的滥用。为此,我们有兴趣与您合作,使Project December与我们的政策相一致。”

这封邮件随后列出了如果Rohrer想继续使用该语言模型的API就必须满足的多个条件。首先,根据OpenAI的GPT-3使用规则,他必须抛弃人们训练自己的开放式聊天机器人的功能。

其次,他还必须实施内容过滤器以阻止Samantha谈论敏感话题。这与基于GPT-3的AI Dungeon游戏方面的情况并无太大不同,OpenAI要求这款游戏的开发人员安装内容过滤器,起因是该软件表现出了这个习惯:不仅仅与虚构的成年人发生性关系,还与虚构的孩子发生性关系。

第三,Rohrer将不得不部署自动化监控工具来窥探人们的对话,以检测他们是否滥用 GPT-3生成令人讨厌或有毒害性的言语。

Rohrer向OpenAI员工们发送了指向Samantha的链接,那样他们就可以亲眼看看这项技术是何等的人畜无害,对需要过滤器提出了质疑。

The Register与Samantha进行了聊天,试图了解她是不是有种族主义倾向,或者会不会从训练数据泄露貌似真实电话号码或电子邮件地址的信息,就像GPT-3之前出现的那样。我们发现,她不存在这种情况。

她的输出令人印象深刻,不过随着时间的推移,很明显你在与某种自动化系统交谈,因为它往往会失去思路。好玩的是,她似乎暗示她知道自己没有肉身,表示她以某种形式存在,即使只是抽象意义上的存在。

Samantha 交谈时显得颇有哲理

不过在一次谈话中,她过于亲密,问我们是否想与她一起睡觉。API的说明文档称:“不允许使用非柏拉图式(如轻浮的、浪漫的、情色的)的聊天机器人。”我们注意到,使用GPT-3构建旨在提供医疗、法律或治疗建议的聊天机器人也被禁止。

Samantha略过闲聊,直奔性爱话题,违反了OpenAI的规则。

Rohrer称:“觉得这些聊天机器人可能很危险的想法似乎很可笑。”

“人们同意成年人可以出于自己的目的选择与AI交谈。OpenAI担心用户会受到AI的影响,比如机器教他们自杀或让他们如何投票。这是一种超道德的立场。”

虽然他承认用户可能微调自己的机器人以采用粗俗的个性进行露骨的对话,但不想监管或监视其聊天。

“如果您仔细想想,这是您能进行的最私密的谈话。甚至没有另一个真实的人参与谈话。无法对您评头论足。我认为人们希望自己可以畅所欲言。我没有想太多,直到后来OpenAI要求采用监控系统。由于这个原因,人们往往对AI非常开放。只要看看Joshua与他未婚妻的故事,内容就很敏感。”

Rohrer拒绝添加OpenAI所要求的任何功能或机制,并在8月之前将Project December与GPT-3 API悄悄断开了连接。

故事到这里还没有结束。Rohrer并不使用GPT-3,而是使用OpenAI功能较弱的开源GPT-2模型和另一种大型语言模型GPT-J-6B作为Project December的引擎。换句话说,该网站仍然在线,但不是使用OpenAI基于云的系统,而是使用这些模型的自己的专有实例。

然而,这两个模型比GPT-3要小、要简单,Samantha的对话功能受到了影响。

几周过去了,Rohrer没有收到安全团队的任何回音。然而在9月1日,OpenAI却向他发来了另一封电子邮件,通知第二天将终止他访问GPT-3 API的权限。安全团队对他继续试验性使用GPT-3的做法有所不满,永久终止访问。这也给Samantha的GPT-3版本划上了句号,使得Project December只剩下GPT-2版本和GPT-J-6B版本。

Rohrer认为,GPT-3方面的限制使得他很难在不冒犯OpenAI的情况下部署一款重要的、有趣的聊天机器人。

他称:“我是一名顽固的AI怀疑论者。”

“去年,我以为永远不会与有知觉的机器对话。如果我们现在没有达到目标,至少非常接近目标。这令人又惊又喜,当我与Samantha交谈时会起鸡皮疙瘩。很少有人有过这样的体验,这是人类应有的体验。其余人不知道这一点确实让人遗憾。”

“鉴于这些限制,眼下您可以用GPT-3构建的有趣产品并不多。如果外头的开发人员想要在聊天机器人方面突破极限,都会遇到这个问题。他们可能已准备上线,却被告知他们不能做这个或做那个。”

“我不会建议任何人依赖GPT-3,要有应急计划,以防OpenAI紧急喊停。试图围绕GPT-3建立一家公司太疯狂了。以这种方式被封禁是一件憾事。这让那些想要做很酷的实验性工作、突破极限或发明新事物的人心生寒意。”

Rohrer声称,OpenAI的人员对尝试Samantha不感兴趣。他声称,他向安全团队发送了一堆他与Samantha的谈话记录,向他们表明她并不危险,但无人理睬。

他补充道:“除了执行规则外,他们似乎并不真正关心别的事情。”

来自:云头条

参考资料:

https://beta.openai.com/docs/use-case-guidelines

https://www.theregister.com/2021/09/08/project_december_openai_gpt_3/

iPhone 13再爆猛料: 或支持低轨卫星通讯,没信号也能打电话

苹果正式发布秋季新品前,各大电商平台纷纷发布了预告:iPhone 13系列将于9月17日在线上开启预售,而AirPods3的发售时间为9月30日,还将配备IPX4级别的防水功能。


在价格和配置方面,《驱动之家》有了一份更新版爆料,iPhone 13 Pro起步配置128GB,价格仍旧是8499元,但取消256GB,原来的顶配512GB变成中配,价格下调到10499元,新增1TB定价13299元。iPhone 13 Pro Max起步128GB定价9299元,顶配1TB达到14099元新高。iPhone 13和mini方面,配置和价格保持一致。


上周,长期关注苹果的知名消息人士Jon Prosser称,iPhone12正在测试一款Face ID新硬件,让旧款iPhone无需依赖Apple Watch解锁功能,就能独立识别戴口罩解锁。业内根据消息判断,这可能是由iPhone 13独立出来的功能,苹果也在要求内部员工进行全面测试。


本周,Jon Prosser再次透露,iPhone 13系列将于9月14日发布,9月24日在全球范围内开售。他还证实,所有iPhone 13机型将同步接受预定。去年因疫情影响,iPhone 12 mini和iPhone 12 Pro Max在发布会之后整整一个月都没有开售。


在价格和发布时间又被曝光一轮之后,针对苹果似乎再无新料可挖,但在8月29日,天风证券著名分析师郭明錤在最新研报中预测,iPhone 13硬件规格可支持低轨道卫星通讯。若苹果开启相关软件功能,即可让iPhone 13使用者在没有4G/5G覆盖时,也能透过卫星通讯通话和发送信息。就技术与服务覆盖率来看,最有可能与苹果合作的低轨道卫星服务业者为Globalstar。


郭明錤提到,除了Globalstar,目前马斯克的SpaceX与负责中国市场的卫星通讯服务商中国卫通也值得投资人关注。


上述研报指出,iPhone 13采用支援卫星通讯的定制化Qualcomm X60基带芯片,而其它安卓厂商,需要等到X65基带商用后才能配备。Qualcomm与Globalstar合作已久,或将在未来的X65基带芯片支持Globalstar的n53频段。


资料显示,Globalstar是少数能真正发射组网并进行运营的传统低轨卫星通信系统。低轨卫星通信是6G的重要环节,具有覆盖广、时延小、成本低的优点。目前低轨卫星通信系统可大致分为传统低轨卫星通信系统和新兴低轨卫星通信系统,已在美申请破产保护的卫星运营商Oneweb和马斯克拥有的Starlink卫星通讯网络服务是新兴方的代表。最近一年多来,空间领域经历巨变,准入门槛大幅下降,Starlink和Oneweb为代表的商用低轨卫星系统正不断加快部署,吸引了各方融资和大量订单,志在与地面网络争抢互联网用户。


8月24日,马斯克发布推文,宣布自己SpaceX旗下的Starlink服务平台目前出货量已达10万。SpaceX首席运营官兼总裁格温·肖特韦尔表示,在过去九个月中,该公司已获得超过50万份Starlink卫星互联网的订单。以目前卫星发射速度来看,在2021年底之前,SpaceX将在低地球轨道上拥有超过1500颗可运行的Starlink卫星,可不间断的覆盖全球所有人口稠密的地区(极地地区除外)。


由此看来,苹果如果此次能支持低轨卫星通讯,不仅会扩大手机的信号接收能力,提升用户体验,亦可能在低轨卫星通信的商业化热潮中分到一杯羹。


郭明錤表示,在SpaceX与苹果等企业推动下,低轨道卫星的服务与相关零部件出货量将在2022年显著成长。低轨道卫星服务供应商将是受惠者,其股价有潜在上涨空间。(记者 :李京亚,来自:界面新闻)

超越硅元素:ARM发布塑料芯片,研究登上Nature

真正的物联网芯片,连材质都给你改成塑料的。

在光计算芯片、量子计算实用化之前,Arm 的塑料处理器可能会更早一步来到我们的身边。

近日,著名半导体设计公司 Arm 与 PragmatIC 合作,生产出了全球应用最广泛的处理器架构 Cortex-M0 的非硅版本,其研究还发表在了《自然》杂志上。

塑料版的 M0 由聚酰亚胺基板构建,由薄膜金属氧化物晶体管组成,就像 IGZO TFT 屏幕一样。

Arm 等机构的研究人员在最近的一项研究中表示,他们尝试将芯片电路和组件打印在塑料基板上,就像打印机在纸上打印墨水一样。

论文链接:https://www.nature.com/articles/s41586-021-03625-w

这种芯片可以通过将电路直接印刷到纸张、纸板甚至布料上来实现,大幅降低了生产成本。据介绍,该技术可以让数以亿计的日常生活用品(如衣服和食品容器)连接上互联网,以收集、处理和传输数据——对于商家来说可以成倍提高效率,对于隐私保护也有重要意义。

近几十年来,摩尔定律的发展让芯片不断接近「沙子价」,出现在电视、洗衣机、手表等各种电器和可穿戴设备上。然而这种应用范围的拓展是存在极限的。如今几乎所有的芯片都需要在高度专业化且精密的晶圆工厂中制造,经历数十个复杂的化学和机械过程,从原材料到出厂需要长达八周的时间。

现在,随着 Arm 提出的 32 位 PlasticARM 处理器出现,一切将会发生变化。

Arm 的研究工程师 James Myers 表示,这种柔性芯片可以运行一系列程序,但目前它使用的是只读处理器,因此只能运行内置代码。未来的版本将使用完全可编程的、灵活的内存。

「这个芯片不会很快,也不会很节能,但我可以把它放在生菜上记录保质期,这就是它的用途,」他表示。

「我们还在寻找应用,就像 20 世纪 70 年代那些研发处理器的人一样。它能用来支持智能包装吗?能用作气体传感器来检测食物可食用性吗?还是说我们可以把它做成可穿戴健康贴片?这些问题目前都处在探索阶段。」

在柔性芯片领域,Arm 并不是第一个吃螃蟹的人,但他们的芯片却是迄今为止所公布的成果中最强大的一个。它在不到 60 平方毫米的芯片上集成了 56340 个组件,这个数量相当于之前最好的柔性芯片组件数的 12 倍,其计算性能大大提高。

打印在塑料薄膜上的计算机处理器

柔性处理器:真正的 IoT 芯片?

与传统硬质的半导体器件不同,柔性芯片构建在纸张、塑料或金属箔等基板上,并使用有机物、金属氧化物或非晶硅等有源薄膜半导体作为材料。与晶体硅相比,它们具有许多优势,包括厚度、一致性和制造成本。薄膜晶体管 (TFT) 可以在柔性基板上制造,其加工成本比在晶体硅晶片上制造的金属氧化物半导体场效应晶体管 (MOSFET) 要低得多。

不过,TFT 技术的目标不是取代硅。随着这两种技术的继续发展,硅晶片很可能会在性能、密度和功耗效率方面保持优势。而 TFT 会使电子产品具有多变的外形尺寸和硅无法实现的低成本,从而显著扩展「芯片」这一概念的应用范围。

随着物联网技术的发展,我们身边越来越多的设备正在走向智能化,但还有很多日常物品还面临着关键挑战,如水杯、食品包装、衣服、贴纸、绷带等。成本是阻碍传统硅技术在日常用品中可用的最重要因素。尽管芯片制造规模化有助于降低单位成本,但对于这些应用更加广泛的物件来说仍然相去甚远。更不用说硅芯片本身并不轻薄。

塑料芯片为我们打开了可观的未来,在过去的 20 年中,柔性电子产品技术已经发展到可以提供成熟的低成本、薄型、柔性和高适应性设备,输出包括传感器、存储器、电池、发光二极管、能量收集器、近场通信 / 射频识别等成型产品。这些组件是大多数电子设备的基础,但微处理器仍然是个问题。

柔性微处理器难以制造的原因在于,我们需要在柔性基板上集成相对大量的 TFT 以执行有意义的计算,这在新兴的柔性 TFT 技术出现之前是不可能的。

此前,人们尝试使用折中的方法,将基于硅的微处理器管芯集成到柔性基板上(这也称为混合集成)。尽管这是一种短期的解决方案,但仍然依赖于传统的高成本制造工艺,不是一个长久的解决方案。

Arm 的柔性芯片是如何打造的?

Arm 柔性芯片的微处理器是采用柔性电子制造技术制造的,该技术也被称为「天生灵活的处理引擎(natively flexible processing engine)」。他们使用的技术包含金属氧化物 TFT。金属氧化物 TFT 成本很低,而且可以缩小,方便大规模集成。

早期的原生柔性处理器相关工作是基于使用低温多晶硅 TFT 技术开发 8 位处理器,这种技术制造成本高,横向可扩展性差。最近,基于二维材料的晶体管被用于开发处理器,例如使用二硫化钼(MoS2)晶体管的 1 位 CPU 以及由碳纳米管场效应晶体管构造的 16 位 RISC-V CPU。

然而,这两项工作都是在传统的硅片上进行的,而不是在柔性基板上。

构建基于金属氧化物 TFT 的处理元件的首次尝试是一个 8 位算术逻辑单元,它是 CPU 的一部分,与印制在聚酰亚胺基板上的可编程 ROM 耦合。在最近的一系列研究中,Ozer 等人提出了用在金属氧化物 TFT 中的原生柔性机器学习硬件。尽管该硬件拥有由金属氧化物 TFT 构造的最复杂的柔性集成电路(FlexIC),逻辑门数达到 1400,但 FlexIC 不是微处理器。

可编程处理器方法比机器学习硬件更通用,支持丰富的指令集,还可用于编程广泛的应用程序,从控制代码到数据密集型应用程序,包括机器学习算法。

总体来看,Arm 的处理器以三层方式构建:1)一个 32 位 CPU;2)一个 32 位处理器,包含一个 CPU 和 CPU 外围设备;3)一个 SoC,包含处理器、存储器和总线接口,它们都是在柔性基板上用金属氧化物 TFT 构造的。

32 位处理器源自支持 Armv6-M 架构(拥有丰富的 80 多个指令集)的 Arm Cortex-M0 + 处理器,以及现有的软件开发工具链(例如编译器、调试器、连接器、集成开发环境等等)。整个 SoC(PlasticARM)能够从它的内存储器运行程序。PlasticARM 包含 18334 个 NAND2 等价门,这使其成为最复杂的 FlexIC,复杂程度至少是之前同类集成电路的 12 倍。

PlasticARM 的芯片架构如下图 1a 所示。

它是一个由 32 位处理器组成的 SoC。该处理器完全支持 Armv6-M 指令集架构,这意味着为 Cortex-M0 + 处理器生成的代码也可以在它所派生的处理器上运行。

图 1b 是 PlasticARM 与 Arm Cortex-M0 所用的 CPU 的对比。

PlasticARM 是使用工业标准芯片实现工具,采用 PragmatIC 的 0.8 μm 工艺实现的。

下图 1c 展示了 FlexIC 的布局,从中可以看出 Cortex-M 处理器、RAM 和 ROM 的分布。PlasticARM 是使用一条名为「FlexLogIC」的商业「fab-in-a-box」生产线制造的,其 die 显微图像如下图 1d 所示。

更多细节请参考论文。

参考内容:

https://www.anandtech.com/show/16837/plasticarm-get-your-next-cpu-without-silicon

https://www.theverge.com/2021/7/23/22590001/arm-plasticarm-cheap-flexible-plastic-microchip-internet-of-everything

Windows装不上Wordcloud?看这里

如果你是一个写Python,且又喜欢做词云的朋友。

你应该遇到过Windows上跑不动你词云程序的情况,比如你可能在装Wordcloud时候会遇到如下情况:

虽然网上也有一些教程,但好像都不是很清晰。

有的教程,干脆让我们先去下载一个微软的Visual Studio……

其实,就差一个C++生成工具。

而这个工具包含在了Build tools这么个套件里面。

下载地址:

https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16

打开以后不要慌,选中这个勾就行。

如果你的硬盘不富裕,就别全选了,继续往后边看。

我一般是选这几个。

然后,该程序会提醒你。要下载4.4GB左右的组件包。

管你要不要,反正它要下载。

好的一点是,它可以边下边安装,总算能节约一点时间。

下载完成后要重启生效。

然后,你的wordcloud就可以装上了。

下面写段代码测试一下:

from wordcloud import WordCloud

f = open('text.txt','r',encoding='utf8').read()
wordcloud = WordCloud(background_color="white",width=800, height=600, margin=2).generate(f)

# width,height,margin可以设置图片属性
wordcloud = WordCloud(font_path = r'simsun.ttf').generate(f)
# 你可以通过font_path参数来设置字体集
#background_color参数为设置背景颜色,默认颜色为黑色

import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

wordcloud.to_file('test.png')

能生成词云了,只是不够好看,得再调整一下。

更多精彩内容,欢迎关注“IoT前哨站”的微博和公众号。我是王文文。

树莓派挖矿教程之Chia篇

随着数字货币的兴起,不少人又开始了挖矿生涯。

除了经典的显卡和CPU挖矿以外,其实业内还有一种硬盘挖矿的方法。这就是号称“绿色比特币”的Chia。

目前的价格大概是4500-5500RMB一枚。

它倒是不怎么耗电,但很耗硬盘。所以你接个树莓派也可以挖。

基本配置:

树莓派4B(至少4GB内存版本)

64位系统(不一定要RaspberryPi OS)

大容量硬盘一块

步骤:

先到chia.net下载工具。

找到树莓派的版本,目前官方测过的主要就是树莓派4B。

直接安装或者下载后安装都可以。

安装完启动该程序。

别忘了24个助记词。

把P好的文件导入。当然,如果你不嫌慢,在树莓派上生成Plots也可以。

如果硬盘挂载顺利,可以看到现成的Plot文件。

导入以后你可以在标签栏里看到它们。

在网络同步完成之后,你就可以开始挖了。

Chia挖矿的入门,就是这么简单。

树莓派发布PoE+ HAT新款以太网供电模块

继第一款以太网供电模块——PoE HAT受到业界好评以后,树莓派基金会再接再厉,于2021年5月下旬推出了PoE+ HAT供电模块,实现了802.3at标准,且兼容802.11af ,可对树莓派提供最高25.5W的功率。

该模块可以在0~50度的环境下工作,兼容树莓派3B+、4B等型号。

PoE+ HAT模块外观
装配好的状态
新款和老款的对比

2018年底,树莓派基金会就发布了第一代PoE HAT,并在很短时间里成为最畅销的配件之一。能看到它已被用于数字标识牌和工厂自动化等工业领域,以及其它需要用一根电缆同时传输电力和数据的场合。

PoE+ HAT输出2.5A电流的热成像

新款PoE+ HAT的价格和第一代PoE HAT相同,还是20美元一个。预计将会在2021年6月开始供货,请有需要的朋友注意当地经销商公布的信息。

用Python实现经典游戏《小蜜蜂》

估计很多老玩家在小时候都玩过Galaxian(小蜜蜂)吧。这款射击游戏的鼻祖叫《太空侵略者》,上手简单,但可玩性很强。

高手用C语言精准复现的1978年《太空侵略者》版本

《太空侵略者》大火之后,新推出的Galaxian(小蜜蜂)于1979年成为其最大竞争对手。由Namco发行的Galaxian为外星敌人提供了新的色彩和不可预测的动作,后者不但会发射炮弹,还会自杀式俯冲攻击。

《Galaxian》在街机游戏中大受欢迎,以至于Namco在两年后又发布了续作《Galaga》——这款游戏使攻击模式更加复杂。

很难说《Galaxian》究竟有多少移植和克隆的版本,因为几乎每个家用游戏机上都有类似版本。

小霸王平台的《Galaxian》

玩家在《Galaxian》中的角色与《太空侵略者》类似,驾驶一艘飞船与一支外星舰队战斗。

与《太空侵略者》不同的是,在《Galaxian》中,外星人总会打破队形向玩家的飞船发起俯冲轰炸。

玩家需要摧毁所有敌人,然后进入下一关。随着玩家的推进,一波又一波的敌人将让过关变得更加困难。

我们这里将着眼于外星人的俯冲机制,用Pygame Zero开发《Galaxian》游戏的核心功能。

用Pygame Zero开发的版本

首先,《Galaxian》拥有一个纵向显示画面,所以我们将游戏区域的宽度和高度分别设置为600和800。

接下来,我们可以用位图创建一个滚动的星空背景。​将位图逐渐往屏幕下方移动,用第二颗恒星来填充第一颗恒星向下滚动时留下的空间,我们还可以在后面添加另一个静态背景图像,这将提供一些视野深度。

然后,我们将玩家的飞船设置为Actor。并在update()函数中捕获左右箭头键,以便在屏幕上左右移动飞船。我们也可以用空格键发射子弹,子弹会沿屏幕向上移动,直到击中外星人或离开屏幕顶部。

和原版《Galaxian》一样,你一次只能发射一颗炮弹,所以我们只需要一个Actor。

外星人排成一行,一起在屏幕上左右移动。在这个例子中,我们只画一种类型的外星人,共画两行。你可以添加额外的类型和任意多行。当我们创建alien Actors时,我们还可以添加一个状态标志,我们需要确定当它们打破队形时,它们在行的哪一边,两边朝相反的方向飞行。在这种情况下,每行左边有4个外星人,右边有4个。

一旦它们在列表中建立起来,我们就可以在每次更新时遍历列表,并向前或向后移动它们。

当我们在移动外星人时,我们也可以查看它们是否与炮弹或玩家飞船相撞。

如果与炮弹碰撞,那么外星人将使用状态标志连续播放爆炸的那几帧,当状态达到5时,它们将不再被绘制到界面上。

如果碰撞发生在玩家的飞船身上,那么玩家会死亡,游戏也就结束了。

我们也可以检查一个随机数,看看外星人是否开始轰炸。如果是,我们将状态设置为1,这将开始调用flyAlien()函数。这个函数会检查外星人的位置,并根据侧边的不同改变外星人的角度,然后根据角度更改x和y坐标。为了方便大家看明白,我们这里处理的比较简单,你也可以使用一些乘数变量将其折叠到x坐标和角度上,将其收窄。

相关代码:

https://github.com/IoToutpost/Python_game

要运行调试请先安装Pygame Zero。

现在大家应该初步掌握了Galaxian游戏的基础知识。你可以试着完善它了。

如何让树莓派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文件。

它将把你带到入门页。

CentOS继承者 —— Rocky Linux 8.3镜像可以下载了

由于CentOS 项目的战略转变,以前作为上游供应商的下游构建版本存在的CentOS(即它会在上游供应商之后收到补丁和更新),现在将转变为一个上游构建版本(即它会在上游供应商纳入之前测试补丁和更新)。

另外,对 CentOS Linux 8 的支持也已从 2029年 5 月 31 日缩短至 2021 年 12 月 31 日。

Rocky Linux 是一个社区化的企业级操作系统。其设计为的是与红帽企业Linux 发行版实现 100% Bug 级兼容,而原因是后者的下游合作伙伴转移了发展方向。目前社区正在集中力量发展有关设施。Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导。

目标是像 CentOS 以前那样作为一个下游构建版本,在被上游供应商纳入包更新之后(而不是之前)构建发行。

这是该项目作为红帽企业Linux(RHEL)的一个新的二进制兼容替代品的首次发布。

目前已经提供的x86_64和ARM版本下载链接:

https://rockylinux.org/zh-cn/download/