背景原因

来自智能垃圾桶的诱惑,嵌入式开发初探

最近裸辞离任在老家,正在拾掇老家的房子准备住进去,但迫于经济压力,只能先装十分有必要的东西,例如床、马桶、浴室柜等。

来自智能垃圾桶的诱惑,嵌入式开发初探

可是垃圾桶是生活必备品,我发现咱们现在都在用智能垃圾桶,那种能够感应开盖的,还有那种主动封袋的。我极端的仰慕。可是迫于经济压力,我没有满足的资金购买智能垃圾桶!

来自智能垃圾桶的诱惑,嵌入式开发初探

作为一个学美术的程序员,我在想我要不要去少儿美术训练教小孩,或许去街头卖艺,甚至去给人画遗照赚点钱呢?我想了想算了,给别人留点生路吧,我这么专业的美术人才去了,那些教师、街头演员、画师不得喝西北风去。我想了想,我除了是学美术的,我仍是个程序员啊!

尽管我没有学过嵌入式、硬件、IOT等等技能,可是入门应该不太困难吧!已经许多年没有从0开端学习一门技能了,十分怀念当时学习Web技能的那种感觉,能够没日没夜的去探索新知识,学习东西。之前上班的时分底子没有精力去学习或许搞一些风趣的东西,下班只想躺着看动漫,听爽文。已然现在赋闲在家,那就搞一搞吧!

项目发动

俗话说得好,找到一个好师傅便是成功的一半!在这方面我有着得天独厚的优势,我的前公司,北京犬安科技便是一个做车联网安全的公司,这家公司的Slogan是:从硅到云,守护网联汽车安全。能够看出,犬安的硬件软件安全才能都十分的强。像我,天天和测试组的搭档去山西面馆吃鱼香肉丝盖饭,喝青岛雪花,他们组里边都是硬件大佬,甚至有人造过火箭。此刻不向他们学习,更待何时?

他们告诉我,我需要一个开发板、一个超声波传感器、一个舵机。

我还在研讨什么是stm32/esp32的时分,他们告诉我用Arduino,特别简略。我就去研讨Arduino,在B站上搜了 Arduino,有一个播放量比较高的系列教程看了一下。我顿时就悟了!

我原本认为我需要买烙铁,焊电路板的,后来我发现,只需要买以上说到的三个东西,外加一个面包版,一些杜邦线就能够,甚至能够不需要面包版。

来自智能垃圾桶的诱惑,嵌入式开发初探

当然为了学习,我在淘宝上买了一些杂乱无章的东西,比方按钮、各种电阻、各种色彩led灯、面包版。买各种色彩的LED灯的时分,购买欲泛滥了,就想每个色彩都买一些,什么青丝红,青丝黄,青丝碧绿,后来我买回来发现,不亮的情况下都是白色的,我底子分不清色彩。本来那个青丝黄的意思便是不亮的时分是白色,亮了今后发黄色的光~我还买了承受RGB三色的LED灯,不知道为啥不是RGBA,难道不能让灯通明吗?

来自智能垃圾桶的诱惑,嵌入式开发初探

我还发现不同欧姆的电阻他上面的“杠杠”是不相同的。

来自智能垃圾桶的诱惑,嵌入式开发初探

首要是这玩意太便宜了,两块钱就买许多,可是作为新手玩家来说,底子用不了。我只买了公对公的杜邦线,然后我又独自下单了其他杜邦线,果然两块多就能包邮。

来自智能垃圾桶的诱惑,嵌入式开发初探

我在不同的店铺里边选了许多配件,包括我运用的首要配件:Arduino uno 开发板、SG90舵机、HC-SR04 超声波传感器。

开搞

设备买回来今后,废了9牛2虎之力才成功的能把我写的程序上传到开发板里。

一开端一直报下面这个错误,网上议论纷纷,始终没有找到解决方案。

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x30

后来我去淘宝详情页细心研讨了一番才搞理解,我本认为我买的是Arduino的开发板,其实是esp8266,只是兼容Arduino。我从淘宝详情页找到了正确姿势,成功的刷入了程序。

看了 Arduino 的视频,我首要悟出来了什么?

开发板、舵机、传感器上有许多小尖尖或许小洞洞,他叫引脚,咱们需要把舵机、传感器的引脚,通过一种名为杜邦线的线(一般有公对公/母对母/公对母,代表线两端是小尖尖仍是小洞洞),连接到开发板的引脚上。然后运用程序控制某个引脚的电平向舵机发送信号,或许承受传感器的信号。

第一个项目

我举一个最简略的LED灯闪耀的比方: 线是这么接的:

来自智能垃圾桶的诱惑,嵌入式开发初探

面包版上面,竖着的五个小洞洞里边其实是连在一起的。我的电路是从一个引脚出来,到了一个电阻上,然后连接一个LED灯,然后接地。 接地的概念应该和负极的概念很像,可是不是,不过我暂时不关心它。 为什么不直接从引脚出来接LED,再接地呢,因为视频上说,LED几乎是没有电阻的,如果直接从串口出来接到LED,直接接地的话,开发板就废了,所以加了个电阻。

接下来我让ChatGPT帮我写一个小LED灯闪耀的代码:

来自智能垃圾桶的诱惑,嵌入式开发初探

咱们能够看到在loop里边,调用了digitalWrite,把那个引脚进行了凹凸电平的切换,这样就实现了小LED灯闪耀的效果,高电平就相当于给小LED灯供电了。

咱们只需要把他写的代码中的引脚的编号改成咱们的编号就好了。

每种开发板的引脚编号都不相同!我在淘宝上买的这个板,他没有给我材料,我干了一件特别愚蠢的事情,分别给不同的数字编号供电,插线看哪个亮,就记载对应开发板上的引脚号和数字。

第二天我在网上稍微搜了一下材料就找到了。后来我发现,竟然还有一个编号对应两个引脚的,具体为什么我也不知道。

不过具体怎么给舵机传信号,或许承受传感器的信号呢?如果在 Arduino IDE 里边的话便是简略的调用API就好了。这一块我没写代码,都是ChatGPT帮我写的。

来自智能垃圾桶的诱惑,嵌入式开发初探

实现目标的首要部分

我运用同样的办法,制作了垃圾桶的功用的电路和代码。 运用超声波传感器的时分,我发现这玩意都好神奇啊,仿佛是魔法相同。 比方超声波传感器,要先发送一个超声波信号出去,然后等待回波信息,拿到发送和接收的时间差,通过核算得到间隔。

来自智能垃圾桶的诱惑,嵌入式开发初探

我在调试超声波传感器的时分,我发现我能听到超声波传感器发出的声响,只要耳朵对着它不用靠太近就能够听得到。我朋友说我是超级耳。

有了LED灯的经历今后,超声波识别间隔,调用舵机旋转很快就实现了。

来自智能垃圾桶的诱惑,嵌入式开发初探

最开端我在考虑这个舵机的力道到底能不能支撑起来垃圾盖子,不过现在感觉力道仍是挺大的。不过现在没有办法试,因为我还没有做出来适宜的垃圾桶。

接下来

接下来我要去找到一个适宜的垃圾桶,我也不确定需要用什么方法去打开垃圾桶的盖子,是不是需要其他的比方初中学过的滑轮、齿轮、杠杆原理什么的?这块还没有开端涉猎,等我接下来研讨研讨来写第二部分。

感谢咱们阅读~