資料介紹
描述
使用 Python 控制物聯(lián)網(wǎng)項(xiàng)目的伺服電機(jī)
在最近的一篇文章中,我們看到了如何使用 Python 和 JQWidgets 通過(guò)移動(dòng)設(shè)備控制 Adafruit NeoPixel 環(huán)。
讓我們做一些類(lèi)似的事情,但使用另一個(gè)非常流行的“執(zhí)行器”:伺服電機(jī),即用于精確控制角位置的旋轉(zhuǎn)執(zhí)行器。
我們將使用?Zerynth Studio?在 Python 中對(duì)基于微控制器的板進(jìn)行編程,并?使用 Zerynth App?來(lái)運(yùn)行基于 JQWidget 的圖形用戶(hù)界面。
所需材料
- 首先,你需要一塊板子。您可以選擇?Zerynth 支持的 32 位微控制器設(shè)備之一。我們選擇了Mikroelektronika 的Flip&Click,它搭載了Microchip的流行 MCU SAM3X 。
- 您還需要一個(gè)允許您將電路板連接到互聯(lián)網(wǎng)的元素。我們選擇了Mikrolektronika的WiFi 4 Click
- 您還需要一個(gè)伺服電機(jī):我們選擇了非常受歡迎的 TowerPro SG90。
最后但并非最不重要的一點(diǎn)是,您需要:
- Zerynth Studio ,一個(gè)功能強(qiáng)大的 IDE,用于在 Python 中進(jìn)行嵌入式編程,支持物聯(lián)網(wǎng)。你可以?在這里下載。
- Zerynth 應(yīng)用程序。你可以?在這里下載。
組裝
只需將WiFi 4 Click 到 Flip&Click 的插槽“A”?并連接伺服如下:
- 伺服的棕色線(xiàn)到 Flip&Click 的 GND 引腳
- 伺服的橙色線(xiàn)到 Flip&Click 的 3.3V 引腳
- 伺服器的黃線(xiàn)連接到 Flip&Click 的 PWM 引腳(例如 D2)
編程
安裝 Zerynth Studio?并?創(chuàng)建 Zerynth 用戶(hù)后,您?必須注冊(cè)并虛擬化開(kāi)發(fā)板。查看?Particle Photon 的 Zerynth 官方文檔以?快速入門(mén)。
現(xiàn)在您可以開(kāi)始用?Python對(duì)您的電路板進(jìn)行編程了!
創(chuàng)建一個(gè)新項(xiàng)目?并編輯?main.py?文件如下:
通過(guò) Zerynth App 控制舵機(jī):
# 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名稱(chēng)和密碼。
對(duì)比上面提到的項(xiàng)目的腳本可以看到,邏輯是一樣的,代碼也很相似。只是一些不同之處:
- 在這種情況下,我們使用了不同的 wifi 驅(qū)動(dòng)程序,因此您必須導(dǎo)入SPWF01SA 模塊而不是 BCM43362 模塊來(lái)進(jìn)行 WiFi 連接。
- 當(dāng)然,您必須導(dǎo)入和設(shè)置Servo 庫(kù)而不是 Neopixel 庫(kù)。
- 然后,您必須定義一個(gè)函數(shù),根據(jù) Zerynth App 發(fā)送的數(shù)據(jù)設(shè)置伺服的度數(shù)。所以你必須定義一個(gè)函數(shù)“ set_degree ”而不是之前項(xiàng)目的函數(shù)“ set_color ”。
其余代碼幾乎保持不變。容易吧?感謝我們的Zerynth 虛擬機(jī)及其硬件抽象層功能。
只需再走一步,您就完成了!
在這個(gè)項(xiàng)目中,您也必須創(chuàng)建一個(gè)“已連接設(shè)備”并將“zerynthapp”實(shí)例鏈接到它。然后,您必須創(chuàng)建模板并將其鏈接到連接的設(shè)備。請(qǐng)查看本教程的“創(chuàng)建和設(shè)置連接的設(shè)備”和“創(chuàng)建、上傳和設(shè)置模板”步驟以??了解更多詳細(xì)信息。
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 的通道。每次移動(dòng)旋鈕時(shí),Z.call 函數(shù)都會(huì)將值發(fā)送到設(shè)備,并將其用作相應(yīng) Python 函數(shù)的參數(shù)。
此時(shí),您可以?將項(xiàng)目上傳到您的設(shè)備。
最后,正如您在?這個(gè)非常簡(jiǎn)短的教程中所讀到的,您只需打開(kāi) Zerynth 應(yīng)用程序,登錄并選擇特定設(shè)備即可查看您的 GUI。
使用 Zerynth Studio PRO 啟用固件無(wú)線(xiàn) (FOTA) 更新
一旦你構(gòu)建了你的智能項(xiàng)目,你就不想拆開(kāi)所有東西來(lái)升級(jí)固件。
為了滿(mǎn)足這一規(guī)范,Zerynth在Zerynth Studio PRO版本中包含了“ Firmware Over-the-Air ”功能??,該功能還包括工業(yè)級(jí)功能,例如:
- 可選擇的實(shí)時(shí)操作系統(tǒng)
- 省電
- 硬件驅(qū)動(dòng)的安全固件以工業(yè)量在設(shè)備上燒錄
- …以及更多
?
- 通過(guò)物聯(lián)網(wǎng)控制伺服電機(jī)
- 基于Arduino UNO的手勢(shì)控制伺服電機(jī) 0次下載
- 使用Python進(jìn)行伺服PWM控制的MaaxBoard設(shè)置
- 通過(guò)互聯(lián)網(wǎng)控制伺服電機(jī)
- 電機(jī)伺服項(xiàng)目開(kāi)源
- 三菱PLC編程實(shí)例項(xiàng)目例程-伺服電機(jī)控制 41次下載
- 基于矢量控制的永磁同步交流伺服電機(jī)控制系統(tǒng)程序
- 交流伺服電機(jī)的單片機(jī)控制及其應(yīng)用.
- 電機(jī)伺服控制的PCB原理圖免費(fèi)下載 85次下載
- PLC控制伺服電機(jī)學(xué)習(xí)資料pdf下載 56次下載
- PLC控制伺服電機(jī)應(yīng)用實(shí)例 67次下載
- 交流伺服電機(jī)的模糊PID控制及GUI設(shè)計(jì) 26次下載
- 控制三菱伺服電機(jī)的具體程序設(shè)計(jì) 472次下載
- 機(jī)電控制中伺服電機(jī)的作用
- IT項(xiàng)目的質(zhì)量控制 0次下載
- 伺服電機(jī)矢量控制原理詳解 1127次閱讀
- 交流伺服電機(jī)與直流伺服電機(jī)的區(qū)別 1377次閱讀
- 淺談伺服電機(jī)的控制模式 1627次閱讀
- 總線(xiàn)伺服電機(jī)的回零控制方法 3718次閱讀
- 基于CAN總線(xiàn)的伺服電機(jī)通信控制 7194次閱讀
- PLC使用脈沖方式控制伺服電機(jī) 1.8w次閱讀
- 伺服電機(jī)的兩種控制模式 1.7w次閱讀
- 運(yùn)動(dòng)控制器控制伺服電機(jī)采用的指令和伺服電機(jī)調(diào)試的6個(gè)步驟說(shuō)明 1.1w次閱讀
- 什么是伺服電機(jī)? 伺服電機(jī)詳解 19.2w次閱讀
- PLC如何控制伺服電機(jī) 8238次閱讀
- PLC在伺服電機(jī)中的應(yīng)用 6184次閱讀
- 一般的伺服電機(jī)多少錢(qián)_松下伺服電機(jī)價(jià)格 5.5w次閱讀
- 【PPT教程】伺服電機(jī)及其控制原理詳解 3.7w次閱讀
- 伺服電機(jī)控制能否代替步進(jìn)電機(jī)控制,交流伺服電機(jī)與步進(jìn)電機(jī)的區(qū)別差異 3850次閱讀
- 直流伺服電機(jī)調(diào)速控制系統(tǒng)解析,直流伺服電機(jī)的調(diào)速控制方式 8276次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費(fèi)下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機(jī)控制開(kāi)發(fā)板用戶(hù)指南
- 5.78MB | 8次下載 | 免費(fèi)
- 5STC15系列常用寄存器匯總免費(fèi)下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實(shí)現(xiàn)
- 2.94MB | 4次下載 | 免費(fèi)
- 7PCB圖繪制實(shí)例操作
- 2.92MB | 2次下載 | 免費(fèi)
- 8零死角玩轉(zhuǎn)STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費(fèi)
- 2免費(fèi)開(kāi)源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 137次下載 | 免費(fèi)
- 4A7159和A7139射頻芯片的資料免費(fèi)下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測(cè)試電源的紋波
- 0.36 MB | 19次下載 | 免費(fèi)
- 7PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車(chē)電子電器零部件及子系統(tǒng)EMC試驗(yàn)方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論
查看更多