这是一篇很跨界的技能文章。我自幼喜爱文学,大学专业选了嵌入式工程,工作岗位搞起人工智能软件。一直以来,我都在考虑人工智能的落地应用。

AI那么多能力,又是图像辨认,又是文字分类,企业拿它来卖钱,那你能拿它干啥呢?它又能给我们普通人带来什么呢?

树莓派是什么?

我拾掇房间,找到了一个小盒子。这是一个旧版别的树莓派(raspberry pi)设备。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

这个手掌大小的设备,浅显地讲便是一个小电脑主机。一些智能小车啥的,一般会拿它当“大脑”来用。

这个设备仍是一个叫“楼神”的同事送我的。由于我比较喜爱做一些小发明,发到朋友圈。比方下面这个,这是一个特殊的小灯:只需有光它就亮,没有光它肯定不亮

树莓派控制LED灯实现闪烁:软硬结合才是硬核

很搞笑是吧!可是,假如我把小灯换成警报器呢?它就变成只需有人拿手电照它,它就会报警。因此,看工作要看技能。

几年前,楼神离任,他把这个树莓派就放到了我工位。他留言说:“赠与有缘人,是个好归宿!”

后来,我又买了一些配件,比方摄像头、电阻、电容等。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

玩转树莓派设备

嵌入式身世的我,搞一些根本操作仍是无压力的。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

你让它显示1、2、3,不凭借框架,肯定不是print(1)print(2)print(3)那么简单。

恰巧我也懂软件。所以就结合软件,做了一些小玩意儿。

人员闯入告知

树莓派控制LED灯实现闪烁:软硬结合才是硬核

此体系完成了这样功用:只需感应到有人经过,就会摄影并给我发邮件,我的微信就能收到音讯

其实它很简单,有三个部分组成:

  • 红外人体感应器:我们人类(有生命)时间会宣布红外辐射。这个设备能捕获到这个辐射。不要觉得很高档,其实像温度计相同简单,它才几块钱一个。假如它感应到有人存在,会经过信号线告知主机。
  • 摄像头:这个贵,几十块钱一个。它插入到主机后,主机能够调用摄像头进行摄影、录像。
  • 树莓派主机:它本身便是一个体系,能联网,能读取输入、操控输出。我在里边写了一些python程序。假如它收到红外感应器发来的信息,就调用摄像头摄影。摄影后,再经过邮件把相片发送到我的邮箱。邮箱是QQ邮箱,由于绑定了微信,所以就能收到微信告知。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

这里边没啥高档技能。红外感应器和摄像头是硬件,都是模块化,插线就能用。

调用它们也很简单,都有对应的库。拿摄影来说,几行代码就能搞定:

import time
from picamera import PiCamera # 导入库
camera = PiCamera()
try:
    # 等待摄像头发动
    time.sleep(2)
    # 摄影保存为photo.jpg
    camera.capture('photo.jpg')
finally:
    camera.close()

复杂一点的东西……主动发送邮件算吗?似乎也就下面这点python代码:

import smtplib # 导入库
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
def send_email(sender, receiver, subject, message, image_path):
    # 创立一个多类型成果
    msg = MIMEMultipart()
    msg['Subject'] = subject
    msg['From'] = sender
    msg['To'] = receiver
    # 添加文本内容
    msg.attach(MIMEText(message, 'plain'))
    # 添加图片内容
    with open(image_path, 'rb') as f:
        image = MIMEImage(f.read())
    image.add_header('Content-Disposition', 'attachment', filename='image.png')
    msg.attach(image)
    # 发送邮件
    try:
        smtp_obj = smtplib.SMTP('smtp.example.com', 587)  # SMTP服务器地址和端口号
        smtp_obj.starttls()  # 启用TLS加密
        smtp_obj.login('your_username', 'your_password')  # SMTP服务器的用户名和暗码
        smtp_obj.sendmail(sender, receiver, msg.as_string())
        smtp_obj.quit()
    except smtplib.SMTPException as e:
        print("邮件发送失败:", e)
sender = 'sender@example.com'  # 发件人邮箱
receiver = 'receiver@example.com'  # 收件人邮箱
subject = '长途相片'  # 邮件主题
message = '长途相片'  # 邮件内容
image_path = 'photo.jpg'  # 图片路径
# 发送
send_email(sender, receiver, subject, message, image_path)

上面的代码,想要跑通,需求将发送邮箱做一下装备,由于主动发送需求开权限。

物品称号播报

后来,我将树莓派和人工智能结合了一下,做了个小玩意。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

它完成了这样的功用:摄像头会辨认所拍摄到的物体,并把辨认成果经过扬声器进行语音播报(图上右下角有一个小音箱)。

