電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用Python控制物聯(lián)網(wǎng)項目的伺服電機

使用Python控制物聯(lián)網(wǎng)項目的伺服電機

2022-11-10 | zip | 0.08 MB | 次下載 | 2積分

資料介紹

描述

使用 Python 控制物聯(lián)網(wǎng)項目的伺服電機

在最近的一篇文章中,我們看到了如何使用 Python 和 JQWidgets 通過移動設(shè)備控制 Adafruit NeoPixel 環(huán)。

讓我們做一些類似的事情,但使用另一個非常流行的“執(zhí)行器”:伺服電機,即用于精確控制角位置的旋轉(zhuǎn)執(zhí)行器。

我們將使用?Zerynth Studio?在 Python 中對基于微控制器的板進行編程,并?使用 Zerynth App?來運行基于 JQWidget 的圖形用戶界面。

所需材料

  • 您還需要一個允許您將電路板連接到互聯(lián)網(wǎng)的元素。我們選擇了Mikrolektronika的WiFi 4 Click

最后但并非最不重要的一點是,您需要:

組裝

只需將WiFi 4 Click 到 Flip&Click 的插槽“A”?并連接伺服如下:

  • 伺服的棕色線到 Flip&Click 的 GND 引腳
  • 伺服的橙色線到 Flip&Click 的 3.3V 引腳
  • 伺服器的黃線連接到 Flip&Click 的 PWM 引腳(例如 D2)
?
pYYBAGNsVhOAH_upAAAvULXNYyM945.png
?

編程

安裝 Zerynth Studio?并?創(chuàng)建 Zerynth 用戶后,您?必須注冊并虛擬化開發(fā)板。查看?Particle Photon 的 Zerynth 官方文檔以?快速入門。

現(xiàn)在您可以開始用?Python對您的電路板進行編程了!

創(chuàng)建一個新項目?并編輯?main.py?文件如下:

通過 Zerynth App 控制舵機:

# Control Servo via Zerynth App
?
from wireless import wifi
?
# change the following line to use a different wifi driver
from stm.spwf01sa import spwf01sa as wifi_driver
?
from servo import servo
?
import streams
?
# Import the Zerynth APP library
from zerynthapp import zerynthapp
?
# connect the Servo to the pin D2
MyServo=servo.Servo(D2.PWM)
?
streams.serial()
?
degree = 0
?
sleep(1000)
print("STARTING...")
?
try:
????# Device UID and TOKEN can be created in the ADM panel
????zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN")
????wifi_driver.init(SERIAL1, D16) # WiFi Click on slot????
????
????for i in range(0,5):
????????try:
?????????? # connect to the wifi network (Set your SSID and password below)
????????????wifi.link("SSID",wifi.WIFI_WPA2,"PASSWORD")
????????????break
????????except Exception as e:
????????????print("Can't link",e)
????else:
????????print("Impossible to link!")
????????while True:
????????????sleep(1000)
?
????# Start the Zerynth app instance!
????# Remember to create a template with the files under the "template" folder you just cloned
????# upload it to the ADM and associate it with the connected device
????zapp.run()
?
????def set_degree(d):
????????global degree
????????degree = d
????????MyServo.moveToDegree(degree)
????zapp.on("set_degree", set_degree)
????
????while True:
????????sleep(50)?? 
????????print("degree: ", degree)
?
except Exception as e:
????print(e)

當(dāng)然,您必須編輯您要連接板子的wifi網(wǎng)絡(luò)的SSID名稱和密碼。

對比上面提到的項目的腳本可以看到,邏輯是一樣的,代碼也很相似。只是一些不同之處:

  • 在這種情況下,我們使用了不同的 wifi 驅(qū)動程序,因此您必須導(dǎo)入SPWF01SA 模塊而不是 BCM43362 模塊來進行 WiFi 連接。
  • 當(dāng)然,您必須導(dǎo)入和設(shè)置Servo 庫而不是 Neopixel 庫。
  • 然后,您必須定義一個函數(shù),根據(jù) Zerynth App 發(fā)送的數(shù)據(jù)設(shè)置伺服的度數(shù)。所以你必須定義一個函數(shù)“ set_degree ”而不是之前項目的函數(shù)“ set_color ”。

其余代碼幾乎保持不變。容易吧?感謝我們的Zerynth 虛擬機及其硬件抽象層功能。

只需再走一步,您就完成了!

在這個項目中,您也必須創(chuàng)建一個“已連接設(shè)備”并將“zerynthapp”實例鏈接到它。然后,您必須創(chuàng)建模板并將其鏈接到連接的設(shè)備。請查看教程的“創(chuàng)建和設(shè)置連接的設(shè)備”和“創(chuàng)建、上傳和設(shè)置模板”步驟以??了解更多詳細信息。

index.html?文件應(yīng)如下所示:?

<html>
????<head>
????????<meta charset="utf-8">
????????<meta http-equiv="X-UA-Compatible" content="IE=edge">
????????<meta name="viewport" content="width=device-width, initial-scale=1">
????????
????????<title>Zerynthtitle>
????????
????????<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">script>
????????<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
????????<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
????????<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous">script>
????????
????????<script src="https://api.zerynth.com/zadm/latest/z.js">script> 
????????
????????<link rel="stylesheet" href="https://jqwidgets.com/public/jqwidgets/styles/jqx.base.css" type="text/css" />
????????<script src="https://jqwidgets.com/public/jqwidgets/jqx-all.js">script>
????????<script type="text/javascript" src="https://www.jqwidgets.com/public/jqwidgets/jqxcore.js">script>
????head>????????
????<body>
????????<div style="text-align:center">
????????????<p id="status" style="background:#ddd;font-weight:bold">p>
????????????<h1>Set Degreeh1>
????????div>
????????<div id='jqxKnob' style="width: 150px; height: 150px; position: relative; left: 30; top:30">
????????div>
????????<script>
???????????? $(document).ready(function () {
????????????????$('#jqxKnob').jqxKnob({
????????????????????width: 300,
????????????????????value: 0,
????????????????????min: 0,
????????????????????max: 180,
????????????????????startAngle: 0,
????????????????????endAngle: 180,
????????????????????snapToStep: true,
????????????????????rotation: 'counterclockwise',
????????????????????style: { stroke: '#dfe3e9', strokeWidth: 3, fill: { color: '#fefefe', gradientType: "linear", gradientStops: [[0, 1], [50, 0.9], [100, 1]] } },
????????????????????marks: {
????????????????????????colorRemaining: { color: 'grey', border: 'grey' },
????????????????????????colorProgress: { color: '#00a4e1', border: '#00a4e1' },
????????????????????????type: 'line',
????????????????????????offset: '71%',
????????????????????????thickness: 3,
????????????????????????size: '6%',
????????????????????????majorSize: '9%',
????????????????????????majorInterval: 10,
????????????????????????minorInterval: 2
????????????????????},
????????????????????labels: {
????????????????????????offset: '88%',
????????????????????????step: 30,
????????????????????????visible: true
????????????????????},
????????????????????progressBar: {
????????????????????????style: { fill: '#00a4e1', stroke: 'grey' },
????????????????????????size: '9%',
????????????????????????offset: '60%',
????????????????????????background: { fill: 'grey', stroke: 'grey' }
????????????????????},
????????????????????pointer: { type: 'arrow', style: { fill: '#00a4e1', stroke: 'grey' }, size: '59%', offset: '49%', thickness: 20 }
????????????????});
????????????????$('#jqxKnob').jqxKnob({allowValueChangeOnDrag: false });
????????????????$('#jqxKnob').jqxKnob({allowValueChangeOnMouseWheel: false });
????????????????$('#jqxKnob').on('change', function (event) {
????????????????????Z.call('set_degree', [event.args.value]); 
????????????????});
?
????????????????// initialize the Z object
????????????????Z.init({
????????????????????on_connected:??function(){$("#status").html("CONNECTED")},
????????????????????on_error:??function(){$("#status").html("ERROR")},
????????????????????on_disconnected:??function(){$("#status").html("DISCONNECTED"); return true},
????????????????????on_online:??function(evt){$("#status").html("ONLINE");},
????????????????????on_offline:??function(evt){$("#status").html("OFFLINE");},
????????????????????on_event:??function(evt){
????????????????????????//display received event; 
????????????????????}
??????????????????})
????????????});
???????? 
????????script>
????????
????body>
html>

在本例中,我們使用了JQWidgets集合的jqxKnob ”元素這段代碼的主要部分是:

$('#jqxKnob').on('change', function (event) {
??Z.call('set_degree', [event.args.value]); 
});

Z.call?函數(shù)是從 Javascript 到 Python 的通道。每次移動旋鈕時,Z.call 函數(shù)都會將值發(fā)送到設(shè)備,并將其用作相應(yīng) Python 函數(shù)的參數(shù)。

此時,您可以?將項目上傳到您的設(shè)備。

最后,正如您在?這個非常簡短的教程中所讀到的,您只需打開 Zerynth 應(yīng)用程序,登錄并選擇特定設(shè)備即可查看您的 GUI。

?
poYBAGNsVhaAbEmBAADIWeuApCY196.png
?

使用 Zerynth Studio PRO 啟用固件無線 (FOTA) 更新

一旦你構(gòu)建了你的智能項目,你就不想拆開所有東西來升級固件。

為了滿足這一規(guī)范,Zerynth在Zerynth Studio PRO版本中包含了“ Firmware Over-the-Air ”功能??,該功能還包括工業(yè)級功能,例如:

  • 可選擇的實時操作系統(tǒng)
  • 省電
  • 硬件驅(qū)動的安全固件以工業(yè)量在設(shè)備上燒錄
  • …以及更多

?


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  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元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  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十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費