0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机屏幕锁定的安全性

454398 来源:网络整理 作者:网络整理 2019-11-13 09:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:组件

因为概念证明,我们将在面包板上构建设备

您需要:

1。 Arduino Leonardo(使用Leonardo非常重要,因为它可以模拟键盘rd)

2。。HC-SR04超声波距离传感器

3。 2个10 K可变电阻器

4。面包板,面包板电线

5。 USB电缆

6。 OLED显示屏(https://www.adafruit.com/product/931)

步骤2:组装和上传

首先检查您是否具有所有必需的组件和Arduino IDE。我将简要地介绍连接步骤,您随时可以查看所附的压条示意图

装配

1。将Leonardo放在面包板上,并用橡皮筋将其固定到位

2。在面包板上放置两个可变电阻OLED显示器和超声波传感器

3。连接接地和vcc的

4。将电阻的中间引脚连接到arduino A0和A1

5。将显示器的SDA和SCL连接到列昂纳多(Leonardo)

6上标记的SDA和SCL。将超声波传感器的触发和回波引脚连接到Leonardo

7的12、13个数字引脚。将USB连接到计算机

上传

首先,您需要下载并安装必要的arduino库:

1。 GOFi2cOLED库:https://github.com/hramrach/GOFi2cOLED

2. Ultrasonic-HC-SR04库:https://github.com/JRodrigoTech/Ultrasonic-HC-SR04

如果您不知道如何安装arduino库,请查看本教程。

下载并安装了库之后上方,您可以克隆或下载位于以下位置的arduino存储库:https://github.com/danionescu0/arduino,我们将使用此草图:https://github.com/danionescu0/arduino/tree/master。 。

或者您可以复制并粘贴以下代码:

/*

* Libraries used by this project:

*

* GOFi2cOLED: https://github.com/hramrach/GOFi2cOLED

* Ultrasonic-HC-SR04: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04

*/

#include “Keyboard.h”

#include “Wire.h”

#include “GOFi2cOLED.h”

#include “Ultrasonic.h”

GOFi2cOLED GOFoled;

Ultrasonic ultrasonic(12,13);

const byte distancePot = A0;

const byte timerPot = A1;

const float percentMaxDistanceChangedAllowed = 25;

int actualDistance;

unsigned long maxDistanceDetectionTime;

bool lockTimerStarted = false;

void setup()

{

Serial.begin(9600);

Keyboard.begin();

initializeDisplay();

}

void loop()

{

clearDisplay();

actualDistance = getActualDistance();

writeStatusData();

doDisplay();

if (!lockTimerStarted && shouldEnableLockTimer()) {

lockTimerStarted = true;

maxDistanceDetectionTime = millis();

Serial.println(“lock timer begin”);

} else if (!shouldEnableLockTimer()){

Serial.println(“lock timer disabled”);

lockTimerStarted = false;

}

if (shouldLockScreen()) {

lockScreen();

Serial.println(“Lock screen”);

}

delay(100);

}

bool shouldLockScreen()

{

return lockTimerStarted && (millis() - maxDistanceDetectionTime) / 1000 》 getTimer();

}

bool shouldEnableLockTimer()

{

int allowedDistance = percentMaxDistanceChangedAllowed / 100 * getDistance();

return getTimer() 》 1 && getDistance() 》 1 && actualDistance - getDistance() 》 allowedDistance;

}

void writeStatusData()

{

setDisplayText(1, “MinDistance:”, String(getDistance()));

setDisplayText(1, “Timer:”, String(getTimer()));

setDisplayText(1, “ActualDistance:”, String(actualDistance));

int countDown = getTimer() - (millis() - maxDistanceDetectionTime) / 1000;

String message = “”;

if (shouldLockScreen()) {

message = “lock sent”;

} else if (shouldEnableLockTimer() && countDown 》= 0) {

message = “。.” + String(countDown);

} else {

message = “no”;

}

setDisplayText(1, “Locking: ”, message);

}

void initializeDisplay()

{

GOFoled.init(0x3C);

GOFoled.clearDisplay();

GOFoled.setCursor(0, 0);

}

void setDisplayText(byte fontSize, String label, String data)

{

GOFoled.setTextSize(fontSize);

GOFoled.println(label + “:” + data);

}

void doDisplay()

{

GOFoled.display();

}

void clearDisplay()

{

GOFoled.clearDisplay();

GOFoled.setCursor(0, 0);

}

int getActualDistance()

{

int distanceSum = 0;

for (byte i=0;i《10;i++) {

distanceSum += ultrasonic.Ranging(CM);

}

return distanceSum / 10;

}

int getDistance()

{

return map(analogRead(timerPot), 0, 1024, 0, 200);

}

int getTimer()

{

return map(analogRead(distancePot), 0, 1024, 0, 20);

}

void lockScreen()

{

Serial.println(“pressing”);

Keyboard.press(KEY_LEFT_CTRL);

delay(10);

Keyboard.press(KEY_LEFT_ALT);

delay(10);

Keyboard.write(‘l’);

delay(10);

Keyboard.releaseAll();

}

最后使用usb电缆将arduino连接到计算机,然后将草图上传到arduino。/p》

第3步:使用设备

将arduino连接到计算机后,它将持续监控显示器前部的距离。传感器,并在距离增加时将“锁定”屏幕按键组合发送到计算机。

设备具有一些配置:

1。正常距离,可以使用连接到A0的可变电阻器来配置距离。距离也显示在OLED上。当距离从设置的距离增加25%时,倒计时将开始

2。超时(倒数)。 还可以通过连接到A1的电阻来配置超时(以秒为单位)。超时到期后,将发送锁定命令

3。锁定组合键。设置了默认的锁定键组合以适用于Ubuntu Linux 18(CTRL + ALT + L)。要更改组合,您需要根据操作系统修改草图:

4。超时和距离保护。 因为这是一种模拟键盘的设备,所以最好有一种停用键盘功能的机制。在我的草图中,我选择超时和距离必须大于“ 1”。 (您可以根据需要在代码中进行修改)

找到并更改“ lockScreen()”功能

void lockScreen()

{

Serial.println(“pressing”);

Keyboard.press(KEY_LEFT_CTRL);

delay(10);

Keyboard.press(KEY_LEFT_ALT);

delay(10);

Keyboard.write(‘l’);

delay(10);

Keyboard.releaseAll();

}

有关arduino特殊键的完整列表,在此处检查:https://www.arduino.cc/en/Reference/KeyboardModifi 。..

步骤4:其他方法

在此实现之前我也考虑了其他一些实现:

1。红外温度计(MLX90614 https://www.sparkfun.com/products/10740)。红外温度计是一种通过分析远距离物体发射的红外辐射来测量温度的设备。我周围躺着一个,我想也许我可以检测到计算机正面的温度差异。

我已经将它挂好了,但是温差很小(无论我在前面还是不在)

1-2度,我认为它不太可靠

2。 PIR传感器。(https://www.sparkfun.com/products/13285)这种便宜的传感器被称为“运动传感器”,但它们确实可以检测到红外辐射的变化,因此从理论上讲,当一个人使用时,它可以工作离开计算机后,传感器将检测到该情况。此外,这些传感器还具有超时和灵敏度旋钮。因此,我已经挂接好它并玩了,但是似乎它不是在近距离内制作的(它有一个广角),它发出了各种错误的警报。

3。使用网络摄像头进行人脸检测。这个选项似乎非常有趣,因为我在其他项目(例如https://github.com/danionescu0/robot-camera-platfo 。..和https://github.com/danionescu0/image-processing-pr 。..

这真是小菜一碟!但是有一些缺点:程序运行时不能将笔记本电脑相机用于其他目的,为此需要一些计算机资源。因此,我也放弃了这个想法。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7764

    浏览量

    92682
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问CW32L052C8T6这种安全性低功耗MCU的安全固件部分怎么实现?

    请问,CW32L052C8T6这种安全性低功耗MCU的安全固件部分怎么实现?
    发表于 12-05 07:19

    工控机与普通计算机的核心差异解析

    在工业自动化和智能制造领域,计算机设备作为核心控制单元,其选择直接影响整个系统的稳定性与可靠。工控机与普通计算机虽同属计算设备,但其设计目标、性能侧重和应用场景存在根本性差异。准确理
    的头像 发表于 11-25 14:45 1147次阅读
    工控机与普通<b class='flag-5'>计算机</b>的核心差异解析

    有哪些技术可以提高边缘计算设备的安全性

    边缘计算设备的安全性面临分布式部署、资源受限(算力 / 存储 / 带宽)、网络环境复杂(多无线连接)、物理接触易被篡改等独特挑战,因此其安全技术需在 “安全性” 与 “轻量化适配” 之
    的头像 发表于 09-05 15:44 998次阅读
    有哪些技术可以提高边缘<b class='flag-5'>计算</b>设备的<b class='flag-5'>安全性</b>?

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    赛昉科技VisionFive 2单板计算机开发板测评作品合集 产品介绍: 昉·星光 2是全球首款集成了3D GPU的高性能量产RISC-V单板计算机,搭载昉·惊鸿-7110(型号:JH-7110
    发表于 09-04 09:08

    请问DM平台访问安全性如何控制?

    DM平台访问安全性如何控制?
    发表于 08-06 06:01

    工业计算机的重要

    工业计算机对某些行业至关重要。我们将在下面详细解释这些行业中的工业计算机应用。1.制造与工业自动化工业级计算机非常适合制造工厂,特别是那些想要自动化装配过程的工厂。在这样的环境中,工业计算机
    的头像 发表于 07-28 16:07 398次阅读
    工业<b class='flag-5'>计算机</b>的重要<b class='flag-5'>性</b>

    基于飞腾CPU的安全计算机平台研制项目通过试验评审

    近日,中国城市轨道交通协会技术装备专业委员会在青岛组织召开 “基于国产芯片和操作系统的安全计算机平台研制项目” 上道试验暨结题验收评审会,基于飞腾CPU的安全计算机平台研制项目顺利通过
    的头像 发表于 07-23 13:59 779次阅读

    自动化计算机经过加固后有什么好处?

    让我们讨论一下部署坚固的自动化计算机的一些好处。1.温度范围宽自动化计算机经过工程设计,配备了支持宽温度范围的组件,使自动化计算解决方案能够在各种不同的极端环境中运行。自动化计算机能够
    的头像 发表于 07-21 16:44 420次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 532次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    工业计算机与商用计算机的区别有哪些

    工业计算机是一种专为工厂和工业环境设计的计算系统,具有高可靠和稳定性,能够应对恶劣环境下的自动化、制造和机器人操作。其特点包括无风扇散热技术、无电缆连接和防尘防水设计,使其在各种工业自动化场景中
    的头像 发表于 07-10 16:36 517次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些

    工业计算机如何设计用于冲击和振动

    工业计算机是为挑战消费级系统耐用的环境而构建的。在制造业、运输业、国防和采矿业等领域,计算机面临着持续的冲击、振动和其他物理压力。设计这些系统以在这种条件下保持可靠需要卓越的工程和创新技术。本文
    的头像 发表于 05-19 15:27 366次阅读
    工业<b class='flag-5'>计算机</b>如何设计用于冲击和振动

    一文带你了解工业计算机尺寸

    工业计算机是现代自动化、人工智能(AI)和边缘计算的支柱。这些坚固耐用的系统旨在承受恶劣的环境,同时为关键应用提供可靠的性能。然而,由于有这么多可用的外形尺寸,为您的工业计算机选择合适的尺寸可能是
    的头像 发表于 04-24 13:35 790次阅读
    一文带你了解工业<b class='flag-5'>计算机</b>尺寸

    计算机网络入门指南

    计算机网络是指将地理位置不同且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
    的头像 发表于 04-22 14:29 1861次阅读
    <b class='flag-5'>计算机</b>网络入门指南

    工业计算机的定义与重要

    工业计算机是专门为工业环境设计和制造的计算设备,其主要功能在于监控、控制和优化生产流程。这类计算机系统通常具备强大的处理能力、较高的稳定性以及耐高温、抗震动和防尘等特性,能够在极端的工作环境下高效
    的头像 发表于 12-25 15:11 977次阅读
    工业<b class='flag-5'>计算机</b>的定义与重要<b class='flag-5'>性</b>

    云端超级计算机使用教程

    云端超级计算机是一种基于云计算的高性能计算服务,它将大量计算资源和存储资源集中在一起,通过网络向用户提供按需的计算服务。下面,AI部落小编为
    的头像 发表于 12-17 10:19 948次阅读