【.NET与树莓派】上手前的一些准备工作

.NET Iot 不是什么新鲜事物,百科很强大,故老周在此也不必多介绍。现在的时代和老周当年学 QBasic 的时代不同,那时候拉根电话线上网,下载速度只有可怜的 3.5 kb/s。而且还要去店里买上网卡。上网卡用完了(计时的哟)还要再买。除了买上网卡的钱外,还要交 0.2 元/分钟的附加费(中国电信收)。

所以,你想想那时候有些什么概念、名词解释不懂的,都是往书上找,或者往图书馆跑;到了图书馆还要交 100 大洋的押金。上网成本高,速度慢,很多东西都懒得上网查。

现在不同了,小孩子们多幸福!几乎每天在线 20 小时以上。网络也基本覆盖,所以呢,名词解释之类的东西就不必像以前那么当回事了,啥时候需要,直线网上找。

老周习惯在开始之前扯些题外话,多年养成的坏习惯,打70大板也改不了,请各位莫见笑。

老周接下来计划写一系列烂文,主要讲述用.NET开发硬件控制方面的东东(其实这个挺好玩的,上大学的时候居然没有机会玩,可惜了,不然泡几打小学妹不成问题)。当然了,要在板子上跑.NET 程序,对开发板是有要求的——起码无操作系统的板子就没办法了。有操作系统的板子里面,名气较大的当数树莓派了。

树莓派以前在书上看过,但不流行网购的年代,去实体店根本买不到(也不知道上什么类型的店买)。所以,一直没机会去体验一下。之后就放一边了,也没去想了。但若干年后回头想想,还是要玩一下的,不然这码农生涯就不专业,不完美了。于是,模糊地记得在 201x 年从二手平台买了一块,也不知道是几代(肯定不是3、4代)的,买回来只是装了系统耍了两下。然后……说起来丢人,吃灰了。

疫情快一周年了,相信各位都记得 2020 年那个春节的,反正我是觉得比当年“非典”时还恐怖。当初“非典”横行时,我们还正常上学上课,只是个别工厂没开工,也没戴口罩,最多就是用消毒粉洗洗地。也许是当年信息滞后的原因吧。

于是就宅在家里搞破坏,就想着把一些电器(尤其是一些什么智能台灯、DVD机的)自己改装一下,能不能弄成像小时候在奥特曼里面看到的那些高大上设备,可以远程控制,还可以用手招呼一下就能控制家里的东西——大概就是现在所谓的“智能家居”吧。看着别人演示总觉得不够意思,自己弄出来的才有成就感,就算弄成了人工智障也不要紧,重点是自己亲自体验过。

最初的思想火花就是想用无线网络来控制各种遥控器,想想在家里放几个红外发射器,然后树莓派上运行个Web服务器,这样各种客户端只要开个浏览器就可以控制红外发射器,家里的电视、盒子、风扇、电灯、红外摄像头就可以集成在一块了。遥控的键码可以用红外接收模块记录,然后存入数据库。用的时候从数据库里提。

头脑一发热,做事就迅速。在某宝买了一块 Raspberry Pi4 B型。买回来一看,哇,your god,还是 1.4 版本,挺新鲜的。

其实嘛,那个最初的想法并没有完全实现,仅仅控制了两台DVD和一个“芒果云”智能盒子而已。

好,又扯多了。本篇作为这一系列的开头,咱们不写代码,老周简单说说要准备些什么工具和装备。

一、软套装

软件方面,很简单。

1、开发工具。我们熟悉的 Visual Studio,或者 VS Code都行。

2、开发机。这个嘛,还是在电脑上写代码的好,树莓派那点配置还是挺弱的。

3、树莓派上的系统。这个还是用官方的系统好一点。这里老周说一个事,官方系统有个轻量级版本(Lite),就是带 Linux 核心功能,没有桌面部分,也没有带附加软件,纯命令控制。这个版本其实很好,但是总出现一个现象——开机不会自动连接无线网(配置了也没用),或者一直提示正在搜索网络。但是,安装带桌面的版本就没有这个问题。这个问题一直存在,目前不知原因。

二、树莓派开发板必备件

买板子时,你需要买一张 Micrio SD 卡,就是你手机用的内存卡。老周建议 32 G吧,16和32的价格差不多的,所以不如直接上32。如果你有很多内存卡,那就不用买了。有些某宝店卖的杂牌卡,还宣称树莓派专用,其实压根不必要。老周做过测试,用了几个世纪的金士顿(从行车记录仪上拔下来的)和闪迪(手机和电视盒子上都用),写入系统后正常运行,而且速度还不错。总之,随便即可。

写入系统镜像是在电脑上进行(多数情况下是这样的)的,所以,读卡器要有,或者如果你有带内存卡口的 USB Hub 也行。这个老周建议买好的,质量太差的真的用出一大堆问题来。老周家里的各种集线器、转换线都是绿联的,不是做广告,真的好用。记得前两年,买了个外置光驱,那种 0.8 元包邮的数据线老是识别不了光驱,识别出来了,读碟时经常断。我曾怀疑过光驱,但用戴尔笔记本拆出来的光驱测试也是不行。最后买了一根绿联的线。即插即识别,而且不断线。真的,一分价钱一分货。

关于电源,树莓派的供电口好像每一代都不太一样,我买的 4 代是 C 口。原装电源挺贵的,可以买其他的,5V / 3A 即可。另外,还有两种选择:

1、充电宝。新款都能输出最大 3A 的。

2、带外部供电的 USB Hub。比如这种。

 号称工业级的,能正常供电,它带12V/4A的外部电源,输出口是5V。无外部电源的 USB Hub 带不动。

3、干电池 + 电池盒。这种不怎么好用,干电池电量减小后电压会跟着降的,很容易挂。

4、可调电源。就是可以调节电压的电源,这个除非你舍得买贵的,便宜的不怎么好用。老周买过便宜的,被它电过两次。

实际使用测试,5V/2A、5V/1A的供电也能让树莓派正常运行。总的来说,电流大小由负载决定,重点是电压,要选5V的。电压太高的话可能会导致树莓派升级为“烟雾”版。

三、其他装备

1、面包板。接线多了这个方便。

2、杜邦线。这个肯定要的了,至少买多长,自己看着办,实验的实,10-20 CM 可以了。

3、盒子。这个是可选的,就是给树莓派加个盒子,一来起保护作用,二来可以散热(塑料的估计散不了热,要贴散热片)。老周买的盒子是金属的,还不错,CPU 一直在36度左右。

4、网线。老周直接拿买路由器时送的线用,简单快捷。虽然树莓派有无线网卡,但有线网卡更快,用网线直接连到电脑的网线接口上,在电脑上用 SSH 登系统比较快。

5、“T”形扩展板。因为我把树莓派装进盒子里,接线就不方便了,所以买块T形板,把 40 个引脚引出来,扣在面包板上,接线就方便多了。

上面的图是盗来的,出处不明。接的时候注意方向要一致,不要弄反了

6、电子放大镜。电子模块比较小,视力不好的话不太好操作。有些地方就算视力好也不好对付。可以买个电子放大镜,带LED灯可以照明。USB与电脑连接,用法和外置摄像头一样,用 Win10 自带的相机就行。不用买太强大的,能放大、有灯就行,一般 50 块大洋左右。

 

7、万用表。这个不是必要,但可以有。测电压电阻很有用。

8、灭火器。这个嘛,有些教程上会提到,不过老周觉得没那么严重吧,一般操作也烧不起来。

