{"id":31101,"date":"2019-10-31T21:39:28","date_gmt":"2019-10-31T18:39:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\/"},"modified":"2019-10-31T21:39:28","modified_gmt":"2019-10-31T18:39:28","slug":"pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"Scriviamo un caricatore OTA per ATmega128RFA1 (incluso nel dispositivo Smart Response XE)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (incluso nel dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTutto \u00e8 iniziato con l'acquisto da parte dell'autore di un dispositivo interessante sul mercato secondario \u2014 Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">una breve descrizione<\/a><\/noindex>). \u00c8 destinato alle scuole: ogni studente in classe riceve un dispositivo simile a un quaderno elettronico o a un traduttore degli anni '90, l'insegnante pone una domanda e gli studenti digitano le risposte sulle tastiere dei dispositivi, che vengono trasmesse tramite un canale radio (802.15.4) a un ricevitore collegato al PC dell'insegnante.<\/p>\n<p>Il supporto per questi dispositivi \u00e8 stato interrotto diversi anni fa, e quello che le scuole acquistavano a 100-200 dollari l'uno ora riemerge su eBay a 10 o meno. L'hardware \u00e8 davvero adatto per esperimenti geek:<\/p>\n<ul>\n<li>una tastiera con 60 tasti<\/li>\n<li>\u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0432 384&#215;136, 2 \u0431\u0438\u0442\u0430 \u043d\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u2014 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0411\u041a, CGA, \u043d\u043e 4 \u043d\u0435 \u0446\u0432\u0435\u0442\u0430, \u0430 \u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438 \u044f\u0440\u043a\u043e\u0441\u0442\u0438<\/li>\n<li>microcontrollore ATmega128RFA1 (128 kB di memoria flash, 4 kB di ROM, 16 kB di RAM, trasmettitore e ricevitore conforme allo standard 802.15.4)<\/li>\n<li>memoria flash esterna (rispetto al microcontrollore, e non all'intero dispositivo) di 1 megabit (128 kilobyte) con interfaccia SPI<\/li>\n<li>scomparto per 4 elementi AAA.<\/li>\n<\/ul>\n<p>\n\u041f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043e\u043d \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0443 AVR, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Arduino-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f&#8230;<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Dalla notizia su <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> l'autore ha appreso che <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">\u00e8 gi\u00e0 stato fatto<\/a><\/noindex> (nello stesso link si descrive dove collegare), ottenendo la possibilit\u00e0 di eseguire giochi per Arduboy:<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"6VqPGFtIT8Q\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/6VqPGFtIT8Q\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n Ma l'autore \u00e8 pi\u00f9 interessato alla possibilit\u00e0 di non solo giocare sul dispositivo, ma di esplorarlo:<\/p>\n<ul>\n<li>memoria flash con interfaccia SPI<\/li>\n<li>bootloader per AVR<\/li>\n<li>standard 802.15.4<\/li>\n<\/ul>\n<p>\nL'autore ha iniziato scrivendo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">della libreria<\/a><\/noindex> (GPL v3), che consente di inizializzare il display, visualizzare testo e rettangoli, oltre a accedere alla memoria flash tramite interfaccia SPI. Successivamente ha iniziato a elaborare idee per utilizzi pratici del dispositivo: un terminale portatile compatibile con VT-100, giochi multiplayer. Dopo aver modificato tre dispositivi, ha deciso di 'insegnare' loro a ricevere sketch 'via aria'. Sarebbe stato non solo interessante, ma anche molto comodo: aprire il case del dispositivo \u00e8 difficile, e sotto il coperchio del vano batterie ci sono solo aperture che consentono di collegare un programmatori JTAG alla scheda.<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (incluso nel dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto \u00e8 sufficiente per caricare il bootloader di Arduino, ma non lo sketch \u2014 la porta seriale non \u00e8 stata portata l\u00ec, quindi \u00e8 comunque necessario aprire il case. Inoltre, le linee TX0 e RX0 della prima porta seriale sono collegate alle linee di polling della matrice della tastiera, ovvero quelle che gestiscono il polling dei tasti funzione ai lati del display. Tuttavia, che ci puoi fare \u2014 l'autore ha costruito questo:<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (incluso nel dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHa portato le linee JTAG l\u00ec, e ora non \u00e8 necessario aprire il vano delle batterie. E per permettere anche il caricamento degli sketch, ha riportato su questo stesso connettore entrambe le porte seriali, aggiungendo anche un interruttore, poich\u00e9 con le batterie installate l'unit\u00e0 non pu\u00f2 essere fisicamente spenta in altro modo.<\/p>\n<p>\u00c8 stato necessario lavorare per un po' con il saldatore, un coltellino e una pistola per colla. In generale, caricare gli sketch 'sulla rete' \u00e8 decisamente pi\u00f9 comodo, \u00e8 urgente inventare qualcosa per questo.<\/p>\n<p>L'IDE di Arduino per caricare gli sketch utilizza il programma <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Esso interagisce con il microcontrollore tramite il protocollo <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u041e\u043d \u043f\u043b\u043e\u0445\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438, \u0433\u0434\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438, \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0442\u0435\u0440\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0435 \u0447\u0442\u043e-\u0442\u043e \u043e\u0442\u0445\u043e\u0434\u0438\u0442 \u0438\u043b\u0438 \u0448\u0443\u0440\u0448\u0438\u0442, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0439\u0442\u0438 \u0441 \u0443\u043c\u0430 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043f\u0440\u0438\u0447\u0438\u043d\u044b. \u041e\u0434\u0438\u043d \u0440\u0430\u0437 \u0430\u0432\u0442\u043e\u0440 \u043f\u0440\u043e\u043c\u0443\u0447\u0438\u043b\u0441\u044f \u043f\u043e\u043b\u0434\u043d\u044f, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0434\u0435\u043b\u043e \u0432 \u043f\u043b\u043e\u0445\u043e\u043c \u043a\u0430\u0431\u0435\u043b\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043f\u0440\u0438\u0437\u043d\u043e\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 CP2102. \u0414\u0430\u0436\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ATmega32u4, \u043c\u043e\u0436\u0435\u0442 \u0438\u043d\u043e\u0433\u0434\u0430 \u0442\u0430\u043a \u00ab\u0448\u0430\u043b\u0438\u0442\u044c\u00bb. \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c Arduino \u0437\u0430\u043c\u0435\u0447\u0430\u043b, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0437\u0430\u043b\u0438\u0432\u043a\u0435 \u0441\u043a\u0435\u0442\u0447\u0435\u0439 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0440\u0435\u0434\u043a\u0438. \u0418\u043d\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043d\u043e\u043c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u042d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u2014 \u0441\u0431\u043e\u0439 \u0431\u044b\u043b \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u00ab\u043f\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0443\u00bb \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0447\u0430\u0449\u0435.<\/p>\n<p>Dopo aver provato vari modi per affrontare questo problema, l'autore ha ideato quanto segue. Il dispositivo ha una memoria flash da 128 kilobyte con interfaccia SPI \u2014 riceviamo dati attraverso i fili (ricordiamo che l'autore ha gi\u00e0 uno di quei dispositivi con la porta laterale), utilizziamo questa memoria come buffer e trasmettiamo i dati a un altro dispositivo tramite radio. \u00c8 un saluto da Cybiko.<\/p>\n<p>Dopo aver scritto il codice per lavorare con il canale radio e il font, il bootloader \u00e8 diventato pi\u00f9 lungo di 4 kilobyte. Pertanto, \u00e8 stato necessario cambiare il valore di HFUSE da 0xDA a 0xD8. Ora il bootloader pu\u00f2 essere lungo fino a 8 kilobyte e l'indirizzo iniziale \u00e8 diventato 0x1E000. Questo \u00e8 riflesso nel Makefile, ma deve essere considerato anche durante il caricamento. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">bootloader<\/a><\/noindex> utilizzando avrdude.<\/p>\n<p>Il trasmettitore e ricevitore standard 802.15.4 nell'ATmega128RFA1 \u00e8 progettato inizialmente per lavorare secondo il protocollo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, che \u00e8 piuttosto complicato, quindi l'autore ha deciso di trasmettere semplicemente i pacchetti. Questo \u00e8 implementato in modo hardware nel ATmega128RFA1, quindi ci vorr\u00e0 poco codice. Inoltre, per semplificare, l'autore ha deciso di utilizzare un canale fisso, senza permettere nemmeno la selezione manuale. Lo standard 802.15.4 supporta 16 canali numerati da 11 a 26. Sono abbastanza congestionati, alcuni sovrappongono anche i canali WiFi (i canali ZigBee sono contrassegnati in rosso, quelli WiFi in blu, verde e giallo).<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (incluso nel dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi \u00e8 scoperto che i canali 15 e 26 sono i meno soggetti a interferenze da WiFi. L'autore ha scelto il secondo. Dichiarazione: il traduttore non sa se sia consentito semplificare cos\u00ec ZigBee. Forse vale la pena programmare ancora un po' e implementarlo completamente?<\/p>\n<p>Sul primo dei dispositivi, devono implementare un automa che trasmette dati tramite il protocollo STK500. Nella maggior parte dei casi, i messaggi trasmessi e ricevuti sono autosufficienti, ma alcuni sono legati a quelli precedentemente passati attraverso il canale. La descrizione del dialogo \u00e8 fornita <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">qui<\/a><\/noindex>.<\/p>\n<p>Un elemento fondamentale di questo dialogo \u00e8 la trasmissione di pacchetti destinati alla registrazione nella memoria flash del dispositivo di destinazione. Nei semplici microcontrollori della famiglia AVR, la dimensione della pagina \u00e8 di 128 byte, mentre per l'ATmega128RFA1 \u00e8 di 256. La stessa dimensione si applica anche alla memoria flash collegata tramite il protocollo SPI. Quando il programma nel primo dispositivo carica lo sketch, non lo trasferisce immediatamente al secondo dispositivo, ma lo scrive prima in questa memoria. Quando l'Arduino IDE verifica l correttezza della scrittura, riceve ci\u00f2 che \u00e8 stato registrato. Ora \u00e8 necessario trasferire i dati ottenuti attraverso il canale radio al secondo dispositivo. Durante questo processo, il passaggio dalla ricezione alla trasmissione e viceversa avviene piuttosto frequentemente. Il protocollo STK500 \u00e8 indifferente ai ritardi, ma non tollera la perdita di dati (\u00e8 strano, perch\u00e9 in precedenza \u00e8 stato detto che i ritardi nella trasmissione dei dati influiscono). Tuttavia, le perdite durante la trasmissione wireless sono inevitabili. Nell'ATmega128RFA1 \u00e8 implementata una realizzazione hardware delle richieste di ritrasmissione in caso di dubbi sulla correttezza della trasmissione, ma l'autore ha deciso di realizzare la stessa cosa a livello software autonomamente. Ha sviluppato un protocollo in cui nella direzione di trasmissione passano molti pi\u00f9 dati rispetto all'altra.<\/p>\n<p>Non \u00e8 perfetto, ma funziona tutto. Una pagina di 256 byte \u00e8 suddivisa in quattro segmenti, ognuno dei quali viene trasmesso tramite radio come pacchetto. Un pacchetto pu\u00f2 contenere fino a 125 byte di dati pi\u00f9 un byte per la lunghezza e due per il CRC. Quindi i frammenti di 64 byte, insieme ai numeri di pagina e di segmento (da 0 a 3), vengono inclusi. Il dispositivo ricevente prevede una variabile che permette di monitorare quanti segmenti sono stati ricevuti e, quando arrivano tutti e quattro, viene inviato un riconoscimento all'unit\u00e0 trasmittente, confermando che l'intera pagina \u00e8 stata ricevuta. Se non c'\u00e8 riconoscimento (il CRC non corrisponde), inviamo di nuovo l'intera pagina. La velocit\u00e0 cos\u00ec ottenuta \u00e8 anche superiore a quella della trasmissione via cavo. Vedi:<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"d-ObUCnRmQU\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/d-ObUCnRmQU\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nMa in realt\u00e0, sarebbe opportuno prevedere un modo comodo per collegare i dispositivi tramite cavo per caricare gli sketch. Ad esempio, inserire un convertitore di interfaccia CP2102, come in foto, e attaccarlo alla scheda in modo da resistere alla forza durante il collegamento e lo scollegamento del cavo Micro USB.<\/p>\n<p><img decoding=\"async\" alt=\"Scriviamo un caricatore OTA per ATmega128RFA1 (incluso nel dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'\u00e8 anche un regolatore di tensione da 3,3 volt (e come applicarlo in un dispositivo con alimentazione a 6 volt \u2014 a condizione che ci sia lo stesso regolatore, e si possano aggiungere due diodi per selezionare automaticamente quale dei due alimenter\u00e0 il dispositivo). Dalla scheda del convertitore di interfaccia, \u00e8 necessario dissaldare tutti e tre i LED, altrimenti andranno a sovraccaricare le batterie quando funzionano da esse, oltre a interferire con l'interrogazione della tastiera e il funzionamento della memoria flash con interfaccia SPI.<\/p>\n<p>Perseguire l'obiettivo si \u00e8 rivelato persino pi\u00f9 interessante che raggiungerlo (e non serve il famoso aneddoto sull'autobus). L'autore ha imparato molte cose nuove sui bootloader per AVR, sulla memoria flash con interfaccia SPI, sul protocollo STK500 e sullo standard 802.15.4.<\/p>\n<p>Tutto il resto del codice, in aggiunta alla libreria descritta sopra \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">qui<\/a><\/noindex>, ed \u00e8 anch'esso sotto GPL v3. Il Twitter dell'autore \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">qui<\/a><\/noindex>.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/447026\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 Smart Response XE (\u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435). \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u043e\u043d\u043e \u0434\u043b\u044f \u0448\u043a\u043e\u043b: \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0435\u043d\u0438\u043a \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0443, \u043f\u043e\u0445\u043e\u0436\u0435\u043c\u0443 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u043d\u0443\u044e \u043a\u043d\u0438\u0436\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u044b\u0445, \u0443\u0447\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0438 \u0443\u0447\u0435\u043d\u0438\u043a\u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u0432\u0435\u0442\u044b, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 (802.15.4) \u0432 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a \u0443\u0447\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u041f\u041a. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23069,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 Smart Response XE (\u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435). \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u043e\u043d\u043e \u0434\u043b\u044f \u0448\u043a\u043e\u043b: \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0435\u043d\u0438\u043a \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0443, \u043f\u043e\u0445\u043e\u0436\u0435\u043c\u0443 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u043d\u0443\u044e \u043a\u043d\u0438\u0436\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u044b\u0445, \u0443\u0447\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0438 \u0443\u0447\u0435\u043d\u0438\u043a\u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u0432\u0435\u0442\u044b, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 (802.15.4) \u0432 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a \u0443\u0447\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u041f\u041a.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0438\u0448\u0435\u043c OTA-\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043b\u044f ATmega128RFA1 (\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Smart Response XE) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 Smart Response XE (\u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435). \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u043e\u043d\u043e \u0434\u043b\u044f \u0448\u043a\u043e\u043b: \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0435\u043d\u0438\u043a \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0443, \u043f\u043e\u0445\u043e\u0436\u0435\u043c\u0443 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u043d\u0443\u044e \u043a\u043d\u0438\u0436\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u044b\u0445, \u0443\u0447\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0438 \u0443\u0447\u0435\u043d\u0438\u043a\u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u0432\u0435\u0442\u044b, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 (802.15.4) \u0432 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a \u0443\u0447\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u041f\u041a.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:39:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:39:28+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Scriviamo un bootloader OTA per ATmega128RFA1 (incluso nel dispositivo Smart Response XE) | ProHoster","description":"Tutto \u00e8 iniziato con l'acquisto da parte dell'autore di un interessante dispositivo sul mercato secondario: Smart Response XE (una breve descrizione). \u00c8 destinato alle scuole: ogni studente in classe riceve un dispositivo, simile a un taccuino elettronico o a un traduttore degli anni novanta, il docente pone una domanda e gli studenti digitano le risposte sulle tastiere dei dispositivi, che vengono trasmesse tramite un canale radio (802.15.4) a un ricevitore collegato al PC dell'insegnante.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0438\u0448\u0435\u043c OTA-\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043b\u044f ATmega128RFA1 (\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Smart Response XE) | ProHoster","og:description":"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 Smart Response XE (\u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435). \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u043e\u043d\u043e \u0434\u043b\u044f \u0448\u043a\u043e\u043b: \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0435\u043d\u0438\u043a \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0443, \u043f\u043e\u0445\u043e\u0436\u0435\u043c\u0443 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u043d\u0443\u044e \u043a\u043d\u0438\u0436\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u044b\u0445, \u0443\u0447\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0438 \u0443\u0447\u0435\u043d\u0438\u043a\u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u0432\u0435\u0442\u044b, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 (802.15.4) \u0432 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a \u0443\u0447\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u041f\u041a.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:39:28+00:00","article:modified_time":"2019-10-31T18:39:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31101","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 04:31:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:22:35","updated":"2026-01-21 04:31:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}