低成本智能导盲杖项目设计,支持一键报警

低成本智能导盲杖项目设计,支持一键报警

专为盲人设计的低成本导盲杖,使他们无需任何帮助即可行走。
硬件组件:

  • 德州仪器MSP-EXP430F5529LP MSP430 LaunchPad× 1
  • SparkFun超声波传感器 - HC-SR04× 1
  • HC-05蓝牙模块× 1
  • 蜂鸣器× 1
  • DFRobot重力:数字按钮(黄色)× 1

软件应用程序和在线服务:

  • 德州仪器Energia
  • 麻省理工学院App Inventor

视觉障碍者在生活和工作中都需要旁人大量的照顾和他们本身其他感知器官的配合,有没有什么办法能够帮助他们更轻松的去生活和工作呢。我们团队想到了做一个智能导盲棒。
我们的团队使用MSP430来完成操作。MSP430是一个基于易于使用的硬件和软件的开源电子平台。MSP430板能够从按钮和各种类型的传感器读取输入。
HC-SR04超声波传感器使用SONAR来确定物体的距离,就像蝙蝠一样。手杖还有一个蜂鸣器,它发出蜂鸣声并提醒用户注意障碍物。它还包含一个紧急按钮,可以通过分享该人的位置与亲人分享警报信息。

电路项目的主要芯片及数据手册

电路相关文件

电路图文件
energia_code.ino
描述:源码
教程
项目教程.pdf
描述:项目教程
分享到:
收藏 (2)
电子硬件助手小程序 电子硬件助手小程序

电路城电路折扣劵获取途径:

电路城7~10折折扣劵(全场通用):对本电路进行评分获取;

电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。

(版权归德州仪器大学计划团队所有)

版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击投诉本电路反馈给电路城。

使用说明:直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!

换一批 more>>

大家都在看:

继续阅读

  • 2019年研究生电赛国奖作品基于GD32的视觉追随车

    随着科学技术的发展,我们所熟知的小车已经从简简单单的由齿轮、电池、马达、底盘等部件构成的玩具车慢慢的进化成了装备着当下科学技术产物的智能车。所谓智能车在满足了上电后可以移动的基础上,也对其运动的方向和方式提出了更高的要求。所谓对小车的控制归根结底就是对于电机的控制,通过对电机的转速、转向等参数进行控制,才能实现智能车有规律有目的的移动。本文设计了一款基于兆易创新GD32 MCU中国芯的机器视觉跟随麦克纳姆轮小车,因为其地盘选择的是麦克纳姆轮故而可以实现全方位移动零度转角,可以在狭小空间中对目标进行更好的跟随。为了避免由于跟随目标的运动方向的不确定性,特意设计了电机加减速算法,从而使小车更安全、更稳定的运行。小车通过安卓手机摄像头采集周围环境信息运用opencv开源视觉算法识别目标颜色或者目标形态,升级版本可以进行人脸识别检测和瞳距检测从而自动追随人脸或者瞳孔。在识别到目标后生成坐标数据并通过蓝牙、WiFi、串口等通讯方式传输数据给GD32 MCU,GD32 MCU通过智能算法或者机器学习解算出麦克纳姆小车的行进方向,若目标丢失则停止移动,GD32 MCU用解算的结果控制麦克纳姆小车从而完成追随任务。其中GD32 MCU作为主控部分起决定性作用。本小车还可进行远程视频传输监控,远程遥控。
  • 【毕业设计】基于STM32单片机大棚温湿度检测无线蓝牙APP控制设计

    本设计由STM32单片机+风扇控制电路+温湿度传感器电路+1602液晶显示电路+蓝牙模块电路+电源电路组成。1、通过温湿度传感器检测温湿度,并在液晶上和APP上实时显示。2、当湿度超过75度,APP发出报警信息3、通过APP发送指令“O”,风扇启动。 通过APP发送指令“C”,风扇关闭。需要实物或设计定做可联系QQ:3162786026资料内容:
    来自:DIY创意产品时间:2019-08-30 stm32 单片机 蓝牙
  • 基于微控制器的自动键控器

    基于PIC16F886的CW自动键控器,带USB和Morse键接口。硬件组件:Digilent PICkit 3在线调试器× 1 Microchip PIC16F886× 1 S8050-J3Y× 3 安森美半导体BCP56× 1 德州仪器(TI)通用四路运算放大器× 1 CH340G× 1 STMicroelectronics L78M05× 1 恩智浦TDA7052A× 1 Adafruit标准LCD - 16x2白色蓝色× 1 软件应用程序和在线服务:Microchip MPLAB X IDEUSB Morse Keyer是一款基于微控制器的自动键控器,具有以下功能:USB /直键/抑制键输入。支持独立和USB操作模式。64个字符的USB预先缓冲区和6个字符的Morse密钥预先缓冲区。支持5,10,15 WPM。6页留言内存。1W音频输出。音频和PTT输出接口。32个字符的显示。本机的USB接口设计用于大多数操作系统。它模拟虚拟串行终端以将键击传输到键控器。在大多数操作系统中,此接口无需安装任何其他设备驱动程序即可运行。电路城原创内容,未经同意,不得转载!
    来自:其他时间:2019-08-27 usb 微控制器 键控器
  • 全自动家庭水培系统Green Box

    Green Box是一个自动化的水培系统。硬件组件: LED灯条,日光× 1 Raspberry Pi 3型号B.× 1 继电器模块(通用)× 1 Atlas Scientific pH传感器套件× 1 Adafruit湿度和温度传感器× 1 SparkFun ZX距离和手势传感器× 1 Seeed Grove - 数字光传感器× 1 切换开关,切换× 1 Atlas Scientific EZO-PMP™蠕动泵× 1 轴流风扇,12 VDC× 1 气泵× 1 水泵× 1 电磁阀,2路× 1 软件应用程序和在线服务: Arduino IDE通用Windows平台(UWP)-Visual studio community 2019手动工具和制造机器: 激光切割机(通用)烙铁(通用)焊锡丝,无铅Green Box是我长期以来的一个想法,并且能够在今年夏天成为现实。我一直对水培法感兴趣,因为它的效率和环境可持续性。在水培系统中使用的水比在土壤中少90%,不需要农药(非常适合昆虫和生态系统!),并且可以从堆肥中产生营养!所以,我有了创建全自动水培系统的想法。目标是让人们通过相对较少的工作来种植自己的食物,并促进可持续的生活。Green Box采用筏网络水培和传感器。该系统有3个主要组件:温度和湿度,水位和光线。在我居住的地方有时候温度会变得太高,过于干燥的环境会使植物死亡。因此,使用温度和湿度传感器和风扇,我编程系统在温度过高时打开风扇。我还在控制面板上添加了一个拨动开关,用于手动打开和关闭风扇。然后,对于水位,使用水位传感器,电磁阀和Atlas Scientific的EZO-PMP水泵,您可以将其自动设置在某个水位,或手动输入所需的水位。我用自己的vermi-compost制作了用于制造养料的的堆肥茶。接下来,对于灯光系统,使用环境光传感器,当天黑时,LED灯将亮起,并在环境变亮时关闭。电路城原创内容,未经同意,不得转载!
    来自:家用电器时间:2019-08-27 传感器 家庭自动化 继电器
  • Phosphor IOT Module无线环境温湿度监测

    Phosphor IOT Module是以DA14585作为主控的用于环境监测的评估板;DA14585是符合Bluetooth 5.0标准,16M 32位ARM Cortex-M0的SoC,是目前市场上尺寸最小、功耗最低和集成度最高的低功耗蓝牙解决方案,广泛运用于IoT产品;环境传感器使用的是世界领先的高质量传感器制造商Sensirion的SGP30和SHT3x;SGP30和SHT3x将支持DA14585实现对周围环境TVOC、CO2eq、温度、湿度等是实时检测;通过DA14585低功耗蓝牙无线传输至IOS或Android智能手机。开发Phosphor IOT Module的目的是帮助客户评估Dialog的DA1458X系列低功耗蓝牙和Sensirion的SGP30、SHT3X环境检测sensor的性能,节省客户开发周期。
    来自:Hackaday Prize 2019时间:2019-08-19 蓝牙 环境监测
  • DIY pH计量泵电路方案设计(源代码+教程+接线图)

    一种将样品的pH值保持在规定范围内的系统。硬件组件: Arduino UNO和Genuino UNO× 1 面包板(通用)× 1 公/母跳线× 1 EZO pH试剂盒× 1 EZO PMP套件× 2 pH UP / pH DOWN溶液× 1 电阻4.75k欧姆× 2 5针头× 2 软件应用程序和在线服务: Arduino IDE我们将制作pH计量系统。它能够将样品保持在规定的pH范围内,在这种情况下为8-8.5。如果读数超出范围,则会自动将少量pH UP 或pH DOWN 溶液添加到样品中,直到读数返回到限值范围内。将通过EZO pH传感器监测pH水平,同时使用蠕动泵分配UP / DOWN溶液。通过I2C协议进行操作,读数显示在Arduino串行监视器上。
    来自:其他时间:2019-07-02 arduino 传感器 环境感知
  • 如何将一个串口扩展为八个

    将一个Arduino UART端口扩展为八个。硬件组件:Arduino UNO和Genuino UNO× 1 面包板(通用)× 1 溶解氧传感器× 1 盐度传感器× 1 pH传感器× 1 跳线× 1 软件应用程序和在线服务:Arduino IDE在本教程中,我们将使用Atlas Scientific的8:1串行端口扩展板将单个Arduino UNO UART(Rx / Tx)串行端口扩展为8个。Arduino的端口连接到扩展器,之后信号被路由到外围设备连接的八个端口。为简单起见,我们将使用三个端口,但只需几个步骤,您就可以使扩展使用全部八个端口。通过UART模式进行通信,结果显示在Arduino串行监视器上。默认情况下,连续传感器连接的传感器读数。然后可以打开各个通道,这将允许用户与特定传感器通信。
    来自:其他时间:2019-07-01 arduino 传感器 串口扩展
  • 支持手机APP控制的Arduino机械臂

    在本教程中,我们将学习如何制作一个Arduino机械臂,它可以使用自定构建的Android应用程序进行无线控制和编程。我将向您展示构建它的整个过程,从设计和3D打印机器人部件,连接电子组件和编程Arduino,到开发我们自己的Android应用程序来控制机械臂。 使用应用程序中的滑块,我们可以手动控制机械臂的每个伺服或轴的运动。同样使用“保存”按钮,我们可以记录每个位置或步骤,然后机械臂可以自动运行并重复这些步骤。使用相同的按钮,我们可以暂停自动操作以及重置或删除所有步骤,以便我们可以记录新的步骤。 Arduino Robot Arm 3D模型 首先,我使用Solidworks 3D建模软件设计了机械臂。手臂有5个自由度。 对于前3轴,腰部,肩部和肘部,我使用了MG996R伺服系统,而对于另外2轴,腕部滚动和腕部间距,以及夹具我使用了较小的SG90微型伺服系统。 您可以下载和下面的3D模型。3D打印机械臂 使用我的新3D打印机,Creality CR-10,我3D打印了Arduino机械臂的所有部件。为了完成组装,我们只需使用一些螺栓和支架连接上部和下部框架,然后使用提供的电缆将电子组件与控制箱连接。 在尝试之前,建议检查滚轮是否足够紧,如果没有,可以简单地使用偏心螺母将它们拧紧。就是这样,在调平3D打印床之后,您就可以将3D创作变为现实。 我在几个小时内准备好Arduino Robot Arm的所有部件。组装机械臂 好的,我们准备组装机械臂。我从基座开始,我使用其包装中的螺丝连接了第一台伺服电机。然后在伺服的输出轴上我固定了一个圆角螺栓。在它的顶部,我放置上部并用两个螺丝固定。 这里再次首先进入伺服,然后将圆形喇叭放到下一个部件上,然后使用输出轴上的螺栓将它们固定在一起。 我们在这里可以注意到,在肩轴上最好包括某种弹簧,或者在我的情况下,我使用橡皮筋为伺服提供一些帮助,因为这种伺服也承载了其余部分的整个重量。作为有效载荷。 以类似的方式,我继续组装机械臂的其余部分。至于夹具机构,我使用了大约4毫米的螺栓和螺母来组装它。 最后,我将夹具机构安装到最后一个伺服机构上,完成了Arduino机械臂。Arduino机械臂电路图 下一阶段是连接电子产品。该项目的电路图实际上非常简单。我们只需要一个Arduino板和一个HC-05蓝牙模块与智能手机进行通信。六个伺服电机的控制引脚连接到Arduino板的六个数字引脚。 为了给伺服电机供电,我们需要5V,但这必须来自外部电源,因为Arduino无法处理所有电流都可以吸收的电流量。电源必须能够处理至少2A的电流。因此,一旦我们将所有内容连接在一起,我们就可以继续编写Arduino并制作Android应用程序。Arduino机械臂代码 由于代码有点长,为了更好地理解,我将在每个部分的描述部分发布程序的源代码。在本文的最后,我将发布完整的源代码。 首先,我们需要包含SoftwareSerial库,用于蓝牙模块和伺服库的串行通信。这两个库都包含在Arduino IDE中,因此您无需在外部安装它们。然后我们需要定义六个伺服器,HC-05蓝牙模块和一些用于存储伺服器当前和先前位置的变量,以及用于存储自动模式的位置或步骤的阵列。 #include <SoftwareSerial.h> #include <Servo.h> Servo servo01; Servo servo02; Servo servo03; Servo servo04; Servo servo05; Servo servo06; SoftwareSerial Bluetooth(3, 4); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX) int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; // current position int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6PPos; // previous position int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50], servo05SP[50], servo06SP[50]; // for storing positions/steps int speedDelay = 20; int index = 0; String dataIn = ""; 在设置部分,我们需要初始化伺服器和蓝牙模块,并将机械臂移动到其初始位置。我们使用write()函数来做到这一点,它只是将伺服器移动到0到180度的任何位置。 void setup() { servo01.attach(5); servo02.attach(6); servo03.attach(7); servo04.attach(8); servo05.attach(9); servo06.attach(10); Bluetooth.begin(38400); // Default baud rate of the Bluetooth module Bluetooth.setTimeout(1); delay(20); // Robot arm initial position servo1PPos = 90; servo01.write(servo1PPos); servo2PPos = 150; servo02.write(servo2PPos); servo3PPos = 35; servo03.write(servo3PPos); servo4PPos = 140; servo04.write(servo4PPos); servo5PPos = 85; servo05.write(servo5PPos); servo6PPos = 80; servo06.write(servo6PPos); } 接下来,在循环部分,使用Bluetooth.available()函数,我们不断检查智能手机是否有任何传入数据。如果为true,则使用readString()函数将数据读取为字符串并将其存储到dataIn变量中。根据到达的数据,我们将告诉机械臂该做什么。 // Check for incoming data if (Bluetooth.available() > 0) { dataIn = Bluetooth.readString(); // Read the data as string Arduino机械臂控制Android应用程序 我们现在来看看Android应用程序,看看它实际发送给Arduino的数据类型。 我使用MIT App Inventor在线应用程序制作了应用程序,以及它的工作原理。在顶部,我们有两个按钮,用于将智能手机连接到HC-05蓝牙模块。然后在左侧我们有一个机械臂的图像,在右侧我们有六个用于控制伺服器的滑块和一个用于速度控制的滑块。 每个滑块都有不同的初始值,最小值和最大值,适合机械臂关节。在应用程序的底部,我们有三个按钮,SAVE,RUN和RESET,通过它我们可以编程机械臂自动运行。下面还有一个标签,显示我们保存的步骤数。然而,有关如何使用MIT App Inventor构建此类应用程序的更多详细信息,您可以查看我的其他详细教程。 好的,现在让我们看看应用程序背后的程序或块。首先,在左侧,我们有用于将智能手机连接到蓝牙模块的模块。 然后我们有用于伺服位置控制的滑块和用于编程机械臂的按钮块。因此,如果我们使用蓝牙功能.SendText更改滑块的位置,我们会向Arduino发送文本。此文本包含一个前缀,指示哪个滑块已更改,以及滑块的当前值。 这是上述MIT App Inventor项目的下载文件,以及准备安装在智能手机上的Android App: 因此,在Arduino中,使用startsWith()函数,我们检查每个传入数据的前缀,因此我们知道接下来要做什么。例如,如果前缀是“s1”,我们知道我们需要移动伺服编号1。使用substring()函数我们得到剩余的文本,或者是位置值,我们将其转换为整数并使用该值将伺服移动到该位置。 // If "Waist" slider has changed value - Move Servo 1 to position if (dataIn.startsWith("s1")) { String dataInS = dataIn.substring(2, dataIn.length()); // Extract only the number. E.g. from "s1120" to "120" servo1Pos = dataInS.toInt(); // Convert the string into integer 在这里我们可以简单地调用write()函数并且伺服将转到该位置,但是以这种方式伺服将以其最大速度运行,这对于机械臂来说太快了。相反,我们需要控制伺服的速度,因此我使用了一些FOR循环,以便通过在每次迭代之间实现延迟时间来逐渐将伺服从前一个位置移动到当前位置。通过更改延迟时间,您可以更改伺服的速度。 // We use for loops so we can control the speed of the servo // If previous position is bigger then current position if (servo1PPos > servo1Pos) { for ( int j = servo1PPos; j >= servo1Pos; j--) { // Run servo down servo01.write(j); delay(20); // defines the speed at which the servo rotates } } // If previous position is smaller then current position if (servo1PPos < servo1Pos) { for ( int j = servo1PPos; j <= servo1Pos; j++) { // Run servo up servo01.write(j); delay(20); } } servo1PPos = servo1Pos; // set current position as previous position } 相同的方法用于驱动机器人臂的每个轴。 在它们下面是SAVE按钮。如果我们按下SAVE按钮,每个伺服电机的位置将存储在一个阵列中。随着每次按压,索引增加,因此阵列逐步填充。 // If button "SAVE" is pressed if (dataIn.startsWith("SAVE")) { servo01SP[index] = servo1PPos; // save position into the array servo02SP[index] = servo2PPos; servo03SP[index] = servo3PPos; servo04SP[index] = servo4PPos; servo05SP[index] = servo5PPos; servo06SP[index] = servo6PPos; index++; // Increase the array index } 然后,如果我们按下RUN按钮,我们调用runservo()自定义函数,该函数运行存储的步骤。我们来看看这个功能。所以这里我们一遍又一遍地运行存储的步骤,直到我们按下RESET按钮。使用FOR循环,我们遍历存储在阵列中的所有位置,同时我们检查是否有来自智能手机的任何传入数据。此数据可以是RUN / PAUSE按钮,用于暂停机器人,如果再次单击则继续自动运动。此外,如果我们改变速度滑块位置,我们将使用该值来改变下面FOR循环中每次迭代之间的延迟时间,这将控制伺服电机的速度。 // Automatic mode custom function - run the saved steps void runservo() { while (dataIn != "RESET") { // Run the steps over and over again until "RESET" button is pressed for (int i = 0; i <= index - 2; i++) { // Run through all steps(index) if (Bluetooth.available() > 0) { // Check for incomding data dataIn = Bluetooth.readString(); if ( dataIn == "PAUSE") { // If button "PAUSE" is pressed while (dataIn != "RUN") { // Wait until "RUN" is pressed again if (Bluetooth.available() > 0) { dataIn = Bluetooth.readString(); if ( dataIn == "RESET") { break; } } } } // If SPEED slider is changed if (dataIn.startsWith("ss")) { String dataInS = dataIn.substring(2, dataIn.length()); speedDelay = dataInS.toInt(); // Change servo speed (delay time) } } // Servo 1 if (servo01SP[i] == servo01SP[i + 1]) { } if (servo01SP[i] > servo01SP[i + 1]) { for ( int j = servo01SP[i]; j >= servo01SP[i + 1]; j--) { servo01.write(j); delay(speedDelay); } } if (servo01SP[i] < servo01SP[i + 1]) { for ( int j = servo01SP[i]; j <= servo01SP[i + 1]; j++) { servo01.write(j); delay(speedDelay); } } 以前面用这些IF语句和FOR循环解释的方式,我们将伺服器移动到下一个位置。最后,如果我们按下RESET按钮,我们将清除阵列中的所有数据为零,并将索引重置为零,这样我们就可以用新的动作重新编程机械臂。 // If button "RESET" is pressed if ( dataIn == "RESET") { memset(servo01SP, 0, sizeof(servo01SP)); // Clear the array data to 0 memset(servo02SP, 0, sizeof(servo02SP)); memset(servo03SP, 0, sizeof(servo03SP)); memset(servo04SP, 0, sizeof(servo04SP)); memset(servo05SP, 0, sizeof(servo05SP)); memset(servo06SP, 0, sizeof(servo06SP)); index = 0; // Index to 0 } 就是这样,现在我们可以享受机械臂带来的乐趣。
    来自:DIY创意产品时间:2019-06-29 diy制作 arduino 开源 蓝牙 app
  • 3D打印机必备,利用光学传感器检测灯丝情况并报警

    如何了解在复杂的3D打印机内部,灯丝是否处于耗尽的危险状态呢?硬件组件:Microchip ATtiny85× 1 软件应用程序和在线服务:Arduino IDE手动工具和制造机器:3D打印机(通用)烙铁(通用)该项目使用光学传感器检测打印机灯丝何时耗尽。它可以设置为发出声音警报,或者只是在传感器检测到问题时闪烁灯光。在线轴用完之前,此设备将为您提供足够的时间来暂停打印并更换灯丝线轴。我决定在这个项目中使用ATtiny芯片代替Arduino,因为我只需要几个IO引脚,我想把所有东西焊接到电路板上。如何使用:首先,插入一块1.75毫米的灯丝。插入后,设备将自动打开,绿色指示灯将点亮,让您知道设备已通电。它将立即开始在静音模式下感应灯丝。您可以按此按钮切换到声音警报,黄色指示灯将亮起,让您知道警报处于活动状态。再次按下按钮可切换回静音模式。静音模式:黄色指示灯熄灭,当灯丝不存在时红色指示灯闪烁报警模式:黄色指示灯亮,一旦灯丝缺失,蜂鸣器会发出蜂鸣声
    来自:安防与监控时间:2019-06-28 传感器 3d打印机 监控
  • 基于ADXL335和MSP430实现背部姿势矫正装置

    每当您保持不良姿势时都会收到警报,帮助你避免由于姿势不当导致的背部疼痛问题。硬件组件:德州仪器MSP-EXP430G2 MSP430 LaunchPad× 1 SparkFun Triple Axis Accelerometer Breakout - ADXL335× 1 蜂鸣器× 1 LED(通用)× 2 软件应用程序和在线服务:德州仪器Energia目前,大多数人患有背痛或者和这相关的问题。该背部姿势矫正装置x通过检测判断错误和正确的背部位置,错误时发出警告来帮助用户调整姿势。该器件中使用的主要元件是德州仪器为我们提供的ADXL335加速度计和MSP430微控制器。目标:缓解日常生活中的背部疼痛。提供便宜的成本,易于使用和易于维护的设备供每个人使用。使用MSP430微控制器作为人与机器之间的接口。
    来自:可穿戴设备时间:2019-06-27 嵌入式 微控制器 加速度计
销量
11
查看
479
参数名 参数值
发布于 2019 年 06 月 28日
芯片资料
Moore8直播课堂

tracer