色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Nero:控制遠程設備的智能手套

Nero:控制遠程設備的智能手套

2022-12-12 | zip | 1.25 MB | 次下載 | 免費

資料介紹

描述

探索醫療保健和醫藥行業等眾多行業的所有可能奇跡已成為一項關鍵而艱巨的任務,在這些行業中,手術涉及精確度和來自世界各地專家的意見,在化學制造廠、包裝和生產行業等地方,以及所有具有惡劣化學環境的商業領域。該項目只是所有所述問題的解決方案。Nero 是一個飛躍,使所有僅靠人工干預和技能無法完成的任務成為可能。

這種手勢控制的智能機器人手套使我們能夠使用現有技術實現經濟的解決方案。它可以用于控制和自動化機器,如機械臂、傳送帶、滑輪、起重機和無數其他設備。

您的想象力是 Nero 效率的極限。該項目為我們提供了非凡的精度、準確性,并為進一步的可訪問性和自動化提供了自由。

尼祿在行動!

?

概述

在這個項目中,我們基本上有 2 個主要部分,傳輸端和接收端。我們利用 WIZnet 串口轉以太網板將從 arduino 接收到的數據發布到 MQTT 代理,并使用 nodeMCU 在接收端訂閱數據。兩端的技術步驟將在下一節中詳細介紹。

?

?
?
?
?
pYYBAGOSz1GAZGrzAAih9HJiO6c423.jpg
?
1 / 2 ?出版方面
?

?

腳步

發射端

電路連接:

第 1 步:將霍爾效應傳感器 (A3144) 和陀螺儀傳感器 (MPU6050) 連接到 arduino,如下所示。(請參閱連接的引腳圖)

o 霍爾傳感器連接到 arduino 的 d9 和 d6

?

?
?
?
?
poYBAGOSz1OAOAp3AAAzrq5MCVg144.jpg
?
1 / 5 ?霍爾效應傳感器的引腳圖
?

第 2 步:使用 RS-232 電纜將 Arduino Uno 連接到 WIZ750SR 板(帶有串口到以太網轉換器),如下所示:

o Arduino Uno 的發送引腳(本例中為引腳 11)使用 RS-232 電纜和跳線連接到 WIZ750SR 串口轉以太網的接收引腳。

o Arduino 的接收引腳(本例中為引腳 10)連接到發送引腳。

o Arduino 的接地引腳連接到 WIZnet 板的接地引腳。

?
?
?
?
pYYBAGOSz6KAe6WiABCvrx-pwEc763.jpg
?
1 / 3 ? Arduino 與 WIZnet WIZ750SR 的連接
?

?

第 3 步:使用以太網 LAN 電纜將 WIZnet 板連接到網絡(用于 MQTT 連接)。

第 4 步:將兩塊板連接到 PC 以上傳代碼。

?

-發送方代碼:

將代碼上傳到串口轉以太網板的步驟:

1. 將開機開關從正常模式推到開機模式。

2、使用ISP工具軟件打開串口。

3. 顯示“serial open complete”后,上傳“os.mbed”編譯代碼。

4.將開機開關推回正常位置,重新設置wiz板。

5.板子接收到的數據可以使用“COOLTERM”進行監控。

?

?
?
?
?
pYYBAGOSz6WAJnZXAADCqo1nWME319.png
?
1 / 2 ? WIZnet WIZ750SR
?
//Code to publish data from the Wiznet Board
#include "mbed.h"
#include "MQTTEthernet.h"
#include "MQTTClient.h"
#define ECHO_SERVER_PORT   7
Serial a(D1,D0);
   Serial s(USBTX, USBRX);
