基于树莓派的车牌识别门禁系统(工作日记)

基于树莓派的车牌识别门禁系统(工作日记)


前言

按照之前的具体工作日记,可供参考。具体各部分可以逐个工程调试,当初做的时候导师鼓励说可以放在博客上,那么在此良辰美景之际那就开始咯


第一周

第一天:
从老师那拿到毕设题目车牌识别的门禁系统的时候还蛮欢喜的,但手头上基本没资料而且资料的联系也暂无头绪就打消了心头的一丝喜悦。既然手头上没有任何资料那就去搜寻。
百度了这个题目一看这个系统大概分为两个部分,以树莓派为核心的识别部分,通过调用摄像头对车牌进行识别和PC端的信息处理和显示数据部分。难度基本在于识别部分。很好,至少大方向可以确定
先从比较难的识别部分开始吧。树莓派的板子目前还没拿到就先看看所需的算法。基本都是Python+OpenCv来实现车牌检测与识别,那么久依葫芦画瓢吧。
识别思路:
1、通过摄像头采集图片
2、对图片进行预处理,进行去噪、Sobel滤波,边缘检测等操作目的在于找到“疑似车牌”的大概位置,为下一步定位车牌做准备。
3、车牌位置的定位,采集到车牌信息(阈值二值化处理、形态学操作,闭操作)
4、对车牌字母进行分割
5、通过卷积神经网络训练出来的模型,对采集车牌的各个字母进行识别
6、对结果进行组合,最后得到车牌信息
网上有很多说法,不过都差不太多。具体参照:1.https://blog.csdn.net/wzh191920/article/details/79589506
2.https://blog.csdn.net/GK_2014/article/details/84779166
3.https://blog.csdn.net/qq_37385726/article/details/82345122
4.https://blog.csdn.net/ShadowN1ght/article/details/78571187?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare
现在大概能了解一点了,手头无硬件,先进行软件部分的工作。先搭建Python的IDE,鉴于这种解释型语言的简便性可以直接在VS2019上运行。然后根据以下网址https://opencv.org/releases/page/2/下载OpenCv包并在VS上进行配置
切记!!! 安装导入完包后VS必须重启才有效

第二天:
在导入tensorflow包之后 这只是单独的机器学习的包 还有对数据处理的Numpy、sys等包也要进行导入 导入方式的话一开始在命令指示符里用pip进行导入不成功就直接进入了https://pypi.org/project进行导包 需要对32 64位和Python版本进行选择而且下载下来的是后缀为whl的文件根本不知道怎么处理 后来上网查发现可以直接改成zip的压缩格式进行解压然后花了一整个上午的时间进行下载将解压文件放入sit-packages文件夹里
之后重新回来发现之前pip升级错误是需要在环境变量增加路径 OK 添加完了就可以使用了 但使用导其他包时又出现错误了 说是版本不够要更新 按着更新指令一开始还好好的到了中途直接报了一大段错异常抛出就停止了 错误主要是urllib3这里面的文件某某行错 根据https://www.baidu.com/link?url=38R2qHb2NBkJeEBMVIsesdkB4SXOkjEjjXy95TcG81uA1goy7xb5bzJloYkyWIy9&wd=&eqid=b734dd40000fcd34000000065d737ccb知道了网络的问题需要换国内源升级 我就说这些好好的怎么会报错 想想嵌入式之前在Ubuntu系统也是这样这些也就不足为奇了
https://www.cnblogs.com/wjw-blog/p/10092192.html根据这个博客的换成了豆瓣源之后就OK了 下载速度还不错
然而 明明全都导进去了 版本也没问题 为什么它还显示ModuleNotFoundError: No module named ‘google’ 头疼中。。。去官网将google的2种包都试了发现不行 将tensorflow卸载两种方式重装也不行 在网上又找了找是否和我一样情况的兄弟 说需要tensoflow -gpu这种 先下下来试试
这个问题成功搞定 马上又出现了另一问题ImportError: Could not find ‘cudart64_100.dll’
仔细分析错误的类型、原因,搞清自己的tensorflow以及CUDA版本 换用对应版本进行解决,完成cuda与tf的适配,cudnn与cuda的适配,protobuf与tf的适配

第三天:
学校的网络不知道怎么炸了 连着自己的热点网络也不行 下完cuda安装失败了 后来发现是cuda也会更新vs的组件 因为我已经安过了所以就显示失败 所以只需要将安装选项中将最后两项组件的勾选取消即可 这时重新编译错误显示是需要装7.0版本的cudnn 继续搞呗 注册填信息后终于把它下下来了 安装完之后还是不能从tensorflow哪导入tf 上网查情况要不就是在Windows上用Anaconda装要不就是在Ubuntu这种linux系统上装 没看到有在VS当中弄成功过 看着报错ModuleNotFoundError: No module named 'google’心凉了一半 找google库也根本没到3.7版本的 就像进入了个死循环 算了先整opencv+Python 让它能在电脑上通过切割分离辨别的算法把导入的图片或者电脑摄像头的动态画面进行车牌识别
搞了一整天差不多能实现 算法思想来自于网上资源 先使用图像边缘和车牌颜色定位车牌 再识别字符 车牌定位和字符识别都在predict方法中 车牌字符识别使用的算法是opencv的SVM, opencv的SVM使用代码来自于opencv附带的sample StatModel类和SVM类都是sample中的代码 SVM训练使用的训练样本来自于github上的EasyPR的c++版本 由于训练样本有限 测试时发现 车牌字符识别存在误差 尤其是第一个中文字符出现的误差概率较大
另外因算法代码只有500行 测试中发现车牌定位算法的参数受图像分辨率、色偏、车距影响 有的车型识别效果有待提高。看来还是需要tensorflow来进行机器学习完有个训练模型才能保证其准确率 先试着从图书馆找些书试试修改能否改善 若不能需在树莓派硬件配置时再安装tensorflow一起进行整体调试(毕竟都需在linux系统下进行)

第四天:
花了一整个上午尝试直接在python环境下跑去对应库下载或者在VS内部下载更新或者是输入命令下载都和之前一样报错说缺少google模块 看了下google模块对应的版本才到python3 估计应该是没有办法的就只好老老实实的按照大众做法下载anaconda继而安装tensorflow 首先按照下列网站做法https://blog.csdn.net/u012319441/article/details/95551632和https://blog.csdn.net/hanshuning/article/details/99606312
因为前两天已经将cudn和cudnn都配置好了 所以只需下载安装anaconda即可 安装过程中因为我将python的IDE放在VS内部 所以无需重装python及环境变量设置 中途选项不用勾选直接安装就不会出现VS和anaconda环境冲突 在重装了两次后成功装上 anaconda有两种方式配置tensorflow环境 一种是anaconda navigator图形化界面 另一种是anaconda prompt指令操作
在第一种按照https://blog.csdn.net/Emma_Love/article/details/89855179来安装出现大量报错无果后 我选择了第二种来装env 一开始按照正常的清华源的指令速度很慢 导致time out报错 根据下方博客https://blog.csdn.net/qq_34289157/article/details/88071116换源后成功安装 将安装好的env导入VS环境变量中编译发现AttributeError: module ‘tensorflow’ has no attribute’XXX这种错误 原来是默认安装了当前最高版本而导致的语法不对 在考虑兼容性的情况下将之前tensorflow 2.0版本卸载转而换成1.14通用版本 之后重复安装步骤导入并编译测试程序 成功 最后将准备好的原始数据集放入目录下并编译车牌识别的机器学习程序 深度迭代算法学习后训练模型 生成数据集样本来识别车牌内的中文、数字、字符