受限于体积和本钱,树莓派的功用毕竟不强壮。物体辨认我采用的是TensorFlow的Lite版别。语音组成调用的第三方API接口。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

这里边,其实也没有太多高档的东西。我们都是无脑集成商。

两种完成LED闪耀的方法

研讨树莓派的过程中,我发现了一个问题:硬件渐渐地被软件所蚕食,尤其是逻辑方面的东西

记得曾经学电路的时分,想要完成一个LED灯的闪耀作用,那是相当费劲的。需求LED、电阻、三极管、电容等组成一个逻辑电路,像下面这样。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

它的原理是使用电容循环充电、放电,完成闪耀。假如你想要开关,还得再加上开关元件。当时我认为这是最简单的方式了。即使你加芯片进行操控,那也只是将这类结构缩小到芯片里去了。它的根本逻辑在那里,你改动不了。

后来,我发现树莓派很容易就能完成“闪耀”这个功用。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

所需求的元件只要树莓派加一个LED灯。其他的操控逻辑,都能够写到树莓派的代码里边,让体系去操控。

def flicker(): # 闪耀
    PIN_NO = 12
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(PIN_NO, GPIO.OUT)
    for x in range(20): # 循环20次闪耀
        GPIO.output(PIN_NO, GPIO.HIGH)
        time.sleep(0.5) # 每次距离0.5秒
        GPIo.output(PIN_NO, GPIO.LOW)
        time.sleep(0.5)
    GPIO.cleanup()
def on(): # 翻开
    PIN_NO = 12
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(PIN_NO, GPIO.OUT)
    GPIO.output(PIN_NO, GPIO.HIGH)
def off(): # 封闭
    PIN_NO = 12
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(PIN_NO, GPIO.OUT)
    GPIO.output(PIN_NO, GPIO.LOW)
    GPIO.cleanup()
flickBtn = tkinter.Button(top, text="闪耀", command=flicker)
flickBtn.pack() # 闪耀按钮
onBtn = tkinter.Button(top, text="开", command=on)
onBtn.pack() # 开按钮
offBtn = tkinter.Button(top, text="封闭", command=off)
offBtn.pack() # 封闭按钮

树莓派有40个小触手。便是下图红框处的那两排小针。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

这些小针,我们能够经过代码操控,能够读取,也能够写入。

上面的比方,我便是操作的第12号针,因此PIN_NO = 12

GPIO.setup(PIN_NO, GPIO.OUT)是设置输出。

GPIO.HIGH是高电平,GPIO.LOW是低电平。

第12号针,循环距离一高一低,就完成了闪耀的作用。

看!逻辑全在软件里边了。硬件被蚕食得只剩下了一个“大脑”和一个LED灯。

从硬件到软件,重返硬件

农业年代,机械的出现,大大提高了生产力水平。

比方下面这个是一个核算器。嗯!你没看错,它确实是核算器,能进行数学运算,它叫“机械核算器”。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

当你核算69+32时,他的内部真的是在经过齿轮和传送带去核算两者的和。

后来,电子核算器出现了。它是经过集成电路去完成的,核算逻辑现已电子化了。这种设备能够装在口袋里。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

再后来,又前进了。核算器能够看得见,可是摸不着。它便是核算器软件。你不必花钱,免费用。拜访一个网页链接或许翻开一个APP,就能够使用它强壮的功用。

树莓派控制LED灯实现闪烁:软硬结合才是硬核

当然,要使用它,你得有智能手机或许电脑,还得有电,得有网,契合以上条件的一起,智能设备也得在身边。

机械核算器有设备就能核算,电子核算器开端额定要求有电池,到软件核算器,依靠更加严重了。

软件很厉害,他能将大化小,把有变无。乃至能将一个图书馆装到口袋里边去。可是它毕竟是软件,太软,严重依托于体系,其本质只是数据。就像你的财富,只是银行卡里的一串数字。脱离了体系,它嘛也不是。

看那些纯机械的核算器,经过几十年,现在依然能用。可是,你的iphone4现在还能开机吗?

科技确真实发展和前进,更在进行虚拟化、数字化。但奇怪的是,纯互联网的风口现已渐渐远去。而今,很难靠一个网站就能拉来投资。招投标也渐渐注重你有哪些配套的硬件设备。几支智能笔?几个音响?几个扫描仪?我们又开端信任看得见摸得着的东西了。

目前是一个由硬到软,再由软渐渐返硬的年代

我觉得这是理性的。就像生物界,要想像人类相同强壮,不仅要有聪明的大脑,还得有灵敏可控的肢体。