扫地机器人是现在家庭中最常见的智能家居,因为它小巧便宜且好用,广受用户好评。可以说是懒人必备单品了~几乎每家每户都少不了一台扫地机器人。
本篇文章将说明在树莓派上模拟运行一个陀螺仪扫地机的设备并连接涂鸦云。同事看了都羡慕系列,到底怎么轻松实现呢?来看看吧~
步骤如下
//涂鸦陀螺仪地图传输协议typedefstruct{ uint8_tx;uint8_ty;uint8_ttype; }ST_POT;/*坐标点类型*/enumenum_point_type { point_type_current=0x00,//当前点 point_type_barrier,//障碍点 point_type_cleaned,//已清扫点 point_type_charge,//充电桩};
第 3 步:涂鸦陀螺仪扫地机公版面板
2号 3号面板没有用到电源开关power功能点,创建产品时请删除
第 4 步:开发准备
产品创建
硬件准备
树莓派采用 Raspberry Pi 3 Model B
硬件配置
调试方法
tuya@E480:~$sshroot@192.168.56.107root@192.168.56.107'spassword:Lastlogin:ThuOct2418:47:172019from192.168.56.100root@RasPi:~#
确认无线网卡支持的配网模式
root@RasPi:~#iwlist Wiphyphy0Supportedinterfacemodes:无线网卡支持的工作模式*IBSS*managedstation客户端模式*AP无线接入点模式,这里可用于开发tuyasdk的ap配网*P2P-client*P2P-GO*P2P-device......省略其他信息
如上配置,这个网卡不支持sniffer模式,无法开发SmartConfig配网模式
第 5 步:基本实现思路
第 6 步:软件开发说明
第 7 步:关键代码说明
设置网卡工作模式
//设置当前WIFI工作模式OPERATE_REThwl_wf_wk_mode_set(INCONSTWF_WK_MD_Emode){#ifdefined(USE_RASPI) switch(mode){caseWWM_STATION:{ sys_shell("ifconfig%sdown",WLAN_DEV); sys_shell("iwconfig%smodeManaged",WLAN_DEV); sys_shell("ifconfig%sup",WLAN_DEV); }break;caseWWM_SOFTAP:{//handleinhwl_wf_ap_start() break; }caseWWM_STATIONAP:break;default:break; }#endif returnOPRT_OK; }
开启无线网卡热点
//AP配网模式下开启热点OPERATE_REThwl_wf_ap_start(INCONSTWF_AP_CFG_IF_S*cfg) {PR_DEBUG("StartAPSSID:%s",cfg->ssid);#ifdefined(USE_RASPI)sys_shell("ifconfig"WLAN_DEV""DEFAULT_IP_ADDR);sys_shell("iwconfig%smodeManaged",WLAN_DEV); kill_process("hostapd");kill_process("udhcpd");kill_process("wpa_supplicant");sys_shell("hostapd-B"HOSTAPD_CONF);sys_shell("udhcpd-f"UDHCPD_CONF"&");#endif returnOPRT_OK; }
关闭无线网卡热点
//AP配网模式下停止热点OPERATE_REThwl_wf_ap_stop(VOID) {PR_DEBUG("StopApMode");#ifdefined(USE_RASPI)kill_process("hostapd");kill_process("udhcpd");#endif returnOPRT_OK; }
连接路由器
//使用指定SSID和PASSWD连接WIFIOPERATE_REThwl_wf_station_connect(INCONSTCHAR_T*ssid,INCONSTCHAR_T*passwd) {PR_DEBUG("STAConAPssid:%spasswd:%s",ssid,passwd);#ifdefined(USE_RASPI)//UserTODO sys_shell("sed-i'/ssid/c\\ssid="%s"'"WPA_SUPPLICANT_CONF,ssid);sys_shell("sed-i'/psk/c\\psk="%s"'"WPA_SUPPLICANT_CONF,passwd);//sys_shell("wpa_supplicant-Dnone-B-i"WLAN_DEV"-c"WPA_SUPPLICANT_CONF);//加Dnone不可行 sys_shell("wpa_supplicant-B-i"WLAN_DEV"-c"WPA_SUPPLICANT_CONF);sys_shell("udhcpc-i"WLAN_DEV);//sys_shell("dhclient"""WLAN_DEV);#endif returnOPRT_OK; }
获取当前WIFI联网状态
OPERATE_REThwl_wf_station_stat_get(OUTWF_STATION_STAT_E*stat){#ifdefined(USE_RASPI) //UserTODO NW_IP_Scurrent_ip;//上一次获取的ip memset(¤t_ip,0,sizeof(current_ip)); hwl_wf_get_ip(WF_STATION,¤t_ip);if(strcmp(current_ip.ip,DEFAULT_IP_ADDR)){ *stat=WSS_GOT_IP; }else{ *stat=WSS_CONN_FAIL; }#else *stat=WSS_GOT_IP;#endif returnOPRT_OK; }
心动不如行动系列:
auth.tuya.com/register?from=http%3A%2F%2Fiot.tuya.com%2F&_source=e74d60a1928993e1892f7e5efbaa5467
-
第 1 步:陀螺仪扫地机原理简述
-
第 2 步:涂鸦陀螺仪扫地机传输协议
-
如下,从左到右边依次是 1号面板 2号面板 3号面板
-
参考 选品类创建产品 创建一款扫地机产品,如下箭头所指为PID,为代码中的PRODUCT_KEY宏
-
ubuntu虚拟机开发环境搭建
-
1GB RAM
-
BCM43438 wireless LAN,开发配网,连接到涂鸦云
-
Bluetooth Low Energy (BLE) on board
-
100 Base Ethernet,用于ssh登录开发板调试用
-
为方便,直接在ubuntu虚拟机的Terminal通过ssh登录到树莓派开发板上调试。
-
操作方法:树莓派网口和路由器的lan口相连,登录路由器获取树莓派ip地址,我这里为192.168.56.107;ubuntu虚拟机网络设置为桥接模式,PC主机和树莓派连接到同一路由器下
-
小贴士:无线网
-
iw list命令可以查看linux系统设备下无线网卡详细信息
-
这里不是一个真实的扫地机,从涂鸦云导出真实扫地机设备行走产生的地图坐标数据保存到磁盘文件
-
代码里新增一个线程负责从文件定时读取数据上报涂鸦云,以在APP上展现机器行走的效果,如下
-
陀螺仪扫地机为wifi单品开发,参考TUYA_IOT_SDK说明
-
demo源码获取
-
demo功能说明支持AP配网模式支持涂鸦陀螺仪三种陀螺仪面板支持设备OTA编译时可选是运行在ubuntu设备上还是树莓派
-
代码位置:src/gyro_wifi_dev/tuya_iot_wifi_net.c
审核编辑:符乾江
-
机器人
+关注
关注
211文章
28521浏览量
207530 -
扫地机
+关注
关注
0文章
60浏览量
5215
发布评论请先 登录
相关推荐
评论