BusChargeSystem-IOT

项目介绍

基于 STM32F407+ESP8266+RFID 的模拟公交车刷卡收费系统(物联网)

STM32 通过 RFID 识别获取卡片数据并通过串口发送到 ESP8266,ESP8266 通过网络与服务端进行交互,服务端使用 Java 语言读取网络传输的数据包进行处理后,并使用 JDBC 将数据写入到 MySQL 数据库中。
软件技术栈:Java语言+JDBC+MySQL
硬件技术栈:C/C++语言+STM32F407+ESP8266+RFID
做这个小小的项目过程中参考了很多正点原子的资料,很多东西都是刚开始学习,所以只会简单的实现一个物联网项目。

项目示意图:

开源仓库地址:
github:https://github.com/DaXiongRen/BusChargeSystem-IOT
gitee:https://gitee.com/DxrHelloWorld/BusChargeSystem-IOT
百度网盘地址:
下载链接: https://pan.baidu.com/s/1aGTOq4gMEuc3InHixJp6nw 提取码: 6tut

1. 功能列表

功能 介绍
添加用户 刷卡识别需要添加的用户
删除用户 刷卡识别需要删除的用户
刷卡消费 每次刷卡消费金额为 1 元,同一用户可连续刷卡消费
余额充值 通过按键选择充值金额并刷卡识别完成充值

2. 技术栈

2.1 环境

环境 版本
操作系统 Windows/Linux
KeilMDK-ARM 5.35
Arduino 1.8.15
Jdk 1.8
Mysql 8.0

2.2 硬件端

  • STM32F407
  • ESP8266
  • RFID 模块
  • TFT LCD 液晶屏模块

2.3 服务端

  • Java
  • Mysql
  • JDBC

3. 项目开发

3.1 项目代码文件结构简介

- BusChargeSystem-IOT- BusChargeSystem   STM32F407代码- BusChargeSystemService   服务端代码- esp8266   ESP8266代码- sql   mysql数据库脚本

3.2 硬件端开发

3.2.1 开发说明

  • .\BusChargeSystem\为 STM32F407 开发板的代码,请使用 Keil uVision5 集成开发工具打开\USER\BusChargeSystem.uvprojx 文件
  • .\esp8266\为 esp8266 开发板的代码,请使用 Arduino 开发工具打开,修改服务器 IP 地址和端口
// 服务器IP地址 和 端口
const char *host = "192.168.137.1"; // 本地测试的IP 后期改成云服务器的IP
const uint16_t port = 8888;

注:如果本地测试接收不数据,关闭防火墙后再进行测试

3.2.2 硬件接线方式

STM32F407 RFID 模块
PA4 SDA
PC10 SCK
PC12 MOSI
PC11 MISO
GND GND
PA6 RST
3.3V VCC
STM32F407 ESP8266
3.3V VCC
GND GND
PA9(TX) RX
PA10(RX) TX

TFT LCD 液晶屏模块 — STM32F407 开发板上固定位置插入

3.3 服务端开发

3.3.1 开发说明

  • .\sql\为数据库脚本,安装 mysql,导入 bus_charge_system.sql 脚本
  • 数据库名称为:bus_charge_system
  • 默认账号:BCSAdmin 密码:123456
  • .\BusChargeSystem\为服务端代码,请使用 IntelliJ IDEA 打开此文件夹
  • 启动服务端程序,默认监听端口为 8888

3.3.2 数据库表

表名:user_tb

字段名 类型 注释
id int RFID 模块读卡的卡号
name varchar 用户名
sex char
age int
balance double 用户余额
signup_time datetime 注册时间

4. 项目部署

4.1 硬件端部署

STM32F407:

  • 使用 Keil uVision5 集成开发工具打开.\BusChargeSystem\USER\目录下的 BusChargeSystem.uvprojx 文件并编译
  • 编译后会在.\BusChargeSystem\OBJ\目录下生成 BusChargeSystem.hex 文件,通过 FlyMcu 工具将此文件下载到开发板上 或 使用 DAP 仿真器

ESP8266:

  • 用 Arduino 开发工具打开.\esp8266\目录下的 esp8266.ino 文件并将程序下载到开发板上

4.2 服务端部署

  • 在数据库管理软件中导入./sql/目录下的 bus_charge_system.sql 脚本

  • 将.\BusChargeSystemService 目录下的 Java 程序打包成 Jar 包并上传到云服务器

  • 在云服务器上将 8888 端口加入安全组

  • 在终端执行 Jar 包,命令如下:

    java -jar BusChargeSystemService.jar
    

