何为树莓派

许久没有写博客了,十二月份西安疫情的影响,居家隔离了一个多月,在其期间,学习了一下树莓派,觉得硬件还是挺有意思的,刚好也看到了巨硬有提供使用c#用来开发树莓派应用的解决方案叫Net Iot,就自己买了一个树莓派入手,尝试用c#去控制树莓派的各个引脚,当然,Net Iot不仅仅支持树莓派一个开发板,同时支持Arduino开发板,以及香橙派,荔枝派,不过目前只是入手了树莓派,所以此处以及后续开发板会以树莓派为主,后面可能也会出乐鑫ESP32单片机的入门教程,接下来我们了解一下什么是树莓派吧。

树莓派,一个只有信用卡大小的电脑,其操作系统是基于Linux系统,目前支持的系统为树莓派官方操作系统Raspberry Img官方操作系统,Windows 10 IOT操作系统,Ubuntu,Centos,Debian,其中官方操作系统是基于Debian的。虽然树莓派只有信用卡大小,但是别看它麻雀虽小,却五脏俱全,它是一款基于ARM的微型电脑主板,以电脑不同的是,它是使用SD卡用来做存储,操作系统,数据都是存储SD卡上的,最新版的树莓派4B,有两个3.0的USB接口,两个USB2.0的接口以及一个千兆以太网接口,大家可以看下图,树莓派发布至今的各个版本的对比。可以看到虽然树莓派小,但是它有多个USB接口,支持以太网接口,以及蓝牙,音频,以及HDMI接口,并且也是支持蓝牙的,这上面没有标注。并且树莓派最重要并且最好玩的部分就是它的引脚模块,可以用来使用它的引脚去进行控制其他电子元器件,并且支持多种总线通讯协议,包括I²C,SPI,CAN,以及串口通讯,也包括了PWM脉冲宽度调制等,树莓派总共提供了40的引脚,也叫GPIO,GPIO全称是General-purpose input/output,翻译过来就是通用的输入输出,可以看到下面的图片展示了树莓派的引脚,以及部分引脚所带有的其他功能,其中3.3V的是供电接口可以用来给其他的电子元器件供电,5V也是同样的道理,5v也可以给树莓派供电,可以外接电源给树莓派以及其他的电子元器件进行供电,GND为接地引脚,理解为我们三插插座的接地,GPIO开头的为没有任何其他功能的输入输出引脚,RXD和TXD为串口通讯可以使用这两个引脚使用485或者232协议去进行通讯,CE是片选信号,SDA和SCL的是I²C总线协议的接口,MOSI,MISO,SCLK是SPI协议的接口,引脚不一定非要全部记住,但是需要知道它的作用是什么,刚开始的时候我以为SPI和I²C是一种什么特制线路用来通讯的,后来知道了它仅仅是作为一种协议用来传输数据的,接好之后就可以用来传输数据。

上面我们提到了一些总线协议,以及脉冲宽度调制,这里我们做一下简单的介绍,I²C协议是由两根线组成的一个是SDA用来主控设备和被控从设备进行一个双向数据传输的线路,SCL是一根时钟线,用来协调双方设备进行发送和传输数据;SPI协议是由四根线组成,分别是

(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制,这里的CS对应的是我们树莓派上面的CE引脚,片选信号。
    PWM脉冲宽度调制则是简单理解就是,用来控制高低电压的占位比,即一段时间内,高电平在这段时间内的占比。
    以上三种协议等,有一些是个人理解,以及有些是出自百度百科,如有不对,欢迎指正。

目前为止我使用树莓派写过一个入门级别的智能小车,其中的功能有控制摄像头,控制舵机,实现摄像头的转动,以及控制电机来实现小车的前进,后退,左右,同时带有红外线避障和超声波测距模块,以及蜂鸣器,等几个案例,后面我会附上图片以及视频,展示我这段时间的一个学习成果。

Net IOT

接下来进入到我们的重头戏,我们可以看看巨硬提供的关于硬件的树莓派等开发板的解决方案,我们可以在API浏览器上面找到一个叫Net Iot Libraries的一个项目这个项目提供了我们树莓派,香橙派等开发板的解决方案API,而且微软默认的编码都是使用的是BCM编码,可以参考上面引脚图查看对应的引脚BCM编码,但是由于这里都是英文的,所以在过年期间我把他所支持的硬件主要是传感器等电子元器件进行了一个翻译并且整理成了一个文档,后面我会附上文档的一个地址,当然有些还是不全面的,后续也会慢慢完善,目前是大部分都已经整理出来了,我们可以看到下图,API浏览器可以看到他所支持的一些电子元器件,包括ADC(模数转换器),以及PN532读写芯片,还支持了RFID,蜂鸣器,电机,摄像头,显示屏等电子元器件的封装,最主要的是巨硬已经帮我们把I²C,Spi,CAN总线通讯协议,以及PWM脉冲宽度调制封装好了,这样我们只需在理解了总线的协议概念之后,就可以直接用了,这个类库下面是没有提供串口通讯的,不过大家都知道我们在PC机上面是可以进行串口通讯的,那树莓派肯定也可以,依旧用的是SerialPort类来实现串口通讯,使用方式是没有任何变化的,不过刚才我也说了对应的引脚是RXD和TXD,对于串口怎么接线,一般都是树莓派的RXD接通讯设备的TXD,RXD的意思是Read数据,TXD是用来传输数据的,这样就是发送接传输,传输接发送来实现串口通讯,此处的话我是写了一个树莓派和ESP32实现串口通讯的Demo,本文会展示一些我整理的资料以及部分写好的Demo,后续也会为我家里打造一个智能家居的一个解决方案,用树莓派做大脑控制系统来向单片机发送接收的远程指令,从而实现控制窗帘,或者空调或者门锁的一个解决方案,当然成本可能有些高,也可能会只是用单片机用来做控制。因为ESP单片机同时也是支持链接无线网,或者启动一个Web服务器并且成本相较于树莓派低很多,一个树莓派好几百块钱一个ESP32开发板仅需20块钱左右,当然后续也会用一些其他开发板用来实践,譬如树莓派PICO价格也是二十块钱,或者是51或者stm系列的单片机。

最后我为大家展示一下我这段时间用树莓派做的一些东西以及和单片机串口通讯,视频和电子元器件代码和小车的代码以及资料都在我的网盘中,有兴趣的朋友可以下载下来看看。

小车代码:http://121.43.235.192:8082/s/WEtG2ZKLpTsmGKb

各种电子元器件传感器代码:http://121.43.235.192:8082/s/DdoWXYfTLb7npoN

由于本篇博客写的可能有些凌乱,往大家见谅,如果有不懂想入门的同学可以添加QQ群6406277找到我,或者看所在QQ群有没有叫四川观察的基本上就是我了,欢迎大家骚扰,后续的树莓派和单片机学习也会逐渐更新到博客中,期待各位大佬的关注。

C#控制树莓派入门的更多相关文章

  1. 树莓派入门教程——使用Qt开发界面程序

    前言        Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特 ...

  2. node 控制 树莓派做的天气闹钟

    node 控制 树莓派做的天气闹钟 在成都上班,下雨天堵车,迟到的概率会很大. 正好手上有一块树莓派 ,做了一个晴雨闹钟. 下雨天 早上 7:00叫我起床 晴天 早上 7:30叫我起床 将自己喜欢的歌 ...

  3. 云中树莓派(3):通过 AWS IoT 控制树莓派上的 Led

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...

  4. 树莓派进阶之路 (023) - Windows下用串行连接控制树莓派(转)

    转载:http://shumeipai.nxez.com/2014/05/04/under-windows-serial-connection-control-raspberry-pi.html 在没 ...

  5. Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度

    我接到一个需求,需要调节LED灯的亮度,且是从上位机进行控制,我了解到树莓派也有PWM,就准备通过PWM来控制灯的亮度. PWM又叫脉宽调制,是用微处理器的数字输出来对模拟电路进行控制,对模拟信号电平 ...

  6. UNIX/Linux-进程控制(实例入门篇)

    UNIX进程   进程标识符 要想对进程控制,必须得获取进程的标识.每个进程都有一个非负整数表示的唯一进程ID,虽然是唯一的,但是进程ID可以重用.当一个进程终止后,其进程ID就可以再次使用了. 系统 ...

  7. 转载:Raspberry Pi 树莓派入门

    转载说明: 整理转载,原文链接http://www.eeboard.com/bbs/thread-5191-1-1.html 这篇帖子我打算用Q&A的方式来编写,这样大家更容易一目了然的看明整 ...

  8. web控制树莓派摄像头

    首先测试摄像头保证能顺利拍照 raspistill -o a.jpg 安装flask sudo pip install flask 确认无误之后向下进行. 文件夹结构: CapPic ----stat ...

  9. 树莓派B+使用入门&RPI库安装&wringPi库安装

    最近看看试用一下树莓派进行一些开发操作,于是入手一块Raspberry Pi B+的板子来玩.由于没有显示器,没有备用的键盘和鼠标,所以想到用SSH来控制树莓派,刚开始还很担心已经安装好的操作系统到底 ...

随机推荐

  1. 18张图,详解SpringBoot解析yml全流程

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 前几天的时候,项目里有一个需求,需要一个开关控制代码中是否执行一段逻辑,于是理所当然的在yml文件中配置了一个属性作为开关,再配合nacos就可 ...

  2. leetcode 1288. 删除被覆盖区间

    问题描述 给你一个区间列表,请你删除列表中被其他区间所覆盖的区间. 只有当 c <= a 且 b <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖. 在完成所有删除操作后 ...

  3. MySQL 5.7 版本的 UTF8 字符集调研

    一.故事背景 记一次 sql_mode 非严格模式下的业务事故排查.当时数据库没有开启 sql_mode 为严格模式,并且数据表的编码是 utf8,表现为业务侧的 Insert SQL 语句执行成功, ...

  4. java实现excel表格导入数据库表

    导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程 一.上传excel 前端jsp页面,我的是index.jsp 在页面中我自己加入了一个下载上传文 ...

  5. 【刷题-LeetCode】121 Best Time to Buy and Sell Stock

    Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of a gi ...

  6. JavaScript获取URL参数方法总汇

    现在做页面基本都用AJAX,因此导致操作很麻烦,每次都需要通过JS获取url中的参数值,网上所搜到很多资料,没一次能记住的,也不知道在哪个项目中使用过,现在又需要通过JS获取url参数,因此不能在偷懒 ...

  7. ambari-hadoop集群管理web工具

    https://baike.baidu.com/item/Ambari/19697889?fr=aladdin https://www.ibm.com/developerworks/cn/openso ...

  8. pycharm中操作git

    pycharm操作git 1.找到VCS 2.

  9. OC和JS代码的互调

    01 OC调用JS的代码 NSString *str = [self.webView stringByEvaluatingJavaScriptFromString:@"sum()" ...

  10. 取消a标签的默认行动(跳转到href)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...