基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)

  • 基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)
  • 基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)
  • 基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)
  • 基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)
  • 基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)

基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)

基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)

基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)

基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)

基于STM32F103ZET6 簡易不間斷直流電源的設計方案(原理圖+源程序+bom表+演示視頻)


基于STM32F103ZET6 簡易不間斷直流電源的設計方案


一、任務 設計并制作用于電池儲能裝置的簡易不間斷直流電流,實現電池的充放電功能,功能可由按鍵設定,亦可自動轉換。電池組由18650型鋰離子電池串聯組成。所用電阻阻值誤差的絕對值不大于5%。 
二、要求

接通S1、S3,斷開S2,將裝置設定為充電模式。

(1)U2=30V條件下,實現對電池恒流充電。充電電流I1在1~2A范圍內步進可調,步進值不大于0.1A,電流控制精度不低于5%。

(2)設定I1=2A,調整直流穩壓電源輸出電壓,使U2在24~36V范圍內變化時,要求充電電流I1的變化率不大于1%。

(3)設定I1=2A,在U2=30V條件下,變換器的效率>= 80%? ?

(4)測量并顯示充電電流I1,在I1=1~2A范圍內測量精度不低于2%。

(5)具有過充保護功能:設定I1=2A,當U1超過閾值U1th=24±0.5V時,停止充電。

電路相關文件

電路圖文件
1.電路圖AD文件.rar
描述:原理圖
源代碼
2.程序.rar
描述:源程序
其他文件
教程
演示視頻.rar
描述:演示視頻
分享到:
收藏 (6)
電子硬件助手小程序 電子硬件助手小程序

電路城電路折扣劵獲取途徑:

電路城7~10折折扣劵(全場通用):對本電路進行評分獲取;

電路城6折折扣劵(限購≤100元電路):申請成為賣家,上傳電路,審核成功后獲取。

(版權歸王哥所有)

版權聲明:電路城所有電路均源于網友上傳或網上搜集,供學習和研究使用,其版權歸原作者所有,對可以提供充分證據的侵權信息,本站將在確認后24小時內刪除。對本電路進行投訴建議,點擊投訴本電路反饋給電路城。

使用說明:直接使用附件資料或需要對資料PCB板進行打樣的買家,請先核對資料的完整性,如果出現問題,電路城不承擔任何經濟損失!

換一批 more>>

大家都在看:

