用树莓派制作一个摩托车仪表板
由于公众号文章的推送规则已经改成了不按照发布时间排序,所以为了大家能够准时收到我们的文章推送,请记得猛戳右下角的「在看」,并点击公号主页右上角的“ ... ”将 程序员极客实验室 设为星标~这样就不会错过每一篇精彩的推送啦~
这是一个关于摩托车物联(IOT)的项目。因为自己是一名机车发烧友,所以决定利用自己的专业特长,用树莓派来制作一个摩托车智能仪表板。它不仅能够更好的分析骑行中的各种数据,也能提高我的骑行技能。看起来是不是非常的酷呢!
仪表板的特征:
查看当前骑行倾斜度。
查看当前骑行加速度。
监控油温。
在暗的环境中骑行时自动切换到黑暗模式。
记录骑行数据并查看自己的数据统计。
材料清单
树莓派 × 1
12V-5V 的 USB 充电器 × 1
4 针脚带保险的 12V 继电器 × 1
带跳线的面包板(可选) × 1
一组电阻 × 1
0.2mm 电线 × 若干
Breakout Pi plus × 1(安装在树莓派顶部的原型板)
DS18B20 1 Wire 防水温度传感器 × 1
油温传感器 × 1
三轴陀螺加速度计 MPU6050 × 1
倾斜传感器 × 1
加速度传感器 × 1
光敏电阻 × 1
MCP3008 带 SPI 接口的八通道十位 ADC × 1
TFT SPI 显示器 × 1
RGB LED × 1
塑料盒子 × 1
树莓派外壳 × 1
烙铁 × 1
焊锡 × 1
2.5mm 螺丝 × 若干
垫片 × 若干
防水电线连接器 × 1
强力胶水 × 1
设计电路
电路图如图所示,请按照 PDF 文件说明铺设电路。如果没有十足的把握,可将项目中的所有组件安装到面包板上测试一下。注意使用树莓派的 3.3V 引脚而不是 5V 引脚。
在给树莓派通电之前,请仔细检查电路,确保没有短路。
PDF 文件请在项目文件库中下载。
https://make.quwj.com/project/260
设置树莓派
树莓派作为项目的操作系统,主要负责处理角度传感器、储存服务页面、运行后端以及数据库等。
下面将开始设置树莓派。
1、安装自定义 Raspbian 镜像
该镜像包含启动该项目所需的软件包:
网站前端的 Apache。
数据库 MariaDB。
操作数据库 phpMyAdmin。
自定义权限以避免出现问题。
自定义镜像,此处下载:
https://drive.google.com/file/d/1wWtb2ZWEqh_-uxrbW7SYPqas-9emT4e-/view?usp=sharing
一旦安装镜像,请使用网线将树莓派连接到电脑。然后使用 SSH 客户端连接到 IP 地址 169.254.10.1。
2、配置无线 AP
以上配置完成后,可以通过 WiFi 连接到树莓派,因此可变为无线 AP。
相关教程:
https://thepi.io/how-to-use-your-raspberry-pi-as-a-wireless-access-point/
你可按照教程操作到步骤七。我们不需要步骤八。
3、启用接口
进入 raspi-config
sudo raspi-config
跳转到接口选项,启用 1-wire、SPI 和 I2C,然后重新启动树莓派。
4、设置显示器驱动程序
初始化显示器
编辑文件名为:/etc/modules
sudo nano /etc/modules
添加以下两行
spi-bcm2835
fbtft_device
编辑 /etc/modprobe.d/fbtft.conf
sudo nano /etc/modprobe.d/fbtft.conf
添加以下行
options fbtft_device name=tm022hdh26 gpios=reset:25,dc:24,led:18 rotate=90 speed=80000000 fps=60
重新启动树莓派。如果你看到显示器背面的光灯亮起,就一切正常。每次启动树莓派时,都会初始化显示器,但是现在只显示黑屏。
如果想要在显示屏上显示树莓派的内容,我们需要将主屏幕的内容复制到小型 LCD 上。我们称为’fbcp’服务。
安装 fbcp 服务
sudo apt-get install cmake
git clone https://github.com/tasanakorn/rpi-fbcp
cd rpi-fbcp
mkdir build
cd build/
cmake ..
make
sudo install fbcp /usr/local/bin/fbcp
现在,该服务安装好了。但是,由于我们只使用了树莓派,没有显示屏。所以要在树莓派上输出屏幕内容,请编辑/boot/config.txt
sudo nano /boot/config.txt
找到并取消注释或在此文件中添加以下行:
hdmi_force_hotplug=1
hdmi_cvt=640 480 60 0 0 0 0
display_rotate=0
hdmi_group=2
hdmi_mode=87
重启树莓派,并在控制台中输入 fbcp 来测试 fbcp 服务。现在,你可以在 LCD 上看到屏幕上的内容。
在启动时运行 fbcp
编辑 /etc/rc.local 并在 IP 地址和出口行之间添加以下行
fbcp &
设置完后,每次开启树莓派时,显示器会打开。
设计数据库
为了记录和存储角度传感器,我设计了自己的数据库。如图所示,它包含四个表。
1、设备部分
该表包含每个传感器。其中包括传感器名称、描述和测量单位。该表与表操作是一对多关系,在这个项目中,加速度传感器可以执行不同的任务。
2、动作部分
该表可以存储不同传感器的动作。确保一个动作始终与特定传感器关联。例如:动作 ‘TEMP’ 连接是测量温度的设备。这将是 1-wire 温度传感器。
3、历史记录
该表包含所有传感器的记录。每个记录包括一个动作 ID,一个数值,一个时间戳和一个骑行 ID。
4、骑行部分
该表存储不同的骑行路程。每次当用户重新骑行时,都会在此表中进行重新输入。
你可在树莓派上获取此数据库,在我的 GitHub 中复制下载到存储库。在数据库下,你将找到两个 .sql 文件。
在PhpMyAdmin 或 MySQL 工作台中运行它们。随后,该数据库应该在你的树莓派上。
https://github.com/EveraertAlexander/motoDash
后端
如果你还没有在我的 GitHub 中复制下载存储库。你可在文件夹 Backend 下,找到项目的完整的后端。
在文件夹 /helpers 下面的目录里读取传感器的类别,用于在 /repositories 下与数据库通信的文件,并且主应用程序位于名为 app.py 的根目录下。
安装 Python 包
在运行程序之前,我们需要先为 python 安装一些软件包。进入树莓派的终端并输入以下命令:
pip3 install mysql-connector-python
pip3 install flask-socketio
pip3 install flask-cors
pip3 install gevent
pip3 install gevent-websocket
提醒:如果你更改了 Mariadb/Mysql 的密码,请在 config.py 中更改密码。
测试后端
使用 python3 注释器(/usr/bin/python3)运行 app.py。确保没有错误。
在启动时运行后端
编辑 motoDash_backend.service 并修改其中的 YOURFILEPATH 到存储文件夹的路径。
将此文件复制到 /etc/systemd/system/
sudo cp motoDash_backend.service /etc/systemd/system/motoDash_backend.service.
现在,后端将在树莓派每次启动时自动启动。
前端
进入 GitHub Repo。将 Frontend 目录的内容复制到 /var/www/html。
这就是前端需要做的所有工作。该文件夹包含网络界面的所有网页、样式和脚本。它还能与后端通信。
测试一切能够正常运行后,请连接到树莓派,然后在浏览器中输入树莓派的 IP 地址。你就可以网络界面的主页。
注意:该页面是响应式,因此你可以在移动设备以及台式机上使用它。
在显示器上显示仪表盘
前端有隐藏的网页,仅用于小型显示器。我们将在自动启动树莓派时以全屏模式打开该网站。
确保在引导选项下的 raspi-config 中将树莓派设置为桌面自动登录。
sudo raspi-config
现在进入隐藏的配置文件夹并在其中创建一个新文件。
cd .config
sudo mkdir -p lxsession/LXDE-pi
sudo nano lxsession/LXDE-pi/autostart
在此文件中添加以下行并保存。
@xscreensaver -no-splash
@xset s off
@xset -dpms
@xset s noblank
@chromium-browser --noerrors --disable-session-crashed-bubble --disable-infobars --kiosk --incognito http://127.0.0.1/dashboard_main.html
现在,树莓派每次启动时就可以看见该网页。
焊接电子组件
按照组件结构焊接,将传感器和模块连接到正确的引脚即可。请确保正确焊接引脚。
焊接小技巧:
当焊接距离较大时,请使用绝缘电线。
焊接组件或电线后,请使用万用表检查其是否通电。也可以定期检查电路是否短路。
焊料的使用不宜太多或太少。
如果你不知道如何焊接,可在另一个原型板上进行练习。
确保传感器上焊接的电线足够长,并使用热缩管防止短路。
所有焊接完成后,请仔细检查是否存在短路或不良连接,并确保电子组件按照设计的方案正确焊接。
一切正常工作后,在树莓派上安装分线板并用 2.5mm 的螺钉和支脚将其固定,然后正确安装传感器后并在网站上进行测试。
电源供应
我使用 12V-5V USB 适配器为树莓派供电。该适配器将连接到摩托车电池。我们使用继电器是为了确保打开点火开关时树莓派通电。当继电器检测到尾灯电压时,继电器将关闭树莓派电源电路(打开点火装置时,尾灯始终打开)。
更多相关的详细教程,请点击下方链接查看:
https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxiliary-power-for-pcv-wb2-and-other-fuel-controllers.16921/
外壳
显示器外壳
显示器使用一种硬质塑料盒。大小可与显示器相匹配,注意需要在前面为 RGB LED 和 LDR 钻两个孔。我使用螺栓将这个盒子安装在智能手机支架的顶部。
温度感应器外壳
3D 打印一个与我的摩托车油表大小一致的外壳。
树莓派外壳
将树莓派安装在摩托车内部的位置,我使用一些魔术贴皮带将其放置在其中一个挡泥板下,并使用外壳和一些塑料保护起来以免元件受损。
加速度计
将加速度计安装在安全的地方,最好安装在摩托车车架上。
电子元件的外壳你可以自由选择。确保电子元件能够防雨和防尘即可。
本项目文件库地址:
http://make.quwj.com/project/260
via instructables.com/id/Raspberry-Pi-Motorcycle-Dashboard/
推荐阅读:(点击标题可跳转)
点赞和在看就是最大的支持