9、消除静电刷。这个老周觉得是可选的,释放身上的静电有个方法很简单,把你自己接地就行,两只手在墙上或者地上按一下就行。不过,老周家里有现成的消静电工具,本来是用在黑胶唱片上的。这个你用过留声机就知道,静电太多的话,播放唱片时会炒豆响。而且老周的唱机有问题,安装唱针的电路不太好,静电多了功放会放不出来,断断续续。如果你怕静电会伤害树莓派和电子模块,可以某宝弄一个刷子,接触设备前在手上刷几下。

 

四、其他开发板

树莓派算是比较高级的板,它有操作系统,很多时候也可以用树莓派来控制其他板子,尤其用到模块较多的时候,总不能全都接到树莓派上吧。此时就可以考虑把一部分工作分给其他开发板去完成,树莓派作为主控中心,指挥其他板子工作。

比如下面这个板子也不错,意大利原装进口。100 多大洋吧,比树莓派便宜。其实这些在他们国家也不算贵,但兑成 RMB 就贵了点。

你要是觉得上面的板子贵,那下面这两个就便宜,十几大洋一块。

当然了,还是那句话,一分价钱一分货。以上两款是国产的,也不知道哪个厂商,反正某宝上大把。注意这些非原装的板子,在连接电脑时要手动安装驱动,网上可以找 CH34x 芯片的驱动,一般是 CH340 和 CH341。一个版本不行的话,可以多试几个,非官方的版本装驱动是头疼一点的。原装主板的话 Win 10 能自动识别。

这种便宜版本不太稳定,经常会出现上传程序失败的情况,而且焊接的引脚有的会摇摇晃晃,有的引脚是弯的,不是很好用,但也能用。老周买了两块 Nano 板,有一块做成温度计,挂在家里长期使用。另一块会严重发热,烫手的,原因不明。