繼續閱讀

  • 樹莓派擴展板散熱風扇

    RPI-HAT-CoolingFan 產品介紹產品特點使用步驟產品鏈接FAQ產品介紹這是是繆斯實驗室推出的針對樹莓派4解決其散熱問題的散熱風扇擴展板,數碼管顯示溫度及IP地址,風扇帶溫控,硬件/軟件開源。由于樹莓派4的使用定位為小型計算機,然而單板上并無任何散熱措施,一旦系統負載過大(如打開較多網頁、播放視頻等),樹莓派溫度則會立即上升至80度左右,由于CPU自帶溫度監控,一旦溫度過大,則會降頻運行,甚至直接卡住或者死機,嚴重影響可用性。一般可使用散熱片或者散熱風扇的形式進行降溫,使用散熱風扇進行主動降溫的效果是最好的,經過實測,使用散熱風扇擴展板在系統高負載時可降低溫度20-30度,可有效提升系統性能,改善使用體驗。產品特點 數碼管實時顯示溫度和IP地址溫度門限控制,超過門限則開啟散熱風扇硬件開源軟件開源,可根據自己需求修改參數使用步驟倉庫目錄下文件如下:<code>[email protected]:~/oss/RPI-HAT-CoolingFan $ ls coolingfan-daemon LICENSE main.c main.o Makefile README.md 只需將可執行文件coolingfan-daemon拷貝至系統啟動腳本中,即可實現開機自動運行。推薦加至如下位置:<code>/etc/xdg/lxsession/LXDE-pi/sshpwd.sh 舉例如下:#!/bin/bash export TEXTDOMAIN=pprompt . gettext.sh /home/pi/oss/RPI-HAT-CoolingFan/coolingfan-daemon if [ -e /run/sshwarn ] ; then zenity --warning --width=400 --text="$(gettext "SSH is enabled and the default password for the 'pi' user has not been changed.\n\nThis is a security risk - please login as the 'pi' user and run Raspberry Pi Configuration to set a new password.")" fi<br>資料鏈接所有資料包括硬件和軟件均開源,均可在github獲取,請點擊https://github.com/wuxx/RPI-HAT-CoolingFan獲取產品鏈接https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-21293878338.29.2c28773dLWvBjw&id=604376760205
    來自:DIY創意產品時間:2019-10-03 開源 樹莓派 風扇
  • 合泰HT32F1656 智能蜂箱系統電路

    用到了合泰HT32F1656以下外設/接口: ADCGPIOUART1-WireI2CTimerINIT硬件控制:以HT32F1656單片機及外圍電路(如電源管理、HX711AD重量采集電路、RTC時鐘電路、DS18B20溫度采集電路、液晶顯示模塊、步進電機驅動、繼電器電路、MOS放大電路、WIFI電路、電量采集電路等)搭建主控面板,安裝在各個蜂箱節點上。硬件模塊運用GPIO、定時器、外部中斷、UART、電量采集等功能來控制相應模塊和裝置,實現沖水、喂食、加熱等操作,并將日期、溫度、重量等信息通過串口顯示在串口屏上。1.HT32-1656最小系統原理圖2.外設驅動電路3.PCB-3D購買,贈送 原版程序(帶各個模塊封裝好的驅動以及初始化程序)
    來自:工業控制時間:2019-09-29 單片機 開源 ht32f1656
  • STM32L152C8T6_FM17550_LPCD_IWDT_STANDBY_低功耗讀AB卡_定時喚醒清看門狗_復旦讀卡_天線調校

    當前工程從酒店鎖應用中精簡而來,實現了低功耗讀TypeA_TypeB卡,可區分IC卡和CPU卡和身份證。而且實現STANDBY模式的低功耗休眠,定時喚醒清看門狗。程序本著模塊化編程理念,非常容易移植到各個平臺!!!當前RFID芯片 是復旦的FM175550,本程序可以應用在復旦同系列產品如FM17510,FM17520,FM17522;NXP系列的產品理論也是可以直接替換的(RC522,RC520......),因未曾驗證,請自行判斷。原理圖內的天線參數請根據PCB實際情況調整,如需要參數調校方面咨詢或服務,請主動聯系小編!小編做了很多門禁相關應用,如需要合作,工程文檔內有小編聯系方式,聯系時,請表明來意!感謝!!
    來自:安防與監控時間:2019-09-20 stm32 單片機 原理圖
  • 電池電壓測試儀

    此電路主要用于測量干電池電壓,純硬件電路檢測電壓,無需采用單片機采集電壓AD,核心電路是比較器電路。此電路采用8個指示燈直觀指示當前電池電壓(1V-1.7V),在無單片機控制的便攜式設備中可參考此電路來顯示電池剩余電量(這里說電量不太合適)。
    來自:DIY創意產品時間:2019-09-20 diy制作
  • Type-c接口的arduino MEGA2560_air

    arduino mega2560開發板 air版本。為學校的比賽特地設計。尺寸縮小,比信用卡還短一點。下載部分改為CH340方案。usb接口改為type-c。數據線插上即可使用。AD格式 pcb和原理圖,提供PDF版本原理圖。PCB:實物圖:文件包括:與以太網模塊連接:
    來自:DIY創意產品時間:2019-09-19 diy制作 arduino 開源
  • 51延時開關

    基于51單片機的延時斷電開關,有實物、有仿真
    來自:DIY創意產品時間:2019-09-05 51單片機 diy制作
  • PCB4*4*4光立方

    自行更換主控和接口4*4*4僅提供原理圖和PCB
  • 小米低功耗智能手表項目-基于NRF52832的SX1278完成源碼和原理圖

    著移動技術的發展,許多傳統的電子產品也開始增加移動方面的功能,比如過去只能用來看時間的手表,現今也可以通過智能手機或家庭網絡與互聯網相連,顯示來電信息、微信和天氣信息等內容。這種新手表可被稱作智能手表。1、 技術:全套開放源碼和原理圖,適合深度開發,更適合學習研究; 2、 通知中心:與手機通過低功耗藍牙實時連接,電話、微信不再遺漏,并且可以在手表上輕松查看; 3、 自拍神器:遠程控制手機相機,并且可以在手表上查看效果; 4、 超長待機:優秀的電源管理,最長可以待機近一周; 5、 健康助手:運動計步、心律檢測等工具讓手表成為健康的最好幫手。MCU采用新一代的nRF52832加入了很多新的功能。比如Cortex-M4F的內核,它能夠更強大的運算能力以及浮點運算的技術。現在很多的穿戴設備或者工業化設備需要內置非常復雜的算法,所以需要MCU有更快的運行速度。這顆Cortex-M4F的內核運行期64Mhz,比其他廠家的芯片提高了很多。
    來自:可穿戴設備時間:2019-08-28 開源
  • 注油機

    牙科專用手機注油機。時間顯示、智能注油、智能吹風。多種選擇,可以單個,也可以同時三個一起。
    來自:醫療電子時間:2019-08-27 diy制作
  • Iot標簽

    IoT 標 簽源 起: 在我們小區門口,有一家不大的店~叫“福美家超市”。主打是賣菜,兼有副食品和小百貨等。奇怪的是,旁邊有幾家類似功能的店,其他家多是冷冷清清,這一家卻總是得排隊付款。就算附近農村賣小菜的農民在附近圍了一圈兒又一圈兒,似乎也沒能沖淡這家店的生意! 今天,照例來到這家店里準備買菜,大家伙兒自覺地站了兩排,向前推進得似火比平常慢了點。正在選菜中,老板娘不知對誰發了個話,“哎,大媽,您稍等會兒啊,今天缺兩人沒來吶”。今天小兩口子一同協作:一個稱重貼標簽,另一個掃碼收款(向多數老年人),年輕人常常是手機付款。時不時也有不想多等的年輕人離開店鋪。 我的感覺是排隊買菜的現象已經有幾年了。有一次為關于他兒子學編程事聊了一會兒。他們每天3~4點就得起床,要趕往蔬菜集散中心采購,回到店里,還要不停地整理菜品,全家齊上陣,吃飯不定點,直到晚上23點接近24點才能睡覺。幾乎天天如此,年年如此。所以老板的問題似乎也是我的問題,忽然自動激發了是不是可以利用最近學習人工智能技術,其中之一是機器學習,可以對各種菜品進行訓練學習,達到一定次數后不難識別常見超市蔬菜瓜果等。由此制作一種能自動識別稱重貼標的AI菜籃子。 這家店年輕的老板及老板娘怎么也不會想到,一位顧客會為他們店更高效地賣菜而想辦法。哈哈,這就是創客吧。當然,小白的我對人工智能才剛剛接觸,這個AI菜籃子當前僅存腦海里備檔喲。 但是結合電子墨水屏制作未來超市的商品IoT標簽并不難。 IoT標簽: 一種在超市、便利店、藥房、甚至員工胸牌等場景顯示信息的電子類標簽。隨著人工智能時代的來臨,將越來越多地替代傳統紙質標簽;每一個電子價簽通過無線網絡與商場計算機數據庫或上云互連,實時、準確地顯示不同區域商品最新的基本信息。IoT標簽 VS 紙質標簽:IoT標簽紙質標簽1、便利性:一次到位,僅幾年后更換電池繁瑣2、體驗佳:改善顧客線上線下體驗不一致,更可實物參照不同步3、節約成本:人力、時間、環保成本高,易出錯4、易管理:隨時更新,調整,云上操作不易出錯,及時提供數據...... 目前制作IoT標簽的最佳選擇是電子墨水屏。什么是電子墨水屏?(參考:電子發燒友網~"傳感器技術")電子墨水屏(E-link): 電子墨水屏技術最早可以追溯到 1996 年,它基于美國麻省理工學院媒體實驗室(MIT Media Lab)的一項研究,利用電泳技術(EPD)實現顯示,這類屏幕的顯示效果十分接近傳統紙張,因此也被成為“電子紙”。1997 年,麻省理工學院的教授 Joseph Jacobson 創立 E_Ink 公司,開始推動電子紙技術走向商業化,電子墨水技術成為電子紙的主流。 電子墨水與印刷使用的墨水很相似,都是用顏料所制,這也是為什么我們看到電子墨水屏和傳統紙張顯示效果相似的原因。電子墨水通常會制成薄膜,由大量微膠囊﹙microcapsules﹚組成,這些微膠囊只有人類頭發的直徑大小。微膠囊中的黑白小球是帶不同電荷的色素顆粒,初始狀態下,色素顆粒懸浮在微膠囊中,當施加一定方向的電場后,相應的色素顆粒被推到頂部,微膠囊就會顯示不同的顏色,而不同顏色的微膠囊組成了各種文字和圖案。電子紙顯示屏是靠反射環境光來顯示圖案的,不需要背光,即使是在陽光底下,電子紙顯示屏依然清晰可視,可視角度幾乎達到了 180°。因此,電子紙顯示屏非常適合閱讀。 電子墨水屏基本結構如下圖所示: ⒈上層;⒉透明電極層;⒊透明微膠囊;⒋帶正電荷的白色顏料;⒌帶負電荷的黑色顏料;⒍透明液體(油);⒎電極像素層;⒏基板;⒐光線;⒑白色;⒒黑色。電子墨水屏是由許多電子墨水組成,它是融合化學,物理和電子學的整體產生的一種新材料。電子墨水可以看成一個個膠囊的樣子(如上圖所示)。每一個膠囊(位置6)里面有液體電荷,其中正電荷染白色,負電荷染黑色。當在一側(位置8)給予正負電壓,帶有電荷的液體就會被分別吸引和排斥。這樣,每一個像素點就可以顯示白色或者黑色了。因為電子墨水的刷新是不連續的,每一次刷新完成就可以保持現在的圖形,即使拔掉電池也依舊保存,因為電子墨水具有雙穩態效應(磁滯效應)。電子墨水屏的優點:1、省電(可用于低功耗場景)2、護眼(未來很可能替代紙質閱讀)電子墨水屏當前的缺點:1、目前主要只有黑白產品,彩色有三色(黑白紅)/(黑白黃)/4096色。2、不能快速響應一些動畫類需求。3、彩色屏刷新過程中會閃屏。4、成本高。 微雪的柔性墨水屏祼屏(黑白):尺寸: 2.13 inch工作電壓:3.3V/5V通信接口:SPI點距:0.229* 0.228分辨率:212*104顯示顏色:黑、白灰度等級:2局部刷新 :0.3s全局刷新 :2s 注意事項(摘自微雪):1. 支持局刷的屏幕,注意使用的時候不能一直用局刷對屏幕進行刷新,需要在做幾次局刷之后,對屏幕進行一次全刷清屏。否則會造成屏幕顯示效果異常,無法修復。2. 三色的墨水屏,建議將屏幕刷白朝上存放,使用前,先上電做幾次刷白操作。3. 注意屏幕不能長時間上電,在屏幕不刷新的時候,要將屏幕設置成睡眠模式,或者進行斷電處理。否則屏幕長時間保持高電壓狀態,會損壞膜片,無法修復。4. 使用墨水屏的時候,建議刷新時間間隔至少是 180s, 并且至少每 24 小時做一次刷新,如果長期不使用墨水屏的話,要將墨水屏刷白存放。5. 屏幕進入睡眠模式之后,會忽略發送的圖片數據,只有重新初始化才能正常刷新。6. 屏幕的 FPC 排線比較脆弱,注意使用的時候沿屏幕水平方向彎曲排線,不可以沿屏幕垂直方向彎曲排線。7. 墨水屏屏幕較為脆弱,注意盡量避免跌落,碰撞,用力按壓。 DF~FireBeetle 三色電子墨水屏(黑白紅):工作電壓:3.3V數據總線:SPI顏色:黑白紅三色屏幕尺寸:2.13 inch像素:212×104刷新時間:12~15s 背面(下角白色方塊與微控制器上一致,是防呆防反插標志喲^_^): DF~FireBeetle 低功耗系列之一螢火蟲 ESP32微控制器 (支持WiFi&Bluetooth):可以較方便地控制FireBeetle電子墨水屏。 DF為FireBeetle(三色)電子墨水屏提供的API列表:#include "DFRobot_IL0376F_SPI.h"DFRobot_IL0376F_SPI eink; //創建一個ePaper對象函數功能:設定字庫和墨水屏片選引腳并初始化。void begin(const char cs_W21, const char cs_GT30, const char dc, busy);函數功能:清除屏幕為指定顏色。InkScreen_Error clear(uint8_t color);函數功能:顯示圖片(212*104),可以是紅色、黑白、紅白黑三色圖片。void drawPicture(const unsigned char *pic_bw, const unsigned char *pic_red);函數功能:刷新屏幕顯示。void flush(void);函數功能:顯示字符串。void disString(uint8_t x, uint8_t y, char *ch, uint8_t color);函數功能:畫點。InkScreen_Error drawPoint(const unsigned char x, const unsigned char y, const unsigned char color);函數功能:畫線。InkScreen_Error drawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color);函數功能:畫矩形框。InkScreen_Error drawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t color)函數功能:畫圓形邊框或者填充圓形。InkScreen_Error drawFillRect(uint16_t x1, uint16_t y1, uint16_t width, uint16_t length, uint8_t color);參數1 (xc,yc): 圓心坐標 (xc∈(0,211),yc∈(0,103)。InkScreen_Error drawCircle(uint16_t xc, uint16_t yc, uint16_t r, uint16_t fill, uint8_t color);結合例程及上API對電子墨水屏~IoT貨架標簽進行界面布局:主要是在程序中對各種元素進行坐標定位、字號選擇、顏色確定、圖形繪制等。 測試電子墨水屏程序(Arduino): [C++] 純文本查看 復制代碼?010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172/*!* 08/19/2019測試電子墨水屏程序 * from file FigureDemo.ino* 分辨率:212*104*/#include "Arduino.h"#include "DFRobot_IL0376F_SPI.h"#define STOCK_PIN A2 // 這里可以利用環境光線傳感器收集數據模擬商品“美福記”庫存狀態變化DFRobot_IL0376F_SPI epaper;#define EPAPER_CS D3#define Font_CS D6#define EPAPER_DC D8#define EPAPER_BUSY D7char foodName[]="";float price = 0.0;int stock_per = 100;void setup(void){Serial.begin(115200);//Select the corresponding pinsepaper.begin(EPAPER_CS, Font_CS, EPAPER_DC, EPAPER_BUSY);}void loop(void){epaper.fillScreen(WHITE);//Displays a string, black fontepaper.disString(1,5, 2,"食",BLACK);epaper.disString(1,45, 2,"品",BLACK);epaper.disString(0,83, 1,"FOOD",BLACK);//Let me draw 2 red dotLinesfor(uint8_t x=33,y=0; y<103; y+=2){epaper.drawPixel(x,y,RED);epaper.drawPixel(x+1,y,RED);} epaper.disString(35,1, 1,"品名:",BLACK);epaper.disString(35,18, 1,"Name",BLACK);epaper.disString(35,35, 1,"價格:",BLACK);epaper.disString(35,52, 1,"Price",BLACK);epaper.disString(35,69, 1,"庫存:",BLACK);epaper.disString(35,86, 1,"Stock",BLACK);epaper.disString(78,1, 1,"美福記",RED);epaper.disString(78,30, 2,"29.8",RED);epaper.disString(140,45, 1,"¥/Kg",RED);epaper.disString(185,1, 1,"20%",RED);// Draw a down arrowepaper.fillRect(191,18, 12,40,RED);epaper.fillTriangle(184,50, 210,50, 197,70,RED);//Draw a black rectangle(x,y,l,r,c)epaper.drawRoundRect(75,75, 135,23,8,BLACK);epaper.drawRoundRect(76,76, 133,21,8,WHITE);epaper.drawRoundRect(77,77, 131,19,8,WHITE);stock_per =map(analogRead(A2),0,1023,0,100);epaper.fillRoundRect(78,78, 129*stock_per/100,17,7,RED);epaper.disString(185,1, 1,"20%",RED);//Refresh screen displayepaper.flush();delay(10000);}測試IoT程序(ARDUINO): [C++] 純文本查看 復制代碼?001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112#include <WiFi.h>#include <PubSubClient.h>#include <ArduinoJson.h>#include "DFRobot_Aliyun.h"#include "DFRobot_DHT11.h"#define DHT11_PIN D2 //定義傳感器引腳,用于收集數據模擬庫存數據/*配置WIFI名和密碼*/const char * WIFI_SSID = "your ssid";const char * WIFI_PASSWORD = "your password";/*配置設備證書信息*/String ProductKey = "xxxxxxxxxx";String ClientId = "12345";String DeviceName = "STOCK";String DeviceSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxx";/*配置域名和端口號*/String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com";uint16_t PORT = 1883;/*需要操作的產品標識符(溫度和濕度兩個標識符)*/String TempIdentifier = "xxxxxxx";String HumiIdentifier = "xxxxxxxx";/*需要上報和訂閱的兩個TOPIC*/const char * subTopic = "xxxxxxxxxxxxxxxxxxxxxxxxx/property/set";//****setconst char * pubTopic = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/property/post";//******postDFRobot_Aliyun myAliyun;WiFiClient espClient;PubSubClient client(espClient);DFRobot_DHT11 DHT;void connectWiFi(){Serial.print("Connecting to ");Serial.println(WIFI_SSID);WiFi.begin(WIFI_SSID,WIFI_PASSWORD);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println();Serial.println("WiFi connected");Serial.print("IP Adderss: ");Serial.println(WiFi.localIP());}void callback(char * topic, byte * payload, unsigned int len){Serial.print("Recevice [");Serial.print(topic);Serial.print("] ");for (int i = 0; i < len; i++){Serial.print((char)payload[i]);[/i][i] }[/i][i] Serial.println();[/i][i]}[/i][i]void ConnectAliyun(){[/i][i] while(!client.connected()){[/i][i] Serial.print("Attempting MQTT connection...");[/i][i] /*根據自動計算的用戶名和密碼連接到Alinyun的設備,不需要更改*/[/i][i] if(client.connect(myAliyun.client_id,myAliyun.username,myAliyun.password)){[/i][i] Serial.println("connected");[/i][i] client.subscribe(subTopic);[/i][i] }else{[/i][i] Serial.print("failed, rc=");[/i][i] Serial.print(client.state());[/i][i] Serial.println(" try again in 5 seconds");[/i][i] delay(5000);[/i][i] }[/i][i] }[/i][i]}[/i][i]void setup(){[/i][i] Serial.begin(115200);[/i][i] /*連接WIFI*/[/i][i] connectWiFi();[/i][i] /*初始化Alinyun的配置,可自動計算用戶名和密碼*/[/i][i] myAliyun.init(ALIYUN_SERVER,ProductKey,ClientId,DeviceName,DeviceSecret);[/i][i] client.setServer(myAliyun.mqtt_server,PORT);[/i][i] /*設置回調函數,當收到訂閱信息時會執行回調函數*/[/i][i] client.setCallback(callback);[/i][i] /*連接到Aliyun*/[/i][i] ConnectAliyun();[/i][i]}[/i][i]uint8_t tempTime = 0;[/i][i]void loop(){[/i][i] if(!client.connected()){[/i][i] ConnectAliyun();[/i][i] }[/i][i] /*一分鐘上報兩次溫濕度(模擬福美記和福美佳兩種商品的庫存狀態數據)信息*/[/i][i] if(tempTime > 60){[/i][i] tempTime = 0;[/i][i] DHT.read(DHT11_PIN);[/i][i] Serial.print("DHT.temperature=");[/i][i] Serial.println(DHT.temperature);[/i][i] Serial.print("DHT.humidity=");[/i][i] Serial.println(DHT.humidity);[/i][i] client.publish(pubTopic,("{\"id\":"+ClientId+",\"params\":{\""+TempIdentifier+"\":"+DHT.temperature+",\""+HumiIdentifier+"\":"+DHT.humidity+"},\"method\":\"thing.event.property.post\"}").c_str());[/i][i] }else{[/i][i] tempTime++;[/i][i] delay(500);[/i][i] }[/i][i] client.loop();[/i][i]}利用阿里云生成安卓APP:本應用采取 DHT11 溫濕度傳感器獲取環境溫度和濕度模擬商品庫存狀態,并將數據傳輸給手機 App 顯示,從而實現遠程實時監控庫存的功能。應用目標:通過手機 App 實時監測超市商品庫存情況。 所需元件:DHT11 溫濕度傳感器 x1FireBettle Board-ESP32 x1FireBettle Gravity 擴展板 x1DHT11x1智能手機 x1硬件連接:把 FireBettle Gravity 擴展板直插在 FireBettle Board-ESP32 主板上,再把 DHT11 溫濕度模塊接在擴展板的 D2 數字引腳上,確保電源引腳、接地引腳和信號引腳都連接正確。按以下我親自成功的步驟進行即可:(或者參考官方教程)1.打開瀏覽器,輸入網址 https://iot.aliyun.com,登錄并進入物聯網平臺.2.創建一個名為“庫存監測”的產品,如下圖所示,若產品創建成功,會自動出現在產品列表中; 3. 為庫存監測產品定義功能名分別為“美福記”和“美福佳”的屬性,自定義產品標識符,美福記取值范圍為0~100,美福佳為 0~100,如下圖所示。功能添加完畢后,會自動出現在自定義功能欄下。 4.為庫存監測產品添加一個名為 STOCK 的設備,如下圖所示,設備添加完畢后,會自動出現在設備列表中。 5.將庫存監測產品導入“我的智能云家庭管理”項目中,如下圖所示: 6.創建移動應用開發APP:選中左側導航欄的移動應用開發在右側單擊打開“新增可視化應用”,如下圖所示: 7.點擊自定義頁面后的+號,編輯,將“自定義新增頁 1”改為庫存監測,用鼠標將可視化組建下的實時曲線控件拖動到中間的頁面上,如下圖所示: 8.選中其中一個實時曲線,點擊數據->配置數據,在彈出的選項框里選擇相應的選項,并點擊確定。 9.修改樣式,常常保存。 10.配置首頁模塊。這一步是為了設置一個導航欄,鏈接到上面設計的“庫存監測”。選中[功能]首頁模塊->列表,如下圖所示,選中新增頁面入口,在彈出的“頁面入口 1”下,完成相應信息的選擇,將其鏈接到剛才設計的“庫存監測“頁面,如下圖所示,點擊確定完成配置后,別忘了點擊保存。 11.安裝包生成。在編輯頁面,點擊構建,選擇 Andriod 構建或 iOS 發構建,如下圖所示: 12.手機掃碼,APP到手了! 13.我定義的APP~“IoT標簽”界面: 以上測試程序合并為最終程序(ARDUINO): [C++] 純文本查看 復制代碼?001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166#include "Arduino.h"#include <WiFi.h>#include <PubSubClient.h>#include <ArduinoJson.h>#include "DFRobot_Aliyun.h"#include "DFRobot_DHT11.h"#include "DFRobot_IL0376F_SPI.h"http://///////////////////////////////////////////DFRobot_IL0376F_SPI epaper;#define DHT11_PIN D2 //定義傳感器引腳,用于收集數據模擬庫存數據#define EPAPER_CS D3 //定義電子墨水屏相關#define Font_CS D6#define EPAPER_DC D8#define EPAPER_BUSY D7///////////////////////////////////////////////*配置WIFI名和密碼*/const char * WIFI_SSID = "XXXXXXX";const char * WIFI_PASSWORD = "XXXXXXXXXX";/*配置設備證書信息*/String ProductKey = "XXXXXXXXXXX";String ClientId = "12345";String DeviceName = "STOCK";String DeviceSecret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";/*配置域名和端口號*/String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com";uint16_t PORT = 1883;/*需要操作的產品標識符(溫度和濕度兩個標識符)*/String TempIdentifier = "meifuji";String HumiIdentifier = "meifujia";/*需要上報和訂閱的兩個TOPIC*/const char * subTopic = "/sys/XXXXXXXXXXX/STOCK/thing/service/property/set";//****setconst char * pubTopic = "/sys/XXXXXXXXXXX/STOCK/thing/event/property/post";//******postDFRobot_Aliyun myAliyun;WiFiClient espClient;PubSubClient client(espClient);DFRobot_DHT11 DHT;///////////////////////////////////////////////void connectWiFi(){Serial.print("Connecting to ");Serial.println(WIFI_SSID);WiFi.begin(WIFI_SSID,WIFI_PASSWORD);while(WiFi.status() != WL_CONNECTED){delay(500);Serial.print(".");}Serial.println();Serial.println("WiFi connected");Serial.print("IP Adderss: ");Serial.println(WiFi.localIP());}///////////////////////////////////////////////void callback(char * topic, byte * payload, unsigned int len){Serial.print("Recevice [");Serial.print(topic);Serial.print("] ");for (int i = 0; i < len; i++){Serial.print((char)payload[i]);[/i]}Serial.println();}///////////////////////////////////////////////void ConnectAliyun(){while(!client.connected()){Serial.print("Attempting MQTT connection...");/*根據自動計算的用戶名和密碼連接到Alinyun的設備,不需要更改*/if(client.connect(myAliyun.client_id,myAliyun.username,myAliyun.password)){Serial.println("connected");client.subscribe(subTopic);}else{Serial.print("failed, rc=");Serial.print(client.state());Serial.println(" try again in 5 seconds");delay(5000);}}}///////////////////////////////////////////////////void setup(){Serial.begin(115200);//Select the corresponding pinsepaper.begin(EPAPER_CS, Font_CS, EPAPER_DC, EPAPER_BUSY); /*連接WIFI*/connectWiFi();/*初始化Alinyun的配置,可自動計算用戶名和密碼*/myAliyun.init(ALIYUN_SERVER,ProductKey,ClientId,DeviceName,DeviceSecret);client.setServer(myAliyun.mqtt_server,PORT);/*設置回調函數,當收到訂閱信息時會執行回調函數*/client.setCallback(callback);/*連接到Aliyun*/ConnectAliyun();}//////////////////////////////////////////////////uint8_t tempTime = 0;uint8_t stock_per = 100;void loop(){if(!client.connected()){ConnectAliyun();}/*上報溫濕度(模擬福美記和福美佳兩種商品的庫存狀態數據)信息*/DHT.read(DHT11_PIN);Serial.print("DHT.temperature= ");Serial.println(DHT.temperature);Serial.print("DHT.humidity= ");Serial.println(DHT.humidity);client.publish(pubTopic,("{\"id\":"+ClientId+",\"params\":{\""+TempIdentifier+"\":"+DHT.temperature+",\""+HumiIdentifier+"\":"+DHT.humidity+"},\"method\":\"thing.event.property.post\"}").c_str());client.loop();/*借用DH11傳感器的溫度數據顯示福美記商品的庫存狀態信息*/stock_per = DHT.temperature;epaper.fillScreen(WHITE);//Displays a string, black fontepaper.disString(1,5, 2,"食",BLACK);epaper.disString(1,45, 2,"品",BLACK);epaper.disString(0,83, 1,"FOOD",BLACK);//Let me draw 2 red dotLinesfor(uint8_t x=33,y=0; y<103; y+=2){epaper.drawPixel(x,y,RED);epaper.drawPixel(x+1,y,RED);} epaper.disString(35,1, 1,"品名:",BLACK);epaper.disString(35,18, 1,"Name",BLACK);epaper.disString(35,35, 1,"價格:",BLACK);epaper.disString(35,52, 1,"Price",BLACK);epaper.disString(35,69, 1,"庫存:",BLACK);epaper.disString(35,86, 1,"Stock",BLACK);epaper.disString(78,1, 1,"美福記",RED);epaper.disString(78,30, 2,"29.8",RED);epaper.disString(140,45, 1,"¥/Kg",RED);epaper.disString(185,1, 1,"20%",RED);// Draw a down arrowepaper.fillRect(191,18, 12,40,RED);epaper.fillTriangle(184,50, 210,50, 197,70,RED);//Draw a black rectangle(x,y,l,r,c)epaper.drawRoundRect(75,75, 135,23,8,BLACK);epaper.drawRoundRect(76,76, 133,21,8,WHITE);epaper.drawRoundRect(77,77, 131,19,8,WHITE);epaper.fillRoundRect(78,78, 129*stock_per/100,17,7,RED);epaper.disString(185,1, 1,"20%",RED);//Refresh screen displayepaper.flush(); delay(12000);}運行代碼串口顯示溫度(庫存)28: 再看電子墨水屏顯示庫存(指紅色部分約28%):
    來自:Hackaday Prize 2019時間:2019-08-22 diy制作
銷量
0
查看
6466
參數名 參數值
發布于 2019 年 04 月 22日
Moore8直播課堂

tracer ?? 广西快乐十分即时开奖