发 帖  
原厂入驻New

请问JetBot项目如何使用一个0.91英寸的一个OLED来显示系统的IP和内存信息?

122 JetBot OLED
分享
JetBot项目使用一个0.91英寸的一个OLED来显示系统的IP和内存信息?
0
2020-11-10 07:10:17   评论 分享淘帖 邀请回答
3个回答
I2C 接口

Jetson nano 板载有两路I2C接口,JetBot上的OLED就是通过I2C接口来操作的。这里我们可以使用i2ctool工具来查看i2C设备。这里指令最后的参数为1, 表示查看的是i2c总线1的设备,如果参数为0,则查看的是总线0的设备。
i2cdetect -y -r 1

其中0x3C 就是OLED的i2C设备地址。由于JetBot一开始的项目使用的是SSD1306的0.91inch OLED屏幕,所以提供的OLED函数库是Adafruit_SSD1306. 屏幕的控制程序你可以在jetbot/jetbot/app/stats.py文件中了解。
2020-11-10 14:52:38 评论

举报

OLED显示

这里为了不与原OLED的程序冲突,我们连接另一个0.91inch OLED 到Jetson Nano的i2c0接口上做显示测试。
引脚连接关系如下:
Vcc (OLED) -> 3V3 (Jetson)
GND (OLED) -> GND (Jetson)
SDA (OLED) -> I2C0_SDA (Jetson)
SDL (OLED) -> I2C0_SDL (Jetson)
如果你不清楚I2C0接口的引脚具体是哪个,请参考Jetson nano系列教程之GPIO
连接好之后查看i2c总线0所挂载的设备,可以看到有一个0x3C的设备被识别到


由于控制芯片和屏幕规格都一样,所以我们同样直接使用Adafruit_SSD1306函数库来操作OLED. 我们试着去写一个程序显示字符串到OLED上面。



代码情况如下:


声明:

Adafruit_SS1306是Adafruit Electronics 提供的驱动小尺寸OLED屏幕的驱动。有兴趣的可以自行了解一下。
2020-11-10 14:53:16 评论

举报

  完整代码:
  importtime
  importAdafruit_SSD1306
  fromPILimportImage
  fromPILimportImageDraw
  fromPILimportImageFont
  fromjetbot.utils.utilsimportget_ip_address
  importsubprocess
  #128x32displaywithhardwareI2C:
  disp=Adafruit_SSD1306.SSD1306_128_32(rst=None,i2c_bus=1,gpio=1)#settinggpioto1ishacktoavoidplatformdetection
  #Initializelibrary.
  disp.begin()
  #Cleardisplay.
  disp.clear()
  disp.display()
  #Createblankimagefordrawing.
  #Makesuretocreateimagewithmode‘1’for1-bitcolor.
  width=disp.width
  height=disp.height
  image=Image.new(‘1’,(width,height))
  #Getdrawingobjecttodrawonimage.
  draw=ImageDraw.Draw(image)
  #Drawablackfilledboxtocleartheimage.
  draw.rectangle((0,0,width,height),outline=0,fill=0)
  #Drawsomeshapes.
  #Firstdefinesomeconstantstoalloweasyresizingofshapes.
  padding=-2
  top=padding
  bottom=height-padding
  #Movelefttorightkeepingtrackofthecurrentxpositionfordrawingshapes.
  x=0
  #Loaddefaultfont.
  font=ImageFont.load_default()
  whileTrue:
  #Drawablackfilledboxtocleartheimage.
  draw.rectangle((0,0,width,height),outline=0,fill=0)
  #Shellscriptsforsystemmonitoringfromhere:https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load
  cmd=“top-bn1|grepload|awk‘{printf\”CPULoad:%.2f\“,$(NF-2)}’”
  CPU=subprocess.check_output(cmd,shell=True)
  cmd=“free-m|awk‘NR==2{printf\”Mem:%s/%sMB%.2f%%\“,$3,$2,$3*100/$2}’”
  MemUsage=subprocess.check_output(cmd,shell=True)
  cmd=“df-h|awk‘$NF==\”/\“{printf\”Disk:%d/%dGB%s\“,$3,$2,$5}’”
  Disk=subprocess.check_output(cmd,shell=True)
  #Writetwolinesoftext.
  draw.text((x,top),“eth0:”+str(get_ip_address(‘eth0’)),font=font,fill=255)
  draw.text((x,top+8),“wlan0:”+str(get_ip_address(‘wlan0’)),font=font,fill=255)
  draw.text((x,top+16),str(MemUsage.decode(‘utf-8’)),font=font,fill=255)
  draw.text((x,top+25),str(Disk.decode(‘utf-8’)),font=font,fill=255)
  #Displayimage.
  disp.image(image)
  disp.display()
  time.sleep(1
2020-11-10 14:53:45 评论

举报

只有小组成员才能发言,加入小组>>

347个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表