首页 > 编程语言 >程序汪8万接的共享电动车项目,开发周期3个月

程序汪8万接的共享电动车项目,开发周期3个月

时间:2024-03-30 14:31:45浏览次数:23  
标签:电动车 字节 res 开发周期 蓝牙 硬件 万接 共享 com

本文章来自程序汪背后的私活小团队,开发共享电动车的小程序,希望把这些真实案例分享出来,大家能学到点东西,比如硬件怎么通过手机蓝牙操控,商业项目怎么推广,软件怎么和硬件配合,电动车技术方案是什么样的等等。

B站【我是程序汪】

图片

共享电动车项目

开发项目情况

  • 前端vue 小程序uniapp  PC端页面

  • 后端   技术栈  springboot  

  • 开发周期90天  

  • 开发人数 2人   

  • 整体费用是8万(不含硬件部分)

  • 走的公司合同

  • 云服务器3台

技术选型

  • 核心框架:Spring Boot

  • 数据库连接池:Druid

  • 缓存:redis

  • 数据库:mysql

  • 小程序蓝牙接口

项目背景

背景很简单城市交通非常容易堵车,但是小电动就比较舒服了,10公里内短途交通选择小电动是非常方便快捷的,我们这个共享电动车 还车话需要到指定的地方才可以,下面我们简单看看这个项目的核心功能吧

很多功能很共享单车差不多

核心流程

流程比较复杂,我画了一个简单点的,下面主要讲下扫码开锁这个流程,中间涉及了小程序,后端服务,腾讯IOT,硬件设备,硬件内部细节不讲了,这部分是硬件兄弟开发的,我只负责跟硬件接口对接就可以

图片

运营维护人员需要定期检查电动车的电量情况,这里硬件部分是每10分钟会上报电池的具体情况,方便运营维护师傅保养维修电动车

图片

图片

图片

这里可骑行的公里数是后端服务查询硬件查询出来的电量计算出来的

而一公里耗电大约0.02度电(1.2度电/56km=0.02度电/公里)

这是硬件提供的数据

图片

去超市购买一个小东西出来可以继续骑车,这个需求点一直有,但好多共享单车都没有

图片

蓝牙开锁接口

这是蓝牙开锁的代码,大家可以参考uniapp

 openBluetoothAdapter() {
          wx.openBluetoothAdapter({
            success: (res) => {
              console.log('openBluetoothAdapter success', res)
              this.startBluetoothDevicesDiscovery()
        this.iflan=true;
            },
            fail: (res) => {
              if (res.errCode === 10001) {
                wx.showToast({
                  title: '请打开蓝牙',
                  icon: "none"
                })
                wx.onBluetoothAdapterStateChange(function (res) {
                  console.log('onBluetoothAdapterStateChange', res)
                  if (res.available) {
                    this.startBluetoothDevicesDiscovery()
                  }
                })
              }
            }
          })
        },
  startBluetoothDevicesDiscovery() {
         console.log(123)
          if (this._discoveryStarted) {
            return
          }
          this._discoveryStarted = true
          wx.startBluetoothDevicesDiscovery({
            allowDuplicatesKey: true,
            services: [
              "FFE0",
              // "F0A0", // BM30广播模块需加上,如使用连接模块可忽略
            ],
            success: (res) => {
              console.log('startBluetoothDevicesDiscovery success', res)
              this.onBluetoothDeviceFound()
            },
         fail(res){
        console.log(res);
          console.log('失败')
         }
          })
        },

uni.openBluetoothAdapter(OBJECT)

初始化蓝牙模块

OBJECT 参数说明

属性类型默认值必填说明
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

https://uniapp.dcloud.net.cn/api/system/bluetooth.html#openbluetoothadapter

下面是蓝牙通信协议接口说明

1.通信协议格式 

通信只支持蓝牙串口通信方式

2.通信数据格式

帧头

源地址

目标地址

数据长度

命令码

协议版本

数据

校验和

2字节

1字节

1字节

1字节

1字节

1字节

N字节

1字节

0x3B、0xB3

异或

l帧头:2字节,固定为0x3B、0xB3

l源地址: 1字节, 默认0

l目标地址:1字节,默认1

l数据长度:1字节,包括命令码、协议版本和数据域的长度。

l命令码:1字节

l协议版本:1字节,表示当前的协议版本,起始版本为0x10

l数据:0-N字节,N小于等于250

l校验和:1字节, 异或校验,为本帧数据包括帧头,源地址,目标地址,数据长度,命令码,协议版本,数据在内的全部数据做异或校验。

本协议中没有特殊说明的数据格式全部为16进制,大于1字节的数据发送时高字节在前,低字节在后

获取电动车电量 

图片

可以获取电池的各种健康数据,电动车最核心的价值就是电池

图片

获取电动车经纬度

图片

蓝牙和硬件的接口文档分享 百度网盘

链接: https://pan.baidu.com/s/1Xne_9wbugNIsGQfMzn06jA  

密码: 3jo6

硬件兄弟开发的电池保护板

图片

下面是对接腾讯IOT平台SDK的DEMO,大家也可以去腾讯官方去看详细的SDK说明

 import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.cvm.v20170312.CvmClient;
import com.tencentcloudapi.cvm.v20170312.models.DescribeInstancesRequest;
import com.tencentcloudapi.cvm.v20170312.models.DescribeInstancesResponse;

public class DescribeInstances {
    public static void main(String[] args) {
        try {
            // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中,请参考本文凭证管理章节。
            // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
            // Credential cred = new Credential("SecretId", "SecretKey");
            Credential cred = new Credential(System.getenv("TENCENTCLOUD_SECRET_ID"), System.getenv("TENCENTCLOUD_SECRET_KEY"));
            CvmClient client = new CvmClient(cred, "ap-shanghai");

            DescribeInstancesRequest req = new DescribeInstancesRequest();
            DescribeInstancesResponse resp = client.DescribeInstances(req);

            System.out.println(DescribeInstancesResponse.toJsonString(resp));
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
    }
}

    

PC端

目前主要功能 如图

图片

图片

图片

参考资料

  • https://uniapp.dcloud.net.cn/api/system/bluetooth.html#openbluetoothadapter    

  • https://github.com/TencentCloud/tencentcloud-sdk-java

  • https://cloud.tencent.com/document/product/1081

  • https://baike.baidu.com/item/MQTT/3618851?fromtitle=MQTT%E5%8D%8F%E8%AE%AE&fromid=56980070&fr=aladdin

其他有趣项目

程序汪接的7个私活都在这里,经验整理

欢迎添加程序汪VX  itwang007

标签:电动车,字节,res,开发周期,蓝牙,硬件,万接,共享,com
From: https://blog.csdn.net/u011091199/article/details/137122114

相关文章

  • 程序汪8万接的线上娃娃机项目,开发周期40天
    本文章来自程序汪背后的私活小团队,线上娃娃机的项目,希望把这些真实案例分享出来,大家能学到点东西,比如硬件怎么通过手机APP操控,软件怎么和硬件配合,在线娃娃机方案是什么样的等等。B站【我是程序汪】 (变秃了也变强了)程序汪8万接的线上娃娃机项目,开发周期40天今年行情......
  • steam家庭组怎么怎么用、steam家庭组共享游戏的设置教学
    Steam最近推出了一个新功能叫作"Steam家庭",同一个家庭组的成员可以共享游戏库,真是太棒了!如果你想尝试这个功能,首先需要创建一个Steam家庭,然后邀请最多5个家人加入。你可以在Steam客户端、手机或网页浏览器上管理这个家庭。然而,有一点需要注意,被邀请进来的家人必须是同一个区服......
  • 计算机网络-网络文件共享协议
    前言在计算机网络中,我们经常会遇到在不同计算机网络系统之间如何共享和访问文件的场景,并且在实际项目中有这样的需求,在Linux中需要动态的mount文件,需要选择合适的网络文件共享协议以满足并发,吞吐量等需求。这就涉及今天要讲的网络文件共享协议SMB和NFS。SMBvsNFS什么是SMBSM......
  • Sql server 2019 文件夹共享方式异地备份遇到的问题
    1、无法找到路径'\\192.168.66.50\share_domain\2、该作业失败。 无法确定所有者WIN-DOAR3JOEG2C\Administrator(拥有作业Mofang异地差异备份.Subplan_1)是否有服务器访问权限(原因:无法获取有关WindowsNT组/用户'WIN-DOAR3JOEG2C\Administrator'的信息,错误代码0x54......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......
  • 【全开源】无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号_博纳软云
    在繁忙的都市生活中,寻找一处静谧的棋牌室、茶室或台球室,已成为许多人放松身心、享受闲暇时光的理想选择。为满足这一市场需求,我们推出了无人共享棋牌室茶室台球室系统JAVA版本,支持微信小程序和微信公众号,为您带来全新的智能体验。该系统采用先进的JAVA技术开发,实现了无人值守......