第五天:
首先将前一天训练出来的数据集加进去 再运行后发现字母和数字好多了 而中文还是容易识别错或者识别不了 应该还是数据集不够 不过基本功能都有之后再改进 软件部分先告一段落 接下来开始硬件部分
之前没玩过树莓派对它的操作不太清楚 查https://blog.csdn.net/XYscript/article/details/65487038知道要先对sd卡烧树莓派系统 先用网线与pc端相连 通过命令指示符找到树莓派的动态ip 然后与其他嵌入式一样用putty登录内部系统进行安装和配置(当然也可以用pc自带的远程操作系统进入) 因为此时是有网线连接 所以如果断了网线或者关电源它的ip地址都会改变 这样每次都需要查树莓派的动态ip才能登录相当麻烦 那就必须改成一个固定的ip 我使用的是改树莓派网络接口的.conf文件添加我手机热点的用户名密码(具体见http://www.nrjs.cn/ctt/11120032.html) 让它能在开机后自动连到我手机热点上 这样和电脑上连同一个网络且ip地址固定 即使忘记也可以通过手机查到树莓派ip地址 然后通过配置ssh进入图形化系统界面 这样就和之前的嵌入式一样熟悉的操作了
由于树莓派内部同时自带python2和3的版本 由于opencv的版本需要python3 所以先把2的卸载完再通过pip等一系列指令安装 过程网络不快还要换源
具体情况根据https://blog.csdn.net/qq_36322178/article/details/98802268下载完后import cv2还是报错 查资料发现是缺少环境 其中比较合理的是两个python 的环境包路径重叠导致找不到指定文件 按照https://blog.csdn.net/T_infinity/article/details/79885302换一个包管理器 利用apt包管理器重新下载 即可解决此问题
之后按照https://blog.csdn.net/SilverDragonFLM/article/details/80418438正确安装摄像头并开启自带的csi摄像头具体
用了下初始教程发现摄像头一直在卡顿 没加任何算法都尚且如此 加完之后根本识别不了所要的车牌 问了下朋友也不推荐我继续做下去 就放弃直接在树莓派采集完就算法识别而是给pc端来执行算法

