Browse Source

add quad parts

master
Schoenberger, Philipp 6 years ago
parent
commit
661b2873e6
  1. 24
      content/blog/02_3d_printer_en.md
  2. 55
      content/blog/03_quadrocopter_en.md
  3. 9
      content/blog/04_quadrocopter_en.md
  4. BIN
      content/images_org/quad/diatone_130.jpg
  5. BIN
      content/images_org/quad/motor.jpg
  6. BIN
      content/images_org/quad/motor_datasheet.jpg
  7. BIN
      content/images_org/quad/motor_datasheet2.jpg
  8. BIN
      content/images_org/quad/motor_datasheet3.jpg
  9. 12
      pelicanconf.py
  10. 131
      plugins/lightgallery/lightgallery.py
  11. 4
      plugins/sitemap/sitemap.py
  12. 2
      themes/minimal/static/css/minimal.css

24
content/blog/02_3d_printer_en.md

@ -1,8 +1,26 @@
title: 3d printer
date: 2019-05-20
date: 2018-05-20
author: Philipp Schönberger
tags: 3d printer, ender2, cat
tags: 3d printer, ender2, CAT
category: projects
Here you can view the.. latest projects i've started.
Since this month I one now one small 3d printer. Its a "ender 2" with
an buildvolume of 165x165x200mm. For my purposes this is more than enought since I
always could print larger parts with the Toolbox e.V. Printers.
The printer was pritty easy to assemble and took just about 2 hours of carfully reading and
assembling the parts.
Out of the box the printer was printing prefect. But since i did know that the printer from
creality have disables safty features I installed the latest firmare from the [Marlin]{http://marlinfw.org/} github repository.
There I changed the config parameters to my need and enabled the folling options to lower the risc of fire caused by a pritner failure.
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
With this option enabled I Printed a benchy which came out perfectly. A benchy is a small boot which you can see in the lower picture. It has some structural parts which are though to print.
[lightgallery
/images/3d/benchy.png, first benchy with 0.15mm layer hight
lightgalleryend]

55
content/blog/03_quadrocopter_en.md

@ -1,9 +1,60 @@
title: quadrocopter
date: 2019-05-20
date: 2019-06-20
author: Philipp Schönberger
tags: bataflight, quadrocopter, fpv
category: projects
Infected by the other members of the Toolbox e.V, especialy [Thomas](https://www.xythobuz.org/)
I started to search for parts for a quadrocopter which could be used to race and do some
freestyle moves.
Here you can view the.. latest projects i've started.
Since for me also the assembly is new and I had the feeling that this quad will also be
likely to be damaged I wanted to build it with seperate components. Also its more fun that way.
Since I did not want to have a huge quad I wanted to hit the 250g Law limit for the assembly.
In such a case I would not even be forces to add a burn resistent name tag to the quad, which I
would anyway recomend if it could be lost.
After some search i found the [Diatone quad frame GT M3](https://www.banggood.com/Diatone-2018-GT-M3-130mm-Normal-X-FPV-Racing-Frame-Kit-RC-Drone-3mm-Arm-p-1257062.html) prity aplealing since they have a aluminum cage for the pcb stack and a 3mm carbon plate which is robust enought for a beginner.
[lightgallery
/images/quad/diatone_130.jpg, Diatone 2018 GT M3 130mm
lightgalleryend]
The following motors where selected by taking the recomendations of the frame into account:
motorsize 1408
motorr 4000KV
The motor size of brushless motors for quadrocpters are regulary indicated by a 4-digit number
The first two digits represent the stator width or diameter while the second ones represent the hight.
The values types are in mm
In general the motor size have quite a infulence of the flight caracteristics.
A taller motor most likely result in more power at the upper Throttle/RPM and a wider motor
would result in a higher torque at low throttle.
Since i wanted to use motors with a actual datasheet or at least a messurement how much amps
would be drawn by them with a certain propellor i took the [T-Motor F20II F20 II 1408 3750KV](https://www.banggood.com/T-Motor-F20II-F20-II-1406-3750KV-Brushless-Motor-2-4S-For-130-140-150-FPV-Racing-Frame-p-1154351.html)
[lightgallery
/images/quad/motor.jpg, T-Motor F20II F20 II 1408 3750KV;
/images/quad/motor_datasheet.jpg, T-Motor F20II F20 II dimensions;
/images/quad/motor_datasheet2.jpg, T-Motor F20II F20 II electrical specification;
/images/quad/motor_datasheet3.jpg, T-Motor F20II F20 II load specification with diferent propellor sizes;
lightgalleryend]
At this point the Motors and Frame where clear. The next step was to choose a propellor type.
For this I selected a tri bladed one with close to the 3040 size. The size for
part list:
- [Diatone quad frame GT M3](https://www.banggood.com/Diatone-2018-GT-M3-130mm-Normal-X-FPV-Racing-Frame-Kit-RC-Drone-3mm-Arm-p-1257062.html)
- [T-Motor F20II F20 II 1408 3750KV](https://www.banggood.com/T-Motor-F20II-F20-II-1406-3750KV-Brushless-Motor-2-4S-For-130-140-150-FPV-Racing-Frame-p-1154351.html)
- [flightcontroller ](https://www.banggood.com/HGLRC-20x20mm-Micro-F4-Flight-Controller-AIO-Betaflight-OSD-5V-BEC-for-XJB-F425-F428-Series-Flytower-p-1203538.html)
- [esc](https://www.banggood.com/20x20mm-28A-BLheli_S-BB2-2-4S-4-In-1-ESC-Support-Dshot600-for-XJB-F428-F328-Series-Flytower-p-1203121.html)
- [props](https://www.banggood.com/10-Pairs-Geprc-3042-3x42-Inch-3-Blade-Propeller-M5-Mounting-Hole-CW-CCW-for-Racing-Drone-p-1190428.html)
- [cam](https://www.banggood.com/RunCam-Micro-Sparrow-WDR-700TVL-13-CMOS-2_1mm-FOV-145-Degree-169-FPV-Camera-NTSCPAL-Switchable-p-1198579.html)
- [VTX]()
- [frsky receiver](https://www.banggood.com/FrSky-R-XSR-Ultra-SBUSCPPM-D16-16CH-Mini-Redundancy-Receiver-1_5g-for-RC-Multirotor-FPV-Racing-Drone-p-1186057.html)
- [beeper](https://www.banggood.com/Super-Mini-1_38g-WS2812-Colorful-LED-with-5V-Active-Alarm-Buzzer-Support-Cleanflight-Betaflight-p-1131891.html?rmmds=myorder&cur_warehouse=CN)

9
content/blog/04_quadrocopter_en.md

@ -0,0 +1,9 @@
title: quadrocopter2
date: 2019-05-20
author: Philipp Schönberger
tags: bataflight, quadrocopter, fpv
category: projects
Here you can view the.. latest projects i've started.

BIN
content/images_org/quad/diatone_130.jpg

After

Width: 1000  |  Height: 1000  |  Size: 38 KiB

BIN
content/images_org/quad/motor.jpg

BIN
content/images_org/quad/motor_datasheet.jpg

After

Width: 940  |  Height: 467  |  Size: 69 KiB

BIN
content/images_org/quad/motor_datasheet2.jpg

After

Width: 940  |  Height: 870  |  Size: 116 KiB

BIN
content/images_org/quad/motor_datasheet3.jpg

After

Width: 940  |  Height: 1157  |  Size: 222 KiB

12
pelicanconf.py

@ -112,11 +112,13 @@ ARTICLE_PATHS = ['blog']
INDEX_SAVE_AS = 'blog/index.html'
# Navigation menu:
SECTIONS = [('blog', '/blog'),
('Gallery', '/gallery'),
('about', '/about'),
('Impressum', '/impressum'),
]
SECTIONS = [
('Projects', '/category/projects'),
('less plastic', '/category/plasticfree/'),
('Gallery', '/gallery'),
('about', '/about'),
('Impressum', '/impressum'),
]
# Links to display in the footer:
LINKS = [('bsd', 'http://www.opensource.org/licenses/BSD-3-Clause'),

131
plugins/lightgallery/lightgallery.py

@ -28,67 +28,68 @@ def process_content(article):
if (j != i):
pass
m = find_between(content, '[lightgallery', 'lightgalleryend]')
imgs = m.split(';')
logger.info("" + article.title + "\n")
imgs_text = ""
for i in imgs:
cont = i.split(',')
img_url = cont[0].strip()
if img_url == "":
continue
img_url = img_url
img_text = ""
if (len(cont) > 1):
img_text = "<h4>" + cont[1] + "</h4>"
logger.info("t\'" + img_url + "\'a\'" + img_text + "\'\n")
zoom_url = "/theme/images/zoom.png"
imgs_text += "<li "
imgs_text += "class=\"col-xs-6 col-sm-4 col-md-3\" "
imgs_text += "data-responsive=\""
for i in [375, 480, 800, 1600]:
imgs_text += "" + _MAIN_SETTINGS['SITEURL'] + str(Path(img_url).parent)
imgs_text += "/" + str(i) + "/" + str(Path(img_url).name)
imgs_text += " " + str(i) + ", "
imgs_text += "\" "
imgs_text += "data-src=\""
imgs_text += _MAIN_SETTINGS['SITEURL'] + img_url
imgs_text += "\" "
imgs_text += "data-sub-html=\""
imgs_text += img_text
imgs_text += "<p>"
imgs_text += create_exif_print("./content/" + img_url)
imgs_text += "</p>"
imgs_text += "\"> "
imgs_text += "<a href=\"\">"
imgs_text += "<img class=\"img-responsive\" src=\""
imgs_text += "" + str(Path(img_url).parent) + "/" + str(200) + "/" + str(Path(img_url).name)
imgs_text += "\" > "
imgs_text += " <div class=\"demo-gallery-poster\"> "
imgs_text += " <img width=26 src=\"" + zoom_url + "\"> "
imgs_text += " </div>"
imgs_text += "</a>"
imgs_text += "</li>\n"
replace_text = " <div class=\"demo-gallery\"> "
replace_text += " <ul id=\"lightgallery\" class=\"list-unstyled row\">"
replace_text += imgs_text
replace_text += "</ul>"
replace_text += "</div>"
logger.info("" + replace_text + "\n")
content = content.replace('[lightgallery' + m + 'lightgalleryend]', replace_text)
article._content = content
for i in range(0, i):
m = find_between(content, '[lightgallery', 'lightgalleryend]')
imgs = m.split(';')
logger.info("" + article.title + "\n")
imgs_text = ""
for i in imgs:
cont = i.split(',')
img_url = cont[0].strip()
if img_url == "":
continue
img_url = img_url
img_text = ""
if (len(cont) > 1):
img_text = "<h4>" + cont[1] + "</h4>"
logger.info("t\'" + img_url + "\'a\'" + img_text + "\'\n")
zoom_url = "/theme/images/zoom.png"
imgs_text += "<li "
imgs_text += "class=\"col-xs-6 col-sm-4 col-md-3\" "
imgs_text += "data-responsive=\""
for i in [375, 480, 800, 1600]:
imgs_text += "" + _MAIN_SETTINGS['SITEURL'] + str(Path(img_url).parent)
imgs_text += "/" + str(i) + "/" + str(Path(img_url).name)
imgs_text += " " + str(i) + ", "
imgs_text += "\" "
imgs_text += "data-src=\""
imgs_text += _MAIN_SETTINGS['SITEURL'] + img_url
imgs_text += "\" "
imgs_text += "data-sub-html=\""
imgs_text += img_text
imgs_text += "<p>"
imgs_text += create_exif_print("./content/" + img_url)
imgs_text += "</p>"
imgs_text += "\"> "
imgs_text += "<a href=\"\">"
imgs_text += "<img class=\"img-responsive\" src=\""
imgs_text += "" + str(Path(img_url).parent) + "/" + str(200) + "/" + str(Path(img_url).name)
imgs_text += "\" > "
imgs_text += " <div class=\"demo-gallery-poster\"> "
imgs_text += " <img width=26 src=\"" + zoom_url + "\"> "
imgs_text += " </div>"
imgs_text += "</a>"
imgs_text += "</li>\n"
replace_text = " <div class=\"demo-gallery\"> "
replace_text += " <ul id=\"lightgallery\" class=\"list-unstyled row\">"
replace_text += imgs_text
replace_text += "</ul>"
replace_text += "</div>"
logger.info("" + replace_text + "\n")
content = content.replace('[lightgallery' + m + 'lightgalleryend]', replace_text)
article._content = content
logger.info("end\n\n")
pass
@ -139,7 +140,6 @@ def create_scaled_image(org_path, new_path, resize_width):
logger.info("create dir " + dir_path)
os.mkdir(dir_path)
logger.info("convert \n")
img = PIL.Image.open(org_path)
width, height = img.size
@ -199,8 +199,8 @@ def create_exif_print(img_path):
ret += "/" + str(exif[33434][1])
ret += "sec "
# if 34850 in exif:
# ret += " <bolt>" + programm_dic[exif[34850]] + "</bolt>"
if 34850 in exif:
ret += " <bolt>" + programm_dic[exif[34850]] + "</bolt>"
if 315 in exif:
ret += " " + exif[315]
@ -210,12 +210,15 @@ def create_exif_print(img_path):
return ret
except ValueError:
return ""
def initialize_plugin(pelican_obj):
'''Initialize plugin variables and Pelican settings'''
global _MAIN_SETTINGS
if _MAIN_SETTINGS is None:
_MAIN_SETTINGS = pelican_obj.settings
_SIGNAL_HANDLERS_DB = {
'get_generators': initialize_plugin,
'all_generators_finalized': add_gallery,

4
plugins/sitemap/sitemap.py

@ -206,6 +206,7 @@ class SitemapGenerator(object):
print("######################################################################")
print(self.context)
print("######################################################################")
pages = self.context['pages'] \
+ self.context['articles'] \
+ [c for (c, a) in self.context['categories']] \
@ -219,6 +220,9 @@ class SitemapGenerator(object):
for article in self.context['articles']:
pages += article.translations
for blog in self.context['articles']:
pages += article.translations
info('writing {0}'.format(path))
with open(path, 'w', encoding='utf-8') as fd:

2
themes/minimal/static/css/minimal.css

@ -51,7 +51,7 @@ body {
}
#container {
width: 700px;
width: 1000px;
margin: 0 auto;
}

Loading…
Cancel
Save