5. 参考资料

硬件资料

正点原子@ALIENTEK

简单实现基于 STM32F407+ESP8266+RFID 的物联网小项目相关推荐

  1. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  2. 矩阵键盘基于51(UcosII)计算器小项目

    矩阵键盘 最近要给学弟学妹(应该没有)培训矩阵键盘,正好写一写我写矩阵键盘的思路,顺便分享一个之前做的基于ucosii的计算器小项目 原理 原理就不介绍了,CSDN有很多分享的,推荐两篇参考一下: 参 ...

  3. 物联网小项目智能家居(QT、MQTT、嵌入式开发板、Ubuntu)

    项目框架: 概述:搭建一个物联网的实战小项目,为本阶段的学习做了一次总结及记录.把构建的整个过程分享出来给大家,项目难点在于各种环境的搭建,而代码逻辑并不难. 说明: (1)本项目总共涉及到了4个MQ ...

  4. 处女作,,QT+arduino的物联网小项目

    这是大三所做的项目,距离完成项目的时间已经过去快十个月之久了,至于为什么今天想发出来是因为马上面临找工作了,想把所做的项目再复习复习,,希望能温故而知新吧O(∩_∩)O. 项目名称叫"智慧停 ...

  5. 基于stm32f407的无线视屏传输项目

    材料:STM32F407两块   NRF24L01两个,OV2640摄像头一个,TFTLCD4.3寸显示屏一个,IS62WV51216(sram)一个. 注:一开始在无线传输模块的选材上有串口wifi ...

  6. C/C++基于easyX库实现三星环绕小项目(C/C++)

    1,项目描述 功能1:使用图形化的方式描述地球围绕着太阳转动,月球围绕着地球转动 功能2:在转动的过程中当用户按下1,2,3,4,5,6,7时它可以变换出7种不同的颜色,当用户按下8时它可以变换从1- ...

  7. 【简单又有趣】Python五个迷你小项目,即学即用,还不赶紧码住(附源码)

    目录 前言 一.猜数字游戏 二.骰子模拟器 三.故事生成器 四.自动发送邮件 五.Hangman 总结 前言 Python编程语言中,我最喜欢的就是Python的各种第三方库,能够完成很多操作. 下面 ...

  8. 简单易上手的vue3.0+ts实战小项目!!附带后台接口

    vue3+Ts项目实战 1.前言 2.项目演示 3.项目介绍 4.配套的node服务 5.vue3+ts的使用心得 1.vue3的使用体会

  9. 最简单DIY基于STM32单片机的WIFI智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

最新文章

  1. Java内部类手机专卖店_JAVA——内部类的那些事儿
  2. linux开发神器--Tmux
  3. 【专栏】好Leader和差Leader的8个区别
  4. 服务器虚拟交换机到网卡不通,浅析虚拟化环境网卡绑定模式
  5. 阿里资深技术专家的10年感悟
  6. ORACLE 全文搜索(精度高排前)
  7. 一生要做的九十九件事
  8. python有什么用-Python为什么这么火?学习python有什么用?
  9. Java的String/byte[]/16进制相互转换
  10. 围棋,与生活,与编程
  11. 常见的系统间接口方式(02)-中间件的数据接口模式
  12. 约瑟夫出圈问题之幼儿园做游戏
  13. 信息与计算机科学丛书,信息与计算科学丛书: 典藏版
  14. 手机里竟然有这么多传感器!终于都搞懂了
  15. SQL Server中的日期和时间:DATEADD()
  16. matlab怎么处理声音,用matlab处理音频文件
  17. python入门之字符串_03
  18. 【结构思考力】02——明确理念打基础
  19. 为何使用人工智能软件?
  20. 用C# OpenGL渲染魔兽世界地图系列(一) 魔兽世界地图介绍与OpenGL环境

热门文章

  1. yii2 头像上传 完整版
  2. CDN进行防御的两大原理
  3. 抗混叠滤波器 - 原理
  4. IntelliJ IDEA历史版本官网下载地址
  5. OSPF之LSA详解
  6. element-plus中el-dialog导致props报错问题解决
  7. linux 怎么改系统字体,linux系统终端修改字体的方法
  8. lsm mysql_一文了解数据库索引:哈希、B-Tree 与 LSM
  9. C++ 三目运算符 ?:
  10. 史上最经典的K线买入技巧