Arduino 的板子不像树莓派,不能装系统;树莓派是一台完整的计算机,只是相对一般电脑来说,性能还是有差距的(任凭官方怎么宣传,但实际情况是如此)。所以,树莓派上你可以用.NET(C#/VB.NET),可以用 Go,用 Python,或者直接C++;而 Arduino 上用的其实就是C++语言。

 

关于开发板之间的通信,你可以有以下选择:

1、有线连接,使用串口通信(交叉连接 TX,RX 引脚)。这个方案不错,也好摆弄,跟读写文本文件差不多。

2、有线连接,使用 IIC/I2C、SPI 等标准协议。让树莓派作为主机,其他板子作从机。树莓派可以指手画脚来命令其他板子干活。就相当于树莓派是主子,其他板子是打工的。树莓派:“小顺子,帮我测测水压”,板子A:“Yes, sir”。

3、无线串口,比如 ESP8266 系列,方法和一般串口差不多,只是它可以无线传输,能实现透传。

4、自己设计的协议。设备之间通过高低电平,以及持续的时间,可以组合出许多通信规则。所以,这个协议你完全可以自己设计。比如,板子B发送一个字节给树莓派,可以约定:每个二进制位以低电平开始,并持续50微秒;50微秒后,如果还保持低电平,说明是0;如果把电平拉高,说明是1;接着把电平拉低再拉高100微秒,表示一位发送完毕。如此反复 8 次,一个字节就搞定了。

 

五、写系统镜像

这个教程就很多了。

不过,老周补充一些内容。

1、SD卡其实不用格式化的,实际测试没任何问题。在写系统镜像前,可以用 Windows 自带的“磁盘管理工具”把 SD 卡的分区(或卷)删除,打开 Win32DiskImager 后直接选 SD 那盘就行了,这个软件它能自动识别出可移动设备,你的硬盘分区不会出现在选择列表中。

2、设置固定 IP,这个主要是指用网线和电脑连接时用。你不设置固定IP的话,每次启动树莓派的IP地址都不同,那连接起来就很蛋痒。网上有许多教程,你跟着教程改 .conf 文件就好。不过,老周介绍一种特简单的方法,下面说明一下。

当你成功写入系统镜像后,你会看到有两个分区,如下图所示。

 

 比如我这里,一个卷标为 boot 的F区,一个是G区。这个G区是 Windows 不能识别的文件系统,每次连接时,Windows 都会提示你格式化,你千万千万不要格式化,你忽略提示就行。

打开 boot 分区,里面有很多玩具,其中有两个玩具是.txt 文件,可以直接打开。最好用 NotePad++ 之类的工具来编辑。主要是因为 Windows 的换行符是带回车符的,Linux 下不使用。

config.txt 是用来配置树莓派开启哪些设置/功能的,比如启用 i2c,启用 1-Wire(双向单总线)等。这个文件你可以不改,在登录系统后可以通过系统命令修改——raspi-config。有的教程会告诉你关掉蓝牙,因为主控的串口模块分给了蓝牙,而TX、RX引脚用的是微控制器中的芯片(次要),因此要调过来。这个其实影响不是很大,除非你有更严格的效率要求。当然,不一定要关闭蓝牙的,你可以在 config.txt 文件中加上这一行,这样既可以把两个串口控制器调换,也不必禁用蓝牙。

dtoverlay=miniuart-bt, krnbt=on

这些配置的详细说明在 /boot/overlays/README 文件里面,你闲着的时候可以去瞄几眼。

下面重点来了,另一个文本文件是 cmdline.txt,它用来存一些命令,这些命令在系统启动时会执行,每个命令用空格分隔。打开 cmdline.txt 文件,在文件的最前面加上 ip=192.168.11.25,等号后面的就是你要用的静态IP地址,具体什么地址你自己决定。

ip=192.168.11.25 console=serial0,115200 console=tty1 root=PARTUUID=2e9f1d8c-02 ……

这个是不是比修改 .conf 文件简单?而且设置的还是全局的IP地址。

最后,你记得在 boot 分区的根目录下建一个空白文件,什么文件类型都无所谓,反正是空的,文件名为 SSH,无扩展名,这样当系统初始化后就会启用SSH功能,你才能在无显示器无键盘无鼠标的情况下通过一根网线登录树莓派。

Windows 10 自带有 ssh 工具,你不用到处找工具。打开命令行提示符窗口,输入:

ssh pi@192.168.11.25

其中,pi 是用户名,这是系统默认的用户名,默认密码是 raspberry。登入系统后改不改密码也无所谓,反正都是你自己用。如果你拿到外面用,或者别人有可能访问到你的树莓派,那就要改密码了,干脆连用户名、主机名也改掉。

Win 10 上如果第一次连某台 Linux 主机,会问你一串XX,你看不懂这串XX不要紧,输入 yes,然后回车就是了;如果发生错误,那就到 C:\Users\<你的用户名>\.ssh 目录下,把里面的 known_hosts 文件灭了(里面放的是与主机绑定的密钥)。接着重新 ssh 连接就好了。

 

六、购买模块/传感器

如果你买树莓派只是为了当 Web 服务器或者学习 Linux 系统,那不必花钱去买各种电子模块。可是,老周觉得,买块开发板来学Linux,是不是有点太过分了,这边建议你挂闲鱼上打三折给我吧。既然是开发板,当然得玩玩硬件了,不然你对不起这几百块大洋(我买的2G内存 268 元,4G/8G更贵)。

至于买哪些模块,哪些传感器,那就你自己喜欢了。

1、控制按钮类。可以买轻触开关、触摸开关、热敏开关、光敏开关、声控开关等;

2、传感器类。如 MPU 6050(三轴加速计,陀螺仪,这个有点复杂)、PAJ7620(手势感应)、DHT11(温度/湿度检测,这个简单一些)、DS18B20(温度检测,1-wire协议,这个在树莓派中可以直接以文件方式访问,用起来也简单)。很多传感器都使用了 IIC 协议(i2c),不过你不必自己去模拟,.NET有相关的 Nuget 包。

3、电机。舵机比较好玩,它可以控制旋转的角度,你可以用来做机械手。

4、发光二极管,LED小灯。记得顺便买200 - 250 Ω 的电阻,这个范围的阻值已经够了。老周做过实验,发光二极管在电流达到 18mA 时基本全亮。树莓派输出的电流最大 50 mA(说明书上是这样说的),单个引脚的输出电流应该没这么高。所以,如果你胆子大的话,你可以在接 LED 小灯时不串联电阻,直接裸奔多爽。其实二极管烧不了的,老周用 80mA 的电流点了一晚上都没烧。为了验证网上的说法,老周特意烧了两个灯,一个白的,一个红的。

白灯在电流增到 280 mA 后才烧的,红灯在 250 mA 左右就炸了。电流增到 190 mA 的时候,灯会闪,而且迅速发热,还会发出 Zi zi zi 的美妙声响。这么算下来。串联 200 欧姆的电阻或者裸奔完全没问题。

GPIO 引脚高电平(电压)一般是 3.3 V,二极管工作在 2 到 2.2 V间,电流 18 - 23 mA 之间(估计的,不同颜色的灯电流不一样)。我们姑且当电流是 20 mA,算一下

( 3.3 - 2.0 ) / 0.02

算得结果是 65 Ω,所以说 200 Ω 足够安全了。

5、超声波测距模块(比如HC-SR04模块)。想做玩具车的话,这个好用,比激光测距的好。根据老周自己做的实验,超声波能测到 5 米远,2-4 米范围应该准确一点。这个只是实验数据,没有代表性,你自己也可以试试,看能测多远。

上面只是列了几个,这些模块很多,没办法全列出来。

买这些模块的时候,老周建议不要一次性全买,可以分开买,或几个几个地买,这样做虽然收快递麻烦,但相对划算,哪家便宜买哪家。不过呢,常用的快递也就那几个“通”,如果多个快递同时到,可以一起收。有时候,同样的模块,有的店卖得特贵,如果你一大堆一起买,显然有些模块你会买贵了的。

 

七、树莓派的引脚

虽说有 40 个脚,但你能用的 28 个。关于这引脚次序怎么数,你可不要数反了,数反了容易接错,弄不好会烧电路。把引脚面向你,开发板的USB口向下,从左到右从上到下地数。看看这张图。

 

 或者看这张。

 

 

树莓派数据手册可以从这里下载:用力点击

你数数看,两个3.3V,两个5V,八个 GND(电源负),这里就占了 12 个脚了,能用于数据 IO 的引脚就剩 28 个,包括专用的串口通信,IIC,SPI这几类专门用途的引脚。标注 GPIO XX 的一般可以随你用。当然了,通过修改引脚重用配置也可以稍稍扩展几个口。

引脚重用(或者叫复用)是用一个叫 ALT 的数值来表示的,数据手册上都有。或者,你还可以看这个:https://pinout.xyz/,这上面对每个引脚的功能都有介绍。

举个例子,GPIO 12,在板子上是第 32 号引脚(右排从下往上,倒数第5个,在GND上方)。

 

 我们看到,它的 ALT 0 属性是 PWM0,即第一路 PWM 输出(实际上只有两路,虽然有四个PWM引脚,两个PWM0是相通的,两个PWM1也是相通的,相通的引脚输出参数相同;另外两个是 GPIO 18 和 19,但要手动修改ALT)。表示 12 号GPIO默认作为PWM输出(前提是要开启这个功能,都在 config.txt 文件中修改),如果把 12 脚的 ALT改成 ALT1,那它的功能就是SD4(用来通过引脚读写SD卡,这个不知道怎么用)。

 

==================================================

好了,暂时就介绍这么多。这些烂文老周都是每天写一点,然后拼出来的,有时候一篇要写一星期。没有足够的时间一口气写完,只能这样做。

 

posted @ 2021-01-13 18:22  东邪独孤  阅读(721)  评论(1编辑  收藏