物聯網主要的技術難題在於,跨度。所謂隔行如隔山,一旦涉及多個技術領域勢必難題重重。linux
我我的2014年開始工做,就一直處在其中。屬於設備端研發人員。c++
先說說跨度範圍,而後看坑。服務器
設備--網絡--服務器--網絡--用戶網絡
1、設備:tcp
1)硬件:函數
外殼:工具
外殼設計問題:本身設計(須要3D繪圖的技術人員) 或者 外包合做(溝通問題)。 外殼demo通常是CNC(數控機牀)雕刻尼龍材料,而後表面處理。學習
外殼生產問題:典型表明,塑料注塑。 開模費用高(幾萬到幾十萬),後期生產成本低(一兩塊錢一個)。 開模週期長,45天出模具,修修補補2個月最快。修改模具設計等於重開。測試
代工問題: 純商業問題,不描述。ui
電路:
原理圖,PCB打樣,驗證。 你須要專業的 硬件設計人員。
電源問題:電源問題單獨博客說明。單片機硬件目錄下(若是沒有說明還沒寫 哈哈)。
通信方式:無線(你須要無線方面的合做資源,射頻用的工具太貴,不太可能本身弄。頻譜儀/網絡分析儀 一套大概50萬元)。
PCB相關:週期長,有修改 最快一週出結果。慢的無上限。
PCB 驗證、認證:可靠性,抗干擾能力等能不能符合使用環境?。 認證方面:CCC,高低溫,靜電,雷擊等一系列都是燒錢的,時間也長 一個月搞不下來。(醫療行業是最難過認證的)。
生產: 物料採購,物料管理 -- 物料種類超多。 目前(2018年),剛經歷了電容超級漲價,電阻漲價,芯片漲價。物料成本壓力重重。
批量生產基本是代工,本身作流水線太貴,成本大概是100萬元。 品控,不能一顆老鼠屎壞一屯子糧食,具體實施時如何定義標準?
組裝:
燒寫硬件固件,PCB綜測,裝進外殼。 老化測試。
包裝成型,倉管,銷售 略。
成本:
這是限制軟件的超級高壓鍋。FLASH ,RAM ,計算能力 等 直接對軟件構成暴擊傷害。 老闆習慣的問題是,最小能壓縮到多少?
其餘:
跨工種頭疼事:外殼設計跟PCB設計「打架」。外殼要美觀,PCB 要形狀、射頻開口(若是有)。
合做方超多,人際關係,合做方式。商務頭疼。
這裏只討論單片機做爲主控的狀況,若是是linux還有其餘的坑。
2)軟件:
設備內的軟件運行在廉價的機器上,這裏只討論MCU 單片機範圍。若是你是跑Linux的,請跳過此坑。
運行環境:鑑於單片機這個Flash(硬盤)RAM(內存條)容量按照k計算。 (按照字節計算的基本不考慮。雖然能夠作 可是不在本文討論範圍內。)
開發語言:c語言,高端一點c++ ,可是 限於資源 C++的 STL庫幾乎不可用。
插一句:單片機軟件開發,90%在寫驅動代碼,10%時間在寫業務邏輯。
系統:
有些開源的能夠自行移植。 系統種類不少 搶佔式OS (ucos,freertos等) ,協做式OS (新生命smartos),其餘 (先後臺,事件驅動型OS contiki)
選擇困難症,並且須要學習成本。 不少乾脆沒有OS 以節省資源開銷(單片機級別的嵌入式中系統開銷是大頭,Flash和RAM佔用至關可觀)
驅動:
嵌入式中開發 中的重頭戲,不一樣的硬件平臺IO驅動徹底不一樣,沒有統一規範。 能到達目的爲上。
人才:
就目前掌握的狀況來看,80%的單片機工程師沒有軟件分層思想,寫的代碼 今天他跟上帝知道是幹什麼,一週後就只有上帝知道了。
if else if else if else 是主要代碼結構。 一副官方給的 OK 的代碼 在他們手上就會變成渣。 爲了目的 隨處改。有看到過一個函數有8000行的。
不會使用版本管理軟件,作版本純粹靠資源管理器。 這個給管理提供了必定的難度,沒有辦法作到代碼審覈,bug 跟蹤。
沒有統一的命名規範,沒有統一的備註習慣,甚至有的tab對齊都搞很差。 不知道文本編碼問題,亂碼問題時有發生。
網絡:
這裏只討論硬件直接入網的形式。 lora sigfox 2.4g 433 315 等 這種另立博客。
以太網:有各類庫,lwip uip uctcp/ip 等軟件協議棧,有的是單片機有網絡MAC PHY的 使用 MII 接口,有的是外置MAC PHY的。 SPI口偏多。 也有硬件協議棧芯片。SPI 口占多數;
wifi: 基本都是 wifi芯片咯,esp8266 RTL8211 串口AT指令集。
GPRS/4G LTE: SIM800C SIM868 AIR208S 等。4G模塊沒有關注型號。 串口AT指令集。
NBIOT :BC95 AIR395 UC666 串口AT 指令集。
全是驅動的活!!
通信數據:
限於FLASH RAM 的需求,單片機這邊工程師100%但願是二進制。 http 必定是不但願的,太複雜,在單片機上處理徹底就是找虐待。
跟服務器開發工程師的妥協就是 JSON 。
雖說 CoAp 也是很不錯的,可是目前還沒發現誰在用。
九環
2018.5.20