用树莓派制造摩托车仪表盘


MAKER:Alexander Everaert/译:趣无尽 Cherry(转载请注明出处)

这是一个关于摩托车物联(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 打印一个与我的摩托车油表大小一致的外壳。

树莓派外壳

将树莓派安装在摩托车内部的位置,我使用一些魔术贴皮带将其放置在其中一个挡泥板下,并使用外壳和一些塑料保护起来以免元件受损。

加速度计

将加速度计安装在安全的地方,最好安装在摩托车车架上。

电子元件的外壳你可以自由选择。确保电子元件能够防雨和防尘即可。

扩展阅读

《用 Arduino 制造自行车数字码表》

via

坐沙发

发表评论

你的邮件地址不会公开


*