【漂移菌】 第七步: 创建驴车应用和启用OLED

2021-11-021.1万
AI 快速预览详细 收起
本文详细介绍了在树莓派上创建驴车应用并启用OLED屏幕的步骤。首先通过`donkey createcar --path ../mycar`命令生成驴车应用,然后编辑myconfig.py文件。接着安装i2c-tools并检测i2c设备,如PCA9685和OLED屏幕。最后,通过克隆gitee上的Adafruit_Python_SSD1306库并执行安装脚本,成功启用OLED屏幕。整个过程涵盖了从创建应用到调试的具体方法,适合DIY机器人爱好者参考。
等全部安装好了,就进入驴车的应用环境,然后生成驴车应用:
  1. cd ~/projects/donkeycar/
  2. donkey createcar --path ../mycar
复制代码
【漂移菌】 第七步: 创建驴车应用和启用OLED图1
进入驴车应用目录编辑myconfig.py
  1. cd ../mycar
  2. vim myconfig.py
复制代码
配置可以先别乱改,懂的备份一下随便折腾,不懂的跟着帖子操作。
然后安装i2ctools ,如果你用的是官方的
Raspberry Pi OS with desktop and recommended software
不需要安装i2c-tools,因为已经安装了
【漂移菌】 第七步: 创建驴车应用和启用OLED图2
  1. sudo apt -y install i2c-tools
  2. sudo i2cdetect -y 1
复制代码
检测一下是否检测到i2c设备,一个pca9685, 一个是oled屏幕的。
【漂移菌】 第七步: 创建驴车应用和启用OLED图3
【漂移菌】 第七步: 创建驴车应用和启用OLED图4
其他的应该就是pca9685的地址了。 微雪官方没有给出,电路图上好像给的也是不太对。。
【漂移菌】 第七步: 创建驴车应用和启用OLED图5
官方是0x41 我获取的是0x40和0x42,先确认一下...
OLED 我用官方的方法安装,他们更新了安装方式但是没有更新文档,所以我决定尝试自己分步骤操作,先安装adafruit-ssd1306的库, 我已经转到gitee上,方便国内用户下载了:
【漂移菌】 第七步: 创建驴车应用和启用OLED图6
进入目录并执行:
  1. git clone https://gitee.com/yoyojacky/Adafruit_Python_SSD1306.git
  2. cd Adafruit_Python_SSD1306/
  3. python setup.py install
复制代码
【漂移菌】 第七步: 创建驴车应用和启用OLED图7
安装Adafruit-BBIO库
【漂移菌】 第七步: 创建驴车应用和启用OLED图8
库就安装好了。
  1. cd examples/
  2. python stats.py
复制代码
就会看到:
【漂移菌】 第七步: 创建驴车应用和启用OLED图9
需要什么信息自己改一下stats.py 就可以了,现在显示不好看。我去调整一下,创建了一个文件donkey.py, 然后写入一点点儿代码。
  1. import time
  2. import Adafruit_SSD1306
  3. from PIL import Image
  4. from PIL import ImageDraw
  5. from PIL import ImageFont
  6. import subprocess
  7. # 128x32 display with hardware I2C:
  8. RST = None
  9. disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)
  10. # Initialize library.
  11. disp.begin()
  12. # Clear display.
  13. disp.clear()
  14. disp.display()
  15. # Create blank image for drawing.
  16. # Make sure to create image with mode '1' for 1-bit color.
  17. width = disp.width
  18. height = disp.height
  19. image = Image.new('1', (width, height))
  20. # Get drawing object to draw on image.
  21. draw = ImageDraw.Draw(image)
  22. # Draw a black filled box to clear the image.
  23. draw.rectangle((0,0,width,height), outline=0, fill=0)
  24. # Draw some shapes.
  25. # First define some constants to allow easy resizing of shapes.
  26. padding = -2
  27. top = padding
  28. bottom = height-padding
  29. # Move left to right keeping track of the current x position for drawing shapes.
  30. x = 0
  31. # Load default font.
  32. font = ImageFont.load_default()
  33. while True:
  34.     draw.rectangle((0,0,width,height), outline=0, fill=0)
复制代码

终端执行测试:
  1. python donkey.py
复制代码
【漂移菌】 第七步: 创建驴车应用和启用OLED图10

我的这个脚本还需要一个systemd服务才能方便每次开机启动。找个时间写。

-------------------------------------------------------华丽的分割线-------------------------------------------------------------
官方的pi-display我拉到gitee.com上面了。
大家也可以通过:
  1. cd ~/projects
  2. git clone https://gitee.com/yoyojacky/pi-display.git
  3. cd pi-display/
  4. sudo ./install.sh   raspberry
复制代码

这里我发现国内一个哥们已经拉下来了pi-display的库,然后他把pidisplay的一个目录改成了pi-display,所以你们怎么安装都不会过。
我改回来了,你们直接用我上面的方式就可以操作,然后sudo ./install.sh 后面是你用户的密码。我这里用了通用的密码,我的已经改掉了。哈哈
然后就可以看到基础服务的状态:
【漂移菌】 第七步: 创建驴车应用和启用OLED图11
好了,OLED启动了,重启看看是否也能看到,能就继续去校准油门,然后开车。

TueNovember-202111023265..png (85.43 KB, 下载次数: 4589)

驴车应用创建与OLED启用 | DF创客社区_image_3.webp

TueNovember-202111026432..png (27.45 KB, 下载次数: 4494)

驴车应用创建与OLED启用 | DF创客社区_image_6.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
gray6666
gray6666
pip install Adafruit-BBIO

yoyojacky
yoyojacky
作者
回复gray6666
文档里面有。
gray6666
gray6666

扩展名conf 应该是py
yoyojacky
yoyojacky
作者
回复gray6666
好的,手误哈哈
yoyojacky
yoyojacky
作者
OLED 还有别的方法,更方便:
安装库:[code]sudo usermod -a -G i2c,spi,gpio pi
sudo apt install python-dev python-pip libfreetype6-dev libjpeg-dev build-essential
sudo apt install libsdl-dev libportmidi-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libsdl-image1.2-dev[/code][code]git clone https://github.com/rm-hull/luma.examples.git
cd luma.examples
[/code][code]sudo -H pip install -e . [/code][code]python examples/3d_box.py[/code]

微笑的rockets
微笑的rockets
嗯,以后照着这个改了。
yoyojacky
yoyojacky
作者
回复微笑的rockets
嗯,我觉得可以定制的东西很多,可以有很多空间的
- 没有更多了 -