ዝርዝር ሁኔታ:

የ WiFi LED ስትሪፕ + የሙቀት ዳሳሽ በ ESP8266: 6 ደረጃዎች
የ WiFi LED ስትሪፕ + የሙቀት ዳሳሽ በ ESP8266: 6 ደረጃዎች

ቪዲዮ: የ WiFi LED ስትሪፕ + የሙቀት ዳሳሽ በ ESP8266: 6 ደረጃዎች

ቪዲዮ: የ WiFi LED ስትሪፕ + የሙቀት ዳሳሽ በ ESP8266: 6 ደረጃዎች
ቪዲዮ: Вентиляция в хрущевке. Как сделать? Переделка хрущевки от А до Я. #31 2024, ሀምሌ
Anonim
የ WiFi LED ስትሪፕ + የሙቀት ዳሳሽ በ ESP8266
የ WiFi LED ስትሪፕ + የሙቀት ዳሳሽ በ ESP8266

ይህ መማሪያ ESP8266 ን ለማቀናጀት እና ከሁለቱም የሙቀት ዳሳሽ እና ከ LED ስትሪፕ ጋር እንዲነጋገር እርምጃዎችን ይገልፃል ፣ ግብዓት ለመቀበል እና በ WiFi ላይ ከ MQTT ጋር መላክ ይችላል። ፕሮጀክቱ የተሠራው በካል ፖሊ ሳን ሉዊስ ኦቢስፖ በ 2016 መገባደጃ- CPE 439: Real Time Embedded Systems ውስጥ ነው። አጠቃላይ ግቡ በበይነመረብ የተገናኘ “ነገር” በርካሽ ሃርድዌር የመፍጠርን ቀላልነት ለማሳየት ነበር።

የሚያስፈልጉ ዕቃዎች/ዕቃዎች

  • NodeMCU ESP8266 dev ቦርድ
  • WS2812B LED ስትሪፕ
  • MAX31820 የሙቀት ዳሳሽ
  • የዳቦ ሰሌዳ
  • 4.7 ኪ ohm resistor
  • 220 ohm resistor
  • ዝላይ ሽቦዎች
  • ማይክሮ-ዩኤስቢ ገመድ
  • ሊኑክስን የሚያሄድ ፒሲ (ወይም ቪኤም) (ለምሳሌ ኡቡንቱ)

ግምቶች/ቅድመ -ሁኔታዎች

  • የትእዛዝ-መስመር መሣሪያዎችን በመጠቀም እና ጥቅሎችን በዲቢያን ላይ በተመሠረተ distro ላይ የመጫን ልምድ
  • የ Makefile አገባብ መሠረታዊ ግንዛቤ
  • ሽቦዎችን በማገናኘት ላይ

ደረጃ 1 የግንባታ አካባቢን መፍጠር

ፕሮጀክቱን ለመገንባት በእርስዎ ማሽን ላይ የተጫነ esp-open-sdk ያስፈልግዎታል። አገናኙን ይከተሉ እና የግንባታ መመሪያዎችን ያንብቡ። በአጭሩ ጥገኝነትን ለመጫን አንዳንድ የ sudo apt-get ትዕዛዞችን ታደርጋለህ ፣ git clone-esp-open-sdk ን ለመዝጋት/ለማውረድ እና በመጨረሻም esp-open-sdk ን ለመገንባት ትእዛዝ ያድርጉ።

ተመልከተኝ

ደረጃ 2: የምንጭ ኮድ ያግኙ ፣ ያዋቅሩ እና ይገንቡ

አሁን esp-open-sdk ተገንብቷል ፣ የፕሮጀክቱን ማከማቻ ይደብቁ።

git clone

ወደ የፕሮጀክቱ ማውጫ ይቀይሩ ፣.local አቃፊ ይፍጠሩ እና የምሳሌ ቅንብሮችን ይቅዱ።

cd esp-rtos- ሙከራዎች

mkdir -p.local cp settings.example.mk.local/settings.mk

አሁን ከማንኛውም የጽሑፍ አርታዒ ጋር.local/settings.mk ን ይክፈቱ እና የሚከተሉትን ቅንብሮች ይለውጡ

  • OPENSDK_ROOT: በደረጃ 1 የገነቡትን esp-open-sdk የሚገኝበት ፍጹም መንገድ
  • WIFI_SSID - የ WiFi አውታረ መረብዎ SSID
  • WIFI_PASS - የ WiFi አውታረ መረብዎ የይለፍ ቃል
  • PIXEL_COUNT ፦ በእርስዎ WS2812B LED strip ላይ የፒክሴሎች ብዛት

ማሳሰቢያ -ይህ ፕሮጀክት ኤልኢዲዎችን ለማሽከርከር SPI ን ስለሚጠቀም እና እነሱን ለማቅረብ NodeMCU 3.3v ን ስለሚጠቀም ምናልባት ከ ~ 60 LED ዎች በላይ መንዳት ላይችሉ ይችላሉ።

ማሳሰቢያ - ሌሎች ቅንጅቶች መለወጥ አያስፈልጋቸውም ፣ ግን ከተፈለገ ሊሆኑ ይችላሉ። ቅድሚያ የሚሰጣቸውን ተግባራት ቅደም ተከተል ለመጠበቅ ይመከራል። ቅድሚያ የሚሰጠው ቁጥር ዝቅተኛ ፣ የተግባሩ ቀዳሚነት ዝቅ ይላል።

አሁን ፕሮጀክቱን ይገንቡ

ያድርጉ -C ምሳሌዎች/cpe439

ሁሉም ነገር በትክክል ከተዋቀረ ማጠናቀር መጀመር አለበት። በመጨረሻ ማየት ያለብዎት-

በተሳካ ሁኔታ 'firmware/cpe439.bin' ተፈጥሯል

ተመልከተኝ

ደረጃ 3 የሃርድዌር ክፍሎችን ያገናኙ

የሃርድዌር ክፍሎችን ያገናኙ
የሃርድዌር ክፍሎችን ያገናኙ

አሁን ኮዱ ተሰብስቧል ፣ የእኛን ተጓዳኝ አካላት ለማገናኘት ጊዜው አሁን ነው።

በመጀመሪያ ፣ NodeMCU ን በዳቦ ሰሌዳው ላይ ይለጥፉ ፣ ከዚያ በስዕላዊ መግለጫው ላይ እንደሚታየው ግንኙነቶችን ለመሥራት የጃምፐር ሽቦዎችን ይጠቀሙ።

ሊያውቋቸው የሚገቡ ሁለት ነገሮች

  1. አስፈላጊ-የ WS2812B የውሂብ መስመር ባለሁለት አቅጣጫ አይደለም። በጠርዙ የ LED ጎን ላይ ያሉትን ምልክቶች በቅርበት ከተመለከቱ ፣ አንድ አቅጣጫ የሚያመለክቱ ትናንሽ ቀስቶችን ማየት አለብዎት። ከኖድኤምሲዩ D7 የሚወጣው ውጤት ወደ WS2812B ወደ አቅጣጫው ጠቋሚ በተመሳሳይ አቅጣጫ መሄድ አለበት ፣ ይህም በቅርበት ከተመለከቱ በስዕላዊ መግለጫው ውስጥ ማየት ይችላሉ።
  2. የእርስዎ WS2812B በምን ዓይነት አያያ comesች ላይ በመመስረት በደህና ወደ ዳቦ ሰሌዳ እንዲገናኙ ለማድረግ አንዳንድ ማሻሻያዎችን ማድረግ ያስፈልግዎታል። እንዲሁም የዳቦ ሰሌዳ-አቅም ካለው መዝለያ ኬብሎች ጋር ለማገናኘት የአዞ ክሊፖችን መጠቀም ይችላሉ።
  3. የ MAX31820 ፒኖች አነስ ያለ ቅጥነት አላቸው እና ከመደበኛ 0.1 ኢንች/2.54 ሚሜ ዝላይዎች በጣም ቀጭን ናቸው ፣ ለማገናኘት አስቸጋሪ ያደርጋቸዋል። በዚህ መንገድ አንዱ ከሴት ወደ ወንድ የሚዘል ሽቦዎችን መጠቀም ፣ የፕላስቲክ መያዣውን ከሴት ጎን ማውጣት ፣ ከዚያ የሴት መዝለያ ጫፎቹን በትናንሽ MAX31820 ፒኖች ዙሪያ በጥብቅ ለመጨፍለቅ አንዳንድ መያዣዎችን ይጠቀሙ።

ክፍሎቹን እንዳያበላሹ NodeMCU ን ከማብራትዎ በፊት ግንኙነቶቹን እንደገና ያረጋግጡ።

ደረጃ 4 - ብልጭታ እና አሂድ

ብልጭ ድርግም

ከሁሉም ሃርድዌር ጋር ተገናኝተው የእርስዎን NodeMCU ይሰኩ እና በሚከተለው ትዕዛዝ ያብሩ

ብልጭታ ያድርጉ -C ምሳሌዎች/cpe439 ESPPORT =/dev/ttyUSB0

/dev/ttyUSB0 NodeMCU ከዚህ በታች መታየት ያለበት ተከታታይ com ነው። ሌሎች ተከታታይ መሣሪያዎች ካሉዎት እንደ /dev /ttyUSB1 ወይም ሌላ ሌላ ቁጥር ሊታይ ይችላል። ለመፈተሽ ይህንን ትእዛዝ ሁለት ጊዜ ማሄድ ይችላሉ ፣ አንድ ጊዜ በ NodeMCU ሲነቀል ፣ እና አንድ ጊዜ ከተሰካ እና ልዩነቱን ያወዳድሩ

ls /dev /ttyUSB*

ሊያጋጥሙዎት የሚችሉት ሌላው ችግር መሣሪያውን ለመድረስ ፈቃድ አለመስጠት ነው። ይህንን ለማስተካከል ሁለት መንገዶች አሉ-

  1. ተጠቃሚዎን ወደ የውይይት ቡድን ያክሉ ፦

    sudo adduser $ (whoami) መገናኛ

  2. መሣሪያውን chmod ወይም ጮክ ያድርጉ

sudo chmod 666 /dev /ttyUSB0 sudo chown $ (whoami): $ (whoami) /dev /ttyUSB0ቋሚ መፍትሔ በመሆኑ የመጀመሪያው ዘዴ ይመረጣል።

በመሮጥ ላይ

የፍላሽ ትዕዛዙን በተሳካ ሁኔታ ከሠራ በኋላ መሣሪያው ወዲያውኑ ይነሳል እና የተቀናጀውን ኮድ ማሄድ ይጀምራል። ብልጭ ድርግም ካደረጉ በኋላ በማንኛውም ጊዜ ተከታታይ ውጤትን ለመመልከት የሚከተለውን ትእዛዝ ማሄድ ይችላሉ-

python3 -m serial.tools.miniterm -eol CRLF --exit -char 003 /dev /ttyUSB0 500000 --raw -q

ጊዜን ለመቆጠብ ይህንን ወደ የእርስዎ ~/.bashrc ፋይል ማከል ይችላሉ-

ተለዋጭ nodemcu = 'python3 -m serial.tools.miniterm -eol CRLF -exit -char 003 /dev /ttyUSB0 500000 --raw -q'

..እዚያ ለዚያ ትእዛዝ ተለዋጭ ስም “nodemcu” ብለው ለመተየብ ያስችልዎታል።

ሁሉም ነገር በትክክል ከተዋቀረ የእርስዎ የ LED ስትሪፕ አረንጓዴ ማብራት አለበት ፣ እና በተከታታይ ላይ የ WiFi ግንኙነትን ማየት ፣ የአይፒ አድራሻ ማግኘት ፣ ከ MQTT ጋር መገናኘት እና የሙቀት መጠን መረጃ እየተገፋ መሆኑን መልዕክቶች ማየት አለብዎት።

ከ MyWiFiSSID ፣ ሰርጥ 1dhcp ደንበኛ ጅምር ጋር ተገናኝቷል… wifi_task: status = 1wifi_task: status = 1ip: 192.168.2.23 ፣ ጭንብል ፦ 255.255.255.0 ፣ gw: 192.168.2.1ws2812_spi_init ok Reequest tempe: (ድጋሚ) ከ MQTT አገልጋይ test.mosquitto.org ጋር በመገናኘት ላይ

ደረጃ 5: መስተጋብር

መሣሪያዎ ከ WiFi ጋር ተገናኝቶ እና የ MQTT ደላላ በተሳካ ሁኔታ ከተገናኘ ፣ ከ MQTT ጋር ከ NodeMCU ውሂብ መላክ እና መቀበል ይችላሉ። አስቀድመው ካላደረጉ የትንኝ ደንበኞችን ጥቅል ይጫኑ ፦

sudo apt-get ጫን ትንኞች-ደንበኞችን

አሁን የወባ ትንኝ_ፓብ እና የትንኝ_ሱብ ፕሮግራሞችን ከ shellልዎ መጠቀም መቻል አለብዎት።

የሙቀት ዝመናዎችን በመቀበል ላይ

የሙቀት መረጃን ለመቀበል ኖድኤምሲዩ ለሚያወጣው ርዕስ ለመመዝገብ የ mosquitto_sub ትዕዛዙን መጠቀም እንፈልጋለን።

mosquitto_sub -h test.mosquitto.org -t /cpe439 /temp

ወደ ተርሚናል ሲደርሱ የሙቀት መረጃን (በሴልሲየስ ውስጥ) ማየት አለብዎት።

+25.87+25.93+25.68…

የ LED ንጣፍ ቀለሙን በርቀት ማቀናበር

በ MQTT ላይ የ RGB እሴቶችን ወደ NodeMCU ለመላክ ቀለል ያለ የመልእክት ቅርጸት ጥቅም ላይ ይውላል። የትእዛዝ ቅርጸቱ እንደዚህ ይመስላል

r: RRRg: GGGb: BBB ~

RRR ፣ GGG ፣ BBB ለመላክ ከሚፈልጉት ቀለም ከ RGB እሴቶች (0-255) ጋር ይዛመዳል። ትዕዛዛችንን ለመላክ ፣ ትንኝ_ፓብ ትዕዛዙን እንጠቀማለን። አንዳንድ ምሳሌዎች እነሆ -

mosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m 'r: 0g: 255b: 0 ~ ' # greenmosquitto_pub -h test.mosquitto.org -t /cpe439 /rgb -m' r: 0g: 0b: 255 ~ ' # ሰማያዊ

ፈጠራን ለማግኘት ከፈለጉ እንደዚህ ያለ በመስመር ላይ ባለ ቀለም መልቀሚያ ያግኙ እና በመረጡት የ RGB እሴት ትዕዛዙን ያርትዑ።

ተመልከት

በዚህ ፕሮጀክት ውስጥ ያሉት ርዕሶች በሕዝባዊ MQTT ደላላ ላይ ወደ /cpe439 /rgb እና /cpe439 /temp ተቀናብረዋል ፣ ይህ ማለት ሌላ ሰው ከእርስዎ ጋር ተመሳሳይ ርዕሶችን እንዳያሳትም ወይም እንዳይመዘገብ የሚከለክል ምንም ነገር የለም ማለት ነው። ነገሮችን ለመሞከር ፣ የሕዝብ ደላላን መጠቀም ጥሩ ነው ፣ ግን ለከባድ ፕሮጄክቶች በይለፍ ቃል ጥበቃ ከደላላ ጋር መገናኘት ወይም የራስዎን ደላላ በአገልጋይ ላይ ማሄድ ይፈልጋሉ።

ደረጃ 6 - የትግበራ ዝርዝሮች

Onewire

ESP8266 1 ኮር ብቻ አለው ፣ በጣም ረጅም ፣ እንደ የሙቀት መለኪያ ለመለካት 750ms ን መጠበቅ ያሉ ተግባሮችን ማገድ በተለምዶ WiFi በጥሩ ሁኔታ እንዳይሠራ እና ምናልባትም ብልሽት እንኳን ያስከትላል። በ FreeRTOS ምሳሌ ውስጥ ፣ እነዚህን ረጅም መጠባበቂያዎች ለማስተናገድ vTaskDelay () ን ይደውላሉ ፣ ነገር ግን ከ FreeRTOS ስርዓት መዥገር አጠር ያሉ በማንበብ እና በመፃፍ መካከል የሚፈለጉ ብዙ አጫጭር መጠባበቂያዎች አሉ ፣ እና ስለሆነም በ vTaskDelay () ሊወገድ አይችልም። በእነዚህ ዙሪያ ለመሄድ ፣ በዚህ ፕሮጀክት ውስጥ ያለው ባለአሽከርካሪ ሾፌር በ ESP8266 የሃርድዌር ሰዓት ቆጣሪ የሚነዳውን የመንግስት ማሽን ለማሽከርከር የተፃፈ ሲሆን ይህም እንደ እያንዳንዱ 10 ማይክሮ ሰከንዶች ያህል ዝቅተኛ ክስተቶችን ሊያስነሳ ይችላል ፣ ይህም በጣም አጭር ይሆናል በኦንዌይር የንባብ/የመፃፍ ክዋኔዎች መካከል አስፈላጊ ጊዜ። አብዛኛዎቹ ሌሎች ትግበራዎች ይህንን ለማስተናገድ ለማዘግየት () (ወይም) ተመሳሳይ የማገጃ ጥሪ ይጠቀማሉ ፣ ግን ያለማቋረጥ የሙቀት ዝመናዎችን የሚወስዱ ከሆነ ፣ እነዚያ ሁሉ መዘግየቶች መደመር ይጀምራሉ ፣ በዚህም አነስተኛ ምላሽ ሰጪ መተግበሪያን ያስከትላሉ። የዚህ የኮድ ክፍል ምንጭ በተጨማሪ/ኦንዌየር አቃፊ ውስጥ ይገኛል።

WS2812B

የ ESP8266 የ LED ቁራጮችን በ 800 ኪኸ ለማሽከርከር ለ PWM ምንም መደበኛ የሃርድዌር አማራጮች የሉትም። በዚህ ዙሪያ ለመዞር ፣ ይህ ፕሮጀክት ኤልኢዲዎቹን ለማሽከርከር የ SPI MOSI ፒን ይጠቀማል። የ SPI የሰዓት ምጣኔን በማስተካከል እና የ SPI የክፍያ ጭነት ዙሪያውን በመቀየር ፣ የእያንዳንዱን ኤልኢዲ ትክክለኛ አስተማማኝ ቁጥጥር ማግኘት ይችላሉ። ይህ ዘዴ እንከን የለሽ አይደለም- ለአንድ ኤልኢዲዎች በ 5 ቪ ምንጭ የተጎላበተ እና በ SPI ፒን ውፅዓት ደረጃ መለወጫ መጨመር አለበት። ግን 3.3V ይሠራል። ሁለተኛ ፣ የ SPI ዘዴን በመጠቀም ባልተሟላ ጊዜ ምክንያት የሚከሰቱ ብልሽቶች አሉ። እና ሦስተኛው አሁን SPI ን ለሌላ ለማንኛውም ነገር መጠቀም አይችሉም። በዚህ ዘዴ ላይ ተጨማሪ ዳራ እዚህ ሊገኝ ይችላል ፣ እና የዚህ ኮድ ክፍል ምንጭ በተጨማሪ/ws2812 አቃፊ ውስጥ ይገኛል።

የ LED ንጣፎችን ለመንዳት የበለጠ አስተማማኝ ዘዴ i2s ን መጠቀም ነው። ሆኖም ይህ ዘዴ ብዙ ቺፕ-ተኮር ጠላፊዎች አሉት ፣ ስለዚህ SPI እንደ የመማሪያ ልምምድ የተሻለ ምርጫ ይመስል ነበር።

የሚመከር: