{
    "id": 270,
    "date": "2018-03-19T21:55:18",
    "date_gmt": "2018-03-19T21:55:18",
    "guid": {
        "rendered": "http:\/\/hayperek.pl\/?p=270"
    },
    "modified": "2018-03-21T19:12:50",
    "modified_gmt": "2018-03-21T19:12:50",
    "slug": "hackathon",
    "status": "publish",
    "type": "post",
    "link": "https:\/\/hayperek.pl\/pl_pl\/2018\/03\/19\/hackathon\/",
    "title": {
        "rendered": "Hackathon?"
    },
    "content": {
        "rendered": "<p>Zapewne cz\u0119\u015bci z Was za dobrze ide\u0119 hackathonu &#8211; wydarzenia, w czasie kt\u00f3rego grupka zapale\u0144c\u00f3w (programist\u00f3w) staje przed zadaniem rozwi\u0105zania okre\u015blonego problemu w ograniczonym czasie. Wynik ich pracy jest r\u00f3\u017cny. Czasami powstaje tylko proof-of-concept, a czasami gotowy produkt &#8211; w zale\u017cno\u015bci od stopnia z\u0142o\u017cono\u015bci zadania. Bez wzgl\u0119du jednak na efekt ko\u0144cowy, zawsze najcenniejsze s\u0105 do\u015bwiadczenie i wiedza zdobyta w trakcie. Dlatego dzi\u015b chcia\u0142bym spojrze\u0107 na projekt Sto Dni w Kolorze jako w\u0142a\u015bnie swego rodzaju ekstremaln\u0105 form\u0119 hackathonu, kt\u00f3rego celem jest stworzenie od podstaw konkretnego systemu wbudowanego, pog\u0142\u0119bienie wiedzy z zakresu programowania\/elektroniki oraz podzielenie si\u0119 ni\u0105 z Wami. Szczeg\u00f3lny nacisk chcia\u0142bym po\u0142o\u017cy\u0107 na dwie ostatnie kwestie. A wi\u0119c do dzie\u0142a&#8230;<\/p>\n<p>Kt\u00f3\u017c z nas nie s\u0142ysza\u0142 o Arduino czy RaspberryPi? Systemy wbudowane dawno przesta\u0142y by\u0107 ju\u017c domen\u0105 grupki zapale\u0144c\u00f3w i trafi\u0142 &#8222;pod strzechy&#8221;. Zw\u0142aszcza pojawienie si\u0119 w ostatnich latach wygodnych i zunifikowanych platform, spowodowa\u0142o szerokie upowszechnienie tej tematyki. Internet obecnie pe\u0142en jest wszelkiego rodzaju kurs\u00f3w programowania dla system\u00f3w wbudowanych &#8211; mo\u017cemy wybra\u0107 niemal dowolny poziom zaawansowania, j\u0119zyk programowania, platform\u0119.<\/p>\n<blockquote><p>Czy warto zatem rozpoczyna\u0107 &#8222;jeszcze jeden blog o mikrokontrolerach&#8221;?<\/p><\/blockquote>\n<p>Tak, o ile podejdziemy do tematu w troch\u0119 inny spos\u00f3b ni\u017c ma to zazwyczaj miejsce. Natur\u0105 system\u00f3w wbudowanych jest wzajemne przenikanie si\u0119 programowania i sprz\u0119tu, wi\u0119c sp\u00f3jrzmy na to z perspektywy obu tych warstw&#8230;<\/p>\n<h5>Oprogramowanie:<\/h5>\n<p>Moim celem nie jest na pewno stworzenie kolejnego kursu programowania w C\/C++ dla mikrokontroler\u00f3w. Pisz\u0105c tego bloga chcia\u0142bym skupi\u0107 si\u0119 raczej na zagadnieniach zwi\u0105zanych z projektowaniem architektury systemu, dekompozycji na modu\u0142y i warstwy &#8211; innymi s\u0142owy na szeroko rozumianej in\u017cynierii oprogramowania.<\/p>\n<blockquote><p>Dlaczego?<\/p><\/blockquote>\n<p>W przypadku system\u00f3w embedded operowanie na konkretnych przyk\u0142adach implementacji powoduje, \u017ce w mniejszym lub wi\u0119kszym stopniu uzale\u017cniamy si\u0119 od wybranej rodziny mikrokontroler\u00f3w, platformy czy j\u0119zyka programowania. Podej\u015bcie od strony architektury pozwala unikn\u0105\u0107 tych ogranicze\u0144 i spojrze\u0107 na dany problem w szerszej perspektywie, skupiaj\u0105c si\u0119 przy tym bardziej na starannym dobraniu struktury kodu, ni\u017c na szczeg\u00f3\u0142ach implementacji. Poprawnie zaprojektowane oprogramowanie zawsze b\u0119dzie \u0142atwiejsze do przetestowania, utrzymania czy nawet przeniesienia na inn\u0105 platform\u0119 sprz\u0119tow\u0105.<\/p>\n<blockquote><p>Ok, ale czy to znaczy, \u017ce nie b\u0119d\u0119 zamieszcza\u0142 przyk\u0142ad\u00f3w kodu \u017ar\u00f3d\u0142owego?<\/p><\/blockquote>\n<p>A\u017c tak minimalistycznie nie b\u0119dzie. Na pewno od czasu do czasu pojawi\u0105 si\u0119 fragmenty, dotycz\u0105ce algorytm\u00f3w, trik\u00f3w programistycznych, sprytnych optymalizacji, itp. B\u0119d\u0119 natomiast stara\u0142 si\u0119 unika\u0107 zamieszczania kodu specyficznego dla danej architektury sprz\u0119towej, takich jak obs\u0142uga peryferi\u00f3w czy przerwa\u0144. A skoro jeste\u015bmy bli\u017cej sprz\u0119tu&#8230;<\/p>\n<h5>Sprz\u0119t:<\/h5>\n<p>Podobnie jak w przypadku oprogramowania, nie b\u0119dzie to kolejny, internetowy kurs podstaw elektroniki cyfrowej. Nale\u017cy pami\u0119ta\u0107, i\u017c celem projektu jest stworzenie bardzo konkretnego urz\u0105dzenia, a nie jedynie po\u0142\u0105czenie kilku gotowych modu\u0142\u00f3w przewodami. Dlatego te\u017c najwi\u0119cej uwagi chcia\u0142bym po\u015bwi\u0119ci\u0107 praktycznym aspektom projektowania i prototypowania uk\u0142ad\u00f3w z mikrokontrolerami oraz rozwi\u0105zywaniu problem\u00f3w na jakie mo\u017cemy si\u0119 w\u00f3wczas natkn\u0105\u0107. Do\u0142o\u017c\u0119 przy tym wszelkich stara\u0144, aby informacje te by\u0142y podane w spos\u00f3b przyst\u0119pny i zrozumia\u0142y nawet dla pocz\u0105tkuj\u0105cych adept\u00f3w elektroniki.<\/p>",
        "protected": false
    },
    "excerpt": {
        "rendered": "<p>Zapewne cz\u0119\u015bci z Was za dobrze ide\u0119 hackathonu &#8211; wydarzenia, w czasie kt\u00f3rego grupka zapale\u0144c\u00f3w (programist\u00f3w) staje przed zadaniem rozwi\u0105zania okre\u015blonego problemu w ograniczonym czasie. Wynik ich pracy jest r\u00f3\u017cny. Czasami powstaje tylko proof-of-concept, a czasami gotowy produkt &#8211; w zale\u017cno\u015bci od stopnia z\u0142o\u017cono\u015bci zadania. Bez wzgl\u0119du jednak na efekt ko\u0144cowy, zawsze najcenniejsze s\u0105 do\u015bwiadczenie [&hellip;]<\/p>",
        "protected": false
    },
    "author": 1,
    "featured_media": 275,
    "comment_status": "closed",
    "ping_status": "open",
    "sticky": false,
    "template": "",
    "format": "standard",
    "meta": {
        "footnotes": ""
    },
    "categories": [
        3
    ],
    "tags": [
        9,
        11,
        7,
        6,
        8,
        10
    ],
    "class_list": {
        "0": "post-270",
        "1": "post",
        "2": "type-post",
        "3": "status-publish",
        "4": "format-standard",
        "5": "has-post-thumbnail",
        "6": "hentry",
        "7": "category-stodni",
        "8": "tag-arduino",
        "9": "tag-development",
        "10": "tag-embedded",
        "11": "tag-hackathon",
        "12": "tag-microcontroller",
        "13": "tag-raspberrypi",
        "15": "post-with-thumbnail",
        "16": "post-with-thumbnail-large"
    },
    "_links": {
        "self": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/270",
                "targetHints": {
                    "allow": [
                        "GET"
                    ]
                }
            }
        ],
        "collection": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts"
            }
        ],
        "about": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/types\/post"
            }
        ],
        "author": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/users\/1"
            }
        ],
        "replies": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/comments?post=270"
            }
        ],
        "version-history": [
            {
                "count": 5,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/270\/revisions"
            }
        ],
        "predecessor-version": [
            {
                "id": 276,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/270\/revisions\/276"
            }
        ],
        "wp:featuredmedia": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/media\/275"
            }
        ],
        "wp:attachment": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/media?parent=270"
            }
        ],
        "wp:term": [
            {
                "taxonomy": "category",
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/categories?post=270"
            },
            {
                "taxonomy": "post_tag",
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/tags?post=270"
            }
        ],
        "curies": [
            {
                "name": "wp",
                "href": "https:\/\/api.w.org\/{rel}",
                "templated": true
            }
        ]
    }
}