int arrivedcount = 0;
void messageArrived(MQTT::MessageData& md)
{
   MQTT::Message &message = md.message;
   printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
   printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
   ++arrivedcount;
}
void baud(int baudrate) {
   s.baud(baudrate);
}
int main (void)
{
   baud(9600);
   printf("Wait a second...\r\n");
   char* topic = "Ultrasonic";
   MQTTEthernet ipstack = MQTTEthernet();
   MQTT::Client client = MQTT::Client(ipstack);
,>,>   char* hostname = "172.16.73.4";
   int port = 1883;
   int rc = ipstack.connect(hostname, port);
   if (rc != 0)
       printf("rc from TCP connect is %d\n", rc);
   printf("Topic: %s\r\n",topic);
   MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
   data.MQTTVersion = 3;
   data.clientID.cstring = "parents";
   if ((rc = client.connect(data)) != 0)
       printf("rc from MQTT connect is %d\n", rc);
   if ((rc = client.subscribe(topic, MQTT::QOS0, messageArrived)) != 0)
       printf("rc from MQTT subscribe is %d\n", rc); 
   MQTT::Message message;
   char buf[100];
   while (true) 
   {
       char b;
       int i=0;
       char q[100];
       if(a.readable())
       { 
           for(i=0;i<=1;i++)
           {
           b= a.getc();
           q[i]=b;
           s.printf("%c",q[i]);
           }
       sprintf(buf,"%s",q);
       message.qos = MQTT::QOS1;
       message.retained = false;
       message.dup = false;
       message.payload = (void*)buf;
       message.payloadlen = strlen(buf);
       rc = client.publish("Ultrasonic", message);
       client.yield(2000);
           }
           }
}

將代碼上傳到 Arduino Uno 的步驟:

  • 將 Arduino Uno 連接到 PC。
  • 從工具->端口選擇正確的 COM 端口。
  • 從 Tools->Boards 選擇 Arduino Uno。
  • 編譯并上傳代碼。
//Arduino code to recieve values of the sensors and serially transmit it to the wiznet  board
//defines pins numbers
#include#include"Wire.h"
//I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files
//for both classes must be in the include path of your project
#include"I2Cdev.h"
#include"MPU6050.h"
//class default I2C address is 0x68
//specific I2C addresses may be passed as a parameter here
//AD0 low = 0x68 (default for InvenSense evaluation board)
//AD0 high = 0x69
MPU6050accelgyro;
int16_tax, ay, az;
int16_tgx, gy, gz;
SoftwareSerialmySerial(10, 11); // RX, TX
inthPin=9;
intvalue1;
intmyInts[2];
constint trigPin = 3;
constint echoPin = 2;
longduration;
intdistance;
inthPin1=6;
inthState1=0;
intvalue;
inthState=0;
intolds=0;
intod;
intolds1=0;
//accelerometer values
intaccel_reading;
intaccel_corrected;
intaccel_offset = 200;
floataccel_angle;
floataccel_scale = 1; // set to 0.01
voidsetup() {
//join I2C bus (I2Cdev library doesn't do this  automatically)
Wire.begin();
 accelgyro.initialize();
 pinMode(trigPin,OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin,INPUT); // Sets the echoPin as an Input
 //put your setup code here, to run once:
Serial.begin(9600);
 //put your setup code here, to run once:
pinMode(hPin,INPUT);
pinMode(hPin1,INPUT);
 mySerial.begin(9600);
 pinMode(LED_BUILTIN,OUTPUT);
olds=olds1=80;
}
voidloop() {
digitalWrite(trigPin,LOW);
delayMicroseconds(2);
// Sets the trigPin onHIGH state for 10 micro seconds
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
// Reads the echoPin,returns the sound wave travel time in microseconds
duration =pulseIn(echoPin, HIGH);
// Calculating thedistance
distance=duration*0.034/2;
// Prints the distanceon the Serial Monitor
accelgyro.getMotion6(&ax,&ay, &az, &gx, &gy, &gz);
 //accelerometer_X_Axis angle calc
 accel_reading= ax;
 accel_corrected= accel_reading - accel_offset;
 accel_corrected= map(accel_corrected, -16800, 16800, -90, 90);
 accel_corrected= constrain(accel_corrected, -90, 90);
 accel_angle= (float)(accel_corrected * accel_scale);
  // put your main code here, to run repeatedly:
 hState=digitalRead(hPin);
 hState1=digitalRead(hPin1);
if(hState != olds ||hState1 != olds1){
 if(hState==LOW && hState1==LOW){
value=1;
olds = hState;
olds1 = hState1;
}
if (hState1==HIGH&& hState==LOW){
value=2;
olds = hState;
olds1 = hState1; }
if (hState1==LOW&& hState==HIGH){
value=3;
olds = hState;
olds1 = hState1;}
if (hState1==HIGH&& hState==HIGH){
value=4;
olds = hState;
olds1 = hState1;
}
}
else{
  if(accel_angle>=0 &&accel_angle<=30)
  {
 value= 5;
 od=value;
  }
 elseif(accel_angle>=30 && accel_angle<70)
 {
 value=6;
 od=value;
 }
 elseif(accel_angle>=70 && accel_angle<=90)
 {
 value=7;
 od=value;
 }
 else{
 if(od==0){
 value=5;
 }
 else{
 value=od;}
 }
}
mySerial.println(value);
Serial.println(value);
delay(1000);
}

?

接收

- 電路連接

第 1 步:將三個伺服電機連接到 NodeMCU。

第二步:按照下圖定位伺服電機。

第三步:通過PC將代碼上傳到NodeMCU(ESP8266)。

第 4 步:檢查串行監視器上的輸出。

?

?
?
?
?
pYYBAGOS0EeAE-q-ABSk-CIN9x0327.jpg
?
1 / 3 ? NodeMCU 連接
?

?

- 接收方代碼:

將代碼上傳到 NodeMCU 的步驟:

  • 將 NodeMCU (ESP8266) 連接到 PC。
  • 從工具->端口選擇正確的 COM 端口。
  • 將所需的庫添加到 Ardunio 編譯器。(參考 1.1)
  • 從 Tools->Boards 選擇 NodeMCU (ESP8266)。
  • 編譯并上傳代碼。
/*
This code basically sets up an ESP8266 board as a MQTT client and helps in subscribing to desired topics that are published.
It is required that the board in the 'Tools' section must be selected to NodeMCU and the ESP8266 drivers are installed.
The baud rate must be set at 115200
Here we are operating three servo motors using the nodeMCU based on the values received via the MQTT topic
*/
#include 
#include 
#include 
// Creating objects for the 3 servo motors
Servo servo;
Servo servo1;
Servo servo2;
// The pins we have used for the servo motors are D1,D2 and D3
// Update these with values suitable for your network.
const char* ssid = "CDI";
const char* password = "Cdi*1717";
const char* mqtt_server = "172.16.73.4";
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
char old ;
void setup() {
 //Initial Setup Code
 Serial.begin(115200);
 setup_wifi();
 client.setServer(mqtt_server, 1883);
 client.setCallback(callback);
 delay(1000);
}
//Code for connecting to the wifi
void setup_wifi() {
 delay(10);
 // We start by connecting to a WiFi network
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
}
//This function is responsible for subscribing to a topic and receiving the values from it 
void callback(char* topic, byte* payload, unsigned int length) {
 Serial.print("Message arrived [");
 Serial.print(topic);
 Serial.print("] ");
 old = (char)payload[0];
 //detach each time to avoid jitter of the servo motors
 servo2.detach();
 servo.detach();
 servo1.detach();
for (int i = 0; i < length; i++) {
 Serial.println("Received message is :");
 Serial.println((char)payload[i]);
 servo.detach();
 servo1.detach();
 servo2.detach();
 if((char)payload[i] == '1')
 {
   servo.detach();
   servo2.detach();
   servo1.detach();
   servo.attach(0);
   servo.write(89);
   delay(1000);
   servo.detach();
   servo1.attach(4);
   servo1.write(89);
   delay(1000);
   servo1.detach();
   servo2.detach();
   old='1';
   break;
 }
if((char)payload[i] == '2')
 {
   servo.detach();
   servo2.detach();
   servo1.detach();
   servo1.attach(4);
   servo1.write(89);
   delay(1000);
   servo1.detach();
   servo2.detach();
   old='2';
   break;
 }
if((char)payload[i] == '3')
 {
   servo.detach();
   servo2.detach();
   servo1.detach();
   servo.attach(0);
   servo.write(89);
   delay(1000);
   servo.detach();
   servo2.detach();
   old='3';
   break;
 }
if((char)payload[i] == '4')
 {
   servo.detach();
   servo1.detach();
   servo2.detach();
   servo.attach(0);
   servo.write(180);
   delay(1000);
   servo.detach();
   servo1.attach(4);
   servo1.write(180);
   delay(1000);
   servo1.detach();
   servo2.detach();
   old='4';
   break;
 }
 if((char)payload[i]=='5')
 {
   servo2.detach();
   servo2.attach(5);
   servo2.write(179);
   delay(1000);
   servo2.detach();
 }
 if((char)payload[i]=='6')
 { servo2.detach();
   servo2.attach(5);
   servo2.write(89);
   delay(1000);
   servo2.detach();
  }
 if((char)payload[i]=='7')
 { servo2.detach();
   servo2.attach(5);
   servo2.write(2);
   delay(1000);
   servo2.detach();
 }
   servo2.detach();
 }
   servo.detach();
   servo1.detach();
   servo2.detach();
}
//This function is to reconnect once the connection is lost
void reconnect() {
 // Loop until we're reconnected
 while (!client.connected()) {
   Serial.print("Attempting MQTT connection...");
   // Attempt to connect
   if (client.connect("ESP8266Client")) {
     Serial.println("connected");
     // Once connected, publish an announcement...
     // ... and resubscribe
     client.subscribe("Ultrasonic");
   } else {
     Serial.print("failed, rc=");
     Serial.print(client.state());
     Serial.println(" try again in 5 seconds");
     // Wait 5 seconds before retrying
     delay(5000);
   }
 }
}
void loop() {
 if (!client.connected()) {
   reconnect();
 }
 client.loop();
} 