第六天:
把想法跟导师交流了下 OK就这么搞 所以现在首先面临的问题是怎么将树莓派摄像头模块采集到的视频发送给电脑(电脑的用了https://blog.csdn.net/wzh191920/article/details/79589506这位大佬的程序有自带框架 虽然程序中的摄像头是用电脑自身的 但虽然不会改算法好歹也会增减)找了一下午资料用了传统的传输方式发现视频掉帧及其严重而且像素等一系列问题 看来只能先放弃了 正当我一筹莫展的时候 朋友说你可以试试mjpg-stream视频流的方式 将树莓派录取到的视频通过socket端口传到web端 再用python爬虫把视频提取出来 虽然有一两秒的延迟 但比之前已经好了非常多 再说我车牌识别首要是保持视频流畅清晰度 具体原理参照https://blog.csdn.net/yi412/article/details/38363455 具体在树莓派系统上安装操作参照https://blog.csdn.net/lakeheart879/article/details/52120170
然后花了一晚上时间将这段程序加到原本的程序 中途无数个报错 但还好有万能的百度 都一一解决了 最后成功了后 先进入树莓派系统终端执行sh脚本 然后电脑编译程序打开摄像头就是树莓派摄像头的视频啦

第七天:
接前一天已经能视频流送到pc端处理了 接下来的问题就是怎么将识别好的信息发送回树莓派 其实也就是两个设备之间应该怎么通信传输 这时我想到了之前java课设做的模拟qq的网络聊天室 就是以C/S架构的socket进程传输 当时需要的是多进程的而现在只是pc到树莓派这种单进程的小事 按照https://blog.csdn.net/weixin_42053726/article/details/86750117搞定 其实如果底层来实现是非常麻烦的还好已经抽象成了网络层直接用TCP/IP协议三次握手来实现在程序上就非常简便了 以树莓派为客户端 以pc为服务端
接下来想着用液晶屏来显示最后的结果 考虑到车牌带有中文字符就打算用12864 因为手头上有它而且对它很熟悉 由于对c语言比较熟悉就准备用c来实现树莓派驱动12864 先上网查了12864与树莓派之间io口的连接方式 具体根据下图http://dl2.iteye.com/upload/attachment/0129/1041/b7da8368-f109-3739-837f-82ad88da854c.png(因为树莓派各个版本的io口基本类似 即使是26角的从前往后也是一样排列)用面包板接好后将.c代码放到树莓派系统上执行即可
由于socket传输的是用python代码 我还在想着是用c来写socket客户端 还是python接收完导入到c中给液晶屏显示 然后就被导师果断否决了说是用HDMI转VGA线接到电脑直接电脑显示就好 搞了半天就这么没了 心情极度郁闷 行吧明天再说 过年要紧 吼吼

第二周

第八天:
趁过年放假偷懒了两天 然后今天上午就被怼了半死 不过也刚好趁这个时间等器件到 东西到了顺便找学院借了一整套的树莓派器件(7寸显示屏 键盘什么的)OK开工 然后就碰到了第一个问题 显示屏一直左上方有个角标进不去系统 查了下原来是我之前是从头开始配置的还没配置lcd驱动 根据https://blog.csdn.net/kxwinxp/article/details/78447730下载安装好后使用lcd-hdmi模式 终于有画面了可是怎么闪了下就黑屏了 怀着满脸问号继续找应对措施 根据https://blog.csdn.net/y511374875/article/details/73549467修改器config.txt代码终于进入了 不过如果之后进入会进入系统的命令行界面而不是图形界面 按照https://blog.csdn.net/qq_19175749/article/details/52700158?locationNum=12&fps=1或者在命令行输入sudo startx即可进入图形化界面 呼呼正当我开心以为可以像手机一样在电容屏上触屏使用时 现实骨感的让我无奈 更麻烦的是百度并没有解决方案说是只要按照前面装了就可以用了 晕! 没办法 只好继续尝试呗 正当我焦头烂额时 同学过来说你这会不会是因为供电电流不足呀 我一想这还真有可能啊 树莓派正常电流需要在1A左右 而且我驱动键盘液晶屏这些电流肯定要更大 我立马看了下电源的适配器使用输出5V/1A的 淦 原来是这样 然后换成了更大电源的充电头液晶屏就能用了 接下来就只需要弄一个gui界面将pc端传来的结果输出显示即可

第九天:
今天将之前的结果演示给导师看 导师也说需要在LCD上做个可视化界面 顺便能不能增加个算法把识别得到的结果通过多次识别后遍历获得重复次数最多的当成最终结果并且把对应识别的那一帧展示出来 这样可以更直观显示和提高识别正确率
对于这个想法之前我也有想过 但是由于识别结果是元组这种数据类型不好直接修改 需要转换成列表遍历后在转换回去(因为pc端用tkinter做的界面识别结果是元组形式)而且我的想法是既然是一个系统就要与数据库进行联系然后再web端或者是手机app微信小程序这种显示 那么我只要前面有结果在后面数据库时验证就好 不过倒是可以将识别出来的那一帧图片弄出来显示 为了增加准确率 对算法做了一个预设时间不让它马上识别有一个稳定过程后再识别
OK 既然是添加 还是不改原来框架 就直接识别到了后停在那里等人为操作关闭后再进行下次识别 就可以用opencv里带的imshow()函数即可 不过在过程中出现了弹出窗口图片未响应的情况 查了查 根据https://blog.csdn.net/qq_40584593/article/details/100634143发现是因为没有waitkey()等待 加上去后即可 然后又花了一下午时间把LCD可视化界面弄出来
最后用了一晚上时间对打印出来的车牌进行检测 由于摄像头拍出来的视频流会变红色而且与本身像素逆光分辨率的关系 对蓝色车牌识别较准确而对黄色极难识别 对绿色车牌容易识别为蓝色导致识别内容错误 所以还需改进 不过先实现后续功能再说

第十天:
休息和回家以及研究算法花了两天时间后 想着基础部分已经差不多结束就准备开始自己想法的拓展部分 按照之前的预想需要和mysql数据库查询匹配后在web端显示 那么首先弄数据库的部分 查资料发现python可以直接对数据库进行编程 着实省了一番麻烦
不过python中还是在数据库本身语言基础上加上实例化函数 所以还是要先清楚和了解mysql自身编程原理 所以今天划水了

第十一天:
在昨天一整天了解下 今天开始了工作 先单独对数据库进行操作 在python导入库的时候出现了问题 明明导入了为什么还显示没这个模块 后面查了下从https://www.cnblogs.com/fnng/p/6863616.html这篇找到了答案 原来是python3版本和python2版本的库完全不同 我是3版本需要导入pymysql而不是mysqldb 搞明白了后用pip指令成功导入 从网上找了一篇https://www.cnblogs.com/roboot/p/9518916.html熟悉练习下最基础的插入删除查询修改操作 就先一边进入创建库创建表 插入查询数据 一边打开mysql软件进行验证 搞了一下午时间后OK
晚上就准备把查询换成车牌 发现一直报错 搜了下错误说是中文的编码错误问题 把车牌的中文去掉后发现可以编译 百度里有的是本身数据库问题 我直接在mysql里输入中文发现并没有问题 那么就只能是编码转换的问题了 花了好长时间才从这篇https://blog.csdn.net/qq_34745295/article/details/79438620找到答案 原来在连接时需要加上use_unicode=True, charset='utf8这个才能兼容当前gbk编码 然后就可以使用中文了 因为车牌是变量查询的 现在就需要换成形参代替了 直接替换发现根本不行 在一连串的尝试下按照https://blog.csdn.net/cysuyun/article/details/82986062将查询指令修改 编译成功将所导入的车牌号拿去识别 返回识别结果和数据库打印出车主信息

第十二天:
昨天单独把数据库弄成功 今天需要将成功的数据库与主程序整合在一起 搞了一上午 在弄了好几个函数嵌套的情况下终于合并了起来 接下来是web端 上网搜了下发现和python后端和HTML前端交互的后端有好几种 前端有好几种 结合起来弄的我脑袋疼 后端大概有Djando websocket socketio flask tornado等框架 前端大概有jQuery json ajax vue什么的搞得我真的焦头烂额 而且每个框架还有每个框架的格式 例化直接迷糊了。。还是先拿别人代码先试试看吧 不管了能运行传输过去的就行。。最后还有一个没有用api直接以http长传输协议的格式写的代码 惊了根本看不懂 而且前端给后端的样例更多 还是研究研究吧

第十三天:
将昨天下载过或者copy过的代码运行 只有几个聊天室和最原始那种成功外 其他都不行 不知道是不是因为框架的原因 接着我将不行的几种搜索框架格式下载所需要的东西 花了一整天还是没有完善的方案 在求助无果后 就先打算用socktio这种方式来实现试试(其实就是烦躁了想躺尸一天哈哈)

第十四天:
https://blog.csdn.net/weixin_30505043/article/details/97947440首先按照这篇用socktio尝试发现无果后 就决定用flask框架 根据这篇https://blog.csdn.net/sinat_38682860/article/details/82354342从安装到测试可以初步在前端传常量 接下来就要传变量 但还不知道变量能传哪几种数据类型 根据https://blog.csdn.net/weixin_40775077/article/details/84892278可以知道元组是不能传的 可以传列表字符串自定义数据类型 而我数据库里输出的刚好是字符串 就仿照这个例子使用渲染模板 flask默认访问templtes文件夹在项目目录下新建templets文件夹 放入模板 一开始还不知道flask框架要按照框架内容 在尝试了好几个例子还不行的时候才觉得不太对 就查了下文件目录才发现需要一些特定文件夹 在文件夹里放动态和静态图片才可以使用这条语句return render_template 里自带与前端html传参的接口 只要满足框架条件 就可以通过几条简短语句就与前端建立websocket协议通信 而且在前端直接在{{}}里传参就可以在web端显示了 把之前数据库的数据传进去可以显示但有一个问题 就是html是静态的 当后端传进去一个新的数据时在前端有传参但它是静态不会显示只会显示第一次的数据 只有刷新web页面后才会更新 这种情况就需要刷新 最简便的是用整体刷新再设置一个定时器就可以等效为实时刷新 但这样会让web端一直处于一个无法操作的状态 不如第二种局部动态刷新 没有第一种的弊端 但实现会更麻烦 需要对参数的方法进行定时 可之前的传参并不是一个方法
具体参照https://www.cnblogs.com/notfound/articles/8448770.html查了资料大概都说用ajax轮询方法不仅可以动态实时和后端交互而且定时方便 最重要的是局部刷新基本无延迟 刚好是正需要的

第三周

第十五天:
今天要搞ajax轮询 所以还是得先了解一下其方法 https://blog.csdn.net/Ha_Girl/article/details/90710491按这篇的方法详解和实例修改即可 而我需要前端和后端互相传参 只有在动态传参中的方法定时刷新才能局部刷新 一开始认为多此一举 后面才发现这也是flask框架既简便又麻烦的原因 真是又爱又恨
那么ajax轮询中url路径中填app路由可以送回给python后端 而app路由方法是ajax返回给后端的路口 在python会返回对应app.route下方的函数 所以要再一次传回来那就需要结合之前的return_template才可以再传回前端 具体的为https://blog.csdn.net/hellosweet1/article/details/79729861 而且里面也说明了flask框架的静态文件存放位置以及js css jpg的url写法

第十六天:
按照昨天的思路以及资料 今天测试了半天终于成功了 就想着把这个和之前的数据库车牌识别算法结合起来 然后就发现了一个麻烦的问题 就是两个单独运行都没问题 将两个代码结合起来就只能运行其中一个 后面百度了发现是因为tkinter框架和flask框架冲突了 具体是tkinter框架运行方法mainloop()和flask框架的run.app()方法都是死循环执行的 所以只会停在前一个方法中执行 没办法同时执行 这可太头疼了 在问了朋友之后 它们告诉我这涉及到操作系统的问题只能用线程或进程来让它们同时运行 而且进程也可能会出问题 线程应该可以解决 还说线程其实还不如分成两个python程序 然后双开运行
我想的确我也没必要就一定就一个工程解决 我可以分成flask的web部分和前面车牌识别的部分 之间的数据库数据就用txt文本传输就好了 麻烦是麻烦 不过好调试就行

第十七天:
那行 就先把查询到的数据先保存成txt文件到flask的静态文件夹里 然后在web里导入送回前端 弄了一整天终于搞定了 前端web可以实时显示 不过前端还没用html5+css+js来修饰 整个界面不太好看 准备弄个类似个人微博的那种 晚上就想着加个能显示当前时间可以作为车牌识别成功进入门禁的时间

第十八天:
今天搞前端 如果从底层开始搞很麻烦 就想着能不能找个模板改改变成自己的东西 而且去淘宝打听了下就一个简单的页面都要150 学生党买不起还是自己老老实实搞吧 就从淘宝买了dw+html的英文样例模板 之前有玩过一阵子的html 所以不会觉得难就是特别麻烦 需要各种素材配置什么的 能代替就代替 不能代替就合并 这样搞了一天弄了个响应式的web可以在首页通过点击对应的功能跳转到其他html上

第十九天:
今天把昨天做好的前端放到flask框架上 但在dw上查看却格式位置字体都乱了 后面查资料才知道dw做的静态web和后端flask框架不对应 必须按照flask框架上的格式位置才行 既然这样索性就直接用游览器打开本地端口查看就行了 把它按照flask框架分别放入template和static文件夹里后出现css js jpg的路径问题 噢 我前端静态导入它们就直接用普通的相对路径 而flask框架下前端的导入url必须用其框架对应格式导入才行 就找到之前这篇https://blog.csdn.net/hellosweet1/article/details/79729861修改 运行完搞定 然后接下来把其他响应的html加入一些图片文字视频 就当是玩玩啦

第二十天:
这几天就过年了再加上这个肺炎的传播 就修整了好几天 今天想着也改做点事情了 就下单把继电器模块给买了 结果厂家说不让发货 晕 那还能搞什么呢 想着就打算把树莓派上的mysql数据库搞了
首先安装sudo apt-get install mysql-server它就出问题了 说是安装包之间有为满足的依赖关系不让破坏平衡 查了百度说是当初为了更好下载东西将国外源换成了国内源 但是国内源版本过时了需要转成国外的更新系统和软件 然后就按照apt-get update和upgrade 没想到下了一整天慢还不说 最后还出错了 说是没有找到 我怀着满脑子问号继续查资料 先换了好几个源都不行 后面看到一篇说可能跟你树莓派的系统有关 要匹配对应的系统才能更新 我想着我树莓派3b的系统 按照https://blog.csdn.net/zhou_yongzhe/article/details/80028865这篇说法那就是stretch或者jessis 我两种都尝试了一遍jessis还能更新完后提示错误 stretch是根本没办法 我想着奇了怪了就按命令查看自己版本 结果跟我说我的版本是4b的Raspbian-buster系统 我勒个去 难道是我之前最开始在树莓派sd卡上烧的系统的问题 我找到之前的烧的树莓派系统 看了一下吐血 还真是buster4b的 看起来我之前先入为主了没成想是最开始的问题 当时想着软件什么的都是向下兼容的那肯定是最新最高的版本好呀 没成想嵌入式还真不是这样 想起我之前2440的也是这样 只能说一声 靠!

第二十一天:
昨天找到了原因 那能重新换系统嘛 当然就直接用4b的当成3b来就是了 根据这篇https://blog.csdn.net/zqxdsy/article/details/102574239 换完之后update和upgrade就OK了 而且速度还很快十分钟就更新完了 再指令安装mysql就成功了 安装好了和pc端的配置并不一样根据https://www.cnblogs.com/apanly/p/9061803.html和https://blog.csdn.net/wearge/article/details/79710553用mysql -u root -p空密码登录数据库修改密码并设置了用户名为root的远程连接 那既然安装好了就测试下 就直接把pc端的数据库测试文件copy过去测试 运行出现没装mysql的module 根据这篇https://blog.csdn.net/lifelegendc/article/details/74360605安装完再运行就OK了 好了 现在就万事具备只差模块了 等继电器模块到了就可以测试gpio并把它放到数据库测试文件里就可以收工了

后续

最后一天:
等啊等 过了快一个月了终于到了 我等的论文都快写完了。。。在拿到继电器后先测试gpio口控制 这个接个线测测就搞定了 然后殊途同归在树莓派上也装了mysql 测试可用
软件部分之前准备做蓝牙控制的 这几天从借的书和网上资料大概能拼接出一个单独蓝牙连接的Java程序 但做不到连接切换 之后加进去Android测试可以 就是bug比较多而且没写xml控件程序就很简陋 我就想这app还不如就直接用别人软件商店里的成品app 就直接问店家 然后发app同时也发了硬件原理图 就猛然发现这玩意竟然没了io口控制的那个引脚 问店家说这个就直接与内部蓝牙合起来了 io口直接内嵌 那所以我买这个有什么用 扶额思考人生了一会 查了下别的蓝牙继电器全都是这样 就没有这种切换蓝牙和io口功能的这种 没法做了只好放弃蓝牙想法 只好苦逼去搞了点开源的程序和资料来玩 顺便装在自己的手机上 嗯 非常快乐 但事情没干成。。。

最后的最后

整合代码以及加入Android开发的手机app通过WiFi手动驱动继电器 因为是玩的就简陋的做 不过后来发现云平台都可以可视化实现后 真的是喟然长叹 真的是说多了都是泪

  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值