Talaan ng mga Nilalaman:

Bumuo ng isang Module ng Liwanag Sa AtHome: 7 Hakbang
Bumuo ng isang Module ng Liwanag Sa AtHome: 7 Hakbang

Video: Bumuo ng isang Module ng Liwanag Sa AtHome: 7 Hakbang

Video: Bumuo ng isang Module ng Liwanag Sa AtHome: 7 Hakbang
Video: Secret Intelligent. Paano mo Malalaman na IKAW ay LIHIM na MATALINO? 2024, Nobyembre
Anonim
Bumuo ng isang Module ng Luminosity Sa AtHome
Bumuo ng isang Module ng Luminosity Sa AtHome

Ang AtHome ay isang buong openource at openhardware na proyekto ng mag-aaral na ginawa ng pangkat na AtHome mula sa Epitech, na naglalayong bumuo ng isang konektadong solusyon ng maraming mga indibidwal na mga module ng sensor na nakikipag-usap sa isang self-host na database na naglalantad sa isang API na ginamit upang pakainin ang isang application ng smartphone at isang web application. Sinusubaybayan ng mga module ang panloob na kapaligiran ng isang bahay at nakapagbigay ng isang visual na feedback sa gumagamit, mula sa berde (mabuti) hanggang sa pula (masama) at ang nailipat na data ay nakikita ng gumagamit sa pamamagitan ng serial na komunikasyon ng isang module o sa ang aming mga application kung gagamitin mo ang mga ito.

Kahit na ang proyektong ito ay nasa ilalim pa rin ng isang aktibong pag-unlad, ang mga pangunahing pag-andar ng aming mga module ay handa na at parang madaling gamitin upang makabuo ng mga pasadyang modyul. Kaya, kaya't iminumungkahi ko sa iyo upang makita kung paano bumuo ng iyong sariling simpleng module sa halimbawang ito ng luminosity module.

Ang mga modyul na ito ay karaniwang binuo gamit ang isang board na tumutugma sa Arduino (isang bahagyang pangunahing Arduino ay dapat sapat hangga't mayroon itong suporta sa Stream, Wire at isang UART stream), isang LED (pula o RGB) na nagiging pula kung sakaling may isyu, isang sensor, isang power supply (wall power-supply o baterya) at isang case na laser-cut.

Oo, tiyak na hindi ito bago, maraming mga proyekto ng sensor ngunit umaasa kami na ang iba pang mga tampok tulad ng pagtuklas ng mga isyu sa kalusugan, komunikasyon at pag-iimbak ng impormasyon sa isang self-host server at visualization application ay makakatulong sa iyo. O kung nais mo lamang subaybayan ang iyong bahay, mga simpleng proyekto o hindi gaanong kawili-wili:)

Hakbang 1: Pagtitipon ng Mga Bahagi

Pagtitipon ng Mga Bahagi
Pagtitipon ng Mga Bahagi

Para sa proyektong ito, kakailanganin mo ng ilang mga bahagi upang mabuo ang iyong module na AtHome:

  • 1x Arduino-Compatible board: Dito gagamit ako ng isang Arduino UNO (ngunit gumagana rin ito sa iba pang mga board tulad ng TI Launchpads at ESP8266 boards)
  • 1x sensor: Gumagamit ako ng isang TSL2561 luminosity sensor (ang listahan ng mga sinusuportahang sensor ay magagamit sa dokumentasyon ng aming library)
  • 1x led: Gumagamit ako ng isang Grove Chainable RGB LED dito (ngunit maaari rin itong isang simpleng pulang humantong o isang NeoPixel)
  • Mga Dupont Wires

Ang listahan ng mga katugmang bahagi ay magagamit sa dokumentasyon ng aming proyekto.

Hakbang 2: Pag-install ng Aming Library

Pag-install ng Aming Library
Pag-install ng Aming Library
Pag-install ng Aming Library
Pag-install ng Aming Library

Upang mai-install ang aming silid-aklatan, kakailanganin mong mag-download mula sa aming imbakan (i-publish namin ito sa paglaon sa listahan ng Arduino IDE at PlatformIO) kasama ang link na ito:

gitlab.com/Woodbox/Framework/-/jobs/artifact/master/download?job=deploy

Pagkatapos, pumunta sa Arduino IDE at piliin ang "Sketch> Isama ang Library> Idagdag. ZIP Library…". Pagkatapos piliin ang zip file na pinangalanang "artifact.zip" at mag-click sa "OK".

Hakbang 3: Pag-install ng Mga Kinakailangan na Aklatan

Pag-install ng Kinakailangan na Mga Aklatan
Pag-install ng Kinakailangan na Mga Aklatan
Pag-install ng Kinakailangan na Mga Aklatan
Pag-install ng Kinakailangan na Mga Aklatan
Pag-install ng Kinakailangan na Mga Aklatan
Pag-install ng Kinakailangan na Mga Aklatan

Upang gumana, kailangan ng aming silid-aklatan ng ilang iba pang mga aklatan upang mai-install sa iyong computer:

  • Library ng Arkhipenko TaskScheduler
  • NAKIKITA ng library ng Studio Grove Digital Light Sensor
  • SEEED Studio Grove Chainable RGB LED library
  • Adafruit NeoPixel library

Maaari mong mai-install ang mga ito sa pamamagitan ng manager ng library ng Arduino IDE, sa pamamagitan ng pagpunta sa "Sketch"> "Isama ang Library"> "Pamahalaan ang mga aklatan …".

Sa bagong window na magbubukas, isulat sa puting search bar ang pangalan ng library na nais mong i-install, pagkatapos ay mag-click sa block nito. Lilitaw ang isang pindutang "I-install", kailangan mo lamang i-click dito at i-download ito ng IDE at i-install ito para sa iyo.

Hakbang 4: Pag-iipon ng Modyul

Pagtitipon ng Modyul
Pagtitipon ng Modyul

Magsisimula kami sa sensor. Ikonekta sa pamamagitan ng isang kawad ang VCC pin ng TSL2561 sa 5V pin ng Arduino, ang GND pin ng sensor sa isa sa mga pin ng GND ng Arduino at mga SDA at SCL na pin ng sensor sa SDA at SCL na mga pin ng Arduino. Ngayon tapos ka na!

Ngayon, ikonekta ang VCC pin ng Grove Chainable RGB LED sa 5V pin ng Arduino at ang GND pin ng LED sa pangalawang GND ng Arduino. Kung ikaw ay Arduino bilang isang 5V pin lamang, maaari kang gumamit ng isang breadboard upang ikonekta ang 5v ng Arduino sa isang + hilera ng breadboard at ikonekta ang lahat ng iyong mga bahagi ng 5V na mga pin dito, o magkasama sila sa isang piraso ng stripboard o gumamit ng mga konektor ng wago o kahit anong gusto mo. Ngayon, ikonekta ang CI pin ng iyong LED sa pin 7 ng iyong Arduino at ang DI pin ng iyong LED sa pin 8 ng iyong Arduino. Kung wala kang gayong LED, huwag magalala, posible na gamitin ang built-in na LED ng iyong Arduino board o isang klasikong may maliit na pagbabago lamang sa code.

Hakbang 5: Pagsulat ng Luminosity Module Sketch

Pagsulat ng Luminosity Module Sketch
Pagsulat ng Luminosity Module Sketch

Lumikha tayo ng isang bagong sketch at isulat ang code para sa aming module.

Kung hindi ka interesado sa paliwanag ng sketch, maaari mo lamang itong kopyahin at i-paste sa iyong Arduino IDE:

# isama

gamit ang LightModule = AtHomeModule; Stream * stream = {& Serial, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; Pinangunahan ng GroveChainableLED (& grovePins); LightModule * module = LightModule:: getInstance (); void setup () {// ilagay ang iyong code sa pag-setup dito, upang tumakbo nang isang beses: Serial.begin (9600); module-> setStreams (stream); GroveDigitalLightSensor * lightSensor = bagong GroveDigitalLightSensor (); module-> setSensor (lightSensor); module-> setDisplay (& led); module-> setup (); } void loop () {// ilagay ang iyong pangunahing code dito, upang tumakbo nang paulit-ulit: module-> run (); }

Kung nais mong maunawaan ang lahat ng ginagawa ng code na ito, maaari mong basahin ang sumusunod o kung hindi ka interesado, maaari kang direktang tumalon sa susunod na hakbang.

Upang magsimula, kailangan naming isama ang aming library sa aming sketch sa pamamagitan ng pagsulat ng linyang ito sa tuktok ng sketch:

# isama

Ngayon, kailangan naming lumikha ng isang alias sa module na object na gagamitin namin. Maaari mong makita ito bilang isang kahon na may maraming mga pindutan na ginamit upang baguhin ito ay mga bahagi, simulan ito, ihinto ito, … atbp. Dahil ito ay isang kahon na itinayo ng isang template (tulad ng karaniwang template na ginagamit namin para sa mga proyekto bilang tao, mayroon itong isang starter base at ang tagatala ng Arduino na nagtatayo ng huling code batay sa mga parameter na ibinibigay namin sa kanya) na tumutukoy sa uri na kumakatawan sa isang halaga ng sensor at ang bilang ng mga halaga ng sensor na nais naming hawakan sa memorya, tinukoy ito sa pangalan nito at dapat na normal na ulitin sa tuwing nais naming gamitin ito. Alin ang medyo nakakainis, kaya't maiugnay namin ang isang bagong pangalan, isang alias, sa buong pangalan ng kahon na ito.

Sabihin nating halimbawa na gusto kong ang kahon na ito ay mapangalanan na "LightModule", dahil gagamitin ito upang magpatupad ng isang module ng pagsubaybay ng luminosity at nais kong panatilihin lamang ang 1 halaga sa bawat oras. Ang ningning ay kinakatawan sa lux bilang isang mahalagang uri ng aming TSL2561 sensor, na kinakatawan bilang isang uint16_t ng mga computer. Ganito ang magiging hitsura ng aming alyas:

gamit ang LightModule = AtHomeModule;

ang ibig sabihin ng "gamit" na keyword ay lumilikha kami ng isang alias at ang pangalang ibinibigay namin pagkatapos na tumutugma sa pagkakasunud-sunod pagkatapos ng character na "=".

Ang "AtHomeModule" ay ang totoong pangalan ng kahon na ito na nagbibigay kami ng isang bagong pangalan, at ang mga parameter na tumutukoy sa representasyon ng halaga at ang bilang ng mga halagang itinatago sa memorya ay nakalista sa pagitan ng "".

Ngayon, kapag gagamitin namin sa ibang pagkakataon ang pangalang "AtHomeModule", malalaman ng Arduino na tumutukoy ito sa buong pangalan na "AtHomeModule".

Kung nais mong mapapanatili ng iyong kahon ang 5 mga halaga sa memorya sa halip na 1, kailangan mo lamang palitan ang "1" ng "5" at bubuo para sa iyo ng ibang uri ng kahon na maaaring magawa ang nais mo. Gayunpaman, tandaan na kung ang module ay na-program upang maipadala ang mga halaga nito bago magkaroon ng oras upang mabisang masukat ang 5 mga halaga ng sensor, hindi mo makikita ang 5 sa kanila na ipinapadala dahil nagpapadala lamang ito ng mga bagong halaga mula noong huling pag-upload.

Susunod, kailangan naming lumikha ng isang hanay ng mga payo na naglalaman ng mga payo sa mga Arduino stream na ginagamit ng module upang makipag-usap, palaging winakasan ng keyworkd na "nullptr". Dito, ginagamit ko lang ang "Serial" na stream ng Arduino na nakikipag-usap sa computer sa pamamagitan ng USB port, kaya ganito ang array:

Stream * stream = {& Serial, nullptr};

Ang character na "*" ay nangangahulugang ang uri ay isang pointer (ang lokasyon ng elemento, hindi ang elemento mismo) at ang mga braket na "" ay nangangahulugang sa Arduino ito ay isang array, kaya maaari kaming maglagay ng maraming halaga.

Susunod, kailangan naming lumikha ng aming LED. Upang magawa ito, kailangan nating isulat ang mga sumusunod na dalawang linya;

GroveChainableLED:: Pins grovePins = {7, 8};

Pinangunahan ng GroveChainableLED (& grovePins);

Kung wala kang isang Grove RGB LED ngunit nais mo pa rin ng isang visual na feedback, magagawa mo ito sa isang simpleng pagbabago sa sketch. Palitan ang dalawang nakaraang linya ng linya na ito:

Pinangunahan ang MonochromaticLED (LED_BUILTIN);

Sa pagsasaayos na ito ang berdeng built-in na LED ay bubuksan hangga't ang sinusubaybayan na halaga ay ok para sa kalusugan at papatayin kapag wala na itong bono. Kung mas gusto mong i-on ito kapag wala sa bono (dahil gumagamit ka ng halimbawa ng isang pulang LED sa halip na ang berde sa pin 13) maaari mong gamitin ang linyang ito sa halip:

Pinangunahan ng MonochromaticLED (LED_BUILTIN, totoo);

Ang susunod na hakbang ay ang paglikha ng mismong module. Tapos na ito sa unang pagkakataon na makuha natin ang lokasyon nito sa memorya sa pamamagitan ng pagtawag sa pamamaraang "getInstance", tulad nito:

LightModule * module = LightModule:: getInstance ();

Pagkatapos, kailangan naming itakda ang mga parameter sa pag-andar ng "setup ()" ng Arduino, simula sa pagsisimula ng "Serial" port tulad ng dati sa mga sketch ng Arduino:

Serial.begin (9600);

Lumilikha kami ng light sensor sa pamamagitan ng pagsulat ng linyang ito:

GroveDigitalLightSensor * lightSensor = bagong GroveDigitalLightSensor ();

Pagkatapos, sasabihin namin sa aming module na gamitin ang aming hanay ng mga payo sa Arduino Stream upang makipag-usap sa pamamagitan ng mga ito:

module-> setStreams (stream);

Sinasabi din namin sa aming module na gamitin ang aming light sensor upang subaybayan ang intensity ng ilaw kung nasaan ang module.

module-> setSensor (lightSensor);

Sinasabi namin sa aming module na gamitin ang aming LED upang bigyan kami ng isang visual na feedback:

module-> setDisplay (& led);

Sa wakas, sinabi namin sa aming module handa na itong gumawa ng anumang panloob na pagsasaayos na kailangan nitong gawin sa pamamagitan ng pagtawag sa sarili nitong "pag-setup" na function:

module-> setup ();

Ang aming huling hakbang ay tumawag ngayon sa pagpapaandar ng "run ()" ng aming module, na idinisenyo upang tawagan sa bawat pag-ulit ng pagpapaandar na "loop" ng Arduino sa pamamagitan ng pagsulat ng linyang ito sa loob ng "loop" na function:

module-> patakbuhin ();

Ngayon, ang aming sketch ay sa wakas handa na upang mai-upload sa Arduino at subukan ang aming module!

Hakbang 6: Pagsubok sa Aming Modyul sa AtHome

Pagsubok sa aming AtHome Modyul
Pagsubok sa aming AtHome Modyul
Pagsubok sa aming AtHome Modyul
Pagsubok sa aming AtHome Modyul

Upang mai-upload ang sketch sa Arduino, piliin ang iyong Arduino UNO board sa pamamagitan ng pagpunta sa "Tools"> "Port"> "[COMx or / dev / x] (Arduino / Genuino UNO)".

Huling bagay, mag-click lamang sa pindutang "Mag-upload" (ang pindutan ng bilog na may isang arrow na tumuturo sa kanan, ang pangalawang icon ng tool bar) upang mai-upload ang sketch sa iyong board.

Tapos na! Ngayon ikaw ang module ay dapat na gumana at nagpapadala ng mga halaga sa iyong computer na nakikita sa Serial Monitor ng Arduino. Maaari mong suriin ito sa pamamagitan ng pagbubukas ng "Serial Monitor" ng Arduino sa menu na "Mga Tool" at dapat kang magkaroon ng isang output na kagaya ng pangalawang larawan ng pamagat ng hakbang na ito:)

Hakbang 7: Pagbuo ng isang Kaso para sa Modyul

Pagbuo ng isang Kaso para sa Modyul
Pagbuo ng isang Kaso para sa Modyul

Maaari kang bumuo ng isang simpleng kahon ng kahon para sa iyong module sa pamamagitan ng paggupit ng laser nito sa isang 3mm playwud na plank.

Upang gawin ang aming mga kaso sa kahon, gumagamit kami ng makercase upang maghanda ng isang template sa nais na mga sukat na na-customize namin sa paglaon. Mahahanap mo ang svg file ng module ng ilaw na naka-attach sa hakbang na ito.

Pagkatapos ay idikit lamang ang mga mukha maliban sa isa upang mabuksan mo ito sa paglaon, ilagay ang iyong circuit sa loob at idikit ang LED sa butas ng kaso (gumagamit kami ng transparent tape upang punan ang butas at isabog ang ilaw bilang karagdagan upang idikit ang LED sa harap nito).

Magdagdag lamang ng isang baterya upang mapagana ang iyong Arduino, isara ang kaso at handa na ang iyong module at dapat na maganda ang hitsura:)

Inirerekumendang: