掃地機器人是現在家庭中最常見的智能家居,因為它小巧便宜且好用,廣受用戶好評。可以說是懶人必備單品了~幾乎每家每戶都少不了一臺掃地機器人。
本篇文章將說明在樹莓派上模擬運行一個陀螺儀掃地機的設備并連接涂鴉云。同事看了都羨慕系列,到底怎么輕松實現呢?來看看吧~
步驟如下
//涂鴉陀螺儀地圖傳輸協議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文章
28468瀏覽量
207358 -
掃地機
+關注
關注
0文章
60瀏覽量
5210
發布評論請先 登錄
相關推薦
評論