用NodeJs来控制硬件(基于Raspberry Pi)(二)
发布于 2年前 作者 yourke 7924 次浏览

最终效果在第一节 首先,我们需要对RaspberryPi有一个了解,Wiki上说得比较详细了,中文的介绍也有,我就不废话了,用到的OLED显示模块提供的是SPI接口,一般不能“即插即用”,而是需要自己写驱动,还好SPI是属于比较通用的接口,Linux上已经有了通用的驱动,但在经过若干次试验后,发现RaspberryPi 的 SPI接口速度太快,不能满足OLED模块(驱动芯片是SSD1306)的时序要求,于是,只能自己通过GPIO,用编程来模拟。 要想通过GPIO来模拟,首先得看看RaspberryPi都有哪些GPIO口。下图是Raspberry Pi的接口图: RaspberryPi GPIO 图片中以GPIO开头的接口都可以通过程序控制其电平的高低,从而实现模拟SPI时序。我使用的模块采用四线SPI模式,接口如下: DAT – 数据输入 CLK – 时钟 RST – 复位 DC – 数据/命令切换 CS – 使能信号

将OLED模块的各个数据引脚接到Raspberry Pi的引脚上,并记下各个信号所对应的GPIO号。 接下来,就是写程序来驱动显示模块了! Raspberry将IO口的控制映射到了/sys/class/gpio里相关文件中了,通过读写相关文件,就可以实现对应IO口的控制,参考这个例子

echo "4" > /sys/class/gpio/export //将4号IO口导出,完成后会创建gpio4这个文件夹
echo "out" > /sys/class/gpio/gpio4/direction //将四号IO口设置为输出
echo "1" > /sys/class/gpio/gpio4/value //往4号IO口写值1,即输出高点平
echo "4" > /sys/class/gpio/unexport //清除4号IO口,删除gpio4文件夹

可以看到,以上操作其实都是文件操作,使用Node自带的fs相关函数就能进行控制,也有老外写过RaspberryPi GPIO相关的库另一个),实现原理也是如此。经过试验,发现OLED虽然能够成功驱动,但是由于文件IO操作比较耗时,导致显示屏的刷新率非常低,而且CPU消耗非常大。于是只能另寻他径。 玩过硬件的大概都知道Arduino,它是面向电子发烧友和设计师的一款开源电路板,以其简单的API,在世界范围内大受欢迎。而且,也有国外的大牛把它移植到了RaspberryPi上,以类似的简单API,编写硬件控制程序。而且还封装了不同语言的扩展。不过可惜,唯独没有NodeJs的扩展。 受到Arduino简洁的API的吸引,于是决定自己封装NodeJs的函数库

用NodeJs来控制硬件(基于Raspberry Pi)(一):最终效果图 用NodeJs来控制硬件(基于Raspberry Pi)(三):NodeJs 扩展

4 回复

刚看一下, 感觉 RaspberryPi 是一个 all in one 的板卡. 链上显示, 键鼠 可以当电脑用了

要赞一个啊,虽然看不懂

汗… 完全不懂

很感兴趣 支持分享。。。

回到顶部