一份无锡工程师的分享
自我介紹哦!
你好,我叫***,今~~ 年24歲畢業(yè)于黃河科技學(xué)院測控技術(shù)與儀器專業(yè),我的工作經(jīng)驗(yàn)是從去年的暑假開始,到今年7月份,主要做過的項(xiàng)目有阿里云遠(yuǎn)程室內(nèi)環(huán)境檢測及智能語音控制系統(tǒng)主要用于各個房間的信息采集和顯示還有就是燈啊繼電器的控制,智能手環(huán)主要是血壓測量,心率,計(jì)步,還有溫濕度的測量,以及藍(lán)牙傳輸
為什么離職 離職的原因
我認(rèn)為我已經(jīng)具備了一定的經(jīng)驗(yàn)積累和能力素養(yǎng)希望可以加入到具有創(chuàng)新和挑戰(zhàn)的團(tuán)隊(duì)中,繼續(xù)深扎業(yè)務(wù),發(fā)揮自己的優(yōu)勢。
自己的職業(yè)規(guī)劃 往哪個行業(yè)深入發(fā)展,還是都試一下
短期內(nèi)做好自己的本職工作,適應(yīng)公司節(jié)奏,打好基礎(chǔ),未來3到5年內(nèi)我希望自己能在自己的專業(yè)領(lǐng)域內(nèi)有所創(chuàng)新和突破。
有其他offer
我剛開始,看機(jī)會時間不長目前有一兩個
嵌入式主要講的什么
嵌入式技術(shù)與應(yīng)用主要研究嵌入式技術(shù)、嵌入式產(chǎn)品軟件開發(fā)等方面基本知識和技能,進(jìn)行嵌入式產(chǎn)品生產(chǎn)、管理、售后維護(hù)等。例如:高清電視(HDTV)、路由器、汽車電子等嵌入式技術(shù)應(yīng)用開發(fā)
一個計(jì)算機(jī)系統(tǒng)有哪些單元模塊組成
一臺能夠工作的 計(jì)算機(jī) 要有這樣幾個部份構(gòu)成: CPU (進(jìn)行運(yùn)算、控制)、 RAM (數(shù)據(jù)存儲)、 ROM (程序存儲)、輸入/輸出設(shè)備(例如:串行口、并行輸出口等)總線又分為數(shù)據(jù)總線、地址總線和控制總線3種。
C語言
MCU最小系統(tǒng)是什么
電源部分、晶振部分、復(fù)位部分
C代碼中為什么分.C .H
這樣做目的是為了實(shí)現(xiàn)軟件的模塊化
使軟件結(jié)構(gòu)清晰,而且也便于別人使用你寫的程序
sizeof和strlen的區(qū)別
sizeof是一個操作符,而strlen是庫函數(shù)。
?sizeof的參數(shù)可以是數(shù)據(jù)的類型,也可以是變量,而strlen只能以結(jié)尾為’\0’的字符串作參數(shù)。
?編譯器在編譯時就計(jì)算出了sizeof的結(jié)果,而strlen必須在運(yùn)行時才能計(jì)算出來。
?sizeof計(jì)算數(shù)據(jù)類型占內(nèi)存的大小,strlen計(jì)算字符串實(shí)際長度。
結(jié)構(gòu)體和聯(lián)合體
?結(jié)構(gòu)體struct
? 各成員各自擁有自己的內(nèi)存,各自使用互不干涉,同時存在的,遵循內(nèi)存對齊原則。一個struct變量的總長度等于所有成員的長度之和。
?聯(lián)合體union
? 各成員共用一塊內(nèi)存空間,并且同時只有一個成員可以得到這塊內(nèi)存的使用權(quán)(對該內(nèi)存的讀寫),各變量共用一個內(nèi)存首地址。因而,聯(lián)合體比結(jié)構(gòu)體更節(jié)約內(nèi)存。一個union變量的總長度至少能容納最大的成員變量,而且要滿足是所有成員變量類型大小的整數(shù)倍。不允許對聯(lián)合體變量名U2直接賦值或其他操作。
static有什么用,用在局部變量里是干什么的,static會放在程序的哪個部分,為什么生命周期作用時間會變緩
1.static的作用 (1) 修飾局部變量時,只初始化一次,延長了局部變量生命周期,直到程序結(jié)束才釋放。 (2)修飾全局變量,全局變量智能在本文件訪問,不能在其他文件訪問。靜態(tài)存儲區(qū)
一般函數(shù)里面的局部變量生命周期到什么時候?yàn)橹?br /> 函數(shù)調(diào)用結(jié)束后
Static用于函數(shù)的時候有什么效果
static 的最主要功能是隱藏,其次因?yàn)?static 變量存放在靜態(tài)存儲區(qū),所以它具備持久性和默認(rèn)值0。
Const關(guān)鍵詞、
關(guān)鍵字const用來定義只讀變量,被const定義的變量它的值是不允許改變的,即不允許給它重新賦值,即使是賦相同的值也不可以。 所以說它定義的是只讀變量,這也就意味著必須在定義的時候就給它賦初值。
const表示(運(yùn)行時)常量語義:被const修飾的對象在所在的作用域無法進(jìn)行修改操作,編譯器對于試圖直接修改const對象的表達(dá)式會產(chǎn)生編譯錯誤。 volatile表示“易變的”,即在運(yùn)行期對象可能在當(dāng)前程序上下文的控制流以外被修改(例如多線程中被其它線程修改;對象所在的存儲器可能被多個硬件設(shè)備隨機(jī)修改等情況):被volatile修飾的對象,編譯器不會對這個對象的操作進(jìn)行優(yōu)化。
一級指針二級指針
一級指針就是指指針,就是內(nèi)存地址,二級指針就是指向指針的指針,就是地址的地址(這個可以指的是取得所謂的指向的該位置的內(nèi)容)
數(shù)組指針與指針數(shù)組的區(qū)別
指針數(shù)組:首先它是一個數(shù)組,數(shù)組的元素都是指針,數(shù)組占多少個字節(jié)由數(shù)組本身的大小決定,每一個元素都是一個指針,在32 位系統(tǒng)下任何類型的指針永遠(yuǎn)是占4 個字節(jié)。它是“儲存指針的數(shù)組”的簡稱。
數(shù)組指針:首先它是一個指針,它指向一個數(shù)組。在32 位系統(tǒng)下任何類型的指針永遠(yuǎn)是占4 個字節(jié),至于它指向的數(shù)組占多少字節(jié),不知道,具體要看數(shù)組大小。它是“指向數(shù)組的指針”的簡稱。
數(shù)組和鏈表有什么區(qū)別
數(shù)組
數(shù)組是一組具有相同數(shù)據(jù)類型的變量的集合,這些變量稱之為集合的元素
每個元素都有一個編號,稱之為下標(biāo),可以通過下標(biāo)來區(qū)別并訪問數(shù)組元素,數(shù)組元素的個數(shù)叫做數(shù)據(jù)的長度
一、數(shù)組的特點(diǎn)
1.在內(nèi)存中,數(shù)組是一塊連續(xù)的區(qū)域
2.數(shù)組需要預(yù)留空間
在使用前需要提前申請所占內(nèi)存的大小,這樣不知道需要多大的空間,就預(yù)先申請可能會浪費(fèi)內(nèi)存空間,即數(shù)組空間利用率低
ps:數(shù)組的空間在編譯階段就需要進(jìn)行確定,所以需要提前給出數(shù)組空間的大小(在運(yùn)行階段是不允許改變的)
3.在數(shù)組起始位置處,插入數(shù)據(jù)和刪除數(shù)據(jù)效率低。
插入數(shù)據(jù)時,待插入位置的的元素和它后面的所有元素都需要向后搬移
刪除數(shù)據(jù)時,待刪除位置后面的所有元素都需要向前搬移
4.隨機(jī)訪問效率很高,時間復(fù)雜度可以達(dá)到O(1)
因?yàn)閿?shù)組的內(nèi)存是連續(xù)的,想要訪問那個元素,直接從數(shù)組的首地址處向后偏移就可以訪問到了
5.數(shù)組開辟的空間,在不夠使用的時候需要擴(kuò)容,擴(kuò)容的話,就會涉及到需要把舊數(shù)組中的所有元素向新數(shù)組中搬移
6.數(shù)組的空間是從棧分配的
二、數(shù)組的優(yōu)點(diǎn)
隨機(jī)訪問性強(qiáng),查找速度快,時間復(fù)雜度為O(1)
三、數(shù)組的缺點(diǎn)
1.頭插和頭刪的效率低,時間復(fù)雜度為O(N)
2.空間利用率不高
3.內(nèi)存空間要求高,必須有足夠的連續(xù)的內(nèi)存空間
4.數(shù)組空間的大小固定,不能動態(tài)拓展
鏈表
鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的
鏈表的特性是在中間任意位置插入和刪除元素都非常快,不需要移動其它元素
對于單向鏈表而言,鏈表中的每一個元素都要保存一個指向下一個元素的指針
對于雙向鏈表而言,鏈表中的每個元素既要保存指向下一個元素的指針,又要保存指向上一個元素的指針
對于雙向循環(huán)鏈表而言,鏈表中的最后一個元素保存一個指向第一個元素的指針
一、鏈表的特點(diǎn)
1.在內(nèi)存中,元素的空間可以在任意地方,空間是分散的,不需要連續(xù)
2.鏈表中的元素都會兩個屬性,一個是元素的值,另一個是指針,此指針標(biāo)記了下一個元素的地址
每一個數(shù)據(jù)都會保存下一個數(shù)據(jù)的內(nèi)存的地址,通過此地址可以找到下一個數(shù)據(jù)
3.查找數(shù)據(jù)時效率低,時間復(fù)雜度為O(N)
因?yàn)殒湵淼目臻g是分散的,所以不具有隨機(jī)訪問性,如要需要訪問某個位置的數(shù)據(jù),需要從第一個數(shù)據(jù)開始找起,依次往后遍歷,直到找到待查詢的位置,故可能在查找某個元素時,時間復(fù)雜度達(dá)到O(N)
4.空間不需要提前指定大小,是動態(tài)申請的,根據(jù)需求動態(tài)的申請和刪除內(nèi)存空間,擴(kuò)展方便,故空間的利用率較高
5.任意位置插入元素和刪除元素效率較高,時間復(fù)雜度為O(1)
6.鏈表的空間是從堆中分配的
二、鏈表的優(yōu)點(diǎn)
1.任意位置插入元素和刪除元素的速度快,時間復(fù)雜度為O(1)
2.內(nèi)存利用率高,不會浪費(fèi)內(nèi)存
3.鏈表的空間大小不固定,可以動態(tài)拓展
三、鏈表的缺點(diǎn)
隨機(jī)訪問效率低,時間復(fù)雜度為0(N)
對于想要快速訪問數(shù)據(jù),不經(jīng)常有插入和刪除元素的時候,選擇數(shù)組
對于需要經(jīng)常的插入和刪除元素,而對訪問元素時的效率沒有很高要求的話,選擇鏈表
指針 uint ulong他們在32位和64位系統(tǒng)中的數(shù)據(jù)長度是多少
GPIO一般是做什么的,配置什么
GPIO(general purpose intput output)是通用輸入輸出端口的簡稱,可以通過軟件來控制其輸入和輸出。51 單片機(jī)芯片的 GPIO 引腳與外部設(shè)備連接起來,從而實(shí)現(xiàn)與外部通訊、 控制以及數(shù)據(jù)采集的功能。過 GPIO 最簡單的應(yīng)用還屬點(diǎn)亮 LED 燈了,只需通過軟件控制 GPIO 輸出高低電平即可。當(dāng)然GPIO 還可以作為輸入控制,比如在引腳上接入一個按鍵,通過電平的高低判斷按鍵是否按下
看門狗
是一個定時器電路,一般有一個輸入,叫喂狗,一個輸出到MCU的RST端,MCU正常工作的時候,每隔一端時間輸出一個信號到喂狗端,給WDT清零,如果超過規(guī)定的時間不喂狗,(一般在程序跑飛時),WDT 定時超過,就回給出一個復(fù)位信號到MCU,是MCU復(fù)位.防止MCU死機(jī).看門狗的作用就是防止程序發(fā)生死循環(huán),或者說程序跑飛。
*工作原理: *在系統(tǒng)運(yùn)行以后也就啟動了看門狗的計(jì)數(shù)器,看門狗就開始自動計(jì)數(shù),如果到了一定的時間還不去清看門狗,那么看門狗計(jì)數(shù)器就會溢出從而引起看門狗中斷,造成系統(tǒng)復(fù)位。所以在使用有看門狗的芯片時要注意清看門狗。
除了單片機(jī)有用過其他的帶系統(tǒng)的平臺,應(yīng)用部分還是驅(qū)動部分
TCP/IP 套接字,服務(wù)端和客戶端的流程是怎么樣的,服務(wù)端調(diào)用那些函數(shù),什么過程
TCP協(xié)議:
TCP協(xié)議是在通信的兩臺設(shè)備之間建立連接通道,對傳輸?shù)臄?shù)據(jù)大小沒有限制,但是因?yàn)榻⒘诉B接,相對可靠一些,但是速度會慢一些。TCP協(xié)議又稱為三次握手–四次揮手協(xié)議,因?yàn)榻⑦^程有三步(發(fā)送請求、獲取 反饋、建立連接)。通常情況下,我們的藍(lán)牙通信、打電話都是使用的 TCP 協(xié)議。
UPD協(xié)議:
UDP協(xié)議需要將數(shù)據(jù)打包,因?yàn)榘写笮?#xff0c;所以對數(shù)據(jù)大小是有限制的,UDP是不用建立連接的,但不保證待接收方一定會接收到消息,所以不可靠。但是,因?yàn)椴挥媒⑦B接,因此速度要快一些。通常情況下,我們發(fā)送短信都是使用的 UDP 協(xié)議。
TCP協(xié)議通訊的基本流程: 服務(wù)器端:調(diào)用bind 、 listen
1 創(chuàng)建socket對象 2使用bind()綁定主機(jī)號host和端口號port 3使用listen()監(jiān)聽 4使用accept()被動連接
5 使用send()/rece() 發(fā)送/接收數(shù)據(jù)
客戶端:調(diào)用connect
1創(chuàng)建socket對象 2使用connect連接到服務(wù)器端 3使用send()/recv() 發(fā)送/接收數(shù)據(jù) 4關(guān)閉socket對象
Linux
Makefile
1目標(biāo):依賴文件 2$^ 代表所有依賴文件3 @代表所有目標(biāo)文件4@ 代表所有目標(biāo)文件 4@代表所有目標(biāo)文件4< 代表第一個依賴文件 5% 代表通配符 6@指令:屏蔽指令 7定義變量(變量大寫) 8變量名=值1 值2 … 9使用變量 $(變量名)
linux 配置文件修改后立即生效命令# source /etc/profile看版本號Cat /proc/version看系統(tǒng)環(huán)境變量env
重定向echo
進(jìn)程和線程的區(qū)別
一個進(jìn)程可以只有一個線程,也就是主線程,一個進(jìn)程可以有一個主線程和很多個子線程。
區(qū)別:一個程序至少有一個進(jìn)程,而一個進(jìn)程至少有一個線程。一個應(yīng)用程序可以同時啟動多個進(jìn)程。例如對于IE瀏覽器,每打開一個IE瀏覽器,就啟動了一個新的進(jìn)程。而線程則是指進(jìn)程中的一個執(zhí)行流程,一個進(jìn)程可以有多個線程,每個線程分別執(zhí)行不同的任務(wù),當(dāng)進(jìn)程內(nèi)的多個線程同時運(yùn)行時,這種運(yùn)行方式就被成為并發(fā)運(yùn)行。
另外,線程和進(jìn)程還有一個非常重要的區(qū)別:每個進(jìn)程在執(zhí)行過程中都擁有獨(dú)立的內(nèi)存單元,而同一個進(jìn)程中的多個線程則共享內(nèi)存。
多進(jìn)程多線程
在同一個時間里,同一個計(jì)算機(jī)系統(tǒng)中如果允許兩個或兩個以上的進(jìn)程處于運(yùn)行狀態(tài),這便是多進(jìn)程,也稱多任務(wù)。現(xiàn)代的操作系統(tǒng)幾乎都是多任務(wù)操作系統(tǒng),能夠同時管理多個進(jìn)程的運(yùn)行。
多線程是一種執(zhí)行模型,它允許多個線程存在于進(jìn)程的上下文中,以便它們獨(dú)立執(zhí)行但共享其進(jìn)程資源。
3 線程與進(jìn)程的區(qū)別和聯(lián)系? 線程是否具有相同的堆棧?
進(jìn)程是死的,只是一些資源的集合,真正的程序執(zhí)行都是線程來完成的,程序啟動的時候操作系統(tǒng)就幫你創(chuàng)建了一個主線程。每個線程有自己的堆棧。
進(jìn)程和線程在多核cpu,多cpu中的運(yùn)行關(guān)系
操作系統(tǒng)會拆分CPU為一段段時間的運(yùn)行片,輪流分配給不同的程序。對于多cpu,多個進(jìn)程可以并行在多個cpu中計(jì)算,當(dāng)然也會存在進(jìn)程切換;對于單cpu,多個進(jìn)程在這個單cpu中是并發(fā)運(yùn)行,根據(jù)時間片讀取上下文+執(zhí)行程序+保存上下文。同一個進(jìn)程同一時間段只能在一個cpu中運(yùn)行,如果進(jìn)程數(shù)小于cpu數(shù),那么未使用的cpu將會空閑。
多線程的概念主要有兩種:一種是用戶態(tài)多線程;一種是內(nèi)核態(tài)多線程,對于內(nèi)核態(tài)多線程(java1.2之后用內(nèi)核級線程),在操作系統(tǒng)內(nèi)核的支持下可以在多核下并行運(yùn)行;
對于多核cpu,進(jìn)程中的多線程并行執(zhí)行。對于單核cpu,多線程在單cpu中并發(fā)執(zhí)行,根據(jù)時間片切換線程。同一個線程同一時間段只能在一個cpu內(nèi)核中運(yùn)行,如果線程數(shù)小于cpu內(nèi)核數(shù),那么將有多余的內(nèi)核空閑。
大小端和轉(zhuǎn)字節(jié)序
大端模式是指高字節(jié)數(shù)據(jù)存放在低地址處,低字節(jié)數(shù)據(jù)放在高地址處。
小端模式是指低字節(jié)數(shù)據(jù)存放在低地址處,高字節(jié)數(shù)據(jù)放在高地址處。
硬件
AD軟件 原理圖到PCB的流程
導(dǎo)入機(jī)構(gòu)圖 → 設(shè)置邊框 → 設(shè)置層疊 → 設(shè)置約束規(guī)則 → 布局 → 打孔走線 → 覆銅 → 加光學(xué)定位點(diǎn) → 防焊開窗 → 放絲印 → 導(dǎo)文件 PCB繪制時布局和走線還有很多細(xì)節(jié)和要求需要根據(jù)具體的情況來看
給你一個不知道有沒有問題的開發(fā)板首先你會怎么做,步驟是什么
先上電 看看芯片有沒有問題。 直接上手摸一下燙不燙 沒問題的話就檢查其他部分電路是不是正常。 供電沒問題的話就點(diǎn)個燈。
智能手環(huán)stm32f411ceuxflash是512KB RAM是128KB最高主頻168MHz 因?yàn)橄到y(tǒng)初始化SystemInit函數(shù)里初始化APB1總線時鐘為4分頻即42M,APB2總線時鐘為2分頻即84M 智能家居STM32F103RCT6flash是256KB RAM是48KB最高主頻72MHz 72M- 系統(tǒng)時鐘 = SYCCLK = AHB1 = 168MHz
-APB2 = 72MHz
-APB1 = 36MHz
做項(xiàng)目的成員
在項(xiàng)目里承擔(dān)什么角色 嵌入式軟件工程師 小組里的項(xiàng)目崗位的分配 項(xiàng)目組長負(fù)責(zé)干嘛
OLED 模塊買的那家公司的 全視科技公司
用哪個口操作的(怎么操作OLED模塊的)操作的總線用的哪個
OLED OLED_D/C PA 15 OLED_CS PB7 OLED_RES PB13 通用功能 OLED_SCL PB3 OLED_SI PB5 復(fù)用功能 用SPI1總線操作
MPU6050是干什么的 后期的算法 從哪個平臺上移植的官方的還是第三方廠家
手環(huán)的界面有多少頁
藍(lán)牙用的是模組還是芯片 怎把單片機(jī)的數(shù)據(jù)通過藍(lán)牙發(fā)送出去的
IIC和SPI有什么區(qū)別
因?yàn)镾PI是全雙工,IIC的不是。 SPI沒有定義速度限制,一般的實(shí)現(xiàn)通常能達(dá)到甚至超過10 Mbps。 IIC 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式還需要額外的I/O緩沖區(qū),還并不是總是容易實(shí)現(xiàn)的。
IIC的兩根線都有什么作用 假設(shè)掛了3個IIC的片子,他們是怎么進(jìn)行主網(wǎng)通信的
IIC串行總線一般有兩根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。 所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時鐘線SCL接到總線的SCL上,一般SDA、SCL都會接上拉電阻實(shí)現(xiàn)電平的轉(zhuǎn)換以及提高驅(qū)動能力。
方法一:(內(nèi)置了兩種地址的模塊)
對于內(nèi)置了兩種地址的模塊,可以通過對某個引腳置高或置低來選擇其中一個地址,現(xiàn)假設(shè)置高為A,置低為B。
假設(shè)你有三個模塊要同時通信,首先將模塊1置高,模塊2、模塊3的地址選擇口置低,這樣僅有模塊1在地址A,然后對地址A進(jìn)行通信即可防止其他模塊干擾。接下來將模塊1置低,模塊2置高,即可對模塊2通信。循環(huán)下去即可實(shí)現(xiàn)同時對三個模塊通信。
方法二:(具有使能端的模塊)
若你手中的模塊某個引腳必須拉低或拉高才能正常使用,那么仿照方法一,對其中一個使能,其他均處于非使能狀態(tài),如此便可以僅對其中一個模塊通信咯。
IIC在項(xiàng)目里用的哪個功能里(什么作用)傳輸?shù)氖裁磾?shù)據(jù) 什么外設(shè) 通訊速率是多少
100kb/s、300kb/s、3.4Mkb/s由IIC地址決定,8位地址,減去1位廣播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127個地址, 所以理論上可以掛127個從器件。IIC協(xié)議沒有規(guī)定總線上device最大數(shù)目,但是規(guī)定了總線電容不能超過400pF。管腳都是有輸入電容的,PCB上也會有寄生電容,所以會有一個限制。實(shí)際設(shè)計(jì)中經(jīng)驗(yàn)值大概是不超過8個器件。
USART和RS485有啥區(qū)別
uart、IIC、SPI都是一種具有協(xié)議特征的收發(fā)器、接口、總線,它規(guī)定數(shù)據(jù)按照什么的時序傳輸,rs232,、rs485是傳輸時候的電平標(biāo)準(zhǔn),規(guī)定了按照上述協(xié)議傳輸?shù)母唠娖脚c低電平的電壓都應(yīng)該是多少;uart還是一種硬件,是個收發(fā)器,發(fā)送和接收,是個設(shè)備,是完成特定功能的硬件,它本身并不是協(xié)議,它本身是硬件設(shè)備,但它具有協(xié)議特征,意思是運(yùn)用uart收發(fā)器進(jìn)行數(shù)據(jù)的收發(fā)必須按照uart協(xié)議的時序進(jìn)行收發(fā),比如可以在uart的發(fā)送端(TXD)發(fā)送信號然后通過電平轉(zhuǎn)換芯片轉(zhuǎn)換為RS232/R485邏輯電平在發(fā)送線上傳輸,再通過電平轉(zhuǎn)換芯片讓接收端按照時序接收。
RS232與RS485一般都默認(rèn)跑的UART協(xié)議。以UART協(xié)議(時序)通過UART收發(fā)器的收發(fā)端(硬件設(shè)備)使用RS232/RS485電平標(biāo)準(zhǔn)進(jìn)行數(shù)據(jù)得傳輸
簡單介紹一下你對Lora模塊的理解 有啥特點(diǎn)
Lora 高位地址+低位地址+信道+用戶數(shù)據(jù)
lora模塊是LPWAN通信技術(shù)中的一種,一種基于擴(kuò)頻技術(shù)的超遠(yuǎn)距離無線傳輸方案。目前全球免費(fèi)頻段有,433、868、915MHz等。lora通信技術(shù)最大特點(diǎn),靈敏度高、傳輸距離遠(yuǎn)、工作功耗低、組網(wǎng)節(jié)點(diǎn)多等特點(diǎn)。主要應(yīng)用于物聯(lián)網(wǎng)行業(yè),如無線抄表(電表/水表)、工業(yè)自動控制、環(huán)境監(jiān)測、環(huán)保監(jiān)測等。
首先是傳輸距離,和平常普通的模塊一樣,采用lora擴(kuò)頻技術(shù),3~8km的傳輸距離,但是傳輸方式上卻有獨(dú)特的特點(diǎn),該模塊可選用3種通信模式,分為低功耗優(yōu)先模式、均衡模式、距離優(yōu)先模式,也就是說需要低功耗的,傳輸距離不遠(yuǎn)的可以采用第一種,那樣功耗會很低。其他的模式也是同一個道理。詳細(xì)可參見下圖;-‘
然后是該lora模塊的一個網(wǎng)關(guān)特點(diǎn),該lora模塊可以GPRS、3G、4G網(wǎng)絡(luò),NB-IOT(物聯(lián)網(wǎng)專網(wǎng)),進(jìn)行組網(wǎng),可能有人會問,為啥不直接用gprs或者4G傳輸數(shù)據(jù)呢?因?yàn)椴皇撬械胤蕉加行盘?#xff0c;而且信號也很好,所以該功能主要針對,無信號或信號不好,然而數(shù)據(jù)需要傳公網(wǎng)上服務(wù)器的,比如一些油井,偏遠(yuǎn)山區(qū),加油站等。可以使用這種特有的lora網(wǎng)關(guān)進(jìn)行數(shù)據(jù)傳輸。
并且無需用戶建立數(shù)據(jù)中心,不用關(guān)心協(xié)議,即可實(shí)現(xiàn)設(shè)備到設(shè)備(不同種類設(shè)備也可通信),設(shè)備要平臺之間的數(shù)據(jù)通信。
BH1750是干啥用的BH1750FVI是一款數(shù)字型光強(qiáng)度傳感器集成芯片
Esp8266是怎么用的其他的通信流程時怎么樣的,怎么樣與阿里云進(jìn)行通信的過程 通信的過程是怎樣的模式
ESP8266是一款超低功耗的UART-WiFi 透傳模塊,專為移動設(shè)備和物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì),可將用戶的物理設(shè)備連接到Wi-Fi 無線網(wǎng)絡(luò)上,進(jìn)行互聯(lián)網(wǎng)或局域網(wǎng)通信,實(shí)現(xiàn)聯(lián)網(wǎng)功能
簡單介紹一下Free RTOS是怎么理解的 任務(wù)是怎么調(diào)度的 怎么切換的
一個輕量級的操作系統(tǒng),功能包括:任務(wù)管理、時間管理、信號量、消息隊(duì)列、內(nèi)存管理、記錄功能等,可基本滿足較小系統(tǒng)的需要。通信方式有:消息隊(duì)列、信號量、互斥鎖(互斥信號量)、事件標(biāo)志組以及任務(wù)通知等。
任務(wù)切換具體過程
? 搶占式調(diào)度
每個任務(wù)都有不同的優(yōu)先級,任務(wù)會一直運(yùn)行直到被高優(yōu)先級任務(wù)搶占或者遇到阻塞式的 API 函數(shù),比如 vTaskDelay。
? 時間片調(diào)度
每個任務(wù)都有相同的優(yōu)先級,任務(wù)會運(yùn)行固定的時間片個數(shù)或者遇到阻塞式的 API 函數(shù),比如vTaskDelay,才會執(zhí)行同優(yōu)先級任務(wù)之間的任務(wù)切換。
如果用戶在 FreeRTOS 的配置文件 FreeRTOSConfig.h 中禁止使用時間片調(diào)度, 那么每個任務(wù)必須配置不同的優(yōu)先級。當(dāng) FreeRTOS 多任務(wù)啟動執(zhí)行后,基本會按照如下的方式去執(zhí)行:
假設(shè)現(xiàn)在有兩個任務(wù)task1,task2
? 首先執(zhí)行的最高優(yōu)先級的任務(wù) Task1, Task1 會一直運(yùn)行直到遇到 系統(tǒng)阻塞式的 API 函數(shù),比如延遲,事件標(biāo)志等待,信號量等待, Task1 任務(wù)會被掛起,也就是釋放 CPU 的執(zhí)行權(quán),讓低優(yōu)先級的任務(wù)得到執(zhí)行。
? FreeRTOS 操作系統(tǒng)繼續(xù)執(zhí)行任務(wù)就緒列表中下一個最高優(yōu)先級的任務(wù) Task2,Task2 執(zhí)行過程中有兩種情況:
Task1由于 延遲時間到, 接收到信號量消息 等方面的原因, 使得 Task1從掛起狀態(tài)恢復(fù)到就緒態(tài),在搶占式調(diào)度器的作用下,Task2 的執(zhí)行會被 Task1 搶占。
Task2 會一直運(yùn)行直到遇到系統(tǒng)阻塞式的 API 函數(shù),比如延遲,事件標(biāo)志等待,信號量等待, Task2任務(wù)會被掛起,繼而執(zhí)行就緒列表中下一個最高優(yōu)先級的任務(wù)。
? 如果用戶創(chuàng)建了多個任務(wù)并且采用搶占式調(diào)度器的話,基本都是按照上面兩條來執(zhí)行。 根據(jù)搶占式調(diào)度器,當(dāng)前的任務(wù)要么被高優(yōu)先級任務(wù)搶占,要么通過調(diào)用阻塞式 API 來釋放 CPU 使用權(quán)讓低優(yōu)先級任務(wù)執(zhí)行,沒有用戶任務(wù)執(zhí)行時就執(zhí)行空閑任務(wù)。
簡單介紹一下MQTT 有什么特點(diǎn) 項(xiàng)目中是怎么用的
是一種基于發(fā)布/訂閱(publish/subscribe)模式的輕量級協(xié)議,該協(xié)議構(gòu)建于TCP/IP協(xié)議之上,MQTT最大優(yōu)點(diǎn)在于,可以以極少的代碼和有限的帶寬,為連接遠(yuǎn)程設(shè)備提供實(shí)時可靠的消息服務(wù)。作為一種低開銷、低帶寬占用的即時通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動應(yīng)用等方面有較廣泛的應(yīng)用。MQTT協(xié)議是輕量、簡單、開放和易于實(shí)現(xiàn)的,這些特點(diǎn)使它適用范圍非常廣泛。
MQTT協(xié)議 :固定報頭,剩余長度,報文標(biāo)識符,有效載荷
阿里云,一般是:
總結(jié)
以上是生活随笔為你收集整理的一份无锡工程师的分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分式智能计算机在线计算,全能智能计算器
- 下一篇: 2019.2.14