未來的改進

我們的目標是減少延遲時間并開發客戶端監控應用程序作為進一步改進,使該項目可在各種行業中實施。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 国产69精品9999XXXX| 老师破女学生特级毛片| 欧美の无码国产の无码影院| 午夜福利小视频400| 99精品免费久久久久久久久蜜桃| 国产免费播放一区二区三区| 免费看国产曰批40分钟| 亚洲精品久久久久中文字幕二区 | 久久在精品线影院| 羞羞漫画免费漫画页面在线看漫画秋蝉| 97资源总站(中文字幕)| 狠狠色狠狠色综合日日92| 色噜噜视频| jizz丝袜| 美国69xxxx59| 一品道门在线视频高清完整版| 国产福利高清在线视频| 桥本有菜护士| 97久久超碰中文字幕| 精品国产乱码久久久久久下载 | 成人综合在线视频免费观看完整版| 美女扒开屁股让男人桶| 一边捏奶头一边啪高潮会怎么样| 国产精品爆乳尤物99精品| 日本xxx片免费高清在线| 97SE亚洲国产综合在线| 久久精品国产只有精品| 亚洲 自拍 欧洲 视频二区| 俄罗斯XXXXXL18| 青青视频国产依人在线| 99re10久久热| 快播h网站| 伊人大香人妻在线播放| 好男人好资源在线播放| 午夜影院费试看黄| 国产精品A久久777777| 色噜噜2017最新综合| 第四色男人天堂| 日本久久久| 扒开粉嫩的小缝末成年小美女| 欧美丰满白嫩bbxx|