From f6a3c2159c354bd6626a13691743a5cc027f0088 Mon Sep 17 00:00:00 2001 From: mcauser Date: Thu, 7 Mar 2024 00:30:39 +0000 Subject: [PATCH] Deployed 9359cb0 with MkDocs version: 1.4.2 --- .nojekyll | 0 404.html | 1 + CNAME | 1 + assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.51d95adb.min.js | 29 + assets/javascripts/bundle.51d95adb.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.e5c33ebb.min.js | 42 + .../workers/search.e5c33ebb.min.js.map | 8 + assets/stylesheets/main.558e4712.min.css | 1 + assets/stylesheets/main.558e4712.min.css.map | 1 + assets/stylesheets/palette.2505c338.min.css | 1 + .../stylesheets/palette.2505c338.min.css.map | 1 + css/extra.css | 16 + img/favicon.ico | Bin 0 -> 5430 bytes img/logo.jpg | Bin 0 -> 52339 bytes img/logo.png | Bin 0 -> 123843 bytes img/logo.svg | 67 + img/logo_nav.svg | 5 + index.html | 1 + search/search_index.json | 1 + sitemap.xml | 8 + sitemap.xml.gz | Bin 0 -> 208 bytes 50 files changed, 7386 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.51d95adb.min.js create mode 100644 assets/javascripts/bundle.51d95adb.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js.map create mode 100644 assets/stylesheets/main.558e4712.min.css create mode 100644 assets/stylesheets/main.558e4712.min.css.map create mode 100644 assets/stylesheets/palette.2505c338.min.css create mode 100644 assets/stylesheets/palette.2505c338.min.css.map create mode 100644 css/extra.css create mode 100644 img/favicon.ico create mode 100644 img/logo.jpg create mode 100644 img/logo.png create mode 100644 img/logo.svg create mode 100644 img/logo_nav.svg create mode 100644 index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..35fcb13f --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + Awesome MicroPython

404 - Not found

\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..9d931a00 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +awesome-micropython.com diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.51d95adb.min.js b/assets/javascripts/bundle.51d95adb.min.js new file mode 100644 index 00000000..b20ec683 --- /dev/null +++ b/assets/javascripts/bundle.51d95adb.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Hi=Object.create;var xr=Object.defineProperty;var Pi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Ii=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&on(e,r,t[r]);if(kt)for(var r of kt(t))an.call(t,r)&&on(e,r,t[r]);return e};var sn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&an.call(e,n)&&(r[n]=e[n]);return r};var Ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $i(t))!Er.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=Pi(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Hi(Ii(e)):{},Fi(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=Ht((wr,cn)=>{(function(e,t){typeof wr=="object"&&typeof cn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function f(T){var Ke=T.type,We=T.tagName;return!!(We==="INPUT"&&a[Ke]&&!T.readOnly||We==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function c(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(T){n=!1}function d(T){s(T.target)&&(n||f(T.target))&&c(T.target)}function h(T){s(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),B())}function B(){document.addEventListener("mousemove",z),document.addEventListener("mousedown",z),document.addEventListener("mouseup",z),document.addEventListener("pointermove",z),document.addEventListener("pointerdown",z),document.addEventListener("pointerup",z),document.addEventListener("touchmove",z),document.addEventListener("touchstart",z),document.addEventListener("touchend",z)}function re(){document.removeEventListener("mousemove",z),document.removeEventListener("mousedown",z),document.removeEventListener("mouseup",z),document.removeEventListener("pointermove",z),document.removeEventListener("pointerdown",z),document.removeEventListener("pointerup",z),document.removeEventListener("touchmove",z),document.removeEventListener("touchstart",z),document.removeEventListener("touchend",z)}function z(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,re())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),B(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var un=Ht(Sr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(re,z){d.append(z,re)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+c+" due to "+T)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,B=!0,re=this;["append","delete","set"].forEach(function(T){var Ke=h[T];h[T]=function(){Ke.apply(h,arguments),v&&(B=!1,re.search=h.toString(),B=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var z=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==z&&(z=this.search,B&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(f){Object.defineProperty(a,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){s(f)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr)});var Qr=Ht((Lt,Kr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var a=i(279),s=i.n(a),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var w=p()(O);return m("cut"),w},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[O?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(O,w){var k=v(O);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},re=function(O){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof O=="string"?k=B(O,w):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?k=B(O.value,w):(k=p()(O),m("copy")),k},z=re;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(w){return typeof w}:T=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},T(j)}var Ke=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=O.action,k=w===void 0?"copy":w,F=O.container,q=O.target,Le=O.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(q)return k==="cut"?h(q):z(q,{container:F})},We=Ke;function Ie(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ie=function(w){return typeof w}:Ie=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Ie(j)}function Ti(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function nn(j,O){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Ie(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var q=this;this.listener=c()(F,"click",function(Le){return q.onClick(Le)})}},{key:"onClick",value:function(F){var q=F.delegateTarget||F.currentTarget,Le=this.action(q)||"copy",Rt=We({action:Le,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Le,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var q=yr("target",F);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,q)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return q.forEach(function(Rt){Le=Le&&!!document.queryCommandSupported(Rt)}),Le}}]),w}(s()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,f){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return s(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return u(m,d,h);if(a.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return s(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),a=f.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var f=this;function c(){f.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=s.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var is=/["'&<>]/;Jo.exports=as;function as(e){var t=""+e,r=is.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||s(m,d)})})}function s(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Xe?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){s("next",m)}function u(m){s("throw",m)}function p(m,d){m(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(a){return new Promise(function(s,f){a=e[i](a),o(s,f,a.done,a.value)})}}function o(i,a,s,f){Promise.resolve(f).then(function(c){i({value:c,done:s})},a)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var $t=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function De(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Fe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=xe(a),f=s.next();!f.done;f=s.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof $t?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof $t?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new $t(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&De(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&De(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Or=Fe.EMPTY;function It(e){return e instanceof Fe||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?Or:(this.currentObservers=null,s.push(r),new Fe(function(){n.currentObservers=null,De(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Or},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,f=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Ut);var On=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var we=new On(Tn);var R=new U(function(e){return e.complete()});function Dt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Dt(kr(e))?e.pop():void 0}function Vt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function zt(e){return A(e==null?void 0:e.then)}function Nt(e){return A(e[ft])}function qt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=Ki();function Yt(e){return A(e==null?void 0:e[Qt])}function Gt(e){return ln(this,arguments,function(){var r,n,o,i;return Pt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Xe(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,Xe(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Xe(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(Nt(e))return Qi(e);if(pt(e))return Yi(e);if(zt(e))return Gi(e);if(qt(e))return _n(e);if(Yt(e))return Bi(e);if(Bt(e))return Ji(e)}throw Kt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):me,Oe(1),r?He(t):zn(function(){return new Xt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function fe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,f=s===void 0?!0:s;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},re=function(){B(),u=m=void 0,h=v=!1},z=function(){var T=u;re(),T==null||T.unsubscribe()};return g(function(T,Ke){d++,!v&&!h&&B();var We=m=m!=null?m:r();Ke.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),We.subscribe(Ke),!u&&d>0&&(u=new et({next:function(Ie){return We.next(Ie)},error:function(Ie){v=!0,B(),p=jr(re,o,Ie),We.error(Ie)},complete:function(){h=!0,B(),p=jr(re,a),We.complete()}}),$(T).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=se(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function se(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),Y())}function Be(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,we),l(()=>Be(e)),N(Be(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,we),l(()=>rr(e)),N(rr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function de(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>de(e)))),N(de(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function sr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=de(e),o=bt(e);return r>=o.height-n.height-t}),Y())}var cr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return cr[e].checked}function qe(e,t){cr[e].checked!==t&&cr[e].click()}function je(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),fe());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>se(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function ur(e,t={credentials:"same-origin"}){return ve(fetch(`${e}`,t)).pipe(ce(()=>R),x(r=>r.status!==200?Tt(()=>new Error(r.statusText)):H(r)))}function Ue(e,t){return ur(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return ur(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function pr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Oe(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Be(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:a,size:s},{x:f,y:c}])=>({offset:{x:a.x-f,y:a.y-c+i},size:s})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,s,f,c,u)=>{if(s===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:s,lineno:f,colno:c,error:u});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(`

Awesome MicroPython

Awesome


A curated list of awesome MicroPython libraries, frameworks, software and resources.

MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.

Contents

Libraries

Other places you can look for MicroPython Libraries:

  • PyPi - This filter shows just the MicroPython libraries on PyPi. Note: You cannot pip install MicroPython libraries. See the MicroPython docs for more information on managing packages with MicroPython.
  • GitHub Search - Search GitHub for repositories containing MicroPython.
  • GitHub Topic - MicroPython - Browse GitHub Topics for projects tagged with MicroPython.
  • Libraries.io - Libraries.io query for MicroPython.
  • GitLab Explore - Explore repositories on GitLab.
  • Codeberg Explore - Explore repositories on Codeberg.

AI

Audio

Communications

APIs

Authentication

Bluetooth

  • PyBoard-HC05-Android - Pyboard HC05 Bluetooth adapter example application.
  • uble - Lightweight Bluetooth Low Energy driver written in pure Python for MicroPython.
  • MicroPythonBLEHID - Human Interface Device (HID) over Bluetooth Low Energy (BLE) GATT library for MicroPython.
  • upyble - Command line tool for Bluetooth Low Energy MicroPython devices.
  • micropython-xiaomi-ble-adv-parse - Passively retrieve sensor data from some Xiaomi Bluetooth Low Energy (BLE) sensors.
  • mijia-temphum-upy - MicroPython library to read certain Xiaomi Mijia BLE temperature & humidity sensors.
  • micropython-aioble-itag - Examples using aioble to interact with iTag BLE keychain tags.

CAN

Compression

  • ufastlz - MicroPython wrapper for FastLZ, a lightning-fast lossless compression library.
  • tamp - A low-memory, MicroPython-optimized, DEFLATE-inspired lossless compression library.

Cryptography

  • ucryptography - Lightweight porting of pyca/cryptography to MicroPython based on ARM Mbed TLS.
  • mpyaes - MicroPython module for AES encryption.
  • micropython-aes - AES algorithm with pure python implementation.
  • ucrypto - MicroPython package for doing fast RSA and elliptic curve cryptography, specifically digital signatures. ECDSA API design inspired from fastecdsa and implementation based on tomsfastmath.
  • ucryptoauthlib - Lightweight driver for Microchip Crypto Authentication secure elements written in pure Python for MicroPython.
  • embit - A minimal Bitcoin library for MicroPython and Python 3 with a focus on embedded systems.
  • microotp - An ESP8266 MicroPython OTP Generator.
  • micropython-rsa-signing - RSA signing on MicroPython.
  • micropython-cryptomsg - A MicroPython module to encrypt and decrypt messages with AES CBC mode.
  • mprsa - A MicroPython module for creating, importing, and exporting RSA keys in DER and PEM formats with PKCS#1, PKCS#8, and X.509/SPKI structures, and signing/verifying and encryption/decryption using blinding and SHA-1 and SHA-256 hashing algorithms.
  • mpy-mbedtls - MicroPython bindings for some MbedTLS EC and x509 cert/csr functions.
  • micropython-cryptocfb - A Python module to encrypt and decrypt data with AES-128 CFB mode.
  • tscp - An endpoint-to-endpoint encryption based on Diffie-Hellman-Merkle with TLS1.3 styled handshake using MicroPython.

DNS

  • ICantBelieveItsNotDNS - "I Can't Believe It's Not DNS!" (ICBIND) is an authoritative DNS server for the ESP8266 written in MicroPython.
  • MicroDNSSrv - A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32).
  • tinydns - Very simple DNS async server for MicroPython.
  • micropython-captiveportal - Minimal async captive portal for MicroPython (compatible with uasyncio v3/MicroPython 1.13+ as well as earlier versions).
  • Micropython-DNSServer-Captive-Portal - MicroPython WiFi AP Captive Portal with DNS and Web Server.

ESP-NOW

Ethernet

FTP

GPS

GSM

HTTP

  • mrequests - A HTTP client module (not only) for MicroPython with an API similar to requests.

IoT

  • microhomie - MicroPython implementation of the Homie MQTT convention for IoT.
  • uPyEcho - Emulated Belkin WeMo device that works with Amazon Echo (Alexa) using MicroPython on an ESP32.
  • SonosRemote - A remote for Sonos installations running on an ESP8266 and using Sonos HTTP API.
  • micropython-home-assistant - MicroPython-based scripts to extend your Home Assistant-driven home automation projects.
  • micropython-iot - An approach to designing IoT applications using ESP8266, ESP32 or Pyboard D endpoints.
  • iot-core-micropython - Use MicroPython to connect to Google Cloud IoT Core.
  • SmartUPy - Controlling "Tuya-type" smart power outlets using MicroPython.
  • aws-iot-GET-POST-loop - MicroPython code which uses the AWS IoT REST API to GET/POST device state info.
  • sensor-mqtt-homeassistant - An ESP8266/ESP32 MicroPython-based sensor platform for GPIO, DHT, analog, LED and more. Includes remote updates for .py code from web server and MQTT/Home Assistant integration.
  • micropython-ha-mqtt-device - MicroPython module which allows creating Entites for HomeAssistant using MQTT Discovery.
  • ESP8266-Home-Assistant-Smart-Socket - This MicroPython project is to hack a Hyleton313 cheap WiFi smart socket.
  • ESP8266-Home-Assistant-RGB-Bulb - This MicroPython project is to hack a TYWE3S board in a cheap WiFi RGB Bulb.
  • uPyIoT - Connect an M5Stack ATOM running MicroPython to the Google Cloud Platform (GCP) to collect air-quality variables obtained from reading sensors.
  • micropython-switchbot-thermometer-hygrometer - Read SwitchBot Thermometer/Hygrometer via Bluetooth.

IR

LoRa

  • loraE22 - A MicroPython class for the Ebyte E22 Series LoRa modules.
  • micropython-lora - MicroPython library for controlling a Semtech SX127x LoRa module over SPI.
  • micropython-aiolora - MicroPython library for controlling a Semtech SX127x LoRa module with asyncio API.
  • micropython-rylr - MicroPython library for controlling Reyax LoRa modules (RYLR896, RYLR406).
  • silvergeko_rfm9x - Porting to MicroPython of adafruit_rfm9x.py library.

LoRaWAN

MDNS

  • micropython-mdns - A pure Python implementation of MDNS with support for Service Discovery.

Modbus

  • micropython-modbus - MicroPython port of modbus-tk.
  • micropython-modbus - Modbus Master library for MicroPython ESP32 devices. Based on pycom-modbus from Pycom.
  • mp_modbus - Modbus library for MicroPython.
  • micropython-modbus - ModBus TCP and RTU library supporting client and host mode. Based on pycom-modbus from Pycom.

MQTT

NBD

  • unbd - Micro implementation of network block device (NBD) for MicroPython.

NFC

  • micropython-nfc - Using NFC with MicroPython.
  • micropython_pn532 - Driver for PN532 NFC/RFID breakout boards based on Adafruit CircuitPython (UART).
  • NFC_PN532_SPI - Partial port of Adafruit CircuitPython to MicroPython of PN532 NFC/RFID control library (SPI).

NTP

OneWire

  • Official OneWire - For devices using the OneWire bus, eg Dallas DS18x20.
  • Onewire_DS18X20 - Classes for driving the DS18x20 sensor with the OneWire protocol for Pycom MicroPython.
  • micropython_arduino_control - MicroPython library to control an Arduino remotely, with corresponding Arduino code.

Onkyo EISCP

  • eiscp-micropython - MicroPython port for the Onkyo-EISCP protocol used, among others, by Pioneer.

OTA

Radio

RC receiver

REPL

  • webrepl - MicroPython WebREPL.
  • zepl - MicroPython WebREPL Console Application using ZeroMQ.
  • jupyter_micropython_remote - Jupyter kernel to directly execute code on a MicroPython board over the serial/web REPL.
  • FBConsole - Framebuffer console class for MicroPython.

RFID

RPC

  • ujrpc - JSON RPC for MicroPython.

RTC

Serial

  • mpy-miniterm - Tool for seamless serial debug and file synchronisation with MicroPython devices via the serial REPL.
  • MicroPython-MorseCode - International Morse Code using a microcontroller with MicroPython.
  • I2C Slave - Uses the Pyboard's I2C slave mode to implement a full duplex asynchronous link. Principal use case is for ESP8266 which has only one UART.
  • microSDI12 - A mini SDI-12 implementation for getting sensor info over RS-485.

Serialization

  • micropython-msgpack - MessagePack serialisation library optimised for MicroPython.
  • micropython-uprotobuf - A lightweight implementation of Google's Protocol Buffers (protobuf) for MicroPython.
  • minipb - Mini Protobuf {de}serializer in pure Python.
  • ucbor - Lightweight implementation of cbor for MicroPython.
  • upy-msgpack - A lightweight MessagePack (de)serialization library (not only) for MicroPython.

SMTP

  • uMail - A lightweight, scalable SMTP client for sending email in MicroPython.

Sockets

  • XAsyncSockets - XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.

SOCKS

TCP

  • us2n - MicroPython bridge between UART and TCP for the ESP32.

Telnet

  • MicroTelnetServer - Simple telnet server for MicroPython and the ESP8266 allowing telnet clients access to the REPL.

Text-to-Speech

VoIP

  • uPyVoip - VoIP for MicroPython ESP32 with Interactive Voice Response.

Web

  • MicroWebSrv - A micro HTTP web server that supports WebSockets, HTML/Python language templating and routing handlers, for MicroPython (used on Pycom modules & ESP32).
  • MicroWebSrv2 - The last micro web server for IoTs (MicroPython) or large servers (CPython), that supports WebSocket, routes, template engine and with really optimized architecture (mem allocations, async I/Os).
  • tinyweb - Simple and lightweight HTTP async server for MicroPython.
  • upy-websocket-server - MicroPython (ESP8266) WebSocket server implementation.
  • micropython-captive-portal - A captive portal demo for MicroPython.
  • uPyPortal - A captive portal for MicroPython using ESP32 (Wemos).
  • ESP8266WebServer - ESP8266 web server for MicroPython.
  • microCoAPy - A mini client/server implementation of CoAP (Constrained Application Protocol) into MicroPython.
  • micropyserver - MicroPyServer is a simple HTTP server for MicroPython projects.
  • MicroRESTCli - A micro JSON REST web client based on MicroWebCli for MicroPython (used on Pycom modules & ESP32).
  • micropython-noggin - A very simple web server for MicroPython.
  • uwebsockets - MicroPython WebSocket implementation for ESP8266.
  • microdot - The impossibly small web framework for MicroPython.
  • micropython-nanoweb - Full async MicroPython web server with small memory footprint.
  • MicroWebCli - A micro HTTP web client for MicroPython (used on Pycom modules & ESP32).
  • micropython-configserver - Captive portal for MicroPython including a dumb DNS server and a web server to configure WiFi networks.
  • micropython-aioweb - A minimalist asyncio web framework for MicroPython.
  • thimble - A tiny web framework for MicroPython.
  • CaptiveWebServer - Simple MicroPython web server for serving a website from a captive portal.
  • micropython-urouter - A lightweight HTTP request routing processing support library based on MicroPython. The previous name was micro-route.
  • wlan-relays - Very simple HTTP server written in MicroPython for controlling the pins of an ESP32 board.

WiFi

Zigbee

  • ZbPy - MicroPython IEEE802.15.4 / Zigbee parser.

Display

E-Paper

Fonts

  • micropython-font-to-py - A Python 3 utility to convert fonts to Python source capable of being frozen as bytecode.
  • writer - A simple way to render above Python fonts to displays whose driver is subclassed from framebuf.
  • ssd1306big - A font for MicroPython on 128x64 pixel SSD1306 OLED display.
  • framebuf2 - MicroPython FrameBuffer extension: larger and rotated font, triangles and circles.
  • micropython_GT30L24T3Y_big5_font - MicroPython driver for reading BIG-5 Chinese characters from GT30L24T3Y / ER3303-1 SPI module.
  • ttgo-hershey-fonts - MicroPython Hershey font demo for the TTGO-LCD board.
  • packed-font - Memory efficient MicroPython fonts for the Pico Pi and SSD1306 OLED Display.

Graphics

GUI

  • lvgl - An object-oriented, component-based high-level GUI library with MicroPython binding.
  • micropython-lcd160cr-gui - Simple touch-driven event based GUI for the Pyboard and LCD160CR colour display.
  • micropython_ra8875 - MicroPython device driver and nano-GUI for RA8875 based displays.
  • micropython-nano-gui - A tiny display-only GUI with a limited set of GUI objects (widgets) for displays whose display driver is subclassed from the framebuf class. With drivers for TFT, ePaper and OLED displays.
  • micro-gui - Derived from nano-gui and supporting the same displays and hosts, this provides for user input via push buttons or a navigation joystick and an optional rotary encoder.
  • TFT-GUI - A fast touch GUI for large displays based on SSD1963 controller with XPT2046 touch controller.
  • micropython-nextion - Control Nextion displays using MicroPython.
  • mp_lvgl_widgets - Widgets for the MicroPython Port of LVGL.
  • micropython-core2 - Extends LV-MicroPython for the M5Stack CORE2 with MPU6886, ILI9342C, BM8563 and AXP192 drivers.

LCD Character

LCD Graphic

LCD TFT

  • micropython-ili9341 - Collection of drivers for TFT displays, ILI9341, SH1106, SSD1606, ST7735.
  • micropython-ili934x - SPI driver for ILI934X series based TFT / LCD displays.
  • MicroPython-ST7735 - ESP32 version of GuyCarvers's ST7735 TFT LCD driver.
  • micropython-st7735 - Driver for ST7735 TFT LCDs.
  • MicroPython_ST7735 - Driver for ST7735 128x128 TFT.
  • SSD1963-TFT-Library-for-PyBoard-and-RP2040 - SSD1963 TFT Library for Pyboard and Raspberry Pi Pico.
  • ST7735 - Driver for ST7735 TFT LCDs.
  • micropython-ili9341 - MicroPython ILI9341 display & XPT2046 touch screen driver.
  • st7789_mpy - Fast pure-C driver for MicroPython that can handle display modules on ST7789 chip.
  • st7789py_mpy - Slow MicroPython driver for 240x240 ST7789 display without CS pin from AliExpress, written in MicroPython.
  • micropython-ili9341 - MicroPython Driver for ILI9341 display.
  • micropython-ili9341 - ILI9341 TFT driver for MicroPython on ESP32.
  • st7789_mpy - Fast MicroPython driver for ST7789 display module written in C.
  • st7789py_mpy - Driver for 320x240, 240x240 and 135x240 ST7789 displays written in MicroPython.
  • ili9342c_mpy - ILI9342C Fast 'C' Driver for MicroPython (M5Stack Core).
  • gc9a01py - GC9A01 Display driver in MicroPython.
  • gc9a01_mpy - Fast MicroPython driver for GC9A01 display modules written in C.
  • st7735-esp8266-micropython - An ESP8266 MicroPython library for ST7735 160x80, 128x128, 128x160 TFT LCD displays.
  • TTGO-ST7789-MicroPython - MicroPython ST7789 display driver for TTGO T-Display ESP32 CP2104 WiFi Bluetooth Module 1.14 Inch LCD.
  • st7735_micropython - ST7735 MicroPython drivers for 80x160, 128x128, 128x160 for ESP8266.
  • ili934x-micropython - Library for using ILI9341 display drivers with MicroPython.
  • micropython-st7735-esp8266 - MicroPython driver for ST7735 TFT displays on the ESP8266.
  • st7789s3_esp_lcd - Fast ESP_LCD based MicroPython driver for the TTGO T-Display-S3 st7789 display written in C.
  • s3lcd - ESP_LCD based MicroPython driver for ESP32-S3 Devices with ST7789 or compatible displays.
  • thmi_py - MicroPython display driver for the LILYGO T-HMI written in Python.
  • wt32sc01py - WT32SC01 Plus MicroPython Display Driver.
  • st7789s3_mpy - MicroPython display driver for the TTGO T-Display-S3 ST7789 written in C.
  • t-display-s3 - MicroPython display driver for the TTGO T-Display-S3 ST7789 written in Python.
  • mp-ili9341 - MicroPython Driver for ILI9341 TFT Display.
  • lvgl_esp32_gc9a01 - Driver for displays using the GC901 driver for use with LVGL MicroPython.

LED Matrix

LED Segment

  • LKM1638 - Driver for JY-LKM1638 displays based on TM1638 controller.
  • max7219_8digit - Driver for MAX7219 8-digit 7-segment LED modules.
  • micropython-max7219 - Driver for MAX7219 8-digit 7-segment LED modules.
  • micropython-my9221 - Driver for MY9221 10-segment LED bar graph modules.
  • micropython-tm1637 - Driver for TM1637 quad 7-segment LED modules.
  • micropython-tm1638 - Driver for TM1638 dual quad 7-segment LED modules with switches.
  • micropython-tm1640 - Driver for TM1740 8x8 LED matrix modules.
  • micropython-tm1640 - MicroPython Library for 16 digits 7-segment displays controlled by a TM1640.
  • TM74HC595 - Driver for shift register-controlled 5 pin display modules.
  • micropython-tm1638spi - MicroPython Library for a popular board with 8 7-segment digits, 8 separate LEDs and 8 push buttons controlled by a TM1638.

LEDs

OLED

Printer

IO

ADC

DAC

GPIO

  • micropython-inputs - Classes to count pulses, debounce digital inputs, and calculate moving averages of analog inputs for a MicroPython board.
  • ubutton - A MicroPython library for controlling reading and debouncing pushbutton inputs, including "short" and "long" press callbacks.
  • micropython-debounce-switch - MicroPython Class for Debouncing Switches.

IO-Expander

  • micropython-mcp230xx - Driver for MCP23017 and MCP23008 GPIO expanders.
  • micropython-mcp230xx - Driver for MCP23017 and MCP23008 GPIO expanders, extended with interrupt handling.
  • micropython-mcp23017 - MicroPython driver for MCP23017 16-bit I/O Expander.
  • micropython-pcf8574 - MicroPython driver for PCF8574 8-Bit I2C I/O Expander with Interrupt.
  • micropython-pcf8575 - MicroPython driver for PCF8575 16-Bit I2C I/O Expander with Interrupt.
  • ESP8266_MCP23S17 - MicroPython library for using the MCP23S17 16-bit I/O expander with the ESP8266.
  • pcf8574 - MicroPython module for working with the PCF8574(A) I2C 8-bit I/O expander from NXP.

Joystick

Keyboard

Multiplexer

Potentiometers

  • micropython-ad840x - MicroPython SPI-based manipulation of the AD series digital potentiometers AD8400, AD8402 and AD8403.
  • mcp4131 - MicroPython module to control MicroChip's MCP4131 SPI digital potentiometer.
  • MicroPython_DS1841 - MicroPython Driver for the DS1841 Potentiometer.
  • MicroPython_DS3502 - MicroPython Driver for the DS3502 Potentiometer.

Power Management

PWM

  • upwmcontroller - A MicroPython library for controlling PWM outputs in an asyncio loop, with features including fading and blinking.

Relay

Rotary Encoder

Shift Registers

  • micropython-74hc595 - MicroPython driver for 74HC595 8-bit shift registers.
  • MicroPython-SN74HCS264 - MicroPython Driver for SN74HCS264 8-Bit Parallel-Out Serial Shift Registers With Schmitt-Trigger Inputs and Inverted Outputs.

Waveform Generator

Mathematics

  • uMath - Computer Algebra for microcontrollers.
  • micropython-ulab - A NumPy-like fast vector module for MicroPython.
  • micropython-fourier - Fast Fourier transform in MicroPython's inline ARM assembler.
  • Filters - FIR filters using ARM Thumb assembler. Using an online utility you can go from a graph of required frequency response to a filter implementation.
  • ulinalg - Small size matrix handling module with a few linear algebra operations specifically for MicroPython (Python 3).
  • micropython-mtx - Fast Matrix Multiplication and Linear Solver on MicroPython.
  • micropython-vec - Vector Operations on MicroPython.
  • MicroPython_Statistics - Statistics module for MicroPython.
  • MicroPython-Matrix - MicroPython basic matrix operations.
  • uumpy - A subset of NumPy for MicroPython.
  • upyuncertainties - Uncertainty calculations for MicroPython.
  • umatrix - A matrix library for the MicroPython language.
  • micropython-fractions - A MicroPython port of the CPython standard Fractions library.
  • Sun and Moon - Determine Sun and Moon rise and set times, Moon phases.

Motion

DC Motor

  • L298N - Driver for the L298N dual H-bridge motor controller.
  • MicroPython-L298 - Drive L298 dual H-bridge with MicroPython.
  • pyl298 - Driver for the L298 dual full-bridge motor controller.

Servo

Stepper

Sensors

Accelerometer Digital

Air Quality

Barometer

  • micropython-bme280 - Driver for the Bosch BME280 temperature/pressure/humidity sensor.
  • micropython-bmp180 - Driver for Bosch BMP180 temperature, pressure and altitude sensor.
  • mpy_bme280_esp8266 - Bosch BME280 temperature/pressure/humidity sensor.
  • BME280 - MicroPython driver for the BME280 sensor, target platform Pycom devices.
  • micropython-bmp280 - Module for the BMP280 sensor.
  • micropython_bme280_i2c - A MicroPython module for communicating with the Bosch BME280 temperature, humidity, and pressure sensor.
  • MicroPython-BME280 - Driver to digital sensor of Temperature, Pressure and Humidity.
  • micropython-bmp180 - A module for MicroPython which provides a class for the BMP180 pressure sensor.
  • BMP390 - MicroPython module for BMP390 pressure & temperature sensor.
  • BMP180 - MicroPython module for BMP180 pressure & temperature sensor.
  • MicroPython_BMP581 - MicroPython driver for the Bosch BMP581 pressure & temperature sensor.
  • MicroPython_DPS310 - MicroPython Driver for the DPS310 Sensor.
  • MicroPython_ICP10111 - MicroPython Driver for the TDK ICP-10111 Barometric Pressure and Temperature sensor.

Battery

Biometric

Camera

Colour

Compass

Current

Distance IR

Distance Laser

Distance Ultrasonic

Dust

  • pyGP2Y - MicroPython library for the Sharp GP2Y1014AU0F Dust Sensor.

Energy

  • ATM90E26_Micropython - Driver for ATM90E26 energy metering device.
  • MCP39F521 - ESP8266 scripts for reading MCP39F521 power monitors.
  • micropython-p1meter - A ESP32 sensor to read a p1 electricity meter and publish this to MQTT and Home Assistant, written in MicroPython.
  • esp32-solar2 - Simple solar regulator - MicroPython project.
  • cs5490_micropython - MicroPython Driver for CS5490 Energy Monitor IC.

Gaseous

  • micropython-MQ - Drivers for MQ series gas sensors.
  • MQ135 - Driver for MQ135 gas sensor.
  • CCS811 - Basic MicroPython driver for CCS811 on ESP8266 boards.
  • micropython-scd30 - MicroPython I2C driver for Sensirion SCD30 CO2 sensor module.
  • MicroPython_SCD4X - MicroPython I2C driver for Sensirion SCD40 and SCD41 CO2 sensors.
  • micropython-sgp40 - MicroPython I2C driver for SGP40 VOC sensor module.
  • MICS6814-Micropython-driver - ESP32 MicroPython driver for the Pimoroni MICS6814 breakout board.
  • MicroPython_AGS02MA - MicroPython Driver for the AGS02MA TVOC sensor.
  • SCD4x - MicroPython module for work with SCD4x (SCD40, SCD41) low power CO2, temperature & humidity electroacoustic sensor from Sensirion.
  • ens160 - MicroPython module for work with ENS160 Digital Metal-Oxide Multi-Gas Sensor.

Humidity

Light

Magnetometer

Motion Inertial

Pressure

  • ms5803-micropython - A MicroPython implementation of the driver for an MS5803 pressure & temperature sensor.
  • MPL3115A2_MicroPython - MicroPython library for the MPL3115A2 altimeter.
  • MicroPython_MMR902 - MicroPython Driver for the Mitsumi MMR902 Micro Pressure Sensor.
  • MicroPython_MPL3115A2 - MicroPython driver for the NXP MPL3115A2 Pressure and Temperature sensor.
  • MicroPython_MS5611 - MicroPython Driver for the TE MS5611 Pressure and Temperature Sensor.
  • D6F-PH - MicroPython module for differential pressure sensor, D6F-PH (OMRON).

Proximity

  • uPy_APDS9960 - MicroPython proximity library for ESP8266 using APDS9960.
  • MicroPython_VCNL4010 - MicroPython Driver for the Vishay VCNL4010 Proximity and Ambient Light Sensor.

Radiation

Soil Moisture

  • micropython-chirp - Driver for the Chirp Soil Moisture Sensor.
  • MicroPython-MiFlora - Xiaomi Mi Flora (aka flower care) BLE plant sensors (soil moisture/conductivity/light intensity/temperature).
  • micropython-miflora - MicroPython library for Xiaomi Mi Flora BLE plant sensors.

Spectral

Temperature Analog

  • micropython-max31855 - Thermocouple amplifier, SPI interface.
  • max31856 - Precision thermocouple to digital converter with linearization, SPI interface.
  • mcp9700 - Generic MicroPython driver for MCP9700.
  • micropython-generic-thermistor - MicroPython Generic Thermistor Library for simplified temperature sensing using NTC thermistors with voltage dividors.

Temperature Digital

Temperature IR

Touch Capacitive

  • micropython-mpr121 - Driver for MPR121 capacitive touch keypads and breakout boards.
  • micropython-ttp223 - Examples using TTP223 capacitive touch module.
  • micropython-TTP229-BSF - MicroPython ESP8266/ESP32 driver for TTP229-BSF 16-key capacitive keypad in serial interface mode.
  • uFT6336U - MicroPython I2C driver for the Focus LCDs FT6336U capacitive touch panel controller IC.
  • MicroPythonTrill - Trill touch sensor library for MicroPython.
  • L58Touch - L58 Multi-Touch MicroPython Module.

Touch Resistive

Scheduling

  • micropython-mcron - MicroCRON is a time-based task scheduling program for MicroPython.
  • micropython-scron - SimpleCRON is a time-based task scheduling program inspired by the well-known cron program for Unix systems.
  • Schedule - A scheduler for uasyncio based applications. Schedule events at specified times and dates or with reference to Sun and Moon rise and set.
  • micropython-aioschedule - A persistent uasyncio scheduler that supports deepsleep between task runs.

Storage

Configuration file

  • uPyftsConf - MicroPython Far Too Simple Config File. Single file library that writes configurations to itself.

Database

  • uPyMySQL - Pure MicroPython MySQL Client.
  • micropython-redis - A Redis client implementation designed for use with MicroPython.
  • picoredis - A very minimal Redis client (not only) for MicroPython.
  • micropg - PostgreSQL database driver for MicroPython.
  • micropg_lite - PostgreSQL database driver for MicroPython, based on micropg but aiming to require less memory with some compromises in functionality.
  • nmongo - MongoDB client for CPython and MicroPython, with MongoDB shell-like APIs.
  • MicroPyDatabase - A low-memory JSON-based database for MicroPython.
  • micropython-firebase-realtime-database - Firebase implementation for MicroPython optimized for ESP32.
  • micropython-firebase-firestore - Firebase Firestore implementation for MicroPython.
  • uSQLite - SQLite library module for MicroPython.

EEPROM

  • micropython_eeprom - Cross-platform MicroPython device drivers for memory chips (EEPROM, FRAM, Flash, PSRAM).
  • mb_24x256_512 - Very simple MicroPython module/driver for Microchip 24x256 and 24x512 I2C EEPROM devices.
  • micropython-eeprom - MicroPython driver for AT24Cxx EEPROM.

Flash

  • micropython_data_to_py - A Python 3 utility to convert an arbitrary binary file to Python source for freezing as bytecode in Flash.
  • micropython-winbond - Interact with Winbond W25Q Flash chips via SPI.
  • freezeFS - Create self-extracting compressed or self-mounting archives for MicroPython.

FRAM

PSRAM

  • mb_PSRAM_64Mb_SPI - Very simple MicroPython module to use a generic 64Mbit PSRAM (ie Adafruit 4677) with a Raspberry Pi Pico (RP2040).

SRAM

  • mb_23LC1024 - Very simple MicroPython module to use a Microchip 23LC1024 SPI SRAM with a Raspberry Pi Pico (RP2040).
  • mb_47x16 - Very simple MicroPython module/driver for Microchip 47x16 EERAM devices (47L/47C).

Threading

  • MicroWorkers - A micro workers class that easily manages a pool of threads to optimise simultaneous jobs and jobs endings, for MicroPython (used on Pycom modules & ESP32).

User Interface

  • upymenu - MicroPython Menu for LCD Displays.

Utilities

Community

Tutorials

Books

Frameworks

  • micrOS - MicroPython-based IoT Framework.
  • terkin-datalogger - Flexible data logger application for MicroPython and CPython.
  • perthensis - Perthensis: an asynchronous framework for MicroPython.
  • meerkat - I2C Data Acquisition for MicroPython and Raspberry Pi.

Resources

Development

Code Generation

Debugging

IDEs

Logging

  • micropython-ulogger - Lightweight log module customized for MicroPython.
  • scd30logger - Sensirion SCD30 based CO2, Humidity and Temperature Logger for MicroPython.
  • sht15logger - MicroPython Temperature and Humidity Logger using Sensirion SHT15.

Shells

Jupyter

On Device

  • upy-shell - A simple command line-based shell for MicroPython.
  • Micropython-Editor - Small on-board editor for Pyboard, WiPy, ESP8266, ESP32, PyCom and Adafruit devices written in Python.

On Host

  • rshell - Copy or sync files to boards, enter REPL from your terminal.
  • ampy - Utility to interact with a MicroPython board over a serial connection.
  • mpbridge - A file system bridge to synchronize and manage files on a device running MicroPython.
  • mpfshell - A simple shell-based file explorer for ESP8266 and WiPy.
  • mpsync - A tool that automatically synchronizes code to a MicroPython board.
  • mpremote - Powerful official shell that supports mounting the host's current directory on the target. Run code without changing the target's filesystem.
  • MPRemoteEditor - A simple Windows IDE for developing with MicroPython MPRemote devices.
  • uPyExplorer - Explorer for MicroPython Device.
  • mpr - Wrapper for MicroPython mpremote tool.

Miscellaneous

Contributing

Contributions and suggestions are always welcome! Please take a look at the contribution guidelines first.

I will keep some pull requests open if I'm not sure whether those libraries are awesome, you could vote for them by adding 👍 to them.

\ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 00000000..fbcfe013 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Awesome MicroPython","text":"

A curated list of awesome MicroPython libraries, frameworks, software and resources.

MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.

"},{"location":"#contents","title":"Contents","text":"
  • Libraries
  • AI
  • Audio
  • Communications
  • Display
  • IO
  • Mathematics
  • Motion
  • Sensors
  • Scheduling
  • Storage
  • Threading
  • User Interface
  • Utilities
  • Community
  • Tutorials
  • Books
  • Frameworks
  • Resources
  • Development
  • Code Generation
  • Debugging
  • IDEs
  • Logging
  • Shells
  • Miscellaneous
  • Contributing
"},{"location":"#libraries","title":"Libraries","text":"

Other places you can look for MicroPython Libraries:

  • PyPi - This filter shows just the MicroPython libraries on PyPi. Note: You cannot pip install MicroPython libraries. See the MicroPython docs for more information on managing packages with MicroPython.
  • GitHub Search - Search GitHub for repositories containing MicroPython.
  • GitHub Topic - MicroPython - Browse GitHub Topics for projects tagged with MicroPython.
  • Libraries.io - Libraries.io query for MicroPython.
  • GitLab Explore - Explore repositories on GitLab.
  • Codeberg Explore - Explore repositories on Codeberg.
"},{"location":"#ai","title":"AI","text":"
  • MicroMLP - A micro neural network multilayer perceptron for MicroPython (used on ESP32 and Pycom modules).
  • MicroPython-NeuralNetwork - Neural Network for MicroPython.
  • upython-chat-gpt - ChatGPT for MicroPython.
  • emlearn-micropython - Efficient Machine Learning engine for MicroPython.
"},{"location":"#audio","title":"Audio","text":"
  • micropython-jq6500 - Driver for JQ6500 UART MP3 modules.
  • KT403A-MP3 - Driver for KT403A, used by DFPlayer Mini and Grove MP3 v2.0.
  • micropython-buzzer - Play Nokia compose and mid files on buzzers.
  • micropython-dfplayer - Library to control the DFPlayer mini MP3 player module.
  • micropython-dfplayer - Driver for DFPlayer Mini using UART.
  • micropython-longwave - WAV player for MicroPython board.
  • micropython-vs1053 - Asynchronous driver for VS1053b MP3 player.
  • micropython-midi - A MIDI implementation example for MicroPython.
  • upy-rtttl - Python Parser for Ring Tone Text Transfer Language (RTTTL).
  • micropython-i2s-examples - Examples for I2S support on microcontrollers that run MicroPython.
  • micropython-osc - A minimal OSC client and server library for MicroPython.
  • micropython-sgtl5000 - Library for SGTL5000 Low Power Stereo Codec w/ Headphone Amp.
  • umidiparser - MIDI file parser for MicroPython, CircuitPython and Python.
  • micropython-tas2505 - MicroPython driver for the Texas Instruments TAS2505 Digital Input Class-D Speaker Amplifier.
"},{"location":"#communications","title":"Communications","text":""},{"location":"#apis","title":"APIs","text":"
  • micropython-utelegram - Telegram API wrapper for MicroPython.
  • uEagle - MicroPython Rainforest EAGLE client.
  • micropython-youtube-api - YouTube API in MicroPython.
  • micropython_esp8266_tweetbot - Tweet bot for MicroPython v1.8.4 (ESP8266).
  • telegram-upy - Telegram API wrapper for MicroPython.
  • micropython-thingspeak - Library for sending data to thingspeak.com from IoT devices running MicroPython (such as ESP8266).
  • micropython_pushbullet - Simple example of how to use PushBullet with MicroPython on ESP8266.
  • esp32-youtube-display - Display YouTube metrics using Google API and MicroPython.
  • micropython-spotify-web-api - A library for using Spotify's web API from a IoT device with MicroPython.
  • micropython_demo_bot - Little example of how to create a bot for Telegram.
  • micropython-basicdweet - A python module for very basic APIs of the free dweet service.
  • micropython-dweeter - A python module for messaging through the free dweet service.
  • micropython-cryptodweet - A python module for very basic APIs of the free dweet service with encryption.
  • micropython-linenotify - MicroPython library for sending notifications to Line Notify with ESP8266 and ESP32.
"},{"location":"#authentication","title":"Authentication","text":"
  • micropython-firebase-auth - Firebase Auth implementation for MicroPython.
"},{"location":"#bluetooth","title":"Bluetooth","text":"
  • PyBoard-HC05-Android - Pyboard HC05 Bluetooth adapter example application.
  • uble - Lightweight Bluetooth Low Energy driver written in pure Python for MicroPython.
  • MicroPythonBLEHID - Human Interface Device (HID) over Bluetooth Low Energy (BLE) GATT library for MicroPython.
  • upyble - Command line tool for Bluetooth Low Energy MicroPython devices.
  • micropython-xiaomi-ble-adv-parse - Passively retrieve sensor data from some Xiaomi Bluetooth Low Energy (BLE) sensors.
  • mijia-temphum-upy - MicroPython library to read certain Xiaomi Mijia BLE temperature & humidity sensors.
  • micropython-aioble-itag - Examples using aioble to interact with iTag BLE keychain tags.
"},{"location":"#can","title":"CAN","text":"
  • micropython-spacecan - Spacecan is a MicroPython implementation of the SpaceCAN protocol for embedded systems.
  • Robomaster-Micropython - Robomaster S1 - MicroPython CAN BUS controller.
  • micropython-mcp2515 - MicroPython MCP2515 driver, porting from Arduino MCP2515 CAN interface library.
  • microPython_MCP2515 - A MicroPython library for the MCP2515 CAN bus controller.
"},{"location":"#compression","title":"Compression","text":"
  • ufastlz - MicroPython wrapper for FastLZ, a lightning-fast lossless compression library.
  • tamp - A low-memory, MicroPython-optimized, DEFLATE-inspired lossless compression library.
"},{"location":"#cryptography","title":"Cryptography","text":"
  • ucryptography - Lightweight porting of pyca/cryptography to MicroPython based on ARM Mbed TLS.
  • mpyaes - MicroPython module for AES encryption.
  • micropython-aes - AES algorithm with pure python implementation.
  • ucrypto - MicroPython package for doing fast RSA and elliptic curve cryptography, specifically digital signatures. ECDSA API design inspired from fastecdsa and implementation based on tomsfastmath.
  • ucryptoauthlib - Lightweight driver for Microchip Crypto Authentication secure elements written in pure Python for MicroPython.
  • embit - A minimal Bitcoin library for MicroPython and Python 3 with a focus on embedded systems.
  • microotp - An ESP8266 MicroPython OTP Generator.
  • micropython-rsa-signing - RSA signing on MicroPython.
  • micropython-cryptomsg - A MicroPython module to encrypt and decrypt messages with AES CBC mode.
  • mprsa - A MicroPython module for creating, importing, and exporting RSA keys in DER and PEM formats with PKCS#1, PKCS#8, and X.509/SPKI structures, and signing/verifying and encryption/decryption using blinding and SHA-1 and SHA-256 hashing algorithms.
  • mpy-mbedtls - MicroPython bindings for some MbedTLS EC and x509 cert/csr functions.
  • micropython-cryptocfb - A Python module to encrypt and decrypt data with AES-128 CFB mode.
  • tscp - An endpoint-to-endpoint encryption based on Diffie-Hellman-Merkle with TLS1.3 styled handshake using MicroPython.
"},{"location":"#dns","title":"DNS","text":"
  • ICantBelieveItsNotDNS - \"I Can't Believe It's Not DNS!\" (ICBIND) is an authoritative DNS server for the ESP8266 written in MicroPython.
  • MicroDNSSrv - A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32).
  • tinydns - Very simple DNS async server for MicroPython.
  • micropython-captiveportal - Minimal async captive portal for MicroPython (compatible with uasyncio v3/MicroPython 1.13+ as well as earlier versions).
  • Micropython-DNSServer-Captive-Portal - MicroPython WiFi AP Captive Portal with DNS and Web Server.
"},{"location":"#esp-now","title":"ESP-NOW","text":"
  • mesh-espnow-micropython - Dynamic Secure Mesh for Collaborative Nodes of IoT devices.
"},{"location":"#ethernet","title":"Ethernet","text":"
  • Official WIZnet5k - Driver for the WIZnet5x00 series of Ethernet controllers.
  • micropy-ENC28J60 - ENC28J60 Ethernet chip driver for MicroPython (RP2).
  • RP2040 Ethernet example - Ethernet driver, example Python code and YouTube.
  • micropython-ch9121 - MicroPython library for controlling CH9121 Ethernet modules.
"},{"location":"#ftp","title":"FTP","text":"
  • micropython-ftplib - An FTP client library for MicroPython.
  • FTP-Server-for-ESP8266-ESP32-and-PYBD - Small FTP server for ESP8266/ESP32/Pyboard on the MicroPython platform.
  • MicroFTPServer - Minimal FTP Server that can run on an ESP8266 with MicroPython.
  • micropython-uaioftp - Lightweight FTP library for MicroPython.
  • FtpTiny-Micropython - Really small FTP server that runs in a thread.
"},{"location":"#gps","title":"GPS","text":"
  • micropyGPS - Full featured GPS NMEA sentence parser.
  • micropython-gnssl76l - MicroPython I2C driver for Quectel GNSS L76-L (GPS).
  • mpy-agps - MicroPython implementation of assisted location services (AGPS).
  • Asynchronous GPS driver - Receive and parse GPS data as a uasyncio task.
"},{"location":"#gsm","title":"GSM","text":"
  • micropython-upyphone - A GSM phone using Pyboard and SIM800l.
  • micropython-sim800 - MicroPython driver for SIM800.
  • sim800 - Library for interfacing with SIM800 module in MicroPython.
  • MicroPython-AM7020 - MicroPython driver for AM7020 Narrowband Internet of Things (NBIoT) module.
"},{"location":"#http","title":"HTTP","text":"
  • mrequests - A HTTP client module (not only) for MicroPython with an API similar to requests.
"},{"location":"#iot","title":"IoT","text":"
  • microhomie - MicroPython implementation of the Homie MQTT convention for IoT.
  • uPyEcho - Emulated Belkin WeMo device that works with Amazon Echo (Alexa) using MicroPython on an ESP32.
  • SonosRemote - A remote for Sonos installations running on an ESP8266 and using Sonos HTTP API.
  • micropython-home-assistant - MicroPython-based scripts to extend your Home Assistant-driven home automation projects.
  • micropython-iot - An approach to designing IoT applications using ESP8266, ESP32 or Pyboard D endpoints.
  • iot-core-micropython - Use MicroPython to connect to Google Cloud IoT Core.
  • SmartUPy - Controlling \"Tuya-type\" smart power outlets using MicroPython.
  • aws-iot-GET-POST-loop - MicroPython code which uses the AWS IoT REST API to GET/POST device state info.
  • sensor-mqtt-homeassistant - An ESP8266/ESP32 MicroPython-based sensor platform for GPIO, DHT, analog, LED and more. Includes remote updates for .py code from web server and MQTT/Home Assistant integration.
  • micropython-ha-mqtt-device - MicroPython module which allows creating Entites for HomeAssistant using MQTT Discovery.
  • ESP8266-Home-Assistant-Smart-Socket - This MicroPython project is to hack a Hyleton313 cheap WiFi smart socket.
  • ESP8266-Home-Assistant-RGB-Bulb - This MicroPython project is to hack a TYWE3S board in a cheap WiFi RGB Bulb.
  • uPyIoT - Connect an M5Stack ATOM running MicroPython to the Google Cloud Platform (GCP) to collect air-quality variables obtained from reading sensors.
  • micropython-switchbot-thermometer-hygrometer - Read SwitchBot Thermometer/Hygrometer via Bluetooth.
"},{"location":"#ir","title":"IR","text":"
  • micropython-necir - NEC infrared capture for TL1838 IR receiver LEDs.
  • Micropython-IR - Pyboard infrared remote sniff and replay.
  • micropython_ir - Nonblocking device drivers to receive from IR remotes and for IR \"blaster\" apps.
  • micropython-amg88xx - Driver for Grid-EYE thermal infrared array sensor (Adafruit 3538).
  • micropython-ys-irtm - MicroPython examples for YS-IRTM 5V NEC Infrared UART transceivers.
  • esp8266_ir - Control IR signal by WebSocket.
  • micropython_espX_IR_Transceiver - MicroPython ESP32 IR Transceiver.
  • pico-ir - IR library for Raspberry Pi Pico.
  • esp32-ir-remote - A MicroPython project for running ESP32 IR remotes.
"},{"location":"#lora","title":"LoRa","text":"
  • loraE22 - A MicroPython class for the Ebyte E22 Series LoRa modules.
  • micropython-lora - MicroPython library for controlling a Semtech SX127x LoRa module over SPI.
  • micropython-aiolora - MicroPython library for controlling a Semtech SX127x LoRa module with asyncio API.
  • micropython-rylr - MicroPython library for controlling Reyax LoRa modules (RYLR896, RYLR406).
  • silvergeko_rfm9x - Porting to MicroPython of adafruit_rfm9x.py library.
"},{"location":"#lorawan","title":"LoRaWAN","text":"
  • uPyLoRaWAN - ESP32 using MicroPython meets LoRa and LoRaWAN.
  • SX127x_driver_for_MicroPython_on_ESP8266 - SX127x (LoRa transceiver) driver for (Micro)Python on ESP8266/ESP32/Raspberry Pi.
  • LightLora_MicroPython - Lightweight Interrupt-driven Semtech SX127x Library for MicroPython.
  • u-lora - Raspi-lora for MicroPython.
  • sx127x_esp - Connect Ra-01 module base on LoRaTM sx127x chip to ESP8266/ESP32 under MicroPython.
  • nanoserver - MicroPython embedded LoRaWAN server.
  • micropySX126X - Semtech SX126X LoRa driver for MicroPython and CircuitPython.
"},{"location":"#mdns","title":"MDNS","text":"
  • micropython-mdns - A pure Python implementation of MDNS with support for Service Discovery.
"},{"location":"#modbus","title":"Modbus","text":"
  • micropython-modbus - MicroPython port of modbus-tk.
  • micropython-modbus - Modbus Master library for MicroPython ESP32 devices. Based on pycom-modbus from Pycom.
  • mp_modbus - Modbus library for MicroPython.
  • micropython-modbus - ModBus TCP and RTU library supporting client and host mode. Based on pycom-modbus from Pycom.
"},{"location":"#mqtt","title":"MQTT","text":"
  • micropython-mqtt - A 'resilient' asynchronous MQTT client: recovers from WiFi and broker outages.
  • MQBoard - A micro-framework for using MQTT with asyncio on MicroPython boards, primarily on the ESP32.
  • pysmartnode - MicroPython Smart Home framework.
  • umqtt_aws_iot - Publish UMQTT messages with MicroPython to AWS IoT.
  • sonoff-mqtt by davea - MicroPython scripts to control Sonoff/ESP8266 using MQTT.
  • micropython-sonoff-switch - Implements an MQTT-controllable switch for the iTead Sonoff Switch using MicroPython.
  • micropython-thingspeak-mqtt-esp8266 - Publish and Subscribe to ThingSpeak using MQTT with MicroPython running on ESP8266/ESP32 platforms.
  • uMQTT - MQTT publish for MicroPython on the WiPy board.
  • micropython-mqtt - Async MQTT library with auto reconnect for MicroPython devices such as the ESP32 or Pycom devices.
  • micropython-adafruit-mqtt-esp8266 - Using MQTT to Publish/Subscribe to Adafruit IO. MicroPython/CircuitPython implementation on ESP8266/ESP32.
  • MicropythonCayenneMQTTClient - A port of the Python Cayenne MQTT Client to MicroPython.
  • mqtt_upython - MQTT Client using MicroPython on ESP8266.
  • tinymqtt - Async MQTT client for MicroPython.
  • micropython-mqtt-thingspeak - Publish and Subscribe to ThingSpeak using MQTT with MicroPython.
"},{"location":"#nbd","title":"NBD","text":"
  • unbd - Micro implementation of network block device (NBD) for MicroPython.
"},{"location":"#nfc","title":"NFC","text":"
  • micropython-nfc - Using NFC with MicroPython.
  • micropython_pn532 - Driver for PN532 NFC/RFID breakout boards based on Adafruit CircuitPython (UART).
  • NFC_PN532_SPI - Partial port of Adafruit CircuitPython to MicroPython of PN532 NFC/RFID control library (SPI).
"},{"location":"#ntp","title":"NTP","text":"
  • esp8266_ntp_webserver - MicroPython + ESP8266 + NTP + web server.
  • micropython-ntpd - An implementation of an NTP daemon in MicroPython.
  • micropython_ntpserver - An NTP server written for MicroPython.
  • micropython-ntpclient - NTP client for MicroPython using uasyncio.
"},{"location":"#onewire","title":"OneWire","text":"
  • Official OneWire - For devices using the OneWire bus, eg Dallas DS18x20.
  • Onewire_DS18X20 - Classes for driving the DS18x20 sensor with the OneWire protocol for Pycom MicroPython.
  • micropython_arduino_control - MicroPython library to control an Arduino remotely, with corresponding Arduino code.
"},{"location":"#onkyo-eiscp","title":"Onkyo EISCP","text":"
  • eiscp-micropython - MicroPython port for the Onkyo-EISCP protocol used, among others, by Pioneer.
"},{"location":"#ota","title":"OTA","text":"
  • micropython-ota-updater - OTA Updater for MicroPython.
  • Micropython-ESP32-OTA - MicroPython updater based on rdehuyss/micropython-ota-updater.
  • senko - Simplest OTA update solution for your MicroPython projects.
"},{"location":"#radio","title":"Radio","text":"
  • micropython-radio - Protocols for nRF24L01 2.4GHz radio modules.
  • micropython-rfsocket - MicroPython implementation of popular 433MHz-based RFSockets.
  • Official nRF24L01 - Official driver for nRF24L01 2.4GHz radio modules.
  • micropython_remote - Capture and replay 433MHz remote control codes. Control remote switched power adaptors.
  • micropython-ys-rf34t - MicroPython examples using YS-RF34T 433MHz ASK/OOK UART transceivers.
  • FM_Talkie - FM Walkie Talkie using RDA5820N.
  • micropython-TEA5767 - MicroPython ESP8266/ESP32 driver for TEA5767 FM radio module.
  • micropython-ppm-decoder - Utility for decoding an R/C receiver PPM frame signal.
  • ESP32-433Mhz-Receiver-and-Tools - ESP32 433MHz receiver written in MicroPython and tools for Windows.
  • ESP32-433Mhz-Transmitter - A pure MicroPython RF transmitter. You can create and add your own encoder.
  • pico_jjy_tx - JJY transmitter for Raspberry Pi Pico W.
  • pico_dcf77_tx - DCF77 transmitter for Raspberry Pi Pico W.
  • micropython_dcf77 - DCF77 receiver and decoder.
"},{"location":"#rc-receiver","title":"RC receiver","text":"
  • micropython-ppm_reader - Library to decode PPM signals coming from a RC receiver.
"},{"location":"#repl","title":"REPL","text":"
  • webrepl - MicroPython WebREPL.
  • zepl - MicroPython WebREPL Console Application using ZeroMQ.
  • jupyter_micropython_remote - Jupyter kernel to directly execute code on a MicroPython board over the serial/web REPL.
  • FBConsole - Framebuffer console class for MicroPython.
"},{"location":"#rfid","title":"RFID","text":"
  • micropython-mfrc522 - Driver for NXP MFRC522 RFID reader/writer.
  • micropython-wiegand - Wiegand protocol reader.
  • urdm6300 - A MicroPython driver for the popular RDM6300 RFID card reader.
"},{"location":"#rpc","title":"RPC","text":"
  • ujrpc - JSON RPC for MicroPython.
"},{"location":"#rtc","title":"RTC","text":"
  • micropython-tinyrtc-i2c - Driver for DS1307 RTC and AT24C32N EEPROM.
  • Micropython_TinyRTC - Driver for DS1307 RTC.
  • micropython-mcp7940 - Driver for the Microchip MCP7940 RTC.
  • micropython-ds1302-rtc - DS1302 RTC Clock driver for MicroPython.
  • DS3231micro - MicroPython library for DS3231.
  • micropython-ds1307 - MicroPython driver for DS1307 RTC.
  • esp-ds3231-micropython - A DS3231 library for ESP8266/ESP32 with MicroPython.
  • PCF8563_PythonLibrary - MicroPython library for NXP PCF8563 Real-time clock/calendar.
  • DS3231 - MicroPython module for the DS3231 clock from Maxim Integrated.
  • DS1307 - MicroPython driver for the DS1307 real time clock.
  • micropython-DS3231-AT24C32 - MicroPython driver for DS3231 RTC.
"},{"location":"#serial","title":"Serial","text":"
  • mpy-miniterm - Tool for seamless serial debug and file synchronisation with MicroPython devices via the serial REPL.
  • MicroPython-MorseCode - International Morse Code using a microcontroller with MicroPython.
  • I2C Slave - Uses the Pyboard's I2C slave mode to implement a full duplex asynchronous link. Principal use case is for ESP8266 which has only one UART.
  • microSDI12 - A mini SDI-12 implementation for getting sensor info over RS-485.
"},{"location":"#serialization","title":"Serialization","text":"
  • micropython-msgpack - MessagePack serialisation library optimised for MicroPython.
  • micropython-uprotobuf - A lightweight implementation of Google's Protocol Buffers (protobuf) for MicroPython.
  • minipb - Mini Protobuf {de}serializer in pure Python.
  • ucbor - Lightweight implementation of cbor for MicroPython.
  • upy-msgpack - A lightweight MessagePack (de)serialization library (not only) for MicroPython.
"},{"location":"#smtp","title":"SMTP","text":"
  • uMail - A lightweight, scalable SMTP client for sending email in MicroPython.
"},{"location":"#sockets","title":"Sockets","text":"
  • XAsyncSockets - XAsyncSockets is an efficient Python/MicroPython library of managed asynchronous sockets.
"},{"location":"#socks","title":"SOCKS","text":"
  • micropython-socks - MicroPython library implementing SOCKS server.
"},{"location":"#tcp","title":"TCP","text":"
  • us2n - MicroPython bridge between UART and TCP for the ESP32.
"},{"location":"#telnet","title":"Telnet","text":"
  • MicroTelnetServer - Simple telnet server for MicroPython and the ESP8266 allowing telnet clients access to the REPL.
"},{"location":"#text-to-speech","title":"Text-to-Speech","text":"
  • micropython-SYN6988 - MicroPython library for the VoiceTX SYN6988 text to speech module.
"},{"location":"#voip","title":"VoIP","text":"
  • uPyVoip - VoIP for MicroPython ESP32 with Interactive Voice Response.
"},{"location":"#web","title":"Web","text":"
  • MicroWebSrv - A micro HTTP web server that supports WebSockets, HTML/Python language templating and routing handlers, for MicroPython (used on Pycom modules & ESP32).
  • MicroWebSrv2 - The last micro web server for IoTs (MicroPython) or large servers (CPython), that supports WebSocket, routes, template engine and with really optimized architecture (mem allocations, async I/Os).
  • tinyweb - Simple and lightweight HTTP async server for MicroPython.
  • upy-websocket-server - MicroPython (ESP8266) WebSocket server implementation.
  • micropython-captive-portal - A captive portal demo for MicroPython.
  • uPyPortal - A captive portal for MicroPython using ESP32 (Wemos).
  • ESP8266WebServer - ESP8266 web server for MicroPython.
  • microCoAPy - A mini client/server implementation of CoAP (Constrained Application Protocol) into MicroPython.
  • micropyserver - MicroPyServer is a simple HTTP server for MicroPython projects.
  • MicroRESTCli - A micro JSON REST web client based on MicroWebCli for MicroPython (used on Pycom modules & ESP32).
  • micropython-noggin - A very simple web server for MicroPython.
  • uwebsockets - MicroPython WebSocket implementation for ESP8266.
  • microdot - The impossibly small web framework for MicroPython.
  • micropython-nanoweb - Full async MicroPython web server with small memory footprint.
  • MicroWebCli - A micro HTTP web client for MicroPython (used on Pycom modules & ESP32).
  • micropython-configserver - Captive portal for MicroPython including a dumb DNS server and a web server to configure WiFi networks.
  • micropython-aioweb - A minimalist asyncio web framework for MicroPython.
  • thimble - A tiny web framework for MicroPython.
  • CaptiveWebServer - Simple MicroPython web server for serving a website from a captive portal.
  • micropython-urouter - A lightweight HTTP request routing processing support library based on MicroPython. The previous name was micro-route.
  • wlan-relays - Very simple HTTP server written in MicroPython for controlling the pins of an ESP32 board.
"},{"location":"#wifi","title":"WiFi","text":"
  • HueBridge - Philips Hue Bridge.
  • micropython-wifimanager - A simple network configuration utility for MicroPython on the ESP8266 board.
  • WiFiManager - WiFi manager for ESP8266 - ESP12 - ESP32 - MicroPython.
  • Micropython-ESP-WiFi-Manager - WiFi Manager to configure and connect to networks.
  • mpy-wpa_supplicant - MicroPython module to connect to the nearest known Wifi AP.
  • micropython-wifi_manager - WiFi Manager for ESP8266 and ESP32 using MicroPython.
"},{"location":"#zigbee","title":"Zigbee","text":"
  • ZbPy - MicroPython IEEE802.15.4 / Zigbee parser.
"},{"location":"#display","title":"Display","text":""},{"location":"#e-paper","title":"E-Paper","text":"
  • micropython-ili9341 - SSD1606 active matrix ePaper display 128x180.
  • micropython-waveshare-epaper - Drivers for various Waveshare ePaper modules.
  • micropython-waveshare-epd - Waveshare ePaper Display driver for devices running Pycom-flavored MicroPython.
  • ssd1675a - Driver for SSD1675-based e-paper displays.
  • Inkplate-micropython - MicroPython driver for Inkplate boards.
  • micropython-inkplate6 - MicroPython driver for the Inkplate 6.
  • eInk-micropython - eInk library for Waveshare 4.3inch device on MicroPython.
  • eink - An eInk, ePaper display driver for MicroPython and ESP32.
  • micropython_DEPG0213BN - Pure MicroPython driver for the DEPG0213BN eInk display found on the TTGO T5 V2.3 ESP32 boards.
  • uPyEINK - Control a Waveshare 7.5\" E-INK display using an ESP32 running MicroPython.
  • MicroPython-2.9-inch-ePaper-Library - MicroPython Display Driver for WaveShare 2.9inch e-Paper Display (B).
"},{"location":"#fonts","title":"Fonts","text":"
  • micropython-font-to-py - A Python 3 utility to convert fonts to Python source capable of being frozen as bytecode.
  • writer - A simple way to render above Python fonts to displays whose driver is subclassed from framebuf.
  • ssd1306big - A font for MicroPython on 128x64 pixel SSD1306 OLED display.
  • framebuf2 - MicroPython FrameBuffer extension: larger and rotated font, triangles and circles.
  • micropython_GT30L24T3Y_big5_font - MicroPython driver for reading BIG-5 Chinese characters from GT30L24T3Y / ER3303-1 SPI module.
  • ttgo-hershey-fonts - MicroPython Hershey font demo for the TTGO-LCD board.
  • packed-font - Memory efficient MicroPython fonts for the Pico Pi and SSD1306 OLED Display.
"},{"location":"#graphics","title":"Graphics","text":"
  • micropython-stage - A MicroPython port of the Stage game library.
  • micropython-png - Derivative of PyPNG for use with MicroPython.
  • mpy-img-decoder - PNG and JPEG decoder / parser / renderer in pure MicroPython.
  • micropython-oled-progressbars - A collection of progress bars for use with ESP8266 and ESP32 on OLED displays.
  • microplot - Simple MicroPython plotting package.
  • micropython-microbmp - A small Python module for BMP image processing.
  • MicroPython_UPLOT - MicroPython Small Graphics Framework.
"},{"location":"#gui","title":"GUI","text":"
  • lvgl - An object-oriented, component-based high-level GUI library with MicroPython binding.
  • micropython-lcd160cr-gui - Simple touch-driven event based GUI for the Pyboard and LCD160CR colour display.
  • micropython_ra8875 - MicroPython device driver and nano-GUI for RA8875 based displays.
  • micropython-nano-gui - A tiny display-only GUI with a limited set of GUI objects (widgets) for displays whose display driver is subclassed from the framebuf class. With drivers for TFT, ePaper and OLED displays.
  • micro-gui - Derived from nano-gui and supporting the same displays and hosts, this provides for user input via push buttons or a navigation joystick and an optional rotary encoder.
  • TFT-GUI - A fast touch GUI for large displays based on SSD1963 controller with XPT2046 touch controller.
  • micropython-nextion - Control Nextion displays using MicroPython.
  • mp_lvgl_widgets - Widgets for the MicroPython Port of LVGL.
  • micropython-core2 - Extends LV-MicroPython for the M5Stack CORE2 with MPU6886, ILI9342C, BM8563 and AXP192 drivers.
"},{"location":"#lcd-character","title":"LCD Character","text":"
  • Grove_RGB_LCD - Driver for SeeedStudio's Grove RGB LCD.
  • lcdi2c - Driver for HD44780-compatible dot matrix LCDs.
  • micropython-charlcd - Driver for HD44780-compatible LCDs.
  • micropython-i2c-lcd - Driver for I2C 2x16 LCD Screens.
  • pyboard-LCD-character-display - Pyboar driver for HDD44780-compatible 1602 LCDs.
  • python_lcd - Driver for HD44780-compatible dot matrix LCDs.
  • micropython-lcd - Class for controlling the HD44780 from a MicroPython Pyboard.
  • HD44780-lcd-upy - MicroPython module for controlling a generic HD44780 LCD.
  • LCM1602-14_LCD_Library - driver for AIP31068L 3.3 V I2C and SPI 1602 Serial Character LCDs.
  • micropython-i2c-lcd - MicroPython package to control HD44780 LCD displays 1602 and 2004 via I2C.
"},{"location":"#lcd-graphic","title":"LCD Graphic","text":"
  • micropython-lcd-AQM1248A - ESP8266 driver for AQM1248A graphic LCD.
  • micropython-pcd8544 - Driver for Nokia 5110 PCD8544 84x48 LCD modules.
  • micropython-st7565 - Driver for ST7565 128x64 LCDs.
  • micropython-st7920 - Library for simple graphic primitives on ST7920 128x64 monochrome LCD panel using ESP8266 and SPI.
  • MicroPython_PCD8544 - ESP8266 driver for Nokia 5110 PCD8544.
  • Official LCD160CR - Driver for official MicroPython LCD160CR display with resistive touch sensor.
  • micropython-hx1230 - MicroPython library for HX1230 96x68 LCD modules.
  • micropython-SHARP_Memory_Display - MicroPython driver for SHARP memory display.
"},{"location":"#lcd-tft","title":"LCD TFT","text":"
  • micropython-ili9341 - Collection of drivers for TFT displays, ILI9341, SH1106, SSD1606, ST7735.
  • micropython-ili934x - SPI driver for ILI934X series based TFT / LCD displays.
  • MicroPython-ST7735 - ESP32 version of GuyCarvers's ST7735 TFT LCD driver.
  • micropython-st7735 - Driver for ST7735 TFT LCDs.
  • MicroPython_ST7735 - Driver for ST7735 128x128 TFT.
  • SSD1963-TFT-Library-for-PyBoard-and-RP2040 - SSD1963 TFT Library for Pyboard and Raspberry Pi Pico.
  • ST7735 - Driver for ST7735 TFT LCDs.
  • micropython-ili9341 - MicroPython ILI9341 display & XPT2046 touch screen driver.
  • st7789_mpy - Fast pure-C driver for MicroPython that can handle display modules on ST7789 chip.
  • st7789py_mpy - Slow MicroPython driver for 240x240 ST7789 display without CS pin from AliExpress, written in MicroPython.
  • micropython-ili9341 - MicroPython Driver for ILI9341 display.
  • micropython-ili9341 - ILI9341 TFT driver for MicroPython on ESP32.
  • st7789_mpy - Fast MicroPython driver for ST7789 display module written in C.
  • st7789py_mpy - Driver for 320x240, 240x240 and 135x240 ST7789 displays written in MicroPython.
  • ili9342c_mpy - ILI9342C Fast 'C' Driver for MicroPython (M5Stack Core).
  • gc9a01py - GC9A01 Display driver in MicroPython.
  • gc9a01_mpy - Fast MicroPython driver for GC9A01 display modules written in C.
  • st7735-esp8266-micropython - An ESP8266 MicroPython library for ST7735 160x80, 128x128, 128x160 TFT LCD displays.
  • TTGO-ST7789-MicroPython - MicroPython ST7789 display driver for TTGO T-Display ESP32 CP2104 WiFi Bluetooth Module 1.14 Inch LCD.
  • st7735_micropython - ST7735 MicroPython drivers for 80x160, 128x128, 128x160 for ESP8266.
  • ili934x-micropython - Library for using ILI9341 display drivers with MicroPython.
  • micropython-st7735-esp8266 - MicroPython driver for ST7735 TFT displays on the ESP8266.
  • st7789s3_esp_lcd - Fast ESP_LCD based MicroPython driver for the TTGO T-Display-S3 st7789 display written in C.
  • s3lcd - ESP_LCD based MicroPython driver for ESP32-S3 Devices with ST7789 or compatible displays.
  • thmi_py - MicroPython display driver for the LILYGO T-HMI written in Python.
  • wt32sc01py - WT32SC01 Plus MicroPython Display Driver.
  • st7789s3_mpy - MicroPython display driver for the TTGO T-Display-S3 ST7789 written in C.
  • t-display-s3 - MicroPython display driver for the TTGO T-Display-S3 ST7789 written in Python.
  • mp-ili9341 - MicroPython Driver for ILI9341 TFT Display.
  • lvgl_esp32_gc9a01 - Driver for displays using the GC901 driver for use with LVGL MicroPython.
"},{"location":"#led-matrix","title":"LED Matrix","text":"
  • micropython-ht1632c - Driver for HT1632C 32x16 bicolor LED matrix.
  • micropython-matrix8x8 - Driver for Adafruit 8x8 LED Matrix display with HT16K33 backpack.
  • micropython-max7219 - Driver for MAX7219 8x8 LED matrix modules.
  • micropython-wemos-led-matrix-shield - Driver for Wemos D1 Mini Matrix LED shield, using TM1640 chip.
  • micropython-wemos-led-matrix - Driver for Wemos D1 Mini Matrix LED shield, using TM1640 chip.
  • micropython-max7219 - MicroPython driver for MAX7219 8x8 LED matrix.
  • MatrixDisplay - MicroPython module for work with MAX7219 LED matrix 8x8 display.
"},{"location":"#led-segment","title":"LED Segment","text":"
  • LKM1638 - Driver for JY-LKM1638 displays based on TM1638 controller.
  • max7219_8digit - Driver for MAX7219 8-digit 7-segment LED modules.
  • micropython-max7219 - Driver for MAX7219 8-digit 7-segment LED modules.
  • micropython-my9221 - Driver for MY9221 10-segment LED bar graph modules.
  • micropython-tm1637 - Driver for TM1637 quad 7-segment LED modules.
  • micropython-tm1638 - Driver for TM1638 dual quad 7-segment LED modules with switches.
  • micropython-tm1640 - Driver for TM1740 8x8 LED matrix modules.
  • micropython-tm1640 - MicroPython Library for 16 digits 7-segment displays controlled by a TM1640.
  • TM74HC595 - Driver for shift register-controlled 5 pin display modules.
  • micropython-tm1638spi - MicroPython Library for a popular board with 8 7-segment digits, 8 separate LEDs and 8 push buttons controlled by a TM1638.
"},{"location":"#leds","title":"LEDs","text":"
  • micropython-morsecode - Blink an LED with Morse Coded message.
  • micropython-p9813 - Driver for P9813 RGB LED used in SeeedStudio's Grove chainable RGB LED.
  • micropython-ws2812-7seg - 7-segment display using WS2812 RGB LEDs.
  • micropython-ws2812 - Driver for WS2812 RGB LEDs.
  • Official APA102 - ESP8266 APA102/DotStar RGB LED driver.
  • Official WS2811 - ESP8266 WS2811/NeoPixel RGB LED driver.
  • tlc5940-micropython - Driver for TLC5940 16 channel LED driver.
  • ws2812-SPI - An efficient MicroPython WS2812 (NeoPixel) driver.
  • micropython-ws2801 - A MicroPython library to interface with strands of WS2801 RGB LEDs.
  • tlc5947-rgb-micropython - Driver for the TLC5947 24 channel 12-bit PWM LED driver.
  • Hybotics_Micropython_HT16K33 - MicroPython driver for the HT16K33, a LED matrix, 7-Segment Numeric, and 14-Segment Alphanumeric display driver IC.
  • micropython-rgbled - This wrapper module aims to reduce the work needed to work with NeoPixel (WS2812) and DotStar (APA102) RGB LED strips and matrixes.
  • micropython_fastled - Port of FastLED to MicroPython.
  • micropython-rgb-led-driver - Tiny driver to control an RGB LED with PWM.
  • micropython-dotstar - A MicroPython port of the Adafruit CircuitPython APA102/DotStar library.
"},{"location":"#oled","title":"OLED","text":"
  • Grove_OLED - Driver for SSD1327 used by SeeedStudio's Grove OLED Display 1.12\" v1.0.
  • micropython-oled - Collection of drivers for monochrome OLED displays, PCD8544, SH1106, SSD1306, UC1701X.
  • micropython-ssd1327 - Driver for SSD1327 128x128 4-bit greyscale OLED displays.
  • micropython-ssd1351 - Driver for SSD1351 OLED displays.
  • MicroPython_SSD1306 - ESP8266 driver for SSD1306 OLED 128x64 displays.
  • Official SSD1306 - Driver for SSD1306 128x64 OLED displays.
  • SH1106 - Driver for the SH1106 OLED display.
  • micropython-ssd1309 - MicroPython SSD1309 Monochrome OLED Display Driver.
  • sh1107-micropython - MicroPython driver for SH1107-based OLED display (64x128).
  • SH1107 - Driver for SH1107 OLED displays (128x128 and 128x64 pixels).
  • micropython-ssd1322 - MicroPython display driver for SSD1322 grayscale OLED.
"},{"location":"#printer","title":"Printer","text":"
  • micropython-thermal-printer - The MicroPython port of Python Thermal Printer by Adafruit.
"},{"location":"#io","title":"IO","text":""},{"location":"#adc","title":"ADC","text":"
  • ads1x15 - Driver for the ADS1015/ADS1115 ADC, I2C interface.
  • micropython-ads1015 - ADS1015 12-Bit and ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
  • Micropython_ADS1115 - ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
  • ADS7818 - Python class interfacing the ADS7818 AD-converter.
  • micropython-ads1219 - MicroPython module for the Texas Instruments ADS1219 ADC.
  • micropython-hx711 - MicroPython driver for HX711 24-Bit Analog-to-Digital Converter.
  • MicroPython-ADC_Cal - ESP32 ADC driver using reference voltage calibration value from efuse.
  • micropython-pcf8591 - MicroPython driver for PCF8591 ADC/DAC, I2C interface.
  • hx711_mpy-driver - Micropython Driver for the HX711 weighing sensor.
  • MCP342x_LoPy - MicroPython driver for the MCP342x ADC.
  • micropython-ads1220 - MicroPython library for ADS1220 24-bit analog-to-digital converter.
  • PCF8591_micropython_library - MicroPython library for PCF8591 8-bit ADC/DAC.
"},{"location":"#dac","title":"DAC","text":"
  • micropython-mcp4725 - Driver for the MCP4725 I2C DAC.
  • mcp4728 - Helper library for the Microchip MCP4728 I2C 12-bit Quad DAC.
"},{"location":"#gpio","title":"GPIO","text":"
  • micropython-inputs - Classes to count pulses, debounce digital inputs, and calculate moving averages of analog inputs for a MicroPython board.
  • ubutton - A MicroPython library for controlling reading and debouncing pushbutton inputs, including \"short\" and \"long\" press callbacks.
  • micropython-debounce-switch - MicroPython Class for Debouncing Switches.
"},{"location":"#io-expander","title":"IO-Expander","text":"
  • micropython-mcp230xx - Driver for MCP23017 and MCP23008 GPIO expanders.
  • micropython-mcp230xx - Driver for MCP23017 and MCP23008 GPIO expanders, extended with interrupt handling.
  • micropython-mcp23017 - MicroPython driver for MCP23017 16-bit I/O Expander.
  • micropython-pcf8574 - MicroPython driver for PCF8574 8-Bit I2C I/O Expander with Interrupt.
  • micropython-pcf8575 - MicroPython driver for PCF8575 16-Bit I2C I/O Expander with Interrupt.
  • ESP8266_MCP23S17 - MicroPython library for using the MCP23S17 16-bit I/O expander with the ESP8266.
  • pcf8574 - MicroPython module for working with the PCF8574(A) I2C 8-bit I/O expander from NXP.
"},{"location":"#joystick","title":"Joystick","text":"
  • micropython-nunchuck - Driver for Nunchuk game controller, I2C interface.
  • esp32-microgamepad-ble - Dual analog joystick on ESP32 over BLE (Nordic UART Service - NUS) using MicroPython.
"},{"location":"#keyboard","title":"Keyboard","text":"
  • micropython-keyboard - 47 key keyboard running on a MicroPython Pyboard.
  • pico-rgbkeypad - A Python class for controlling the Pimoroni RGB Keypad for Raspberry Pi Pico.
  • micropython-aiobutton - A MicroPython module for asyncio button.
"},{"location":"#multiplexer","title":"Multiplexer","text":"
  • micropython-tca9548a - MicroPython examples using TCA9548A I2C multiplexer.
"},{"location":"#potentiometers","title":"Potentiometers","text":"
  • micropython-ad840x - MicroPython SPI-based manipulation of the AD series digital potentiometers AD8400, AD8402 and AD8403.
  • mcp4131 - MicroPython module to control MicroChip's MCP4131 SPI digital potentiometer.
  • MicroPython_DS1841 - MicroPython Driver for the DS1841 Potentiometer.
  • MicroPython_DS3502 - MicroPython Driver for the DS3502 Potentiometer.
"},{"location":"#power-management","title":"Power Management","text":"
  • AXP202_PythonLibrary - MicroPython AXP202 Library.
  • micropython_hourly_sleeper_library - A MicroPython library that enables an ESP8266 to sleep for hourly increments for a setup amount of hours.
"},{"location":"#pwm","title":"PWM","text":"
  • upwmcontroller - A MicroPython library for controlling PWM outputs in an asyncio loop, with features including fading and blinking.
"},{"location":"#relay","title":"Relay","text":"
  • micropython-xl9535-kxv5-relay - A MicroPython library for jxl XL9535-KxV5 I2C relay boards.
"},{"location":"#rotary-encoder","title":"Rotary Encoder","text":"
  • micropython-rotary - MicroPython module to read a rotary encoder.
  • uencoder - A MicroPython library for reading from a rotary encoder.
  • encodermenu - Simple GUI menu for MicroPython using a rotary encoder and basic display.
  • encoderLib - MicroPython library to handle a rotary encoder.
  • rotary-encoder - MicroPython code to drive a KY-040 rotary encoder.
  • micropython-encoder-knob - A very simple lightweight encoder knob library with button support.
  • encoders - Short document explaining issues around encoder technology.
  • asynchronous encoder driver - Interface an encoder to uasyncio code.
  • micropython-8encoder - Driver for the I2C M5Stack 8-Encoder Unit
  • micropython-quiic-twist - MicroPython Driver for Quiic Twist RGB Rotary Encoder.
  • AS5600 - AS5600 MicroPython library for reading this magnetic sensor.
"},{"location":"#shift-registers","title":"Shift Registers","text":"
  • micropython-74hc595 - MicroPython driver for 74HC595 8-bit shift registers.
  • MicroPython-SN74HCS264 - MicroPython Driver for SN74HCS264 8-Bit Parallel-Out Serial Shift Registers With Schmitt-Trigger Inputs and Inverted Outputs.
"},{"location":"#waveform-generator","title":"Waveform Generator","text":"
  • Micropython-AD9833 - Pyboard driver for AD9833, SPI interface.
  • Clock_Generators - Clock generators (Si5351 for now) toolbox.
  • Signal_Generators - Signal generators (AD9833, AD9834, AD9850, ADF4351) toolbox.
  • ad9850_signalgen - MicroPython library for AD9850 synthesizer.
  • pico-wave-vibration-generator - A MicroPython-based frequency generator for Raspberry Pi Pico designed to create vibrations on solenoids or speakers, enabling wave experimentation and exploration at home.
  • micropython-m5stack-dds - MicroPython driver for the M5Stack DDS frequency generator.
  • AD9833-MicroPython-Module - MicroPython module to use the AD9833 programable waveform generator.
"},{"location":"#mathematics","title":"Mathematics","text":"
  • uMath - Computer Algebra for microcontrollers.
  • micropython-ulab - A NumPy-like fast vector module for MicroPython.
  • micropython-fourier - Fast Fourier transform in MicroPython's inline ARM assembler.
  • Filters - FIR filters using ARM Thumb assembler. Using an online utility you can go from a graph of required frequency response to a filter implementation.
  • ulinalg - Small size matrix handling module with a few linear algebra operations specifically for MicroPython (Python 3).
  • micropython-mtx - Fast Matrix Multiplication and Linear Solver on MicroPython.
  • micropython-vec - Vector Operations on MicroPython.
  • MicroPython_Statistics - Statistics module for MicroPython.
  • MicroPython-Matrix - MicroPython basic matrix operations.
  • uumpy - A subset of NumPy for MicroPython.
  • upyuncertainties - Uncertainty calculations for MicroPython.
  • umatrix - A matrix library for the MicroPython language.
  • micropython-fractions - A MicroPython port of the CPython standard Fractions library.
  • Sun and Moon - Determine Sun and Moon rise and set times, Moon phases.
"},{"location":"#motion","title":"Motion","text":""},{"location":"#dc-motor","title":"DC Motor","text":"
  • L298N - Driver for the L298N dual H-bridge motor controller.
  • MicroPython-L298 - Drive L298 dual H-bridge with MicroPython.
  • pyl298 - Driver for the L298 dual full-bridge motor controller.
"},{"location":"#servo","title":"Servo","text":"
  • micropython-pca9685 - 16-channel 12-bit PWM/servo driver.
  • micropython-servo - Library to control RC servos using direct PWM output in a tidy way.
  • MicroPython_PCA9685 - MicroPython Driver for the PCA9685 PWM control IC, commonly used to control servos, LEDs and motors.
  • MicroPython_MOTOR - MicroPython Helper for controlling PWM based motors.
"},{"location":"#stepper","title":"Stepper","text":"
  • micropython-stepper - Library to control common stepper drivers in a tidy way.
  • micropython-upybbot - A4988 driver for bipolar stepper motors.
  • uln2003 - Driver for 5V 28BYJ-48 stepper motors.
  • micropython-multiaxis - Multiaxis with MicroPython ESP32 and DRV8825.
  • ticlib - Driver for Pololu Tic stepper motor controllers.
  • AccelStepper-MicroPython - AccelStepper Library for MicroPython - ESP32.
  • pystepper - MicroPython Stepper Motor Sequence Control.
  • uPySteppers - DIY rotating platform using an ESP32 connected to WiFi.
  • microPython_AMIS-30543 - MicroPython library for Stepper Driver control using AMIS-30543 driver.
  • micropython-drv8825 - Driver and example in MicroPython to control a stepper motor via a DRV8825 controller board.
  • microPython_TMC5160 - A MicroPython library for the Trinamic TMC5160 Motion Controller.
  • micropython-stepper-motor - Drive a 28BYJ-48 motor attached to a ULN2003 driver.
"},{"location":"#sensors","title":"Sensors","text":""},{"location":"#accelerometer-digital","title":"Accelerometer Digital","text":"
  • ADXL345-with-Pyboard - Driver for ADXL345 16g 3-axis accelerometer.
  • adxl345_micropython - Driver for ADXL345 16g 3-axis accelerometer.
  • MicroPython-LIS3DH - I2C driver for LIS3DH 3-axis accelerometer.
  • micropython-lis2hh12 - I2C driver for LIS2HH12 3-axis accelerometer.
  • MMA7660 - Driver for MMA7660 1.5g 3-axis accelerometer.
  • ADXL345_spi_micropython - Library for interacting through the SPI protocol with an 'Analog Devices ADXL345' accelerometer from an MCU flashed with MicroPython.
  • MicroPython_ADXL343 - MicroPython Driver for the Analog Devices ADXL343 Accelerometer.
  • MicroPython_BMA220 - MicroPython Driver for the Bosch BMA220 Accelerometer.
  • MicroPython_BMA400 - MicroPython Driver for the Bosch BMA400 Accelerometer.
  • MicroPython_LIS3DH - MicroPython Driver for the LIS3DH 3-axis accelerometer.
  • MicroPython_KX132 - MicroPython Driver for the Kionix KX132 Accelerometer.
  • MicroPython_H3LIS200DL - MicroPython Driver for the ST H3LIS200DL Accelerometer.
  • MicroPython_QMC5883L - MicroPython Driver for the QMC5883L Accelerometer.
  • Micropython_MC3479 - MicroPython Driver for the MC3479 Accelerometer.
  • MicroPython_MMA8451 - MicroPython module for the MMA8451 3-axis accelerometer.
  • MicroPython_MMA8452Q - MicroPython Driver for the NXP MMA8452Q Accelerometer.
  • msa301-micropython-driver - Homebrew MicroPython driver for MSA301 3-axis accelerometer. Tested on Raspberry Pico.
"},{"location":"#air-quality","title":"Air Quality","text":"
  • CCS811 - CCS811 Air Quality Sensor.
  • upython-aq-monitor - Air Quality monitor using PMS5003 sensor and WiPy.
  • micropython-pms7003 - MicroPython driver for the PMS7003 Air Quality Sensor.
  • pms5003_micropython - Driver for PMS5003 air quality sensor for MicroPython.
  • micropython-pms5003-minimal - Driver for P air quality sensor for MicroPython.
  • polly - SDS011 pollution sensor + Wemos D1 mini pro + MicroPython.
  • micropython-SNGCJA5 - MicroPython driver for Panasonic SN-GCJA5 particulate matter (PM) sensor.
"},{"location":"#barometer","title":"Barometer","text":"
  • micropython-bme280 - Driver for the Bosch BME280 temperature/pressure/humidity sensor.
  • micropython-bmp180 - Driver for Bosch BMP180 temperature, pressure and altitude sensor.
  • mpy_bme280_esp8266 - Bosch BME280 temperature/pressure/humidity sensor.
  • BME280 - MicroPython driver for the BME280 sensor, target platform Pycom devices.
  • micropython-bmp280 - Module for the BMP280 sensor.
  • micropython_bme280_i2c - A MicroPython module for communicating with the Bosch BME280 temperature, humidity, and pressure sensor.
  • MicroPython-BME280 - Driver to digital sensor of Temperature, Pressure and Humidity.
  • micropython-bmp180 - A module for MicroPython which provides a class for the BMP180 pressure sensor.
  • BMP390 - MicroPython module for BMP390 pressure & temperature sensor.
  • BMP180 - MicroPython module for BMP180 pressure & temperature sensor.
  • MicroPython_BMP581 - MicroPython driver for the Bosch BMP581 pressure & temperature sensor.
  • MicroPython_DPS310 - MicroPython Driver for the DPS310 Sensor.
  • MicroPython_ICP10111 - MicroPython Driver for the TDK ICP-10111 Barometric Pressure and Temperature sensor.
"},{"location":"#battery","title":"Battery","text":"
  • Micropython-LC709203F - A simple MicroPython library for LC709293F Fuel Gauge.
"},{"location":"#biometric","title":"Biometric","text":"
  • micropython-fingerprint - MicroPython library for reading Grow and ZhianTec fingerprint sensors.
  • MAX30102-MicroPython-driver - A MAX30102 driver ported to MicroPython. It should also work for MAX30105.
"},{"location":"#camera","title":"Camera","text":"
  • micropython-ov2640 - MicroPython class for OV2640 camera.
  • Nikon-Trigger-for-MicroPython - Remote trigger for a Nikon camera using an IR LED. For Pyboard v1.1.
  • micropython-camera-driver - OV2640 camera driver for MicroPython on ESP32.
  • esp32-cam-micropython - MicroPython ESP32-CAM.
  • uPyCam - Take a photo with an ESP32-CAM running MicroPython.
  • OV2640_uPy - OV2640 camera library for MicroPython.
  • MQTT-Cam - ESP32-CAM MicroPython MQTT AWS S3 Uploader.
"},{"location":"#colour","title":"Colour","text":"
  • micropython-tcs34725 - Driver class for TCS34725 and TCS34727 color sensors.
  • micropython-as7341 - MicroPython library for AS7341.
  • MicroPython_ISL29125 - MicroPython Driver for the Intersil ISL29125 Color Sensor.
  • TCS3200-MicroPython - A MicroPython driver and test programs for the TCS3200 color sensor.
  • MicroPython_TCS3430 - MicroPython driver for the AMS TCS3430 Color and ALS sensor.
  • micropython-gy33 - UART and I2C drivers for GY-33 module (TCS3472 color sensor).
"},{"location":"#compass","title":"Compass","text":"
  • micropython-esp8266-hmc5883l - 3-axis digital compass on the ESP8266.
  • QMC5883 - Python class for the QMC5883 Three-Axis Digital Compass IC.
  • microPython_AS5600L - MicroPython driver for AS5600L magnet rotary position sensor.
"},{"location":"#current","title":"Current","text":"
  • micropythonINA219 - Driver for INA219 current sensor.
  • pyb_ina219 - Driver for INA219 current sensor.
  • INA219 - INA219 MicroPython driver.
  • TI_INA226_micropython - MicroPython driver for Texas Instruments INA226 power measuring IC.
  • micropython-current-monitor - Current monitor using the INA219 and an SSD1306 OLED.
"},{"location":"#distance-ir","title":"Distance IR","text":"
  • micropython-gp2y0e03 - IR-LED distance measuring sensor using Sharp GP2Y0E03.
  • micropython-vl6180 - Time-of-Flight sensor, ambient light sensor & IR emitter.
"},{"location":"#distance-laser","title":"Distance Laser","text":"
  • micropython-vl53l0x - Time-of-Flight laser-ranging sensor.
  • Qwiic_TOF_Module_RFD77402 - Qwiic TOF Module (RFD77402) time-of-flight rangefinding module.
  • VL53L0X - MicroPython Library for LiDAR Sensor VL53L0X.
  • vl53l1x_pico - MicroPython driver for the VL53L1X ToF sensor.
  • tf-luna-micropython - A simple MicroPython I2C library for TF-Luna LiDAR Module.
  • vl53l5cx - MicroPython and CircuitPython Package for the VL53L5CX (4x4/8x8 ToF sensor array).
  • VL6180X - MicroPython driver for the VL6180X sensor on the ESP32.
  • LidarLight_v3HP_micropython - A MicroPython library for the Garmin Lidar Lite v3HP.
"},{"location":"#distance-ultrasonic","title":"Distance Ultrasonic","text":"
  • micropython-hcsr04 - Driver for HC-SR04 ultrasonic distance sensors.
  • micropython-us100 - MicroPython driver for the US-100 sonar distance sensor.
  • micropython-i2c-ultrasonic - MicroPython driver for the RCWL-9620-based M5 I2C Ultrasonic Distance Unit.
"},{"location":"#dust","title":"Dust","text":"
  • pyGP2Y - MicroPython library for the Sharp GP2Y1014AU0F Dust Sensor.
"},{"location":"#energy","title":"Energy","text":"
  • ATM90E26_Micropython - Driver for ATM90E26 energy metering device.
  • MCP39F521 - ESP8266 scripts for reading MCP39F521 power monitors.
  • micropython-p1meter - A ESP32 sensor to read a p1 electricity meter and publish this to MQTT and Home Assistant, written in MicroPython.
  • esp32-solar2 - Simple solar regulator - MicroPython project.
  • cs5490_micropython - MicroPython Driver for CS5490 Energy Monitor IC.
"},{"location":"#gaseous","title":"Gaseous","text":"
  • micropython-MQ - Drivers for MQ series gas sensors.
  • MQ135 - Driver for MQ135 gas sensor.
  • CCS811 - Basic MicroPython driver for CCS811 on ESP8266 boards.
  • micropython-scd30 - MicroPython I2C driver for Sensirion SCD30 CO2 sensor module.
  • MicroPython_SCD4X - MicroPython I2C driver for Sensirion SCD40 and SCD41 CO2 sensors.
  • micropython-sgp40 - MicroPython I2C driver for SGP40 VOC sensor module.
  • MICS6814-Micropython-driver - ESP32 MicroPython driver for the Pimoroni MICS6814 breakout board.
  • MicroPython_AGS02MA - MicroPython Driver for the AGS02MA TVOC sensor.
  • SCD4x - MicroPython module for work with SCD4x (SCD40, SCD41) low power CO2, temperature & humidity electroacoustic sensor from Sensirion.
  • ens160 - MicroPython module for work with ENS160 Digital Metal-Oxide Multi-Gas Sensor.
"},{"location":"#humidity","title":"Humidity","text":"
  • MicroPython_HTS221 - MicroPython Driver for the HTS221 Humidity Sensor.
"},{"location":"#light","title":"Light","text":"
  • MicroPython-SI1145 - SI1145 UV index, IR, visible light and proximity sensor.
  • micropython-tsl2561 - Driver for the TSL2561 illumination sensor from TAOS / ams.
  • mpy_bh1750fvi_esp8266 - ESP8266 driver for BH1750FVI sensor.
  • bh1750 - BH1750 I2C digital light sensor driver.
  • micropython-max44009 - MicroPython driver for the MAX44009 ambient light sensor.
  • veml7700 - Library for MicroPython for VEML7700 light sensor.
  • MicroPython_MAX44009_driver - MicroPython driver for MAX44009 light sensor.
  • MicroPython-VEML6075 - Driver base for the VEML6075 UV light sensor.
  • BH1750 - MicroPython module for the BH1750 ambient light sensor (ALS).
  • veml7700 - MicroPython module for the VEML7700 ambient light sensor (ALS) from Vishay.
"},{"location":"#magnetometer","title":"Magnetometer","text":"
  • MicroPython_LIS2MDL - MicroPython Driver for the ST LIS2MDL Magnetometer sensor.
  • MicroPython_LIS3MDL - MicroPython Driver for the ST LIS3MDL magnetometer.
  • MicroPython_MLX90393 - MicroPython Driver for the MLX90393 Magnetometer.
  • MicroPython_MMC5603 - MicroPython driver for the Memsic MMC5603 Magnetometer.
  • MicroPython_BMM150 - MicroPython Driver for the Bosch BMM150 Magnetometer.
  • MicroPython_MMC5983 - MicroPython Library for the Memsic MMC5983 Magnetometer.
"},{"location":"#motion-inertial","title":"Motion Inertial","text":"
  • micropython-bmx055 - Driver for Bosch BMX055 IMU sensor.
  • micropython-bno055 - Bosch Sensortec BNO055 9DOF IMU sensor, I2C interface.
  • micropython-lsm9ds0 - LSM9DS0 g-force linear acceleration, Gauss magnetic and DPS angular rate sensors.
  • micropython-mpu9250 - I2C driver for MPU9250 9-axis motion tracking device.
  • micropython-mpu9x50 - Driver for the InvenSense MPU9250 inertial measurement unit.
  • MPU6050-ESP8266-MicroPython - ESP8266 driver for MPU6050 accelerometer/gyroscope.
  • py-mpu6050 - ESP8266 driver for MPU6050 accelerometer/gyroscope.
  • micropython-mpu6886 - MicroPython I2C driver for MPU6886 6-axis motion tracking device.
  • micropython-fusion - Sensor fusion calculates heading, pitch and roll from the outputs of motion tracking devices.
  • flight_controller - MicroPython flight controller.
  • micropython-bno055 - Bosch BNO055 driver for MicroPython. IMU with hardware sensor fusion.
  • micropython-mpu6050-mqtt-streamer - Stream data from MPU6050 to MQTT server using MicroPython on ESP8266.
  • upy-motion - A simple MPU6050 driver written in MicroPython.
  • micropython-bno08x-rvc - MicroPython library for BNO08x.
  • micropython-mpu9250 - MicroPython MPU-9250 (MPU-6500 + AK8963) I2C driver.
  • MicroPython_ICM20948 - MicroPython Driver for the TDK ICM20948 Accelerometer/Gyro Sensor.
  • MicroPython_BMI160 - MicroPython Driver for the Bosch BMI160 Accelerometer/Gyro Sensor.
  • micropython-mpu6050 - MicroPython library for reading from MPU-6050 accelerometer and gyroscope modules.
  • MicroPython_ICG20660 - MicroPython Driver for the TDK ICG20660 Accelerometer/Gyro sensor.
  • MicroPython_BMI270 - MicroPython Driver for the Bosch BMI270 Accelerometer/Gyro Sensor.
  • MicroPython_LSM6DSOX - MicroPython Library for the ST LSM6DSOX accelerometer/gyro Sensor.
"},{"location":"#pressure","title":"Pressure","text":"
  • ms5803-micropython - A MicroPython implementation of the driver for an MS5803 pressure & temperature sensor.
  • MPL3115A2_MicroPython - MicroPython library for the MPL3115A2 altimeter.
  • MicroPython_MMR902 - MicroPython Driver for the Mitsumi MMR902 Micro Pressure Sensor.
  • MicroPython_MPL3115A2 - MicroPython driver for the NXP MPL3115A2 Pressure and Temperature sensor.
  • MicroPython_MS5611 - MicroPython Driver for the TE MS5611 Pressure and Temperature Sensor.
  • D6F-PH - MicroPython module for differential pressure sensor, D6F-PH (OMRON).
"},{"location":"#proximity","title":"Proximity","text":"
  • uPy_APDS9960 - MicroPython proximity library for ESP8266 using APDS9960.
  • MicroPython_VCNL4010 - MicroPython Driver for the Vishay VCNL4010 Proximity and Ambient Light Sensor.
"},{"location":"#radiation","title":"Radiation","text":"
  • micropython-geiger - Geiger counter with MicroPython card.
  • ESPGeiger - MicroPython library for the ESP8266 Geiger counter.
"},{"location":"#soil-moisture","title":"Soil Moisture","text":"
  • micropython-chirp - Driver for the Chirp Soil Moisture Sensor.
  • MicroPython-MiFlora - Xiaomi Mi Flora (aka flower care) BLE plant sensors (soil moisture/conductivity/light intensity/temperature).
  • micropython-miflora - MicroPython library for Xiaomi Mi Flora BLE plant sensors.
"},{"location":"#spectral","title":"Spectral","text":"
  • AS726X_LoPy - MicroPython driver for the AS726X spectral sensor.
  • MicroPython_AS7262X_driver - MicroPython driver for AS7262/AS7263 nano spectrometer sensor.
"},{"location":"#temperature-analog","title":"Temperature Analog","text":"
  • micropython-max31855 - Thermocouple amplifier, SPI interface.
  • max31856 - Precision thermocouple to digital converter with linearization, SPI interface.
  • mcp9700 - Generic MicroPython driver for MCP9700.
  • micropython-generic-thermistor - MicroPython Generic Thermistor Library for simplified temperature sensing using NTC thermistors with voltage dividors.
"},{"location":"#temperature-digital","title":"Temperature Digital","text":"
  • bme680-mqtt-micropython - Driver for BME680 gas, pressure, temperature and humidity sensor.
  • LM75-MicroPython - Driver for LM75 digital temperature sensor, I2C interface.
  • micropython-am2320 - Aosong AM2320 temperature and humidity sensor, I2C interface.
  • micropython-dht12 - Aosong DHT12 temperature and humidity sensor, I2C interface.
  • micropython-hdc1008 - Driver for the Texas Instruments HDC1008 humidity and temperature sensor.
  • micropython-mcp9808 - Driver for the Microchip MCP9808 temperature sensor.
  • micropython-mpl115a2 - Pyboard driver for the MPL115A2 barometric pressure sensor.
  • micropython-sht30 - Driver for SHT30 temperature and humidity sensor.
  • micropython-sht31 - Driver for the SHT31 temperature and humidity sensor.
  • micropython-Si7005 - Driver for Si7005 relative humidity and temperature sensor.
  • micropython-si7021 - SI7021 Temperature and humidity sensor, I2C interface.
  • micropython-si7021 - SI7021 Temperature and humidity sensor, I2C interface.
  • micropython-Si705x - Silicon Labs Si705x series of temperature sensors, I2C interface.
  • micropython-Si70xx - Silicon Labs Si70xx series of relative humidity and temperature sensors, I2C interface.
  • micropython-tmp102 - Driver for TMP102 digital temperature sensor.
  • Official DHT11+DHT12 - ESP8266 driver for DHT11 and DHT12 temperature and humidity sensor.
  • sht25-micropython - Driver for SHT25 temperature and humidity sensor.
  • micropython-tmp1075 - Driver for the TI TMP1075 temperature sensor.
  • micropython-sht11 - Driver for Sensirion SHT11 temperature and humidity sensor.
  • micropython-lm75a - Driver for the NXP LM75A digital temperature sensor.
  • BME680-Micropython - MicroPython driver for the BME680 sensor.
  • htu21d-esp8266 - This is a MicroPython module / class to measure data from the HTU21D.
  • HTU21D - Asynchronous driver for HTU21D temperature and humidity sensor.
  • esp-sht3x-micropython - A SHT3x (SHT30/31/35) library for ESP8266/ESP32 with MicroPython.
  • sht25-micropython - MicroPython implementation of API of SHT25 humidity and temperature sensor.
  • micropython-sht30 - SHT30 sensor driver in pure Python based on I2C bus.
  • micropython_ahtx0 - MicroPython driver for the AHT10 and AHT20 temperature and humidity sensors.
  • sht85 - MicroPython driver for the Sensiron SHT85 humidity and temperature sensor.
  • micropython-zacwire - MicroPython driver for the ZACwire protocol used in TSic 506F temperature sensors.
  • MicroPython_HTU31D - MicroPython library for TE HTU31D temperature and humidity sensors.
  • MicroPython_SHTC3 - MicroPython Driver for the Sensirion SHTC3 Temperature and Humidity Sensor.
  • MicroPython_TMP117 - MicroPython Driver for the TMP117 Temperature Sensor.
  • MicroPython_SI7021 - MicroPython Library for the Temperature and Humidity SI7021 Sensor.
  • MicroPython_ADT7410 - MicroPython Driver for the Analog Devices ADT7410 Temperature Sensor.
  • MicroPython_WSENTIDS - MicroPython library for the WSEN WSEN-TIDS temperature Sensor.
  • MicroPython_HS3003 - MicroPython Driver for the Renesas HS3003 Temperature and Humidity Sensor.
  • MicroPython_STTS22H - MicroPython Driver for the STTS22H Temperature Sensor.
  • MicroPython_HTU21DF - MicroPython HTU21D-F Temperature & Humidity driver.
  • MicroPython_SHT4X - MicroPython Driver fot the Sensirion Temperature and Humidity SHT40 and SHT45 Sensor.
  • MicroPython_SHT20 - MicroPython Driver for the Sensirion SHT20 Temperature Sensor.
  • MicroPython_MCP9808 - MicroPython Driver for the Microchip MCP9808 Temperature Sensor.
  • MicroPython_HDC1080 - MicroPython driver for the TI HDC1080 Temperature and Humidity sensor.
  • TMP117 - MicroPython module for the TMP117 temperature sensor from Texas Instruments.
  • BME680 - MicroPython module for the BME680, Bosch low power gas, pressure, temperature & humidity sensor.
  • SHT30 - MicroPython driver for the Sensirion SHT3x sensor.
  • MicroPython_AS6212 - MicroPython Library for the ASM AS6212 Temperature Sensor.
  • MicroPython_PCT2075 - MicroPython Driver for the NXP Semiconductors PCT2075 Temperature Sensor.
  • micropython-hdc1080 - MicroPython driver for the HDC1080 temperature and humidity sensor.
"},{"location":"#temperature-ir","title":"Temperature IR","text":"
  • micropython-mlx90614 - Driver for Melexis MLX90614 IR temperature sensor.
  • MicroPython_MLX90615_driver - MicroPython driver for Melexis MLX90615 IR temperature sensor.
"},{"location":"#touch-capacitive","title":"Touch Capacitive","text":"
  • micropython-mpr121 - Driver for MPR121 capacitive touch keypads and breakout boards.
  • micropython-ttp223 - Examples using TTP223 capacitive touch module.
  • micropython-TTP229-BSF - MicroPython ESP8266/ESP32 driver for TTP229-BSF 16-key capacitive keypad in serial interface mode.
  • uFT6336U - MicroPython I2C driver for the Focus LCDs FT6336U capacitive touch panel controller IC.
  • MicroPythonTrill - Trill touch sensor library for MicroPython.
  • L58Touch - L58 Multi-Touch MicroPython Module.
"},{"location":"#touch-resistive","title":"Touch Resistive","text":"
  • XPT2046-touch-pad-driver - Driver for XPT2046 touch pad controller used in many TFT modules.
"},{"location":"#scheduling","title":"Scheduling","text":"
  • micropython-mcron - MicroCRON is a time-based task scheduling program for MicroPython.
  • micropython-scron - SimpleCRON is a time-based task scheduling program inspired by the well-known cron program for Unix systems.
  • Schedule - A scheduler for uasyncio based applications. Schedule events at specified times and dates or with reference to Sun and Moon rise and set.
  • micropython-aioschedule - A persistent uasyncio scheduler that supports deepsleep between task runs.
"},{"location":"#storage","title":"Storage","text":""},{"location":"#configuration-file","title":"Configuration file","text":"
  • uPyftsConf - MicroPython Far Too Simple Config File. Single file library that writes configurations to itself.
"},{"location":"#database","title":"Database","text":"
  • uPyMySQL - Pure MicroPython MySQL Client.
  • micropython-redis - A Redis client implementation designed for use with MicroPython.
  • picoredis - A very minimal Redis client (not only) for MicroPython.
  • micropg - PostgreSQL database driver for MicroPython.
  • micropg_lite - PostgreSQL database driver for MicroPython, based on micropg but aiming to require less memory with some compromises in functionality.
  • nmongo - MongoDB client for CPython and MicroPython, with MongoDB shell-like APIs.
  • MicroPyDatabase - A low-memory JSON-based database for MicroPython.
  • micropython-firebase-realtime-database - Firebase implementation for MicroPython optimized for ESP32.
  • micropython-firebase-firestore - Firebase Firestore implementation for MicroPython.
  • uSQLite - SQLite library module for MicroPython.
"},{"location":"#eeprom","title":"EEPROM","text":"
  • micropython_eeprom - Cross-platform MicroPython device drivers for memory chips (EEPROM, FRAM, Flash, PSRAM).
  • mb_24x256_512 - Very simple MicroPython module/driver for Microchip 24x256 and 24x512 I2C EEPROM devices.
  • micropython-eeprom - MicroPython driver for AT24Cxx EEPROM.
"},{"location":"#flash","title":"Flash","text":"
  • micropython_data_to_py - A Python 3 utility to convert an arbitrary binary file to Python source for freezing as bytecode in Flash.
  • micropython-winbond - Interact with Winbond W25Q Flash chips via SPI.
  • freezeFS - Create self-extracting compressed or self-mounting archives for MicroPython.
"},{"location":"#fram","title":"FRAM","text":"
  • micropython-fram - Pyboard driver for Ferroelectric RAM module.
"},{"location":"#psram","title":"PSRAM","text":"
  • mb_PSRAM_64Mb_SPI - Very simple MicroPython module to use a generic 64Mbit PSRAM (ie Adafruit 4677) with a Raspberry Pi Pico (RP2040).
"},{"location":"#sram","title":"SRAM","text":"
  • mb_23LC1024 - Very simple MicroPython module to use a Microchip 23LC1024 SPI SRAM with a Raspberry Pi Pico (RP2040).
  • mb_47x16 - Very simple MicroPython module/driver for Microchip 47x16 EERAM devices (47L/47C).
"},{"location":"#threading","title":"Threading","text":"
  • MicroWorkers - A micro workers class that easily manages a pool of threads to optimise simultaneous jobs and jobs endings, for MicroPython (used on Pycom modules & ESP32).
"},{"location":"#user-interface","title":"User Interface","text":"
  • upymenu - MicroPython Menu for LCD Displays.
"},{"location":"#utilities","title":"Utilities","text":"
  • micropython-hexdump - An implementation of Hexdump for MicroPython.
"},{"location":"#community","title":"Community","text":"
  • MicroPython Discussions on GitHub - GitHub discussions for all things related to MicroPython.
  • MicroPython Forum (archive) - Archived community conversations on all things related to MicroPython.
  • Discord - Get an invite to the MicroPython Discord server.
  • MicroPython on Mastodon / Fediverse - Follow MicroPython in the Fediverse.
  • MicroPython on Twitter - Follow MicroPython on Twitter for latest news and updates.
  • MicroPython on Facebook - Like MicroPython on Facebook for competitions, news and updates.
  • Melbourne MicroPython Meetup - Regular meetup at CCHS in Melbourne, Australia.
"},{"location":"#tutorials","title":"Tutorials","text":"
  • uasyncio - Write asynchronous code which interfaces to hardware devices.
  • Asynchronous drivers - Tutorial and code for asynchronous interfaces to switches, pushbuttons, encoders and ADCs.
  • Pyboard micropower - Tutorial and code for low power applications on Pyboard 1.x and Pyboard D.
  • 3D rotation with quaternions - Tutorial and code for the easy way to do 3D rotation.
  • Miguel Grinberg - MicroPython and the Internet of Things.
  • Bhavesh Kakwani - MicroPython videos + written tutorials.
  • CoderDojo Twin Cities MicroPython - Full coding curriculum for teaching MicroPython to children.
  • MicroPython Tutorials for ESP32 boards - Tutorials with code examples to learn the basic of MicroPython with ESP32 boards.
  • Learn MicroPython with a Pi Pico board - Tutorials on MicroPython with the Raspberry Pi Pico / RP240 boards.
"},{"location":"#books","title":"Books","text":"
  • Programming with MicroPython: Embedded Programming with Microcontrollers and Python - By Nicholas H. Tollervey. ISBN 9781491972731.
  • MicroPython for the Internet of Things: A Beginner's Guide to Programming with Python on Microcontrollers - By Charles Bell. ISBN 9781484231227.
  • Beginning MicroPython with the Raspberry Pi Pico: Build Electronics and IoT Projects - By Charles Bell. ISBN 9781484281345.
  • MicroPython Cookbook - By Marwan Alsabbagh. ISBN 9781838649951.
  • Python for Microcontrollers: Getting Started with MicroPython - By Donald Norris. ISBN 9781259644535.
  • Advanced Programming in MicroPython By Example - By Yury Magda. ISBN 9781090900937.
  • MicroPython Projects - By Jacob Beningo. ISBN 9781789958034.
  • Get Started with MicroPython on Raspberry Pi Pico - By Gareth Halfacree and Ben Everard. ISBN 9781912047864.
  • MicroPython for Microcontrollers - By G\u00fcnter Spanner. ISBN 9783895764370.
  • MicroPython for the Raspberry Pi Pico W: A gentle introduction to programming digital circuits with Python - By Miguel Grinberg. ISBN 9798361302710.
"},{"location":"#frameworks","title":"Frameworks","text":"
  • micrOS - MicroPython-based IoT Framework.
  • terkin-datalogger - Flexible data logger application for MicroPython and CPython.
  • perthensis - Perthensis: an asynchronous framework for MicroPython.
  • meerkat - I2C Data Acquisition for MicroPython and Raspberry Pi.
"},{"location":"#resources","title":"Resources","text":"
  • MicroPython - Project website. Test drive the Pyboard. Try MicroPython online with Unicorn.
  • MicroPython on GitHub - Submit bug reports, follow and join in development on GitHub.
  • MicroPython Official Documentation - For various ports, including quick reference, general information, examples and tutorials.
  • MicroPython Wiki - Community generated documentation and examples of the features of MicroPython and the Pyboard.
  • MicroPython Newsletter - Subscribe to the MicroPython newsletter for news and announcements including new features and new products.
  • MicroPython Store - Where you can buy the Pyboard, housings, skins, books, connectors and peripherals.
  • MicroPython on Wikipedia - MicroPython on Wikipedia.
  • awesome-micropythons - The many forks & ports of MicroPython.
"},{"location":"#development","title":"Development","text":""},{"location":"#code-generation","title":"Code Generation","text":"
  • micropy-cli - Micropy CLI is a project management/generation tool for writing MicroPython code in modern IDEs such as Visual Studio Code.
  • micropython-stubber - Generate and use stubs for different MicroPython firmwares to use with Visual Studio Code or any IDE and linter.
  • micropython-stubs - Stubs of most MicroPython ports, boards and versions to make writing code that much simpler.
  • micropy-stubs - Automatically Generated Stub Packages for Micropy-Cli and whomever else.
  • micropython-extmod-generator - Generator for MicroPython external modules written in C.
  • micropython-package-template - GitHub workflow supported MicroPython package template with deploys to the Python Package Index on a push to the main branch and test deploys to the Test Python Package Index on PRs.
  • micropython-usermod - Online book about MicroPython external modules writen in C.
"},{"location":"#debugging","title":"Debugging","text":"
  • esp32-backtrace - ESP32 Exception Stack Backtrace Analyzer.
  • micropython-aiosentry - Asynchronous Sentry.io micro client for MicroPython.
  • micropython-usyslog - Simple remote syslog client for MicroPython.
  • Asynchronous monitor - Use a Raspberry Pico and a logic analyser or scope to monitor asynchronous code.
"},{"location":"#ides","title":"IDEs","text":"
  • BIPES - Web-based IDE for MicroPython with file manager, editor, code generation from blocks, IoT dashboard and Serial/USB/Bluetooth/WebREPL console on the web browser. Source: https://github.com/BIPES.
  • ESP32-MPY-Jama - Tool for managing Espressif ESP32 microcontrollers with MicroPython.
  • JetBrains IntelliJ/PyCharm MicroPython Plugin - Plugin for MicroPython devices in IntelliJ and PyCharm.
  • MicroPython IDE for VSCode - MicroPython IDE for Visual Studio Code.
  • MicroPython-REPLink for VSCode - Handy shortcuts for interacting with a MicroPython REPL terminal.
  • MPRemote for VSCode - An extension to provide easy access to some of mpremote's functionality from within Visual Studio Code.
  • Mu Editor - Code with Mu: a simple Python/MicroPython/CircuitPython editor for beginner programmers.
  • Thonny IDE - Thonny: Python IDE for beginners.
  • Pyboard File Manager - Pyboard File Manager: Windows GUI for Pyboard.py compatible devices.
  • uPIDE - \u00b5PIDE is a simple IDE for MicroPython.
"},{"location":"#logging","title":"Logging","text":"
  • micropython-ulogger - Lightweight log module customized for MicroPython.
  • scd30logger - Sensirion SCD30 based CO2, Humidity and Temperature Logger for MicroPython.
  • sht15logger - MicroPython Temperature and Humidity Logger using Sensirion SHT15.
"},{"location":"#shells","title":"Shells","text":""},{"location":"#jupyter","title":"Jupyter","text":"
  • micropython-magic - MicroPython integrated into Jupyter notebooks.
  • jupyter_upydevice_kernel - Jupyter kernel to interact with a MicroPython board over its REPL interface.
"},{"location":"#on-device","title":"On Device","text":"
  • upy-shell - A simple command line-based shell for MicroPython.
  • Micropython-Editor - Small on-board editor for Pyboard, WiPy, ESP8266, ESP32, PyCom and Adafruit devices written in Python.
"},{"location":"#on-host","title":"On Host","text":"
  • rshell - Copy or sync files to boards, enter REPL from your terminal.
  • ampy - Utility to interact with a MicroPython board over a serial connection.
  • mpbridge - A file system bridge to synchronize and manage files on a device running MicroPython.
  • mpfshell - A simple shell-based file explorer for ESP8266 and WiPy.
  • mpsync - A tool that automatically synchronizes code to a MicroPython board.
  • mpremote - Powerful official shell that supports mounting the host's current directory on the target. Run code without changing the target's filesystem.
  • MPRemoteEditor - A simple Windows IDE for developing with MicroPython MPRemote devices.
  • uPyExplorer - Explorer for MicroPython Device.
  • mpr - Wrapper for MicroPython mpremote tool.
"},{"location":"#miscellaneous","title":"Miscellaneous","text":"
  • MicroPython Kickstarter - 1,931 backers pledged \u00a397,803 to help bring this project to life.
  • MicroPython on the ESP8266 Kickstarter - 1,399 backers pledged \u00a328,534 to help bring this project to life.
"},{"location":"#contributing","title":"Contributing","text":"

Contributions and suggestions are always welcome! Please take a look at the contribution guidelines first.

I will keep some pull requests open if I'm not sure whether those libraries are awesome, you could vote for them by adding \ud83d\udc4d to them.

"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..c2ed08af --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,8 @@ + + + + https://awesome-micropython.com/ + 2024-03-07 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..eb0ebfb77af1018e5aaee95b4856118dd1d98d4b GIT binary patch literal 208 zcmV;>05AU^iwFp>3h8A6|8r?{Wo=<_E_iKh08Nie4udcZME5-f%APp=Nc||JyPlvu zKonAlL}D7JrQE&&y1*OTqvz3BUcbI8J~ooWP_Zo+tgyjg?Lt$r$Ng5G*i~)hJ9cDK zk>NlUYg6hk0K+hFa>;t#6UW#9nKmy3e-Q*fGqovlO$N&}m+a7}$%V3w9xS1^rFSM` zKc*G~H|RmaM6HiBC6Be*iQS