2017. október 4., szerda

Fake RF-ID 2.

Kaptam e-mail-t, felhívtak telefonon és elnézést kértek a késői RMA válaszért. Láthatóan olvasták amit írtam. Ma vissza is vittem a cuccot.
Azt gondolom, az ügy részemről lezárva.
Az ügy tanulságai számomra:
1. Ha sürgős projectem van és megvan az esélye, hogy olyasmit kell rendelnem hozzá, aminél nem kizárható, hogy hamisított termék jöjjön, több forrásból fogom megrendelni. Ha itt is így jártam volna el, akkor talán bele fért volna a projectbe, hogy saját RF-ID olvasót használjak.
2. RF-ID-s cikkem érte el a blogom eddigi legnagyobb látogatottságát. Ez kicsit elszomorít. Az, hogy mindenkit jobban érdekel a balhé, mint a sikeres megoldások.

2017. szeptember 30., szombat

Fake RF-ID

Kicsit szomorú vagyok. Abban reménykedtem, hogy ezt a cikket nem kell megírnom.
Elég sok mindent szoktam a kis projectjeimhez vásárolni különböző távolkeleti kereskedőktől az interneten (AliExpress, eBay, Banggood, Electrodragon, DX, stb.), ebből elég jól tudom, hogy könnyen bele lehet futni hamisítványokba. A dolgok olcsók, a projectek általában nem sürgősek (csak magamnak állíthatnék fel határidőket, de nem teszem), így ha valami gagyi, általában nem okoz problémát újra rendelni.
Ez esetben kicsit más történt. Kaptam egy feladatot, aminek kb. 3 hét volt a határideje, így a távolkeleti rendelés szóba sem jöhetett. Már egy ideje tisztában vagyok vele, hogy a HeStore árul különböző távolkeleti forrásból származó modulokat. Tartanak egy elég jó választékot, viszonylag értelmezhető áron. Értsd, egy $2-os modul náluk mondjuk 900Ft-ba kerül, és nem 5000-be mint egyéb helyeken (tisztelet a kívételnek) ahol ilyesmi néha feltűnik.
Ebből adódóan náluk rendeltem egy rakás dolgot ehhez a projecthez. Köztük ezt az RF-ID olvasót is:


Kibontottam az elsőt, rákötöttem egy ESP8266-ra, piszok bizonytalanul olvasott. A hozzá adott kártyát csak sokadszorra, a hozzá adott tag-et egyáltalán nem. Kicsit gyanúsak lettek a dolgok így rámértem, felvett valami 500mA-t (ami rengeteg egy ilyen cucchoz). Majd egy idő után már az ESP8266-al sem kommunikált. Kibontottam még kettőt a megrendeltek közül, azok, uC-vel ugyan kommunikáltak, az áramfelvételük rendben volt de semmit sem olvastak.
Kb. egy hét kínszenvedés után, csak ellenőrizendő a sejtésemet, kerestem más magyar forgalmazót. Két másik helyről is rendeltem ugyanilyen olvasót. Azok elsőre tökéletesen működtek. Ebből arra következtetek, hogy a HeStore-os cucc fake.
Nem mondom, bosszantott a dolog. Nem azért mert fake a cucc, hanem az elvesztegetett időm miatt. A project ugyan összeállt, de az RF-ID része időhiány miatt a végén lemaradt.
Ettől még nem volt bajom a HeStore-ral, bár örültem volna, ha úgy árulják ezeket a cuccokat, hogy minden típusból egy-egy darabot legálább letesztelnek, mielőtt forgalomba hozzák.
Ami viszont piszokul dühít:
Kitöltöttem egy RMA-t, hogy legalább azt a három darabot amit még nem bontottam ki visszavegyék, valamint, hogy teszteljék le ami náluk van, hogy más ne járjon így.
Na most a kitöltött RMA-ra egy hét alatt sem voltak képesek válaszolni. Se egy e-mail, se egy telefon. Nagy büdös csönd van.
Azt gondolom, hogy most egy jó ideig nagyon meggondolom, hogy vegyek-e bármit tőlük. Azt hiszem inkább nem.



2017. augusztus 26., szombat

Pen Plotter 4 - InkScape/KiCAD munkamenet rajzoláshoz

A plotter első tesztje (ez it)



a következő munkamenettel készült:
Rajzoltam egy spirált az InkScape-ben, elmentettem DXF-ként és a DXF2GCODE programmal átkonvertáltam
https://sourceforge.net/projects/dxf2gcode/
Kipróbáltam néhány gcode küldőt, de végülis a Raspberry Pi/Ubuntu/Octoprint kombónál maradtam, amivel eléggé tisztában vagyok a 3D nyomtató miatt.
A fenti munkamenetnek van néhány baja:
  • Képtelen megfelelő skálázást produkálni. Azt nem tudom, hogy csak az én bénaságom, vagy a szoftverek baja.
  • A DXF2GCODE inkább hasonlít egy CAM szoftverre mint egy plug and play konverziós megoldásra. A plotternek sokkal egyszerűbb G code-ra van szüksége mint egy CNC marónak. Az a lehetőség, hogy marófejekkel, zsebekkel, stb. dolgozzunk itt teljesen felesleges.
  • Van egy vonal a plotter kezdőpontja és az ábra kezdőpontja között aminek nem kéne ott lennie. Ezt nem a munkamenet okozza, de erre majd visszatérek később.
Ezen a ponton elkezdtem másképp hozzáálni a feladathoz. A DXF egy mechanikai CAD formátum, tehát nem igazán tollas plotterekhez tervezték, ugyanakkor a HPGL kifejezetten a HP tollas plottereinek a nyelve.
Elkezdtem keresni egy programot ami a HPGL-t G code-á alakítja. Találtam néhány konvertert. Egy sem felelt meg a céljaimnak. A nagyja képtelen volt a HPGL AA íveit G2, G3 ívekké alakítani. Ez a konverzió feltételez némi trigonometriai tudást. Úgy látszik ezt néhány programozó nem tudta megugrani. Néhány próbálkozás után feladtam, hogy valami kész megoldást használjak.
Tehát írtam egy konveretert. Megtalálható a plotter github reojában:
https://github.com/sufzoli/suf-3D-Plotter/tree/master/SW/Hpgl2Gcode
Még vannak hiányosságai mint a hiányos hibakezelés vagy az útvonal optimalizáció hiánya, de teszi a dolgát.
Most nézzük meg, hogy működik a munkamenet.
Az eredeti rajz:


Először is a rajz objektumait útvonalakká (path) kell alakítani, másképp nem jelennek meg a HPGL fájlban:


Ha ez kész van elmenthetjük HPGL-ként:



Most jön a trükkös része:
Az InkScape HPGL mentés ablaka kivágó plotterhez tartalmaz alapbeállítáűsokat ami itt nekünk nem jó. Ezért a nagyját meg kell változtatni az alábbiak szerint:

 

Most átkonvertálhatjuk G code-á.
Két különböző beállítást használtam. Az ok, hogy a plotter M280 P0 S50 parancsot használ a fej felemeléséhez és M280 P0 S0 parancsot a letevéséhez.
A szokásos CNC marók G1 parancsot használnak a Z irány mozgatásához. Az elterjedt G code szimulátor a CAMotics nem tudja értelmezni az én toll magasság vezérlő parancsaimat így a szimulációra lecseréltem ezeket G1 Z5 F50-re és G1 Z-2 F50-re:


Az eredmény a szimulátorban:


Jól néz ki, csináljuk meg a plotterhez is:


Mint látható a PenUp és PenDown paraméterek hiányoznak. Az oka, hogy ezek az application config-ban kerültek elhelyezésre.
Ezek után feltöltöttem a fájlt az Octoprintre és kiküldtem a plotternek. Az eredmény katasztrófális. Rajzolt egy két centis szaggatott vonalat a plotter kezdöpontjából kiindulva az ábra kedőpontja felé, majd lerajzolta az egész ábrát a levegőbe (toll felemelve).
Az első pillanattól kezdve tudtam az okot. Ez azonos a korábban említett problémával (vonal a plotter kezdőpontjától a spirál kezdőpontjáig). A G code-ok nem sorrendben hajtódnak végre.
Tudom a Marlin firmware-ről, hogy bizonyos parancsok sorban, más parancsok viszont soron kívül hajtódnak végre. Néhány órán keresztül olvasgattam a Marlin forráskódját, hogy megtaláljam, hogyan lehet ezt a viselkedést megváltoztatni. Sikertelenül. Feladtam ezen a ponton és megkérdeztem a Marlin fórumon.
A válasz sokkal egyszerűbb mint gondoltam. Ha kiteszünk egy M400-as parancsot (vár a korábbi parancsok befejezésére) a soron kívüli parancsok elé az megoldja a problémát. Még a kódon sem kellett változtatnom, a toll vezérlő parancsaim a konfigurációs fájlban vannak.
Az egyetlen szükséges trükk a töbsoros szöveg kezelése a .Net konfigurációs fájlban. Tehát a paraméter most valahogy így néz ki:
M400
M280 P0 S0

És végül az eredmény:


A monverter amit írtam a KiCAD HPGL kimenetét is kezeli. Egyenlőre csak rajzolásra használható és nem nyák marásra. Ez majd később jön.

2017. augusztus 14., hétfő

Graylog, Elasticsearch, maximális mezőszám, graylog_deflector

Csak mert nem vagyok linuxos gyerek.
Néhány napja összeraktam a vadiúj Graylog szerverünket.
Sikeresen hozzákötöttem valami 10+ Windows szervert, hogy begyűjtse az eseménynapló bejegyzéseket róluk.
A project második részeként hozzá akartam adni néhány linux szervert is.
zzáadtam az elsőt, látszik, hogy a begyűjtés működik, az üzenetek beérkeznek, de a konzolon nem jelenik meg semmi. Fura.
Kicsit mélyebbre ásva az index hibalista ezzel volt tele:
{"type":"illegal_argument_exception","reason":"Limit of total fields [1000] in index [graylog_0] has been exceeded"}
Ez azt jelenti, hogy túlment a rendszer a maximális mezőszámon (azt hiszem, hogy a Windows nagytömegű eseménytítusa miatt)
Elolvastam egy rakás fórumbejegyzést róla. Megpróbáltam beállítani az elasticsearch.yml-ben.
Nem segített. Az eredmény egy működésképtelen elasticsearch lett.
Végül lepucoltam az egészet (elasticsearch) az indexekkel eggyüttvéve és újratelepítettem.
Az eredmény:
Lett egy működő elasticsearch-öm. Az 1000-es mezőlimit maradt, de jött hozzá mégegy hiba. Valami ilyesmi:
A graylog_deflector egy index és nem egy alias.
Kugli újra, a hibára rátaláltam, a megoldásra nem. Elkezdtem gondolkodni a guglizás helyett. Amire rájöttem:
  1. Az egyik log fáljból kiderült, hogy az elasticsearch beállításai nem a konfig fájlon keresztül mennek, hanem a web API-n keresztül, JSON objektumokban.
  2. A curl a barátod
  3. A Graylog létrehozza a grylog_deflector-t indexként, ha nem találja a graylog_alias-t. Ezt utána nem tudja használni. Ezzel azután semmit sem tudsz kezdeni a Graylog felületen belül, tehát a dolog el van cseszve.
A megoldás a fentiek alapján:

  1. A Graylog web  felületén menj be a System/Indices>Indices-be. Válaszd ki a Default index set-et
  2. Maintanance-ben válaszd ki a Rotate active write index pontot. Ez gyárt egy graylog_0 nevű index-et (csak ez nem fog működni)
  3. A konzolon álítsd le a graylog-ot:
    sudo service graylog-server stop
  4. Kezeljük az 1000 mező problémáját:
    curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
      "index.mapping.total_fields.limit" : "5000"
    }'
  5. Állítsuk le a graylog_deflector index-et:
    curl -XPOST 'localhost:9200/graylog_deflector/_close?pretty'
  6. Töröljük a graylog_deflector index-et:
    curl -XDELETE 'localhost:9200/graylog_deflector?pretty'
  7. Adjuk hozzá a graylog_deflector aliast az újonan gyártott graylog_0 index-hez:
    curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d'
    {
        "actions" : [
            { "add" : { "index" : "graylog_0", "alias" : "graylog_deflector" } }
        ]
    }'
  8. Indítsuk el a graylog-ot:
    sudo service graylog-server start
  9. Most a graylog elekzd bőszen indexelni ez akár napokig is tathat, de a begyűjtött üzenetek elkezdenek látszani közben.

2017. július 31., hétfő

Pen Plotter 3. - Működik

Végül működik.
Összeraktam az egészet, újraterveztem a toll tartól.
A probléma a következő volt:
Az SG90-es szervó amit használni akartam túl gyengének bizonyult
A damilos megoldás a Z tengely felhúzására nem bizonyult nagy ötletnek
Az arduino nem tudott elég áramot adni a megakadt szervónak, így újraindult amikor a fejet felhúztam

Az új verzióban:
Az SG90-et lecseréltem egy erősebb MG995-re
A szervó közvetlenül mozgatja a Z tengely kocsit
Hozzáadtam egy 6V-os feszültség szabályozót ami a nagyméretű 12V-os tápról megy és nem az arduinoról.

A fej elektronikája még egy nagy katyvasz, miután nem terveztem még megfelelő panelt hozzá (ez csak akkor fog megtörténni amikor a maró és alézergravirozó fej terv is elkészül):



Végül a kész cucc működés közben:


2017. július 27., csütörtök

Pen Plotter 2. - Proxxon mérése

Van egy Proxxon fúróm. Azt tervezem, hogy felteszem a plotterre mint cseredarab a toll helyére, hogy minimális marási feladatokat meg lehessen csinálni vele.
Ehhez nem akarom az eredeti tápegyeséget használni. Miután a fordulatszám szabályozás a tápegységben van tudni akartam a tulajdonságait:

  • Milyen a vezérlés? Csak sima PWM vagy van rajta valami szűrés?
  • Mi a PWM frekvenciája?

A szerkezet mérése szétszedés nélkül nem tűnt egyszerű feladatnak. Az ok, hogy a Proxxon valami saját idióta csatlakozót használ ami külön nem kapható. Megmértem a tüskék átmérőjét és két 2.3mm-es csigafúróval megoldottam:


A mérések:
Terhelés nélkül:


Minimális sebességen:


Maximális sebességen:


Az én izlésemnek túl zajos. Kiderítettem, hogy 100Hz-en megy és nincs rajta szűrés.
Ezek alapján már meg tudom tervezni az elektronikát a plotterhez.

2017. július 5., szerda

Pen Plotter 1.

Ezt a projectet sajnos nem dokumentáltam útközben olyan mélyen lépésről lépésre, mint kellett volna. Most csak le szeretném írni, hogy hol tartok vele. Leginkább képekben.
Több mint három hónapja, volt egy beszélgetésem a fiammal. Azt mondta, hogy akar egy "rajzoló gépet" építeni velem (tulajdonképpen egy pen plottert). Elkezdtem tervezni egyet.
Némi idővel később kiderült, hogy ő legóból szeretett volna valamit gyorsan összerakni.
Ekkor már túl mélyen benne voltam a tervezésben, ezért nem akartam abbahagyni. Továbbá az tervezem, hogy a szerkezet cserélhető fejet kap, így használható lesz könnyű CNC marónak és lézervágónak/gravírozónak is.
Azt hiszem a terv nagyjából kész:




Néhány dolgot, úgy mint bordásszíjjak, csavarok, távtartók, kábellánc kihagytam belőle.
Itt van az alkatrészek egy része kinyomtatva:



Mint látható, néhány dolog már össze van rakva,  mint az Y tengely meghajtása (kerek fehér cucc középen) és a Z tengely kocsija (a zöld cucc)
Az Y tengely bordás szíj rögzítése:



Rengeteg lyuk. Az alap lap.


Az X tengely összerakva:


folyt köv...