4954浏览
查看: 4954|回复: 0

[教程] 【智控万物】物联网大麦

[复制链接]
本帖最后由 云天 于 2021-8-4 19:25 编辑

【智控万物】物联网大麦图1


【项目意图】
使用Mind+Python模式下,利用tkinter库,Easy Iot物联网,在窗口界面中利用按钮对大麦进行控制。
【软件】
Mind+Python模式
Mind+最近更新了V1.7.1 RC1.0版本。增加内置扩展库:MQTT、Pygame;我本次使用了这个MQTT。
Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

【智控万物】物联网大麦图2


【硬件】
1、麦昆Plus
【智控万物】物联网大麦图3


[麦昆 Plus]【试用测评】麦昆Plus与麦昆 精华
2、WIFI IoT模块
用极简的方式连接物联网平台与硬件
【智控万物】物联网大麦图4

【Python代码】
有相应代码注释
  1. #  -*- coding: UTF-8 -*-
  2. # MindPlus
  3. # Python
  4. import siot
  5. import tkinter as tk
  6. from tkinter import *
  7. from PIL import Image, ImageTk#图像控件
  8. #连接物联网
  9. siot.init(client_id="sxs12345678",server="iot.dfrobot.com.cn",port=1883,user="RNZYsQuIWh",password="gHWuLsiwIoWgz")
  10. siot.connect()
  11. siot.loop()
  12. #定义函数,向物联网发送相应控制指令
  13. def forward():#前进
  14.     siot.publish(topic="5n92uqBMg", data="A")
  15. def back():#后退
  16.     siot.publish(topic="5n92uqBMg", data="B")
  17. def left():#左转
  18.     siot.publish(topic="5n92uqBMg", data="C")
  19. def right():#右转
  20.     siot.publish(topic="5n92uqBMg", data="D")
  21. def stop():#停止
  22.     siot.publish(topic="5n92uqBMg", data="E")
  23. def open_s():#张开
  24.     siot.publish(topic="5n92uqBMg", data="F")
  25. def stop_s():#闭合
  26.     siot.publish(topic="5n92uqBMg", data="G")
  27. def light_open():#双闪开
  28.     siot.publish(topic="5n92uqBMg", data="H")
  29. def light_close():#双闪关
  30.     siot.publish(topic="5n92uqBMg", data="I")
  31. #生成窗体,布置相应文本框和按钮
  32. top = tk.Tk()
  33. top.title('控制窗口')
  34. top.geometry('900x600')
  35. image_width = 900
  36. image_height = 600
  37. canvas = Canvas(top,bg = 'white',width = image_width,height = image_height )#绘制画布
  38. img = Image.open('bg.jpg')
  39. bg = ImageTk.PhotoImage(img)
  40. bgid = canvas.create_image(0, 0, image=bg, anchor='nw')
  41. canvas.place(x = 0,y = 0)
  42. #产生标签文本背景透明效果
  43. txtid=canvas.create_text(350,20, fill = 'red',font=("黑体", 35),anchor="nw")
  44. canvas.insert(txtid,1,"物联网大麦")
  45. #Label(top,text = '物联网大麦!',font = ("黑体",14),width =15,height = 1).place(x =400,y = 20,anchor = 'nw')
  46. E1 = Entry(top, bd =5)
  47. E1.pack(side = RIGHT)
  48. E1.place(x=100,y=100)
  49. wx=20
  50. hy=200
  51. def setV():#设置车速
  52.     siot.publish(topic="dH6_dBZ7g", data=str(E1.get()))
  53. #生成按钮,并指定相应功能
  54. left = tk.Button(top,text='左转',height=2,width=15,command=left)
  55. left.place(x=wx,y=hy+100)
  56. forward = tk.Button(top,text='前进',height=2,width=15,command=forward)
  57. forward.place(x=wx+150,y=hy)
  58. right = tk.Button(top,text='右转',height=2,width=15,command=right)
  59. right.place(x=wx+300,y=hy+100)
  60. back = tk.Button(top,text='后退',height=2,width=15,command=back)
  61. back.place(x=wx+150,y=hy+200)
  62. stop = tk.Button(top,text='停止',height=2,width=15,command=stop)
  63. stop.place(x=wx+150,y=hy+100)
  64. wx=450
  65. hy=200
  66. open_s = tk.Button(top,text='张开',height=2,width=15,command=open_s)
  67. open_s.place(x=wx+150,y=hy)
  68. stop_s = tk.Button(top,text='闭合',height=2,width=15,command=stop_s)
  69. stop_s.place(x=wx+150,y=hy+200)
  70. light_open = tk.Button(top,text='闪开',height=2,width=15,command=light_open)
  71. light_open.place(x=wx,y=hy+100)
  72. light_close = tk.Button(top,text='闪关',height=2,width=15,command=light_close)
  73. light_close.place(x=wx+300,y=hy+100)
  74. setV = tk.Button(top,text='设速',height=2,width=15,command=setV)
  75. setV.place(x=wx+150,y=hy+100)
  76. while True:
  77.   top.update()
  78.   top.after(100)
  79. top.mainloop()  
复制代码

micro:bit
上传到大麦上Microbit程序代码。


【智控万物】物联网大麦图5


Arduino C 代码(功能同上)
  1. /*!
  2. * MindPlus
  3. * microbit
  4. *
  5. */
  6. #include <DFRobot_Obloq_I2C.h>
  7. #include <DFRobot_MaqueenPlus.h>
  8. // 动态变量
  9. String         mind_s_MingLing;
  10. volatile float mind_n_CheSu, mind_n_ShuangShan;
  11. // 函数声明
  12. void obloqMqttEventT0(String& obloq_message);
  13. void obloqMqttEventT1(String& obloq_message);
  14. // 静态常量
  15. const String topics[5] = {"5n92uqBMg","dH6_dBZ7g","","",""};
  16. const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,obloqMqttEventT1,NULL,NULL,NULL};
  17. // 创建对象
  18. DFRobot_Obloq_I2C   olq;
  19. DFRobot_MaqueenPlus maqueenPlus;
  20. // 主程序开始
  21. void setup() {
  22.         olq.registerMqttHandle(msgHandles);
  23.         olq.startConnect("sxs", "*******", "ReNZYsrQIWg", "gHrWLfgswIhWgz", topics, "iot.dfrobot.com.cn", 1883);
  24.         maqueenPlus.writePid(maqueenPlus.ON);
  25.         maqueenPlus.servoRun(maqueenPlus.S3, 110);
  26.         mind_n_CheSu = 30;
  27.         mind_n_ShuangShan = 0;
  28.         Serial.begin(9600);
  29. }
  30. void loop() {
  31.         if ((mind_n_ShuangShan==1)) {
  32.                 maqueenPlus.setRGB(maqueenPlus.ALL, maqueenPlus.RED);
  33.                 delay(500);
  34.                 maqueenPlus.setRGB(maqueenPlus.ALL, maqueenPlus.PUT);
  35.                 delay(500);
  36.         }
  37. }
  38. // 事件回调函数
  39. void obloqMqttEventT0(String& obloq_message) {
  40.         mind_s_MingLing = obloq_message;
  41.         Serial.println(mind_s_MingLing);
  42.         if ((mind_s_MingLing==String("A"))) {
  43.                 maqueenPlus.motorRun(maqueenPlus.ALL, maqueenPlus.CW, mind_n_CheSu);
  44.                 maqueenPlus.setRGB(maqueenPlus.ALL, maqueenPlus.PUT);
  45.         }
  46.         if ((mind_s_MingLing==String("B"))) {
  47.                 maqueenPlus.motorRun(maqueenPlus.ALL, maqueenPlus.CCW, mind_n_CheSu);
  48.                 maqueenPlus.setRGB(maqueenPlus.ALL, maqueenPlus.RED);
  49.         }
  50.         if ((mind_s_MingLing==String("C"))) {
  51.                 maqueenPlus.motorStop(maqueenPlus.LEFT);
  52.                 maqueenPlus.motorRun(maqueenPlus.RIGHT, maqueenPlus.CW, mind_n_CheSu);
  53.                 maqueenPlus.setRGB(maqueenPlus.LEFT, maqueenPlus.RED);
  54.                 maqueenPlus.setRGB(maqueenPlus.RIGHT, maqueenPlus.PUT);
  55.         }
  56.         if ((mind_s_MingLing==String("D"))) {
  57.                 maqueenPlus.motorStop(maqueenPlus.RIGHT);
  58.                 maqueenPlus.motorRun(maqueenPlus.LEFT, maqueenPlus.CW, mind_n_CheSu);
  59.                 maqueenPlus.setRGB(maqueenPlus.RIGHT, maqueenPlus.RED);
  60.                 maqueenPlus.setRGB(maqueenPlus.LEFT, maqueenPlus.PUT);
  61.         }
  62.         if ((mind_s_MingLing==String("E"))) {
  63.                 maqueenPlus.motorStop(maqueenPlus.ALL);
  64.                 maqueenPlus.setRGB(maqueenPlus.ALL, maqueenPlus.PUT);
  65.         }
  66.         if ((mind_s_MingLing==String("F"))) {
  67.                 maqueenPlus.servoRun(maqueenPlus.S3, 50);
  68.         }
  69.         if ((mind_s_MingLing==String("G"))) {
  70.                 maqueenPlus.servoRun(maqueenPlus.S3, 110);
  71.         }
  72.         if ((mind_s_MingLing==String("H"))) {
  73.                 mind_n_ShuangShan = 1;
  74.         }
  75.         if ((mind_s_MingLing==String("I"))) {
  76.                 mind_n_ShuangShan = 0;
  77.         }
  78. }
  79. void obloqMqttEventT1(String& obloq_message) {
  80.         mind_n_CheSu = (String(obloq_message).toInt());
  81. }
复制代码




【演示视频】

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail