精华内容
下载资源
问答
  • 树莓派可以激活SPI接口,通过代码驱动TFT屏幕的显示。这样利用树莓派zero 打造小型的游戏平台可以大大节约成本。淘宝网上的TFT屏幕很便宜,但是一定要记得别买错了,一定要看说明需要支持SPI接口的才行。各种屏幕的...

    HDMI连接和树莓派专用连接的接口的屏幕都太贵了,为了节约成本,现在国内大多数还是TFT屏幕。 树莓派可以激活SPI接口,通过代码驱动TFT屏幕的显示。这样利用树莓派zero 打造小型的游戏平台可以大大节约成本。淘宝网上的TFT屏幕很便宜,但是一定要记得别买错了,一定要看说明需要支持SPI接口的才行。各种屏幕的驱动也不一样,国内多半是fb_ili9431的驱动。购买之前先看仔细各种参数。https://github.com/notro/fbtft/wiki/fbtft_device https://github.com/notro/fbtft/wiki/LCD-Modules FBTFT驱动支持列表

    比如这种:

    1.按照如下图的连接线连接。

    2. 先激活树莓派配置

    sudo raspi-config

    找到Interfacing Options

    然后找到P4 SPI然后 enable SPI interface

    3. 更新后重启,一定要看到更新成功,如果出现文件错误,可以尝试参考我前面的文章更换镜像地址后重新尝试。

    sudo rpi-update
    sudo reboot

    4.执行以下命令就可以发现TFT屏幕可以显示了:

    执行命令 sudo modprobe fbtft_device name=rpi-display gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000

    或者执行  sudo modprobe fbtft_device custom name=fb_ili9431 buswidth=8 gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000

    参考文献:https://www.raspberrypi.org/forums/viewtopic.php?t=157618

    执行完毕后,可以查看日志,日志不能有错误:
    dmesg

    $ dmesg
    ...
    ...
    [  703.864352] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.
    [  703.870840] spidev spi0.1: spidev spi0.1 500kHz 8 bits mode=0x00
    [  703.870917] bcm2708_fb soc:fb: soc:fb id=-1 pdata? no
    [  704.184479] graphics fb1: fb_ili9341 frame buffer, 320x240, 150 KiB video memory, 16 KiB DMA buffer memory, fps=20, spi0.0 at 32 MHz
    [  704.184566] fbtft_device: GPIOS used by 'rpi-display':
    [  704.184581] fbtft_device: 'reset' = GPIO25
    [  704.184591] fbtft_device: 'dc' = GPIO24
    [  704.184599] fbtft_device: 'led' = GPIO18
    [  704.184618] spidev spi0.1: spidev spi0.1 500kHz 8 bits mode=0x00
    [  704.184633] fb_ili9341 spi0.0: fb_ili9341 spi0.0 32000kHz 8 bits mode=0x00
    

     通过检查背景灯光是否亮了,如果亮了,说明就成功了。

    5. 不知道什么原因,执行强制使用以下命令的时候总是报Policykit Authentication Agent的错误,即使在windows session中关闭也不行。

    FRAMEBUFFER=/dev/fb1 startx

    经过长时间的研究发现可以直接修改下面这个文件。 然后再sudo raspi-config 设置boot options 启动选项为Console 项目,不启动桌面。重启后,使用startx命令就可以看到tft屏幕显示了。

    Create file: /usr/share/X11/xorg.conf.d/99-fbdev.conf

    Section "Device"  
      Identifier "myfb"
      Driver "fbdev"
      Option "fbdev" "/dev/fb1"
    EndSection

    6. 调试命令/工具

    sudo modprobe fbtft_device -r 删除设备

    查看设备 ls /dev/fb* -l

    好用的工具:wiringPi
    可查看当前所有GPIO的电压以及使用情况。

    git clone git://git.drogon.net/wiringPi
    cd wiringPi
    sudo ./build

    gpio readall

    7. Orange Pi  相关

    好用的工具:wiringOP

    一定要注意,使用orange pi有一个大坑,网上找到的图和实际的GPIO不符合。一定要使用wiringOP这个工具查看当前的端口。这个问题导致我卡了N天,花费了N个小时。

    BCM列就是gpio 端口号。而wPi是指实际的标准端口,如果用wiringop的时候需要操作wPi的标准端口号。而在一般使用情况下则使用BCM端口号。

    比如,在orangepi 下,我们可以执行命令 

    sudo modprobe fbtft_device custom name=fb_ili9431 buswidth=8 gpios=reset:8,dc:9,led:7 rotate=90 speed=48000000 busnum=0 fps=50 (如果是orangepi zero的 spi0 会被占用。不成功就尝试修改busnum等于1)

    然而,大部分系统会提示 cannot find fbtft_device module,或者fbtft_device 参数错误之类。因为大部分orangepi的系统都没有自带fbtft_device module啊。或者是应为SPI service 没有开通啊。全都是坑。最终我找到一个可以直接执行上述命令的操作系统:

    Armbian
    例如:orangelite版本: (不能保证未来的新版本会去掉驱动,本文写于2018-02-18,可以下载这个时间点附近的release的版本)
    https://www.armbian.com/orange-pi-lite/ 

    Armbian Ubuntu desktop – legacy kernel

    屏幕转移功能依然不好使,可以参考下面文献设置为自启动
    con2fbmap 1 8(Armbian安装好后,发现新增的驱动为fb8,所以这里是8的映射)

    参考文献
    https://www.mysensors.org/build/orange
    http://www.instructables.com/id/Orange-Pi-Zero-Connect-TFT-SPI-ST7735/
    https://kaspars.net/blog/linux/spi-display-orange-pi-zero

    转载于:https://www.cnblogs.com/chengchen/p/8413038.html

    展开全文
  • 找到了 这个帖子 # if you use a non 8 pixel wide font, this is needed ...微雪3.5寸屏幕驱动方式看 这里 另外一个 https://github.com/goodtft/LCD-show https://my.oschina.net/u/2396236/blog/1637885

    找到了这个帖子

    # if you use a non 8 pixel wide font, this is needed
    1sudo apt-get install kbd
    
    2sudo dpkg-reconfigure console-setup
    
    3Encoding to use on the console: <UTF-8>
    4Character set to support: <Guess optimal character set>
    5Font for the console: Terminus (default is VGA)
    6Font size: 6x12 (framebuffer only)
    需要说明下,在小屏上选择ramebuffer only能正常用,不带framebuffer only的用nano时第一行会出错
    

    原文是2.8寸屏,实测3.5寸屏也可以
    在这里插入图片描述
    默认驱动出来的字体太难辨认了,占地方还多,修改之后好多了

    另:
    微雪3.5寸屏幕驱动方式看这里
    另外一个 https://github.com/goodtft/LCD-show
    https://my.oschina.net/u/2396236/blog/1637885

    展开全文
  • 结果展示 显示命令行的效果喜人 ...接线,我参考的LOVE DOTNET的《树莓派研究笔记(9)-- 树莓派SPI连接TFT屏幕》 打开SPI,参考DevinTT的《树莓派使用上spi tft!(fbtft的使用)》,我这里不专门

    结果展示

    1. 显示命令行的效果喜人
      在这里插入图片描述
    2. 我把树莓派0w通过胶枪打胶贴到显示屏的背部,感觉还不错,稍后我把线焊一下,管脚减短些更清爽,现在整体是这样的:
      在这里插入图片描述
    3. 淘宝店家的显示屏截图是这样的,我专门买的ili9341,因为网上的资料全
      在这里插入图片描述

    2.8寸屏幕仅展示命令行玩法

    在这里插入图片描述

    配置说明

    1. 我使用的树莓派系统是:2017-11-29-raspbian-stretch.img
    2. 接线,我参考的LOVE DOTNET的《树莓派研究笔记(9)-- 树莓派SPI连接TFT屏幕
    3. 打开SPI,参考DevinTT的《树莓派使用上spi tft!(fbtft的使用)》,我这里不专门写了。
      1. 关键命令:sudo raspi-config
      2. 选项路径:Interfacing Options - > SPI - > Yes
    4. 参考第1步提到的参考材料,生成fb1(即是framebuffer1,这个tft屏幕就可以当做是fb1了),执行以下命令,lcd的灯会亮,如果是白天的话亮的不明显。所以最好在暗处观察
      sudo modprobe fbtft_device name=rpi-display gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000
      
    5. 参考athuhu0321的《树莓派开发系列教程10——树莓派spi液晶屏支持(fbtft)》,Console(可以理解为命令行)显示在fb1上,我觉得展示命令行更有趣一些
      1. 如果想要lcd展示命令行,需要先将树莓派的启动界面,改为启动进入命令行才行,这步非常重要。(我试过,树莓派启动进入桌面,无法使用指令让树莓派在lcd上展示命令行,而是,使用指令了之后,lcd一点反应都没有),改动方式见下:
      sudo raspi-config
      选择路径为:Boot Options -> Desktop/CLI ->Console AutoLogin (表示自动进入pi用户)
      选择完成后,使用指令重启: sudo reboot
      
      1. 大显示器(非我们的2.8寸lcd小屏幕)接入树莓派的hdmi口,重启完成后,发现树莓派直接进入了命令行,而不是桌面,继续使用下列指令
      先使用命令生成fb1:sudo modprobe fbtft_device name=rpi-display gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000
      再使用命令,将命令行界面映射到fb1上:con2fbmap 1 1
      
      1. 搞定!

    设置启动就在2.8寸lcd屏幕上进入命令行

    思路:

    1. 用户登入linux系统,linux系统会首先加载用户家目录下的.bashrc文件
    2. 树莓派每次默认自动登入pi用户。(可以使用sudo raspi-config指令,选项路径Boot Options->DeskTop / CLI 下选择pi的登入选项)
    3. 所以,只要改动pi用户家目录下的~/.bashrc文件,在文件末尾追加启动需要执行的命令即可。
    4. 追加的命令如下
    sudo modprobe fbtft_device name=rpi-display gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000
    con2fbmap 1 1
    
    1. 实际验证,并不行,我猜:可能是sudo modprobe ***** 这句指令执行需要部分时间,到con2fbmap指令执行时,fb1还没创建出来
    2. 所以应该这样配置,在/etc/rc.locatl文件中追加sudo modprobe *****配置,在~/.bashrc文件中追加con2fbmap 1 1搞定
      1. /etc/rc.locatl是linux系统启动加载文件,加载主体是root用户,所以追加的执行无需带sudo,但是vi这个文件需要带sudo,指令如下
      sudo vi /etc/rc.local
      在文件末尾,exit 0内容之前,追加以下内容:
      modprobe fbtft_device name=rpi-display gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000
      
      1. 在~/.bashrc文件末尾,追加以下内容:
      vi ~/.bashrc
      追加以下内容:
      con2fbmap 1 1
      
      1. 重启,这之后,即使不带hdmi显示器,也可以在这个小lcd上展示命令行了

    2.8寸屏幕仅展示linux桌面玩法

    在这里插入图片描述

    经过以上内容的洗礼,这个就简单多了

    1. 非常重要,修改启动加载桌面(而不是启动加载命令行),这样应该是使树莓派在启动的时候,就加载桌面组件,才能在hdmi或者2.8寸lcd这样的桌面UI输出设备上进行显示,使用以下指令:
      sudo raspi-config
      选择路径为:Boot Options -> Desktop/CLI ->Desktop AutoLogin (表示自动进入pi用户)
      选择完成后,使用过指令重启: sudo reboot
      
    2. /etc/rc.locatl文件先加入fb1初始化的内容:
      sudo vi /etc/rc.local
      在文件末尾,exit 0内容之前,追加以下内容:
      modprobe fbtft_device name=rpi-display gpios=reset:25,dc:24,led:18 rotate=90 fps=50 speed=65000000
      
    3. 新增文件,特别注意,加入以下内容之后,hdmi接口在重启之后,就不输出了,而是通过fb1(2.8寸)屏幕进行输出:
      sudo vi /usr/share/X11/xorg.conf.d/99-fbdev.conf
      写入以下内容:
      Section "Device"  
        Identifier "myfb"
        Driver "fbdev"
        Option "fbdev" "/dev/fb1"
      EndSection
      
    4. 在命令行,使用以下命令,就可以在2.8寸lcd屏幕上显示桌面。
      startx
      
    5. 或者,在新增好/usr/share/X11/xorg.conf.d/99-fbdev.conf文件之后,直接在2.8寸lcd的命令行中(看上一章节:2.8寸屏幕仅展示命令行玩法),直接使用startx命令,就可以在2.8寸lcd中进入桌面,方便快捷。
    6. 按以上方式配置了之后,启动就直接不在hdmi接口上输出了(即使接了hdmi屏幕也不输出),而是在2.8寸lcd上输出。如果要回复输出到hdmi上,只能将新增的这个配置文件/usr/share/X11/xorg.conf.d/99-fbdev.conf删除,并重启树莓派(或者使用startx指令),就可以在hdmi上输出了。反正要么2.8寸lcd输出,要么hdmi输出。不可兼得。(如果既想在hdmi上输出,又想在2.8寸lcd上输出,参考athuhu0321的《树莓派开发系列教程10——树莓派spi液晶屏支持(fbtft)》中的fbcp部分)
    展开全文
  • 只要使用java生成480*320像素的内容就可以通过屏幕展示: 屏幕规格 以下是我某宝买的屏幕截图,需要的自行搜索: 关键点讲解 树莓派接线 屏幕-------------> 树莓派(BCM引脚,这个要特别注意!见下图红...

    结果展示

    1. 只要使用java生成480*320像素的内容就可以通过屏幕展示:
      在这里插入图片描述

    屏幕规格

    1. 以下是我某宝买的屏幕截图,需要的自行搜索:
      在这里插入图片描述

    关键点讲解

    1. 树莓派接线
      屏幕-------------> 树莓派(BCM引脚,这个要特别注意!见下图红框框的引脚编码)
      SDO/MISO ---- > MISO
      LED ------> GPIO 18
      SCK ----------> SCLK
      SDI/MOSI ------> MOSI
      DC/RS ---------> GPIO24
      RESET ---------> GPIO 25
      CS -------------> CE0 (所以java控制树莓派时,spi的通道是0。我们可以CE1接另一个LCD屏幕,这样就可以使用树莓派同时控制两个屏幕了,但是这另接的屏幕,通道是1)
      GND -----------> GND
      VSS ------------> 3.3V
      在这里插入图片描述

    2. 代码已经上传至gitHub,主要是驱动模块,java语言很简单,一看就懂初始化驱动的初始化指令等。这里 是代码地址

    关键代码讲解

    1. 初始化,需要先reset,这块代码就是,很简单:com.chenqi.tft.ili9488.Ili9488Driver#LcdReset

    2. 初始化指令见关键方法:com.chenqi.tft.ili9488.Ili9488Driver#init 具体初始化了啥,我也不很清楚,反正能用,先驱动起来了,能人再自行优化。

      1. 有个关键处,见以下指令,我们指定的是18bit的颜色格式
      sendCommand(0x3A);    // *** INTERFACE PIXEL FORMAT: 0x66 -> 18 bit; 0x55 -> 16 bit
      sendData(0x66);
      

      ili9488 datasheel中对18bit颜色的数据要求是这样的(详见githun,ducuments内ILI9488.pdf中的4.7.5.2章节),总之,一个像素需要传入RGB共3个byte:
      在这里插入图片描述

    3. 初始化ili9488后,还需要再指定写入的窗体大小,见代码:com.chenqi.tft.ili9488.Ili9488Driver#setWindow

      1. 直接指定整个屏幕,也就是宽,从0到(320-1)。高从0到(480-1)。
      2. 这里再说明一下我这个初始化的坐标,应该还有其他坐标的方式,但是我这个初始化的坐标就是以下这种方式。
        在这里插入图片描述
    4. 指定窗体之后,就可以对这个窗体进行写入颜色序列了。

      1. 如果每次写入1个byte,不断的循环,即用com.chenqi.tft.ili9488.Ili9488Driver#sendData 方法写入颜色序列,效率会非常低,刷新整个屏幕需要16秒多
      2. 所以这里使用com.pi4j.wiringpi.Spi#wiringPiSPIDataRW(int, byte[], int) 这个方法写入颜色序列,效率非常高,刷新整个屏幕只要1秒钟,虽然还是不很快,总的说要比16秒还是快很多的。如果哪位大佬知道更好的方法,请留言指教,我再进行优化,谢谢
        1. 使用这个方法之前,需要先进行Spi的初始化,见代码:
        Spi.wiringPiSPISetup(0, 64000000);  //0表示通道0,即上文电路接线提到的:CS  -------------> CE0
        
        1. wiringPiSPIDataRW方法有个奇怪的点,就是不能一次写入整个屏幕的颜色数据,不知道是做了什么限制,如有大佬知道,请不吝赐教
        2. 所以,我就一行颜色作为一次写入的序列,一行一行的调用wiringPiSPIDataRW方法写入。可行。

    代码也是借鉴别人的初始化方式来的,但是我觉得java的更容易看懂,贴出来给大家参考下。如有写的不对的地方,请提出来,一起进步,谢谢。

    展开全文
  • 树莓派: oled屏幕字体制作

    千次阅读 2019-07-06 15:29:57
    1、引入模块 from PIL import ImageDraw from PIL import Image ...import Adafruit_GPIO.SPI as SPI import Adafruit_SSD1306 2、一些默认参数 # Raspberry Pi pin configuration: RST = 24 # Not...
  • 树莓派3.5inch Lcd屏幕驱动(Archlinux) 根据archwiki的说法并结合[link]LCD屏幕的驱动可以收集到以下的信息: #需要开启pwm,也就是声音输出的参数: dtparam=audio=on audio_pwm_mode=2 hdmi_force_hotplug=1 #打开i...
  • 详细语法在代码中有解释 ...import Adafruit_GPIO.SPI as SPI import Adafruit_SSD1306 from PIL import Image from PIL import ImageDraw from PIL import ImageFont # Raspberry Pi pin configuratio
  • 当时用的是并口,占用了太多的gpio资源,于是考虑使用spi接口的显示屏,最近的项目正好用到了spi接口的oled的显示屏,于是考虑把它用到树莓派上,先介绍下这款屏幕:0.96寸的oled屏,spi接口ssd1306主控芯片,在很多...
  • 树莓派自带的40个排针接口里面就有一组SPI接口:GPIO9(MISO) ,GPIO10(MOSI), GPIO11(SCL)。   然后看一下我使用的OLED的接口(注意,OLED的驱动芯片必须是SSD1306): 分别是GND VCC D0 D1 RST DC CS  ...
  • 我买的这个屏幕是1.8寸的128x160的屏幕,共8个引脚,与树莓派的连接见上图,以及下方说明 GND->接地 blk(屏幕背景灯,这个引脚单独搞出来,可能是给我们控制亮度用的,比如pwm)+VDD -> ST7735S直接接入3.3v是...
  • 树莓派 java 驱动 lcd tft spi 1.8寸 ST7735S 天气 预报结果展示参考资料...驱动这个128x160的lcd屏幕,见我之前的一篇内容:《树莓派 java 驱动 lcd tft spi 1.8寸 ST7735S》,我代码重新精简了一下,相信有初级java开
  • 树莓派3代3.5寸屏幕使用教程

    千次阅读 2019-04-25 20:22:43
    注意:官方的系统是不能直接驱动3.5寸屏幕,需要给系统单独安装SPI驱动才能点亮3.5寸屏。 首先连接树莓派,先开机进入桌面,或者远程SSH进入桌面也行。 具体SSH操作自行百度,或者看我另外相关的博客。 然后...
  • 在上一篇《 (十六)树莓派3B+ wiringPi库的使用–硬件SPI驱动NOKIA5110液晶》中介绍了使用树莓派的硬件SPI驱动NOKIA5110液晶屏幕。其实还可以软件驱动,这里我保存使用的引脚和程序功能和上一篇一致,就只需要修改两...
  • 现在手里有树莓派,刚好wiringPi库也有SPI接口,这次就使用硬件SPI驱动NOKIA5110液晶。 NOKIA5110液晶介绍 NOKIA5110液晶是拆机屏幕,84*48的分辨率,接口为串行SPI(SPI-百度百科)接口。 关于这个的详细介绍可....
  • 在以前用wiringPi写过驱动Nokia液晶的例子《(十六)树莓派3B+ wiringPi库的使用–硬件SPI驱动NOKIA5110液晶》。现在使用的是Node.js驱动这个显示屏。 简介 Nokia5110液晶屏现在买到的都是之前Nokia5110手机的拆机屏幕...
  • 我的oled屏幕是ssd 1306 芯片驱动的,4针脚,只支持iic,不支持spi,双色的。 # Copyright (c) 2017 Adafruit Industries # Author: Tony DiCola & James DeVito # # Permission is hereby granted, free of ...
  • Category Archives: Raspberry Pi 【RPi树莓派使用指南】树莓派官方7寸屏入门指南 ...Posted by Yunfei on August ...在树莓派官方触摸屏发布之前,...直接和GPIO插口对接的屏幕,使用SPI与CPU进行通信。需要特
  • 树莓派LINUX 截屏

    2016-05-12 14:02:15
    spi tft 屏幕 显示系统屏幕 根据环境变量获取正在使用的FB: /dev/fb* 读取fb内容和FB配置:长 宽 位深 添加BMP头组装成位图文件 转换成JPG进行压缩
  • 数字小键盘,1.3“128 x64单色OLED屏幕(也支持其他屏幕)。 Python作为主要语言开发应用程序(稍后添加其他语言目标)。 SIM800L GSM调制解调器实现2G现代电话功能,可以换成3G的调制解调器。 GPIO接口方便更多扩展功能...
  • 屏幕上除了供电接线,还接了5根SPI线,用于保持触摸屏功能,具体怎么接线,要看购买的屏幕的说明。右上角的横向固定杆上方有一个黑色的小微动开关,同样接到屏幕原来的调节屏幕高度的微动开关焊点上,用来10档调节...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

树莓派spi屏幕