{"id":265,"date":"2021-01-13T13:56:31","date_gmt":"2021-01-13T05:56:31","guid":{"rendered":"https:\/\/www.mikusss.com\/?p=265"},"modified":"2021-12-10T15:36:29","modified_gmt":"2021-12-10T07:36:29","slug":"vmware-%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%88%a9%e7%94%a8%e6%a0%91%e8%8e%93%e6%b4%beraspbian-pi%e7%b3%bb%e7%bb%9f%e5%92%8c%e7%99%be%e5%ba%a6%e4%ba%ba%e8%84%b8%e5%9c%a8%e7%ba%bfsdk%e5%ae%9e%e7%8e%b0-4","status":"publish","type":"post","link":"https:\/\/www.mikusss.com\/?p=265","title":{"rendered":"VMware \u865a\u62df\u673a\u5229\u7528\u6811\u8393\u6d3eRaspbian pi\u7cfb\u7edf\u548c\u767e\u5ea6\u4eba\u8138\u5728\u7ebfSDK\u5b9e\u73b0\u4eba\u8138\u8bc6\u522b(\u786c\u4ef6\u62d3\u5c55)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u524d\u9762\u5df2\u7ecf\u6210\u529f\u90e8\u7f72\u4e86\u6811\u8393\u6d3e\u4e0e\u767e\u5ea6\u8bc6\u522b\u7684\u9879\u76ee  \u5982\u679c\u662f\u5177\u6709\u786c\u4ef6\u7684\u6811\u8393\u6d3e \u53ef\u4ee5\u642d\u914d<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Arduino UNO R3<\/li><li>HC-05<\/li><li>\u8235\u673aSG90(\u6216\u8005MG995)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6765\u5b9e\u73b0\u6811\u8393\u6d3e\u4eba\u8138\u8bc6\u522b\u6210\u529f\u540e\uff0c\u53d1\u9001\u84dd\u7259\u4e32\u53e3\u6570\u636e\u7ed9Arduino\u7684HC-05\u6a21\u5757\uff0c\u8ba9Arduino\u63a7\u5236\u8235\u673a\u5f00\u95e8\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><figure class=\"mdx-lazyload-container\" style=\"max-width:1024px\"><div style=\"padding-top:80.37109375%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img width=\"1024\" height=\"823\" class=\"wp-image-266 lazyload\" title=\"VMware \u865a\u62df\u673a\u5229\u7528\u6811\u8393\u6d3eRaspbian pi\u7cfb\u7edf\u548c\u767e\u5ea6\u4eba\u8138\u5728\u7ebfSDK\u5b9e\u73b0\u4eba\u8138\u8bc6\u522b(\u786c\u4ef6\u62d3\u5c55)\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/www.mikusss.com\/wp-content\/uploads\/2021\/01\/image-42-1024x823.png\" alt=\"https:\/\/www.mikusss.com\/wp-content\/uploads\/2021\/01\/image-42-1024x823.png\" data-srcset=\"https:\/\/www.mikusss.com\/wp-content\/uploads\/2021\/01\/image-42-1024x823.png 1024w, https:\/\/www.mikusss.com\/wp-content\/uploads\/2021\/01\/image-42-300x241.png 300w, https:\/\/www.mikusss.com\/wp-content\/uploads\/2021\/01\/image-42-768x617.png 768w, https:\/\/www.mikusss.com\/wp-content\/uploads\/2021\/01\/image-42.png 1085w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\"><\/figure><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u3001\u6811\u8393\u6d3e\u7aef\u914d\u7f6e<br>\u6811\u8393\u6d3e\u81ea\u5e26\u84dd\u7259\u529f\u80fd\uff0c\u6211\u4eec\u53ef\u4ee5\u8c03\u7528\u7cfb\u7edf\u6307\u4ee4\u53d1\u9001\u84dd\u7259\u4fe1\u53f7\uff0c<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">1.1\u5b89\u88c5\u6811\u8393\u6d3e\u84dd\u7259\u6a21\u5757pybluez<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u5b8c\u6210\u540e\u518d\u7ee7\u7eed\u4e0b\u4e00\u6b65\u64cd\u4f5c\uff1b<br>\u82e5\u60f3\u8ba9\u6811\u8393\u6d3e\u4f7f\u7528bluetooth,\u5fc5\u987b\u7ed9\u6811\u8393\u6d3e\u5b89\u88c5pybluez\u6a21\u5757<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install libbluetooth-dev  \/\/\u5b89\u88c5\u84dd\u7259\u5f00\u53d1\u5e93\npython3 -m pip install pybluez    \/\/\u5b89\u88c5pybluez\n<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">1.2 \u5c06\u6811\u8393\u6d3e\u624b\u52a8\u8fde\u63a5\u81f3HC-05<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u6253\u5f00\u6811\u8393\u6d3e\u684c\u9762\u7aef\uff0c\u70b9\u51fb\u84dd\u7259\u56fe\u6807\u540e\u70b9\u51fbadd device<br><figure class=\"mdx-lazyload-container\" style=\"\"><div style=\"padding-top:50%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img class=\"lazyload\" title=\"\u56fe\u7247.png\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/imgconvert.csdnimg.cn\/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81ODQ1NTg1LTgzZjgxZDUwMGU2NDc1ZmUucG5n?x-oss-process=image\/format,png\" alt=\"\u56fe\u7247.png\"><\/figure><br>\u9009\u62e9HC-05\u6a21\u5757\uff0c\u914d\u5bf9\u5bc6\u7801\u662f1234\uff1b<br><figure class=\"mdx-lazyload-container\" style=\"\"><div style=\"padding-top:50%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img class=\"lazyload\" title=\"\u56fe\u7247.png\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/imgconvert.csdnimg.cn\/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81ODQ1NTg1LTI4NTgxODFmYzFjMGVjYzYucG5n?x-oss-process=image\/format,png\" alt=\"\u56fe\u7247.png\"><\/figure><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u914d\u5bf9\u6210\u529f\u540e\uff0c\u540e\u9762\u7a0b\u5e8f\u5c31\u53ef\u4ee5\u76f4\u63a5\u8fd0\u884c\u4e86<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">1.3 \u5b9a\u4e49\u6811\u8393\u6d3e\u84dd\u7259\u63a7\u5236\u529f\u80fd<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u4e00\u4e2abluetooth_test.py\u6587\u4ef6\uff0c\u5206\u522b\u5b9a\u4e49\u521d\u59cb\u5316\u6307\u4ee4\u3001\u5f00\u95e8\u6307\u4ee4\u3001\u5173\u95e8\u6307\u4ee4\uff0c\u5206\u522b\u53d1\u9001\u5b57\u7b26\u4e32\u20191\u2018\uff0c\u20192\u2019\uff0c\u20183\u2019\uff1b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import bluetooth\n \ndef servo_init():#\u521d\u59cb\u5316\u6307\u4ee4\n\tbd_addr = \"20:16:08:08:39:75\" #arduino\u8fde\u63a5\u7684\u84dd\u7259\u6a21\u5757\u7684\u5730\u5740\n\tport = 1\n\t \n\tsock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )\n\tsock.connect((bd_addr, port)) #\u521b\u5efa\u8fde\u63a5\n\t \n\tsock.send(\"1\") #\u53d1\u9001\u6570\u636e\n\tsock.close()  #\u5173\u95ed\u8fde\u63a5\n\t\ndef bt_open():#\u5f00\u95e8\u6307\u4ee4\n\tbd_addr = \"20:16:08:08:39:75\" \n\tport = 1\n\t \n\tsock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )\n\tsock.connect((bd_addr, port)) \n\t \n\tsock.send(\"2\") \n\tsock.close()  \n\ndef bt_close():#\u5173\u95e8\u6307\u4ee4\n\tbd_addr = \"20:16:08:08:39:75\" \n\tport = 1\n\t \n\tsock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )\n\tsock.connect((bd_addr, port)) \n\t \n\tsock.send(\"3\") \n\tsock.close()  <\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">\u4e8c\u3001Arduino\u8fde\u63a5\u65b9\u5f0f<br>2.1 Arduino\u4e0eHC-05\u84dd\u7259\u6a21\u5757\u7684\u8fde\u63a5<br>\u7531\u4e8e\u6211\u4eec\u7528\u7684\u662fArduino UNO R3\u6ca1\u6709\u84dd\u7259\u6a21\u5757\uff0c\u8981\u63a5\u6536\u84dd\u7259\u6570\u636e\uff0c\u53ef\u4ee5\u901a\u8fc7\u5916\u63a5HC-05\u84dd\u7259\u6a21\u5757\u89e3\u51b3\u3002<\/h6>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">HC-05===Arduino<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>RXD&lt;==&gt;TX<\/li><li>TXD&lt;==&gt;RX<\/li><li>VCC&lt;==&gt;5v<\/li><li>GND&lt;==&gt;GND<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h6 class=\"wp-block-heading\">\u6ce8\u610f\uff1aHC-05\u7684vcc\u4e00\u5b9a\u8981\u63a55v\uff0c\u5982\u679c\u63a53.3v\uff0c\u867d\u7136\u53ef\u4ee5\u4eae\u706f\u5de5\u4f5c\uff0c\u4f46\u662f\u63a5\u6536\u4e00\u6b21\u6570\u636e\u540e\u4f1a\u81ea\u52a8\u65ad\u5f00\u8fde\u63a5\uff0c<br>2.2 Arduino\u4e0e\u8235\u673a\u6a21\u5757\u7684\u8fde\u63a5<br>SG90 \u8235\u673a\u5bfc\u7ebf\u4e09\u79cd\u989c\u8272\uff0c\u542b\u4e49\u5206\u522b\u662f\uff1a<br>\u68d5\u8272\uff1aGND<br>\u7ea2\u8272\uff1aVCC<br>\u9ec4\u8272\uff1aDATA<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">\u8235\u673aSG90===Arduino<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>DATA&lt;==&gt;D9<\/li><li>VCC&lt;==&gt;5v<\/li><li>GND&lt;==&gt;GND<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e09\u3001Arduino\u63a7\u5236\u4ee3\u7801<br>\u521b\u5efa\u5de5\u7a0b\u70e7\u5f55\u5230Arduino\u5f00\u53d1\u677f\u4e2d\u5373\u53ef<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;Servo.h&gt;\nServo myservo;  \n\nvoid setup() {\n  mySerial.begin(9600); \/\/\u76d1\u542c\u8f6f\u4e32\u53e3\n  myservo.attach(9); \/\/\u8235\u673a\u63a7\u5236\n  myservo.write(0);\n\/\/  delay(10000); \n}\n\nvoid loop() {\n  while(Serial.available())\n  {\n    char c;\n    c = Serial.read();  \/\/\u8bfb\u53d6\u4e32\u53e3\u6570\u636e\n    Serial.println(c);\n    switch(c)\n    {\n      case '1':servo_init();\n      break;\n      case '2':open_the_door();\n      break;\n      case '3':close_the_door();\n    }\n  }\n\n}\n\n\nvoid open_the_door()  \/\/\u8235\u673a\u5f00\u95e8\n{\n  myservo.write(170);\n}\nvoid close_the_door()  \/\/\u8235\u673a\u5173\u95e8\n{\n  myservo.write(0);\n}\nvoid servo_init()  \/\/\u8235\u673a\u521d\u59cb\u5316\n{\n  myservo.write(10);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56db\u3001\u6811\u8393\u6d3e\u63a7\u5236\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from aip import AipFace\nfrom picamera import PiCamera\nimport urllib.request\nimport RPi.GPIO as GPIO\nimport base64\nimport time\nimport bluetooth\n\nfrom bluetooth_test import bt_open,servo_init,bt_close\n\n\n#\u767e\u5ea6\u4eba\u8138\u8bc6\u522bAPI\u8d26\u53f7\u4fe1\u606f\nAPP_ID = '18332624'\nAPI_KEY = '2QoqxCzAsZGT9k5CMeaIlPBs'\nSECRET_KEY ='9wOlqd4sPvLc7ZKtLxMlBVkcikXHZ4rz'\nclient = AipFace(APP_ID, API_KEY, SECRET_KEY)#\u521b\u5efa\u4e00\u4e2a\u5ba2\u6237\u7aef\u7528\u4ee5\u8bbf\u95ee\u767e\u5ea6\u4e91\n#\u56fe\u50cf\u7f16\u7801\u65b9\u5f0f\nIMAGE_TYPE='BASE64'\ncamera = PiCamera()#\u5b9a\u4e49\u4e00\u4e2a\u6444\u50cf\u5934\u5bf9\u8c61\n#\u7528\u6237\u7ec4\nGROUP = 'yusheng01'\n \n#\u7167\u76f8\u51fd\u6570\ndef getimage():\n    camera.resolution = (1024,768)#\u6444\u50cf\u754c\u9762\u4e3a1024*768\n    camera.start_preview()#\u5f00\u59cb\u6444\u50cf\n    time.sleep(2)\n    camera.capture('faceimage.jpg')#\u62cd\u7167\u5e76\u4fdd\u5b58\n    time.sleep(2)\n#\u5bf9\u56fe\u7247\u7684\u683c\u5f0f\u8fdb\u884c\u8f6c\u6362\ndef transimage():\n    f = open('faceimage.jpg','rb')\n    img = base64.b64encode(f.read())\n    return img\n#\u4e0a\u4f20\u5230\u767e\u5ea6api\u8fdb\u884c\u4eba\u8138\u68c0\u6d4b\ndef go_api(image):\n    result = client.search(str(image, 'utf-8'), IMAGE_TYPE, GROUP);#\u5728\u767e\u5ea6\u4e91\u4eba\u8138\u5e93\u4e2d\u5bfb\u627e\u6709\u6ca1\u6709\u5339\u914d\u7684\u4eba\u8138\n    if result&#91;'error_msg'] == 'SUCCESS':#\u5982\u679c\u6210\u529f\u4e86\n        name = result&#91;'result']&#91;'user_list']&#91;0]&#91;'user_id']#\u83b7\u53d6\u540d\u5b57\n        score = result&#91;'result']&#91;'user_list']&#91;0]&#91;'score']#\u83b7\u53d6\u76f8\u4f3c\u5ea6\n        if score &gt; 80:#\u5982\u679c\u76f8\u4f3c\u5ea6\u5927\u4e8e80\n            if name == 'yin_danli':\n                print(\"\u6b22\u8fce%s !\" % name)\n                time.sleep(1)\n            if name == 'danli':\n                print(\"\u6b22\u8fce%s !\" % name)\n                time.sleep(3)\n            if name == \"yusheng_02\":\n                print(\"\u6b22\u8fce%s !\" % name)\n                time.sleep(3)\n     \n        else:\n            print(\"\u5bf9\u4e0d\u8d77\uff0c\u6211\u4e0d\u8ba4\u8bc6\u4f60\uff01\")\n            name = 'Unknow'\n            return 0\n        curren_time = time.asctime(time.localtime(time.time()))#\u83b7\u53d6\u5f53\u524d\u65f6\u95f4\n \n        #\u5c06\u4eba\u5458\u51fa\u5165\u7684\u8bb0\u5f55\u4fdd\u5b58\u5230Log.txt\u4e2d\n        f = open('Log.txt','a')\n        f.write(\"Person: \" + name + \"     \" + \"Time:\" + str(curren_time)+'\\n')\n        f.close()\n        return 1\n    if result&#91;'error_msg'] == 'pic not has face':\n        print('\u68c0\u6d4b\u4e0d\u5230\u4eba\u8138')\n        time.sleep(3)\n        return -1\n    else:\n        print(result&#91;'error_code']+' ' + result&#91;'error_code'])\n        return 0\n#\u4e3b\u51fd\u6570\nif __name__ == '__main__':\n    servo_init()    #\u8235\u673a\u590d\u4f4d\uff0c\u521d\u59cb\u5316\u4e00\u6b21\u5c31\u591f\u4e86\n    while True:\n        \n        print('\u51c6\u5907\u5f00\u59cb\uff0c\u8bf7\u9762\u5411\u6444\u50cf\u5934 ^_^')\n\n        if True:\n            getimage()#\u62cd\u7167\n            img = transimage()  #\u8f6c\u6362\u7167\u7247\u683c\u5f0f\n            res = go_api(img)   #\u5c06\u8f6c\u6362\u4e86\u683c\u5f0f\u7684\u56fe\u7247\u4e0a\u4f20\u5230\u767e\u5ea6\u4e91\n            if(res == 1):   #\u662f\u4eba\u8138\u5e93\u4e2d\u7684\u4eba\n                bt_open()\n                print(\"\u6b22\u8fce\u56de\u5bb6\uff0c\u95e8\u5df2\u6253\u5f00\")\n            elif(res == -1):\n                print(\"\u6211\u6ca1\u6709\u770b\u89c1\u4f60,\u6211\u8981\u5173\u95e8\u4e86\")\n                time.sleep(3)\n                bt_close()    \n            else:\n                print(\"\u5173\u95e8\")\n                bt_close()\n            time.sleep(3)\n            print('\u597d\u4e86')\n            time.sleep(5)<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">\u6ce8\u610f\uff1a<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u7a0b\u5e8f\u540e\uff0c\u5982\u679c\u62a5\u9519<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bluetooth.btcommon.BluetoothError: [Errno 112] Host is down<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f60\u5219\u9700\u8981\u56de\u5230\u684c\u9762\u7aef\uff0c\u5c06\u6811\u8393\u6d3e\u4e0eHC-05\u91cd\u65b0\u914d\u5bf9\u4e00\u4e0b\uff0c\u518d\u8fd0\u884c\u4e00\u4e0b\u5c31\u597d\u4e86\u3002<br>\u6700\u540e<br>\u81f3\u6b64\uff0c\u5f53\u6211\u4eec\u8fd0\u884c\u8be5\u4ee3\u7801\uff0c\u628a\u8138\u51d1\u5230\u6444\u50cf\u5934\u524d\uff0c\u8235\u673a\u81ea\u52a8\u5f00\u95e8\uff0c\u628a\u8138\u79fb\u5f00\u5219\u8235\u673a\u81ea\u52a8\u5173\u95e8<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u9762\u5df2\u7ecf\u6210\u529f\u90e8\u7f72\u4e86\u6811\u8393\u6d3e\u4e0e\u767e\u5ea6\u8bc6\u522b\u7684\u9879\u76ee \u5982\u679c\u662f\u5177\u6709\u786c\u4ef6\u7684\u6811\u8393\u6d3e \u53ef\u4ee5\u642d\u914d Arduino UNO R3 HC [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,15,17],"tags":[],"class_list":["post-265","post","type-post","status-publish","format-standard","hentry","category-linux","category-15","category-17"],"_links":{"self":[{"href":"https:\/\/www.mikusss.com\/index.php?rest_route=\/wp\/v2\/posts\/265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mikusss.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mikusss.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mikusss.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mikusss.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=265"}],"version-history":[{"count":2,"href":"https:\/\/www.mikusss.com\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":271,"href":"https:\/\/www.mikusss.com\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions\/271"}],"wp:attachment":[{"href":"https:\/\/www.mikusss.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikusss.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikusss.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}