.NET 物联网并不是什么新鲜事。 百科很强大,这里就不用介绍了。 现在的时代和老周学习QBasic的时代不同。 当时他必须使用电话线上网,下载速度只有可怜的3.5 kb/s。 而且还得去商店买一张上网卡。 上网卡用完了(定时的),我就得再买一张。 除了缴纳上网卡费用外,还需缴纳0.2元/分钟的附加费(中国电信收取)。
所以,如果你想到当时不懂的概念和术语,你总是会去书本上查找或者去图书馆; 到了图书馆,要交100元押金。 上网成本高,速度又慢,很多东西我都懒得去网上查。
现在不同了,孩子们多么幸福啊! 几乎每天在线20多个小时。 互联网也基本被覆盖了,所以你不必像以前那样认真对待术语解释之类的事情。 每当您需要它们时,您只需在网上查找即可。
老周有一个习惯,就是在开始之前就跑题。 这是他多年来养成的坏习惯,即使打70场比赛也无法改变。 请不要笑。
接下来老周打算写一系列烂文章,主要是用.NET开发硬件控制的东西(其实这个挺好玩的,大学的时候没机会玩,可惜了,不然泡上几十个小学生也不成问题。) 当然,要在板上运行.NET程序,对开发板是有要求的——至少不带操作系统的板是不行的。 在带有操作系统的主板中,最著名的是Raspberry Pi。
以前在书上看过关于树莓派的介绍,但在网购不普及的时代,不可能在实体店买到(不知道在什么类型的店里买)。 所以,我一直没有机会去体验。 然后我就把它放在一边,不再去想它。 但几年后回想起来,我还是得玩,否则我的程序员生涯就不会专业和完美。 所以,我依稀记得201x年在二手平台买过一台。 我不知道它是哪一代(当然不是第三代或第四代)。 我刚刚安装了系统并玩了几次。 然后……说起来可惜了。
快到疫情一周年了。 相信大家都还记得2020年的春节,反正我感觉比非典时期更可怕。 非典肆虐的时候,我们还是正常上学,但有的工厂没有开工,我们也没有戴口罩。 我们最多只能用消毒粉清洗地板。 也许是因为当时信息滞后的缘故。
于是我就呆在家里胡闹,想着自己改造一些电器(尤其是一些智能台灯和DVD机)。 能不能把它们弄得像小时候在奥特曼里看到的高端装备一样? 有了远程控制,你还可以只用一个手势就可以控制家里的东西——大概就是现在所说的“智能家居”。 看别人演示总是不够有趣。 只有自己去做了,才会有成就感。 即使你变成了人工智障,也没关系。 关键是你自己经历过。
最初的想法是利用无线网络来控制各种遥控器。 想想在家里放置几个红外发射器,然后在树莓派上运行一个Web服务器,这样各种客户端只需打开浏览器就可以控制它们。 通过红外发射器,可以将家里的电视、盒子、风扇、灯、红外摄像头集成在一起。 通过红外接收模块可以记录遥控器的按键代码并存储在数据库中。 使用时从数据库中拉取。
当你的头脑很热时,你做事就会很快。 我从某个网站购买了 Raspberry Pi4 model B。 我买了一看,哇,天哪,还是1.4版本,蛮新鲜的。
事实上,最初的想法并没有完全实现。 它只控制两张DVD和一个“芒果云”智能盒。
好了,废话又太多了。 本文是本系列的开始。 我们不会写代码。 老周简单讲了一下我们需要准备哪些工具和设备。
1. 软套装
从软件角度来说,它非常简单。
1、开发工具。 熟悉的 Visual Studio 或 VS Code 就可以使用。
2. 开发机。 嗯,最好在计算机上编写代码。 树莓派的配置还是比较弱的。
3. Raspberry Pi 上的系统。 这个还是用官方系统比较好。 说到这里,老周说了一句。 官方系统有轻量级版本(Lite),具有Linux核心功能,无桌面部分,无需额外软件,纯命令控制。 这个版本其实很好,但是总有一个现象——开机时不会自动连接无线网络(配置也没用),或者总是提示正在搜索网络。 不过安装桌面版就没有这个问题。 这个问题一直存在,目前原因未知。
2. 树莓派开发板必备部件
购买板子时,需要购买Micro SD卡,也就是手机使用的存储卡。 老周建议32G,16和32的价格差不多,所以还是选32的好。如果你的内存卡很多,就没有必要买了。 某些商店出售的杂牌卡声称是树莓派专用的,但这根本没有必要。 老周做了一个测试,用了几个世纪以来一直使用的金士顿(行车记录仪里拔出来的)和闪迪(手机、电视盒子上用的)。 写入系统后,运行正常,速度还不错。 简而言之,就是做你想做的事。
写入系统映像是在计算机上完成的(大多数情况下),因此您需要一个读卡器,或者如果您有一个带存储卡端口的 USB 集线器,它就可以工作。 这位老周建议买好一点的。 如果质量太差,就会引发很多问题。 老周家里的各种集线器、转换线路均来自Greenlink。 它们并不是广告,但它们确实很容易使用。 我记得两年前,我买了一个外置光驱。 0.8元包邮的数据线始终无法识别光驱。 如果这样做,则在读取光盘时常常会损坏。 我对光驱存有疑虑,但使用从戴尔笔记本电脑上拆下的光驱进行测试也失败了。 最后我买了一条 Greenlink 电缆。 即插即认,永不离线。 真的,一分钱一分货。
关于供电,树莓派每一代的供电端口似乎都不同。 我买的4代有C口。 原装电源比较贵,可以买其他的,5V/3A就够了。 此外,还有两个选项:
1.移动电源。 新型号可输出高达 3A 的电流。
2. USB 集线器带外部供电。 比如这个。
据说是工业级的,可以提供正常供电。 外接电源12V/4A,输出端口5V。 没有外接电源的USB Hub无法携带。
3、干电池+电池盒。 这不太好用。 当干电池电量减少时,电压也会相应下降,很容易挂掉。
4.可调电源。 它是一个可以调节电压的电源。 除非你愿意买贵的,否则便宜的不太好用。 老周买了一个便宜的,被它震惊了两次。
在实际使用测试中,树莓派在5V/2A和5V/1A电源下也能正常运行。 一般来说,电流大小由负载决定,关键是电压。 选择5V。 如果电压过高,可能会导致树莓派升级到“冒烟”版本。
3、其他设备
1. 面包板。 接线较多比较方便。
2.杜邦线。 这绝对是您需要的东西。 至少你可以决定你想要多长时间。 如果你尝试一下,10-20 CM就足够了。
3. 盒子。 这个是可选的,就是给树莓派加个盒子,一是为了保护,二是为了散热(塑料的可能散热不好,所以需要散热片)。 老周买的盒子是金属的,还不错。 CPU温度始终保持在36度左右。
4、网线。 老周直接用了买路由器时赠送的网线,简单快捷。 虽然树莓派有无线网卡,但有线网卡速度更快。 使用网线直接连接到电脑的网线接口上速度更快。 在电脑上使用SSH登录系统速度更快。
5.“T”形扩展板。 因为我把树莓派放在盒子里,接线不方便,所以买了一块T型板,取出40个引脚,扣在面包板上,这样接线就方便多了。
上图是盗来的,来源不明。 连接时注意方向一致,不要接反。
6.电子放大镜。 电子模块相对较小,如果视力不好的话很难操作。 即使你的视力很好,有些地方也很难处理。 您可以购买带有LED灯照明的电子放大镜。 USB连接电脑,使用方法与外接摄像头相同。 使用Win10自带的摄像头就可以了。 不需要买太强大的,能扩音、有灯就可以了,一般50元左右就可以了。
7.万用表。 这不是必需的,但可以使用。 测量电压电阻非常有用。
8、灭火器。 嗯,有的教程会提到这一点,但是老周认为没有那么严重,正常操作时也不会烧毁。
9.消除静电刷。 老周认为这是可选的。 有一种简单的方法可以释放身体上的静电。 只需让自己接地并将双手按在墙壁或地面上即可。 不过,老周家里有现成的静电消除工具,本来是用在黑胶唱片上的。 如果您使用过留声机,您就会知道这一点。 如果静电过多,唱片播放时会发出嗡嗡声。 而且,老周的电唱机也有问题。 安装手写笔的电路不太好。 如果静电过多大洋编辑软件教程,功放将无法播放,声音也会断断续续。 如果担心静电损坏树莓派和电子模块,可以拿一把刷子在手上刷几下再接触设备。
4.其他开发板
Raspberry Pi 是一款比较先进的板子。 它有一个操作系统。 在许多情况下,Raspberry Pi 也可用于控制其他板。 特别是当使用的模块较多时,不可能全部连接到树莓派上。 这时可以考虑将部分工作分配给其他开发板来完成,树莓派作为主控中心指挥其他板的工作。
比如下面这块板子也不错,意大利进口的。 售价100多元,比树莓派便宜。 其实这些在他们国家并不贵,但是换算成人民币就有点贵了。
如果你觉得上面的板贵,那么下面的两块板就便宜了,一块十几块钱。
当然,俗话说,一分钱一分货。 以上两款都是中国制造的,不知道是哪个厂家的,但是我有很多。 注意,对于这些非原装板卡,连接电脑时需要手动安装驱动程序。 您可以在网上找到CH34x芯片的驱动程序,通常是CH340和CH341。 如果一个版本不起作用,您可以尝试多个版本。 安装非官方版本的驱动程序可能有点令人头疼。 如果是原装主板,Win 10可以自动识别。
这个廉价版本不太稳定,经常无法上传程序。 而且焊接的引脚有的晃动,有的弯曲,不太好用,但还是可以用的。 老周买了两块纳米板,其中一块做成了温度计,挂在家里长期使用。 出于未知原因,另一块会严重受热且摸起来很烫。
Arduino板不像Raspberry Pi,不能安装系统; 树莓派是一台完整的计算机,但与普通计算机相比,性能还是有差距的(不管官方宣传如何,实际情况就是如此)。 因此,在Raspberry Pi上,可以使用.NET(C#/VB.NET)、Go、Python,也可以直接使用C++; 而Arduino实际上使用的是C++语言。
关于开发板之间的通信,您有以下选择:
1、有线连接,采用串行通信(交叉连接TX、RX引脚)。 这个解决方案很好而且很容易使用。 它类似于读取和写入文本文件。
2、有线连接,采用IIC/I2C、SPI等标准协议。 让树莓派作为主机,其他板作为从机。 Raspberry Pi 可以告诉其他板工作。 就好像树莓派是主人,其他板子是兼职人员一样。 树莓派:“小顺子,帮我测一下水压”,A板:“是的,先生”。
3、无线串口,如ESP8266系列,方法与普通串口类似,只不过可以无线传输,实现透明传输。
4. 自己设计的协议。 许多通信规则可以通过高低级别和持续时间在设备之间进行组合。 因此,这个协议完全可以由你自己设计。 例如,如果B板向Raspberry Pi发送一个字节,则可以约定每个二进制位都以低电平开始,持续50微秒; 50微秒后,如果仍然保持低电平,则表示为0; 如果电平被拉高,则表示为1; 然后电平被拉低然后拉高100微秒,表明已经发送了一位。 重复8次,就可以得到一个字节。
5. 编写系统镜像
有很多这方面的教程。
不过,老周又补充了一些内容。
1、SD卡其实不需要格式化,实际测试没有问题。 在写入系统镜像之前,可以使用Windows自带的“磁盘管理工具”删除SD卡的分区(或卷)。 打开Win32DiskImager,直接选择SD盘。 该软件可以自动识别可移动设备。 您的硬盘驱动器分区不会出现在选择列表中。
2. 设置固定IP。 这主要是指使用网线连接电脑。 如果不设置固定IP,树莓派每次启动时的IP地址都会不同,导致连接困难。 网上有很多教程。 只需按照教程操作并修改 .conf 文件即可。 不过老周介绍了一个很简单的方法,下面解释一下。
当你成功写入系统镜像后,你会看到两个分区,如下图所示。
例如,这里我有一个带卷标boot的F区和一个G区。 这个G区是Windows无法识别的文件系统。 每次连接时,Windows 都会提示您格式化。 您不得对其进行格式化。 忽略提示即可。
打开启动分区。 里面有很多玩具。 其中两个玩具是可以直接打开的.txt 文件。 最好使用NotePad++之类的工具进行编辑。 主要是因为Windows中的换行符是回车符,Linux中不使用回车符。
config.txt用于配置Raspberry Pi启用哪些设置/功能,例如启用i2c、启用1-Wire(双向单总线)等。您不需要更改此文件。 登录系统后可以通过系统命令-raspi-config进行修改。 有些教程会告诉你关闭蓝牙,因为主控串口模块分配给蓝牙,而TX和RX引脚使用单片机(次级)中的芯片,所以需要转接。 除非您有更严格的效率要求,否则这实际上不会产生太大影响。 当然,您不必关闭蓝牙。 您可以将此行添加到 config.txt 文件中,以便可以在不禁用蓝牙的情况下交换两个串行端口控制器。
portant;">dtoverlay=miniuart-bt, krnbt=on
这些配置的详细描述位于 /boot/overlays/README 文件中。 有空的时候可以看一下。
重要的一点来了。 另一个文本文件是cmdline.txt,用于存储一些命令。 这些命令将在系统启动时执行。 每个命令都用空格分隔。 打开cmdline.txt文件,在文件前面添加ip=192.168.11.25。 等号后面是您要使用的静态 IP 地址。 您决定想要什么地址。
portant;">ip=192.168.11.25 console=serial0,115200 console=tty1 root=PARTUUID=2e9f1d8c-02 ……
这比修改 .conf 文件更简单吗? 并且全局IP地址已设置。
最后记得在boot分区根目录下创建一个空白文件。 文件类型是什么并不重要。 反正都是空的。 文件名为 SSH,没有扩展名。 这样系统初始化后就开启了SSH功能,无需显示器、键盘、鼠标即可通过网线登录树莓派。
Windows 10 自带了 ssh 工具,因此您不必到处寻找工具。 打开命令行提示窗口并输入:
portant;">ssh pi@192.168.11.25
其中,pi为用户名,为系统默认用户名,默认密码为raspberry。 登录系统后修改或不修改密码都没关系,反正都是你自己用的。 如果你在外面使用,或者其他人可能访问你的树莓派,你需要更改密码,甚至用户名和主机名。
如果您在 Win 10 上首次连接 Linux 主机,系统会询问您一串 XX。 XX这串你看不懂也没关系。 只需输入 yes 并按 Enter 键即可。 如果出现错误,进入C:\Users\ \.ssh目录,删除里面的known_hosts文件(与主机绑定的密钥放在里面)。 然后通过 ssh 重新连接。
6. 采购模块/传感器
如果你购买Raspberry Pi只是为了用作Web服务器或学习Linux系统,则无需花钱购买各种电子模块。 不过老周觉得买个开发板来学习Linux有点过分了。 我建议你给我闲鱼30%的折扣。 既然是开发板,当然要玩硬件,不然就对不起这几百块钱了(我买的2G内存要268元,4G/8G更贵)。
至于购买哪些模块和传感器,由您决定。
1.控制按钮类别。 可以购买轻触开关、轻触开关、热敏开关、光敏开关、声控开关等;
2. 传感器类型。 比如MPU 6050(三轴加速度计、陀螺仪大洋编辑软件教程,这个有点复杂)、PAJ7620(手势感应)、DHT11(温度/湿度检测,这个比较简单)、DS18B20(温度检测,1-wire协议,这个就上) Raspberry Pi 可以直接作为文件访问,使用方便)。 许多传感器使用IIC协议(i2c),但您不必自己模拟。 .NET 有相关的 Nuget 包。
3. 电机。 舵机更好玩,可以控制旋转角度,还可以用它来做机械手。
4.发光二极管、LED小灯。 记得买一个200-250Ω的电阻。 这个电阻范围就足够了。 老周做过实验,发现电流达到18mA时发光二极管基本全亮。 树莓派的最大输出电流是50mA(这是说明书上说的),单个引脚的输出电流不应该那么高。 所以,如果你胆子大,可以不用串联电阻就接LED灯,裸奔也太爽了。 事实上,二极管是烧不掉的。 老周用80mA的电流点亮了一夜,也没烧坏。 为了验证网上的说法,老周故意烧了两盏灯,一白一红。
电流增加到280mA后白灯烧坏,250mA左右红灯烧坏。 当电流增大到190mA时,灯会闪烁,迅速升温,并发出优美的滋滋滋声。 这样算一下。 串联或串接 200 欧姆的电阻完全没问题。
GPIO引脚高电平(电压)一般为3.3V,二极管工作在2-2.2V之间,电流在18-23mA之间(估计,不同颜色的灯电流不同)。假设电流是 20 mA,算一下。
portant;">( 3.3 - 2.0 ) / 0.02
计算结果是65Ω,所以200Ω就足够安全了。
5、超声波测距模块(如HC-SR04模块)。 如果你想制作一辆玩具车,这很容易使用,而且比激光测距更好。 根据老周自己的实验,超声波的测量距离最远可达5米,2-4米的范围应该是比较准确的。 这只是实验数据,不具有代表性。 你可以自己尝试一下,看看它能测多远。
上面只列出了一些。 模块有很多,不可能一一列举。
在购买这些模块时,老周建议不要一次性全部购买。 您可以单独购买,也可以分几件购买。 虽然收快递比较麻烦,但是相对划算。 哪一款比较便宜? 然而,常用的快递公司只有几种。 如果多个快递员同时到达,可以一起领取。 有时,相同的模块在某些商店中以非常高的价格出售。 如果你一起买很多,显然你会买一些更贵的模块。
7. 树莓派引脚
虽然有40条腿,但你只能用28条。关于如何按顺序数引脚,不要倒着数。 如果倒数的话,很容易接错,不倒的话会烧坏电路。 将引脚朝向您,开发板的 USB 端口朝下,从左到右、从上到下数。 看这张图片。
或者看看这个。
Raspberry Pi 数据表可在此处下载:Force Click
如果数的话,有两个3.3V,两个5V,八个GND(电源负),占用了12个引脚。 只有 28 个引脚可用于数据 IO,包括专用串行通信。 特殊用途引脚,如 IIC 和 SPI。 一般标有GPIO XX的就可以使用。 当然,也可以通过修改引脚复用配置来稍微扩展几个端口。
引脚重用(或多路复用)由称为 ALT 的值表示,该值可在数据表中找到。 或者,你也可以看看这个: ,里面有每个引脚功能的介绍。
例如,GPIO 12 是板上的第 32 号引脚(右排从下到上,倒数第五个,在 GND 上方)。
我们看到它的ALT 0属性是PWM0,也就是第一个PWM输出(实际上只有两个通道,虽然有四个PWM引脚,但是两个PWM0是相连的,两个PWM1也是相连的。所连接的引脚为引脚输出参数相同;另外两个是GPIO 18和19,但ALT需要手动修改)。 表示默认使用12号GPIO作为PWM输出(前提是开启该功能,在config.txt文件中修改)。 如果把12脚的ALT改为ALT1,那么它的功能就是SD4(用来通过该脚读写SD卡,我不知道这个怎么用)。
===================================================
好了,现在就这些了。 老周每天都会写一点这些烂文章,然后拼出来。 有时写一篇文章需要一周的时间。 我没有足够的时间一口气写完,所以我必须这样做。
来源: