Kalekale, makina opangira nyumba, kapena "smart home" monga momwe amatchulidwira nthawi zambiri, anali okwera mtengo kwambiri ndipo olemera okha ndi omwe angakwanitse. Masiku ano pamsika mutha kupeza zida zotsika mtengo zokhala ndi masensa, mabatani / masiwichi ndi ma actuators owongolera kuyatsa, zitsulo, mpweya wabwino, madzi ndi ogula ena. Ndipo ngakhale munthu wokhotakhota wa DIY amatha kutenga nawo mbali pazokongola ndikusonkhanitsa zida zanyumba yanzeru pamtengo wotsika mtengo.
Nthawi zambiri, zida zomwe zimaperekedwa zimakhala ndi masensa kapena ma actuators. Amapangitsa kuti zikhale zosavuta kugwiritsa ntchito zinthu monga "cholumikizira choyenda chikayambika, kuyatsa magetsi" kapena "chosinthira pafupi ndi potuluka chimazimitsa magetsi mnyumba yonseyo." Koma mwanjira ina zinthu sizinayende ndi telemetry. Chabwino, ndi chithunzi cha kutentha ndi chinyezi, kapena mphamvu yanthawi yomweyo pamalo enaake.
Posachedwa ndidayika mita yamadzi yokhala ndi pulse output. Pa lita iliyonse yomwe imadutsa pa mita, kusintha kwa bango kumatsegulidwa ndikutseka kukhudzana. Chinthu chokha chomwe chatsala ndikumamatira ku mawaya ndikuyesera kupindula nawo. Mwachitsanzo, pendani mmene madzi amagwiritsira ntchito pa ola ndi tsiku lamlungu. Chabwino, ngati pali zokwera madzi zingapo m'nyumbamo, ndiye kuti ndizosavuta kuwona zisonyezo zonse zapano pazenera limodzi kuposa kukwera mu niches zovuta kuzifikira ndi tochi.
Pansi pa odulidwawo pali mtundu wanga wa chipangizo chozikidwa pa ESP8266, chomwe chimawerengera ma pulse kuchokera pamamita amadzi ndikutumiza zowerengera kudzera pa MQTT kupita ku seva yanzeru yakunyumba. Tidzakonza mu micropython pogwiritsa ntchito laibulale ya uasyncio. Popanga firmware, ndidakumana ndi zovuta zingapo zosangalatsa, zomwe ndikambirananso m'nkhaniyi. Pitani!
Chiwembu
Mtima wa dera lonse ndi gawo pa ESP8266 microcontroller. ESP-12 idakonzedweratu, koma yanga idakhala yolakwika. Tinayenera kukhutira ndi gawo la ESP-07, lomwe linalipo. Mwamwayi, iwo ali ofanana onse mwa mawu a zikhomo ndi magwiridwe antchito, kusiyana kokha kuli mu mlongoti - ESP-12 ili ndi imodzi, pamene ESP-07 ili ndi yakunja. Komabe, ngakhale popanda mlongoti wa WiFi, chizindikiro mu chipinda changa chosambira chimalandiridwa bwino.
Standard module wiring:
Bwezerani batani ndi kukoka-mmwamba ndi capacitor (ngakhale zonse zili kale mkati mwa module)
Chizindikiro chothandizira (CH_PD) chimakokedwa ku mphamvu
Kuti muyike gawolo mumayendedwe a firmware, muyenera kutsitsa GPIO2 pang'onopang'ono, ndikupangitsa kuti ikhale yosavuta, ndidapereka batani la Boot. Mkhalidwe wabwinobwino, pini iyi imakokedwa kuti igwire ntchito.
Mkhalidwe wa mzere wa GPIO2 umayang'aniridwa kokha kumayambiriro kwa ntchito - mphamvu ikagwiritsidwa ntchito kapena mwamsanga mutangokonzanso. Chifukwa chake gawoli limayamba mwachizolowezi kapena limapita ku firmware mode. Mukatsitsa, pini iyi itha kugwiritsidwa ntchito ngati GPIO wamba. Chabwino, popeza pali batani kale pamenepo, mutha kuyikapo zina zothandiza.
Pakukonza ndi kukonza zolakwika ndigwiritsa ntchito UART, yomwe imatuluka pachisa. Pakafunika, ndimangolumikiza adaputala ya USB-UART pamenepo. Muyenera kukumbukira kuti gawoli limayendetsedwa ndi 3.3V. Ngati muiwala kusintha adaputala ku voteji iyi ndikupereka 5V, gawoli likhoza kupsa.
Ndilibe vuto ndi magetsi m'bafa - malo ogulitsira ali pafupi mita kuchokera pamamita, kotero ndidzakhala ndi mphamvu 220V. Monga gwero lamphamvu ndidzakhala ndi kakang'ono Chithunzi cha HLK-PM03 ndi Tenstar Robot. Payekha, ndimavutika ndi analogi ndi magetsi amagetsi, koma apa pali magetsi opangidwa okonzeka mu nkhani yaying'ono.
Kuti ndiwonetse mawonekedwe ogwiritsira ntchito, ndidapereka LED yolumikizidwa ku GPIO2. Komabe, sindinasinthe, chifukwa ... Module ya ESP-07 ili kale ndi LED, ndipo imalumikizidwanso ndi GPIO2. Koma zikhale pa bolodi, ngati ndikufuna kutulutsa LED iyi pamilandu.
Tiyeni tipite ku gawo losangalatsa kwambiri. Mamita amadzi alibe zomveka; simungawafunse kuti akuwerengereni posachedwa. Chokhacho chomwe chilipo kwa ife ndi zokopa - kutseka zolumikizira za bango lita iliyonse. Zotulutsa zanga za bango zimalumikizidwa ndi GPIO12/GPIO13. Ndithandizira kukoka-mmwamba resistor mwadongosolo mkati mwa module.
Yakwana nthawi yoti muganizire zomwe mungachite ngati magetsi azima. Njira yoyamba ndikufunsira zowerengera zoyambira kuchokera pa seva poyambira. Koma izi zingafune kusokoneza kwakukulu kwa protocol yosinthira. Komanso, magwiridwe antchito a chipangizochi pankhaniyi amadalira momwe seva iliri. Ngati seva sinayambike mphamvu itazimitsidwa (kapena itayamba pambuyo pake), mita yamadzi sikanatha kufunsa zoyambira ndipo sizigwira ntchito moyenera.
Chifukwa chake, ndidaganiza zogwiritsa ntchito zosunga zowerengera mu memory chip yolumikizidwa kudzera pa I2C. Ndilibe zofunika zapadera za kukula kwa flash memory - muyenera kusunga manambala 2 (chiwerengero cha malita malinga ndi mita ya madzi otentha ndi ozizira). Ngakhale gawo laling'ono kwambiri lingachite. Koma muyenera kulabadira kuchuluka kwa kujambula mkombero. Kwa ma module ambiri izi ndi zozungulira 100, zina mpaka miliyoni.
Zikuoneka kuti miliyoni ndi zambiri. Koma mβzaka 4 zimene ndinakhala mβnyumba yanga, ndinamwa madzi opitirira makyubiki mita 500, ndiwo malita 500 zikwi! Ndipo 500 zikwi mbiri mu kung'anima. Ndipo amenewo ndi madzi ozizira basi. Mutha kugulitsanso chip zaka zingapo zilizonse, koma zimakhala kuti pali tchipisi ta FRAM. Kuchokera pamawonedwe a mapulogalamu, iyi ndi I2C EEPROM yomweyi, yokhayokha ndi chiwerengero chochuluka cholembanso maulendo (mazana a mamiliyoni). Kungoti sindingathe kufika ku sitolo ndi ma microcircuits otere, kotero pakali pano 24LC512 yachizolowezi idzayima.
bolodi losindikizidwa
Poyamba, ndinakonzekera kupanga bolodi kunyumba. Chifukwa chake, bolodi idapangidwa ngati mbali imodzi. Koma nditatha ola limodzi ndi chitsulo cha laser ndi chigoba cha solder (mwanjira ina sichidzabwera popanda izo), ndinaganizabe kuyitanitsa matabwa kuchokera ku China.
Pafupifupi ndisanayambe kuyitanitsa bolodi, ndinazindikira kuti kuwonjezera pa flash memory chip, ndimatha kulumikiza chinthu china chothandiza ku basi ya I2C, monga chiwonetsero. Chomwe chingaperekedwe kwa icho ndi funso, koma liyenera kuyendetsedwa pa bolodi. Chabwino, popeza ndimati ndikuyitanitsa matabwa kuchokera kufakitale, panalibe chifukwa chodziletsa ndekha ku bolodi la mbali imodzi, kotero mizere ya I2C ndiyo yokhayo kumbuyo kwa bolodi.
Panalinso vuto limodzi lalikulu ndi waya wa njira imodzi. Chifukwa Bolodiyo idakokedwa ngati mbali imodzi, kotero mayendedwe ndi zigawo za SMD zidakonzedwa kuti ziziyikidwa mbali imodzi, ndi zida zotulutsa, zolumikizira ndi magetsi mbali inayo. Nditalandira matabwa patatha mwezi umodzi, ndinayiwala za ndondomeko yoyamba ndikugulitsa zigawo zonse kutsogolo. Ndipo pokha pofika pakugulitsa mphamvu zamagetsi zidapezeka kuti kuphatikiza ndi minus zidalumikizidwa mobwerera. Ndinayenera kulima ndi ma jumper. Pachithunzi pamwambapa, ndasintha kale mawaya, koma nthaka imasamutsidwa kuchokera ku mbali imodzi ya bolodi kupita ku ina kudzera pazikhomo za batani la Boot (ngakhale kuti n'zotheka kujambula nyimbo pagawo lachiwiri).
Zinakhala chonchi
Nyumba
Gawo lotsatira ndi thupi. Ngati muli ndi chosindikizira cha 3D, ili si vuto. Sindinavutike kwambiri - ndinangojambula bokosi la kukula koyenera ndikudula m'malo oyenera. Chophimbacho chimamangiriridwa ku thupi ndi zomangira zazing'ono zodziwombera.
Liters amakankhira ndikusintha mitengo mu flash memory
Module imayang'anira chizindikiro cha WiFi ndikulumikizanso ngati kuli kofunikira
Chabwino, popanda nyali yowunikira sikutheka
Simungaganize kuti ntchito imodzi sinagwire ntchito ngati ina ikakamira pazifukwa zina. Ndakhala ndikudzaza kale cacti m'mapulojekiti ena ndipo tsopano ndikuwonabe glitches mumayendedwe a "anaphonya lita ina chifukwa chiwonetserochi chinali kusinthidwa panthawiyo" kapena "wosuta sangathe kuchita kalikonse pamene gawoli likugwirizanitsa Wifi." Zachidziwikire, zinthu zina zitha kuchitika mwa kusokoneza, koma mutha kukhala ndi malire pa nthawi yayitali, kuyimitsa mafoni, kapena kusintha kosagwirizana ndi ma atomiki. Chabwino, code yomwe imachita chilichonse imasanduka nsima.
Π kwambiri polojekiti Ndidagwiritsa ntchito ma preemptive multitasking ndi FreeRTOS, koma pakadali pano mtunduwo udakhala woyenera kwambiri. coroutines ndi malaibulale a uasync . Komanso, kukhazikitsidwa kwa Python kwa coroutines ndikodabwitsa - zonse zimachitika mosavuta komanso mosavuta kwa wopanga mapulogalamu. Ingolembani malingaliro anu, ingondiuzani malo omwe mungasinthire pakati pa mitsinje.
Ndikupangira kuti tiphunzire kusiyana pakati pa kuchita zinthu moganizira mozama komanso zampikisano ngati phunziro losasankha. Tsopano tiyeni tipitirire ku code.
#####################################
# Counter class - implements a single water counter on specified pin
#####################################
class Counter():
debounce_ms = const(25)
def __init__(self, pin_num, value_storage):
self._value_storage = value_storage
self._value = self._value_storage.read()
self._value_changed = False
self._pin = Pin(pin_num, Pin.IN, Pin.PULL_UP)
loop = asyncio.get_event_loop()
loop.create_task(self._switchcheck()) # Thread runs forever
Kauntala iliyonse imayendetsedwa ndi chitsanzo cha Counter class. Choyamba, mtengo wowerengera woyambirira umachotsedwa ku EEPROM (value_storage) - umu ndi momwe kuchira pambuyo pakulephera kwamagetsi kumachitikira.
Pini imayambika ndi kukoka komwe kumapangidwira kumagetsi: ngati kusintha kwa bango kutsekedwa, mzerewo ndi zero, ngati mzerewo uli wotseguka, umakokera kumagetsi ndipo wolamulira amawerenga.
Ntchito ina yakhazikitsidwanso apa, yomwe idzavotere pini. Kauntala iliyonse idzagwira ntchito yakeyake. Nayi code yake
""" Poll pin and advance value when another litre passed """
async def _switchcheck(self):
last_checked_pin_state = self._pin.value() # Get initial state
# Poll for a pin change
while True:
state = self._pin.value()
if state != last_checked_pin_state:
# State has changed: act on it now.
last_checked_pin_state = state
if state == 0:
self._another_litre_passed()
# Ignore further state changes until switch has settled
await asyncio.sleep_ms(Counter.debounce_ms)
Kuchedwa kwa 25ms kumafunika kuti musefa kugundana, ndipo nthawi yomweyo imayendetsa kangati ntchitoyo imadzuka (pamene ntchitoyi ikugona, ntchito zina zikuyenda). Ma 25ms aliwonse ntchitoyo imadzuka, imayang'ana pini ndipo ngati zolumikizira za bango zatsekedwa, ndiye kuti lita ina yadutsa mita ndipo izi ziyenera kukonzedwa.
Chabwino, tsopano tiyeni tipindule ndi zosangalatsa za Python ndi laibulale ya uasync ndikupanga chinthu chowerengera chodikirira (tingamasulire bwanji izi mu Chirasha? Zomwe mungayembekezere?)
def __await__(self):
while not self._value_changed:
yield from asyncio.sleep(0)
return self.value()
__iter__ = __await__
Ichi ndi ntchito yabwino kwambiri yomwe imadikirira mpaka mtengo wotsutsa usinthidwa - ntchitoyo imadzuka nthawi ndi nthawi ndikuyang'ana _value_changed mbendera. Chosangalatsa pa ntchitoyi ndikuti nambala yoyimbira imatha kugona pamene ikuyitanitsa ntchitoyi ndikugona mpaka mtengo watsopano utalandiridwa.
Nanga bwanji zosokoneza?Inde, pakadali pano mutha kundigwedeza, kunena kuti inuyo mwanenapo za zosokoneza, koma kwenikweni munapanga chisankho chopusa. Zosokoneza ndi chinthu choyamba chomwe ndinayesera. Mu ESP8266, mutha kukonza zosokoneza, komanso kulemba chothandizira kusokoneza uku mu Python. Pakusokoneza uku, mtengo wa kusintha ukhoza kusinthidwa. Mwinamwake, izi zikanakhala zokwanira ngati kauntalayo inali chipangizo cha akapolo - chomwe chimadikirira mpaka chikafunsidwa za mtengo uwu.
Mwamwayi (kapena mwamwayi?) chipangizo changa chikugwira ntchito, chiyenera kutumiza mauthenga kudzera pa protocol ya MQTT ndikulemba deta ku EEPROM. Ndipo apa ziletso zimayamba kugwira ntchito - simungathe kugawa kukumbukira ndikusokoneza ndikugwiritsa ntchito stack yayikulu, zomwe zikutanthauza kuti mutha kuyiwala za kutumiza mauthenga pamaneti. Pali ma buns ngati micropython.schedule() omwe amakulolani kuti mugwiritse ntchito "mwamsanga," koma funso limadzuka, "mfundo yake ndi chiyani?" Nanga bwanji ngati tikutumiza uthenga wamtundu wina pakali pano, ndiyeno kusokoneza kumabwera ndikuwononga zikhalidwe zamitundumitundu. Kapena, mwachitsanzo, mtengo watsopano wotsutsa unafika kuchokera ku seva pamene tinali tisanalembe zakale. Mwambiri, muyenera kuletsa kulumikizana kapena kutulukamo mwanjira ina.
Ndipo nthawi ndi nthawi RuntimeError: sungani zowonongeka zonse ndipo ndani akudziwa chifukwa chake?
Ndinabweretsa ntchito ndi EEPROM ku kalasi yaing'ono
class EEPROM():
i2c_addr = const(80)
def __init__(self, i2c):
self.i2c = i2c
self.i2c_buf = bytearray(4) # Avoid creation/destruction of the buffer on each call
def read(self, eeprom_addr):
self.i2c.readfrom_mem_into(self.i2c_addr, eeprom_addr, self.i2c_buf, addrsize=16)
return ustruct.unpack_from("<I", self.i2c_buf)[0]
def write(self, eeprom_addr, value):
ustruct.pack_into("<I", self.i2c_buf, 0, value)
self.i2c.writeto_mem(self.i2c_addr, eeprom_addr, self.i2c_buf, addrsize=16)
Ku Python, ndizovuta kugwira ntchito mwachindunji ndi ma byte, koma ndi ma byte omwe amalembedwa pamtima. Ndinayenera kutchinga kutembenuka pakati pa chiwerengero ndi ma byte pogwiritsa ntchito laibulale ya ustruct.
Kuti ndisamutse chinthu cha I2C ndi adilesi ya foni yam'manja nthawi zonse, ndidazikulunga zonse mumtundu waung'ono komanso wosavuta.
Chinthu cha I2C chokha chimapangidwa ndi magawo awa
i2c = I2C(freq=400000, scl=Pin(5), sda=Pin(4))
Timafika ku gawo losangalatsa kwambiri - kukhazikitsa kulumikizana ndi seva kudzera pa MQTT. Chabwino, palibe chifukwa chokhazikitsa protocol yokha - ndidayipeza pa intaneti okonzeka anapanga asynchronous kukhazikitsa. Izi ndi zomwe tidzagwiritse ntchito.
Zinthu zonse zosangalatsa zasonkhanitsidwa mu kalasi ya CounterMQTTClient, yomwe imachokera ku laibulale ya MQTTClient. Tiyeni tiyambire ku periphery
#####################################
# Class handles both counters and sends their status to MQTT
#####################################
class CounterMQTTClient(MQTTClient):
blue_led = Pin(2, Pin.OUT, value = 1)
button = Pin(0, Pin.IN)
hot_counter = Counter(12, EEPROMValue(i2c, EEPROM_ADDR_HOT_VALUE))
cold_counter = Counter(13, EEPROMValue(i2c, EEPROM_ADDR_COLD_VALUE))
Apa mutha kupanga ndikusintha zikhomo ndi mabatani a nyali, komanso zinthu za mita yamadzi ozizira ndi otentha.
Ndi zoyambira, si zonse zomwe zimakhala zazing'ono
Kukhazikitsa magawo ogwiritsira ntchito laibulale ya mqtt_as, dikishonale yayikulu yamakonzedwe osiyanasiyana imagwiritsidwa ntchito - config. Zokonda zambiri zokhazikika ndizabwino kwa ife, koma zokonda zambiri ziyenera kukhazikitsidwa momveka bwino. Kuti ndisalembe zoikamo mwachindunji mu code, ndimazisunga mu fayilo yolemba config.txt. Izi zimakuthandizani kuti musinthe kachidindo mosasamala zosintha, komanso kuyika zida zingapo zofanana ndi magawo osiyanasiyana.
Chomaliza cha code chimayamba ma coroutine angapo kuti agwire ntchito zosiyanasiyana zamakina. Mwachitsanzo, nayi coroutine yomwe mautumiki amawerengera
async def _counter_coro(self, counter, topic):
# Publish initial value
value = counter.value()
await self.publish(topic, str(value))
# Publish each new value
while True:
value = await counter
await self.publish_msg(topic, str(value))
Coroutine imadikirira mozungulira mtengo watsopano wotsutsa ndipo, ikangowonekera, imatumiza uthenga kudzera pa protocol ya MQTT. Chidutswa choyamba cha kachidindo chimatumiza mtengo woyamba ngakhale madzi akuyenda modutsa pa counter.
Gulu loyambira la MQTTClient limadzitumikira lokha, limayambitsa kulumikizana kwa WiFi ndikulumikizanso pomwe kugwirizanako kutayika. Pakakhala zosintha pamalumikizidwe a WiFi, laibulale imatidziwitsa poyimba wifi_connection_handler
async def wifi_connection_handler(self, state):
self.internet_outage = not state
if state:
self.dprint('WiFi is up.')
duration = ticks_diff(ticks_ms(), self.internet_outage_start) // 1000
await self.publish_debug_msg('ReconnectedAfter', duration)
else:
self.internet_outages += 1
self.internet_outage_start = ticks_ms()
self.dprint('WiFi is down.')
await asyncio.sleep(0)
Ntchitoyi imakopera moona mtima kuchokera ku zitsanzo. Pankhaniyi, imawerengera kuchuluka kwa kuzimitsidwa (internet_outages) ndi nthawi yawo. Pamene kugwirizana kwabwezeretsedwa, nthawi yopanda pake imatumizidwa ku seva.
Mwa njira, kugona komaliza kumangofunika kuti ntchitoyi ikhale yosasunthika - mulaibulale imatchedwa kudzera mukuyembekezera, ndipo ntchito zokhazokha zomwe thupi lake lili ndi kuyembekezera kwina kungatchulidwe.
Kuphatikiza pa kulumikiza kwa WiFi, muyeneranso kukhazikitsa kugwirizana kwa MQTT broker (seva). Laibulale imachitanso izi, ndipo timapeza mwayi wochita zinazake zothandiza pamene kulumikizana kwakhazikitsidwa
# Publish a message if WiFi and broker is up, else discard
async def publish_msg(self, topic, msg):
self.dprint("Publishing message on topic {}: {}".format(topic, msg))
if not self.internet_outage:
await self.publish(topic, msg)
else:
self.dprint("Message was not published - no internet connection")
# Blink flash LED if WiFi down
async def _heartbeat(self):
while True:
if self.internet_outage:
self.blue_led(not self.blue_led()) # Fast blinking if no connection
await asyncio.sleep_ms(200)
else:
self.blue_led(0) # Rare blinking when connected
await asyncio.sleep_ms(50)
self.blue_led(1)
await asyncio.sleep_ms(5000)
Izi ndi zomwe ndimakamba - momwe zimakhalira zosavuta komanso zosavuta ndi ma coroutines. Ntchito yaying'ono iyi ikufotokoza ZONSE za ogwiritsa ntchito. Coroutine imangodikirira kuti batani ikanikizidwe ndikuyatsa chiwonetsero kwa masekondi atatu. Chiwonetserochi chikuwonetsa kuwerengera kwa mita komweko.
Zonse zomwe zatsala ndikukweza mafayilo ndi .mpy extension, osaiwala kuti muyambe kuchotsa .py yogwirizana ndi fayilo ya chipangizocho.
Ndidapanga chitukuko chonse mu pulogalamuyi (IDE?) ESPlorer. Zimakulolani kukweza zolemba ku microcontroller ndikuzipanga nthawi yomweyo. Kwa ine, malingaliro onse ndi chilengedwe cha zinthu zonse zili mu fayilo ya water_counter.py (.mpy). Koma kuti zonsezi ziyambe zokha, payeneranso kukhala fayilo yotchedwa main.py poyambira. Komanso, ziyenera kukhala ndendende .py, osati kusanjidwa .mpy. Nazi nkhani zake zazing'ono
import water_counter
Timayiyambitsa - zonse zimagwira ntchito. Koma kukumbukira kwaulere ndikochepa kwambiri - pafupifupi 1kb. Ndikadali ndi mapulani okulitsa magwiridwe antchito a chipangizocho, ndipo kilobyte iyi mwachiwonekere siyokwanira kwa ine. Koma zinapezeka kuti palinso njira yotulukira pamlanduwu.
Nachi chinthucho. Ngakhale mafayilo amapangidwa kukhala bytecode ndikukhala pa fayilo yamkati, kwenikweni amakwezedwa mu RAM ndikuchitidwa kuchokera pamenepo. Koma zikuwoneka kuti micropython imatha kupha bytecode molunjika kuchokera ku flash memory, koma chifukwa cha izi muyenera kuyimanga mwachindunji mu firmware. Sizovuta, ngakhale zidatenga nthawi pa netbook yanga (pokhapokha ndidali ndi Linux).
Ma algorithm ndi awa:
Koperani ndi kukhazikitsa ESP Open SDK. Izi zimasonkhanitsa chojambulira ndi malaibulale a mapulogalamu a ESP8266. Zosonkhanitsidwa molingana ndi malangizo omwe ali patsamba lalikulu la polojekitiyi (ndinasankha STANDALONE=yes setting)
Kwa iwo omwe ali ndi chidwi kwambiri, mutha kuyang'ana zolemba za mtengo uliwonse
Kuchokera apa ndinaphunzira kuti pamene mpopi watseguka, madzi amayenda pa liwiro la pafupifupi lita imodzi pa 1 s.
Koma mu mawonekedwe awa ziwerengero mwina si zabwino kwambiri kuyang'ana. Majordomo alinso ndi kuthekera kowonera ma chart omwe amamwa patsiku, sabata ndi mwezi. Pano, mwachitsanzo, pali graph yogwiritsira ntchito m'mabala
Pakadali pano ndili ndi data kwa sabata imodzi yokha. M'mwezi umodzi, graph iyi idzakhala yowonetsera - tsiku lililonse lidzakhala ndi gawo losiyana. Chithunzicho chimawonongeka pang'ono ndi zosintha pamikhalidwe yomwe ndimayika pamanja (gawo lalikulu kwambiri). Ndipo sizikudziwikabe ngati ndidayika molakwika zikhalidwe zoyambirira, pafupifupi kyubu yochepa, kapena ngati ichi ndi cholakwika mu firmware ndipo si malita onse omwe adawerengedwa. Mukufuna nthawi yochulukirapo.
Ma grafuwo amafunikirabe zamatsenga, zoyera, zopenta. Mwinanso ndipanga graph yogwiritsa ntchito kukumbukira kuti ndikonze zolakwika - ngati china chake chikutsika pamenepo. Mwina mwanjira ina ndiwonetsa nthawi pomwe panalibe intaneti. Pakadali pano, zonsezi zili pamlingo wamalingaliro.
Ena angaone kukhala achilendo kuyangβana zoΕ΅erengeka pa zenera ngati kuli mita kutali ndi mita yokhayo. Koma posachedwa, ndikukonzekera kusamukira ku nyumba ina, komwe kudzakhala zokwera zingapo zamadzi, ndipo mamita okhawo adzakhalapo pamtunda. Choncho chipangizo chowerengera chakutali chidzakhala chothandiza kwambiri.
Ndikukonzekeranso kukulitsa magwiridwe antchito a chipangizocho. Ndikuyang'ana kale mavavu amoto. Tsopano, kuti ndisinthe chowotchera kuti chikhale madzi amzindawu, ndiyenera kutembenuza matepi atatu pamalo ovuta kufikako. Zingakhale zosavuta kuchita izi ndi batani limodzi lokhala ndi chizindikiro chofananira. Chabwino, ndithudi, ndi koyenera kukhazikitsa chitetezo ku kutayikira.
M'nkhaniyi ndidafotokoza za mtundu wanga wa chipangizo chozikidwa pa ESP8266. M'malingaliro anga, ndinabwera ndi mtundu wosangalatsa kwambiri wa firmware ya micropython pogwiritsa ntchito ma coroutines - osavuta komanso abwino. Ndidayesa kufotokoza zambiri mwazovuta ndi zofooka zomwe ndidakumana nazo panthawi ya kampeni. Mwina ndidafotokoza zonse mwatsatanetsatane; panokha, monga wowerenga, ndizosavuta kuti ndidumphe zinthu zosafunikira kuposa kuganiza pambuyo pake zomwe zidasiyidwa.