├── CAO
├── Anemometre.f3d
└── Anemometre.step
├── Cura
├── Girouette .png
├── Plaque de liaison.png
├── Anémomètre - boitier.png
├── Anémomètre - hélice.png
├── Anémomètre - capot supérieur.png
├── Anémomètre - support aimants.png
├── Anémomètre - support us1881.png
├── Plaque de liaison - axe central.png
├── anémomètre - blocage esp8266.png
└── Girouette - boitier - disque encodeur - support leds.png
├── STL
├── Girouette - corps.stl
├── Plaque de liaison.stl
├── Anemometre - corps.stl
├── Girouette - boitier.stl
├── Girouette - corps 2.stl
├── Girouette - fleche.stl
├── Anemometre - couvercle.stl
├── Anemometre - Blocage ESP.stl
├── Fixation - support mural.stl
├── Girouette - support Leds.stl
├── anemometre - axe central.stl
├── anemometre - helice - x3.stl
├── Anemometre - support us1881.stl
├── Girouette - disque codeur.stl
├── Anemometre - support aimants.stl
├── anemometre - support helice inferieur.stl
└── anemometre - support helice superieur.stl
├── README.md
└── anemometre.ino
/CAO/Anemometre.f3d:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/CAO/Anemometre.f3d
--------------------------------------------------------------------------------
/Cura/Girouette .png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Girouette .png
--------------------------------------------------------------------------------
/STL/Girouette - corps.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Girouette - corps.stl
--------------------------------------------------------------------------------
/STL/Plaque de liaison.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Plaque de liaison.stl
--------------------------------------------------------------------------------
/Cura/Plaque de liaison.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Plaque de liaison.png
--------------------------------------------------------------------------------
/STL/Anemometre - corps.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Anemometre - corps.stl
--------------------------------------------------------------------------------
/STL/Girouette - boitier.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Girouette - boitier.stl
--------------------------------------------------------------------------------
/STL/Girouette - corps 2.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Girouette - corps 2.stl
--------------------------------------------------------------------------------
/STL/Girouette - fleche.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Girouette - fleche.stl
--------------------------------------------------------------------------------
/STL/Anemometre - couvercle.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Anemometre - couvercle.stl
--------------------------------------------------------------------------------
/Cura/Anémomètre - boitier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Anémomètre - boitier.png
--------------------------------------------------------------------------------
/Cura/Anémomètre - hélice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Anémomètre - hélice.png
--------------------------------------------------------------------------------
/STL/Anemometre - Blocage ESP.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Anemometre - Blocage ESP.stl
--------------------------------------------------------------------------------
/STL/Fixation - support mural.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Fixation - support mural.stl
--------------------------------------------------------------------------------
/STL/Girouette - support Leds.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Girouette - support Leds.stl
--------------------------------------------------------------------------------
/STL/anemometre - axe central.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/anemometre - axe central.stl
--------------------------------------------------------------------------------
/STL/anemometre - helice - x3.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/anemometre - helice - x3.stl
--------------------------------------------------------------------------------
/STL/Anemometre - support us1881.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Anemometre - support us1881.stl
--------------------------------------------------------------------------------
/STL/Girouette - disque codeur.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Girouette - disque codeur.stl
--------------------------------------------------------------------------------
/STL/Anemometre - support aimants.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/Anemometre - support aimants.stl
--------------------------------------------------------------------------------
/Cura/Anémomètre - capot supérieur.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Anémomètre - capot supérieur.png
--------------------------------------------------------------------------------
/Cura/Anémomètre - support aimants.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Anémomètre - support aimants.png
--------------------------------------------------------------------------------
/Cura/Anémomètre - support us1881.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Anémomètre - support us1881.png
--------------------------------------------------------------------------------
/Cura/Plaque de liaison - axe central.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Plaque de liaison - axe central.png
--------------------------------------------------------------------------------
/Cura/anémomètre - blocage esp8266.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/anémomètre - blocage esp8266.png
--------------------------------------------------------------------------------
/STL/anemometre - support helice inferieur.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/anemometre - support helice inferieur.stl
--------------------------------------------------------------------------------
/STL/anemometre - support helice superieur.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/STL/anemometre - support helice superieur.stl
--------------------------------------------------------------------------------
/Cura/Girouette - boitier - disque encodeur - support leds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/projetsdiy/anemometre-connect-esp8266/HEAD/Cura/Girouette - boitier - disque encodeur - support leds.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Anémomètre et girouette connectés à base d'ESP8266
2 | Ce projet permet de réaliser un anémomètre et un girouette et de publier les mesures (par exemple sur un serveur domotique à l'aide du protocole MQTT). Tous les éléments seront à réaliser par impression 3D. Pour obtenir un objet connecté plus compact, le projet est basé sur une carte ESP8266 ESP-12F, la Wemos D1 mini.
3 |
4 | Tutoriel pour la réalisation et toutes les explications : http://www.projetsdiy.fr/projet-diy-anemometre-girouette-objet-connecte-esp8266/
5 |
6 |
Contenu du projet Github
7 | - Fichiers CAO aux formats STEP et f3d (Autodesk Fusion 360)
8 | - Fichiers STL à imprimer en 3D
9 | - Programme Arduino pour ESP8266
10 |
11 | Articles pour les débutants
12 | Si vous débutez avec l'ESP8266, voici plusieurs articles qui peuvent vous intéresser :
13 | - ESP8266 : guide de choix avant achat
14 | - ESP8266 + DHT22 + MQTT : réaliser votre 1er objet connecté
15 | - ESP-01 : réinstaller le firmware d'origine (ESP8266)
16 | - nodemcu-build: Firmware NodeMCU ESP8266 personnalisé (Frightanic)
17 |
18 | Egalement :
19 | - Jeedom + MQTT: associer un objet connecté DIY au Dashboard
20 |
21 |
--------------------------------------------------------------------------------
/anemometre.ino:
--------------------------------------------------------------------------------
1 |
2 | /*
3 | * Anémomètre et girouette connecté à base d'ESP8266 (Wemos d1 mini)
4 | *
5 | * Librairies nécessaires :
6 | * - ESP8266Wifi : https://github.com/ekstrand/ESP8266wifi
7 | * - PubSubClient
8 | *
9 | * http://www.projetsdiy.fr - Juin 2016 - Version 1.0
10 | * Licence : MIT
11 | *
12 | */
13 | #include
14 | #include
15 | /*
16 | * Variables et paramètres de connexion WiFi
17 | *
18 | */
19 | #define wifi_ssid "SSID"
20 | #define wifi_password "MOT_DE_PASSE"
21 | #define mqtt_server "IP_MQTT"
22 | #define mqtt_user "guest" //s'il a été configuré sur Mosquitto
23 | #define mqtt_password "guest" //idem
24 |
25 | long lastMsg = 0; //Horodatage du dernier message publié sur MQTT
26 | long lastRecu = 0;
27 |
28 | #define vitessems_topic "anemometre/vitesseVentMS" // Topic Vitesse du vent (en m/s)
29 | #define vitessekmh_topic "anemometre/vitesseVentKMH" // Topic Vitesse du vent (en km/h)
30 | #define direction_topic "anemometre/directionVent" // Topic Direction du vent (lettre de la direction)
31 |
32 | //Création des objets
33 |
34 | WiFiClient espClient;
35 | PubSubClient client(espClient);
36 |
37 | volatile int rpmcount = 0;
38 | volatile float vitVentMS = 0;
39 | volatile float vitVentKMH = 0;
40 | int rpm = 0;
41 | unsigned long lastmillis = 0;
42 | bool debug = false;
43 |
44 | int pinBit0 = D7;
45 | int pinBit1 = D6;
46 | int pinBit2 = D5;
47 | int pinBit3 = D4;
48 | int pinBit4 = D3;
49 | int pinHall = D2;
50 |
51 | int bit0 = 0;
52 | int bit1 = 0;
53 | int bit2 = 0;
54 | int bit3 = 0;
55 | int bit4 = 0;
56 |
57 | int dureeMesVitVent = 5000; // en ms, durée de mesure de la vitesse du vent. Choisir un multiple de 1000 pour le calcul de la vitesse du vent
58 |
59 | //unsigned char girouette = 0;
60 | byte girouette = 0;
61 | String dirVent = "N";
62 |
63 | void setup() {
64 |
65 | // put your setup code here, to run once:
66 | Serial.begin(9600);
67 | attachInterrupt(pinHall, rpm_vent, FALLING);
68 | pinMode(pinBit0, INPUT);
69 | pinMode(pinBit1, INPUT);
70 | pinMode(pinBit2, INPUT);
71 | pinMode(pinBit3, INPUT);
72 | pinMode(pinBit4, INPUT);
73 | //attachInterrupt(D7, bit0, FALLING);
74 |
75 | setup_wifi(); //On se connecte au réseau wifi
76 | client.setServer(mqtt_server, 1883); //Configuration de la connexion au serveur MQTT
77 | client.setCallback(callback); //La fonction de callback qui est executée à chaque réception de message
78 |
79 | Serial.print("GO");
80 | }
81 |
82 | //Connexion au réseau WiFi
83 | void setup_wifi() {
84 | delay(10);
85 | Serial.println();
86 | Serial.print("Connexion a ");
87 | Serial.println(wifi_ssid);
88 |
89 | WiFi.begin(wifi_ssid, wifi_password);
90 |
91 | while (WiFi.status() != WL_CONNECTED) {
92 | delay(500);
93 | Serial.print(".");
94 | }
95 |
96 | Serial.println("");
97 | Serial.println("Connexion WiFi etablie ");
98 | Serial.print("=> Addresse IP : ");
99 | Serial.print(WiFi.localIP());
100 | }
101 |
102 | //Reconnexion
103 | void reconnect() {
104 | //Boucle jusqu'à obtenur une reconnexion
105 | while (!client.connected()) {
106 | Serial.print("Connexion au serveur MQTT...");
107 | if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
108 | Serial.println("OK");
109 | } else {
110 | Serial.print("KO, erreur : ");
111 | Serial.print(client.state());
112 | Serial.println(" On attend 5 secondes avant de recommencer");
113 | delay(5000);
114 | }
115 | }
116 | }
117 |
118 | void loop() {
119 | if (!client.connected()) {
120 | reconnect();
121 | }
122 | client.loop();
123 |
124 | getVitesseVent();
125 |
126 | getDirVent();
127 |
128 | client.publish(vitessems_topic, String(vitVentMS).c_str(), true); // Publie la vitesse du vent en m/s
129 | client.publish(vitessekmh_topic, String(vitVentKMH).c_str(), true); // La vitesse du vent en km/h
130 | client.publish(direction_topic, String(dirVent).c_str(), true); // La direction du vent
131 |
132 | //ESP.deepSleep(1000000 * 10, WAKE_NO_RFCAL); //Pour la prochaine version futur
133 | //delay(500); //attente activation du deep sleep
134 | delay(2000);
135 | }
136 |
137 |
138 | void getVitesseVent() {
139 | if (millis() - lastmillis >= dureeMesVitVent ){
140 | detachInterrupt(pinHall);
141 |
142 | rpm = rpmcount * ( 60 / ( dureeMesVitVent / 1000 ) );
143 |
144 | if ( rpm > 0 ) {
145 | vitVentKMH = ( rpm + 6.174 ) / 8.367;
146 | vitVentMS = ( ( ( rpm + 6.174 ) / 8.367 ) * 1000 ) / 3600;
147 | } else {
148 | vitVentKMH = 0;
149 | vitVentMS = 0;
150 | }
151 | Serial.println(vitVentKMH);
152 |
153 | rpmcount = 0; // Redémarre le compte tour
154 | lastmillis = millis(); // et réinitialise le chrono
155 | attachInterrupt(pinHall, rpm_vent, FALLING); // Rélance l'interruption du compte tour
156 |
157 | }
158 |
159 |
160 | }
161 |
162 | void getDirVent(){
163 | bit0 = not(digitalRead(pinBit0));
164 | bit1 = not(digitalRead(pinBit1));
165 | bit2 = not(digitalRead(pinBit2));
166 | bit3 = not(digitalRead(pinBit3));
167 | bit4 = not(digitalRead(pinBit4));
168 |
169 | girouette = (bit4 * 16) + (bit3 * 8) + (bit2 * 4) + (bit1 * 2) + bit0;
170 |
171 | Serial.print(bit0); Serial.print(bit1); Serial.print(bit2); Serial.print(bit3); Serial.print(bit4);
172 | Serial.print(" => ");
173 | Serial.print(girouette);
174 | Serial.print(" Orientation");
175 | switch (girouette) {
176 | case 24: dirVent="N"; break;
177 | case 10: dirVent="NE"; break;
178 | case 18: dirVent="E"; break;
179 | //case 18: dirVent="SE"; break;
180 | case 16: dirVent="S"; break;
181 | case 2: dirVent="SW"; break;
182 | case 26: dirVent="O"; break;
183 | case 8: dirVent="NO"; break;
184 | default: dirVent="N"; break;
185 | }
186 | Serial.println(dirVent);
187 | }
188 |
189 | void rpm_vent(){
190 | //Serial.println("Tour"),
191 | rpmcount++;
192 | }
193 |
194 |
195 | void callback(char* topic, byte* payload, unsigned int length) {
196 |
197 | }
198 |
--------------------------------------------------------------------------------
/CAO/Anemometre.step:
--------------------------------------------------------------------------------
1 | ISO-10303-21;
2 | HEADER;
3 | /* Generated by software containing ST-Developer
4 | * from STEP Tools, Inc. (www.steptools.com)
5 | */
6 |
7 | FILE_DESCRIPTION(
8 | /* description */ (''),
9 | /* implementation_level */ '2;1');
10 |
11 | FILE_NAME(
12 | /* name */
13 | '/Users/christophe/Library/Mobile Documents/com~apple~CloudDocs/anemom
14 | etre/CAO/Anemometre.step',
15 | /* time_stamp */ '2016-06-16T16:10:44+02:00',
16 | /* author */ (''),
17 | /* organization */ (''),
18 | /* preprocessor_version */ 'ST-DEVELOPER v16.5',
19 | /* originating_system */ 'Autodesk Translation Framework v5.0.0.3310',
20 | /* authorisation */ '');
21 |
22 | FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
23 | ENDSEC;
24 |
25 | DATA;
26 | #10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#16),#317);
27 | #11=DIMENSIONAL_EXPONENTS(0.,0.,0.,0.,0.,0.,0.);
28 | #12=(
29 | CONVERSION_BASED_UNIT('degree',#13)
30 | NAMED_UNIT(#11)
31 | PLANE_ANGLE_UNIT()
32 | );
33 | #13=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.01745329252),#319);
34 | #14=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#324,#15);
35 | #15=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#17),#316);
36 | #16=STYLED_ITEM('',(#333),#17);
37 | #17=MANIFOLD_SOLID_BREP('Anemometre - Blocage ESP',#191);
38 | #18=CYLINDRICAL_SURFACE('',#201,0.23);
39 | #19=CYLINDRICAL_SURFACE('',#203,3.14999999999716);
40 | #20=CYLINDRICAL_SURFACE('',#207,3.3);
41 | #21=FACE_BOUND('',#37,.T.);
42 | #22=FACE_BOUND('',#44,.T.);
43 | #23=FACE_OUTER_BOUND('',#33,.T.);
44 | #24=FACE_OUTER_BOUND('',#34,.T.);
45 | #25=FACE_OUTER_BOUND('',#35,.T.);
46 | #26=FACE_OUTER_BOUND('',#36,.T.);
47 | #27=FACE_OUTER_BOUND('',#38,.T.);
48 | #28=FACE_OUTER_BOUND('',#39,.T.);
49 | #29=FACE_OUTER_BOUND('',#40,.T.);
50 | #30=FACE_OUTER_BOUND('',#41,.T.);
51 | #31=FACE_OUTER_BOUND('',#42,.T.);
52 | #32=FACE_OUTER_BOUND('',#43,.T.);
53 | #33=EDGE_LOOP('',(#126,#127,#128,#129));
54 | #34=EDGE_LOOP('',(#130,#131,#132,#133,#134,#135));
55 | #35=EDGE_LOOP('',(#136,#137,#138,#139));
56 | #36=EDGE_LOOP('',(#140,#141,#142,#143));
57 | #37=EDGE_LOOP('',(#144,#145));
58 | #38=EDGE_LOOP('',(#146,#147,#148,#149));
59 | #39=EDGE_LOOP('',(#150,#151,#152,#153));
60 | #40=EDGE_LOOP('',(#154,#155,#156,#157));
61 | #41=EDGE_LOOP('',(#158,#159,#160,#161));
62 | #42=EDGE_LOOP('',(#162,#163,#164,#165,#166,#167));
63 | #43=EDGE_LOOP('',(#168,#169,#170,#171));
64 | #44=EDGE_LOOP('',(#172,#173));
65 | #45=CIRCLE('',#194,3.3);
66 | #46=CIRCLE('',#198,3.3);
67 | #47=CIRCLE('',#199,3.14999999999716);
68 | #48=CIRCLE('',#200,0.23);
69 | #49=CIRCLE('',#202,0.23);
70 | #50=CIRCLE('',#204,3.14999999999716);
71 | #51=CIRCLE('',#208,3.3);
72 | #52=LINE('',#267,#69);
73 | #53=LINE('',#271,#70);
74 | #54=LINE('',#272,#71);
75 | #55=LINE('',#275,#72);
76 | #56=LINE('',#277,#73);
77 | #57=LINE('',#279,#74);
78 | #58=LINE('',#281,#75);
79 | #59=LINE('',#282,#76);
80 | #60=LINE('',#285,#77);
81 | #61=LINE('',#286,#78);
82 | #62=LINE('',#289,#79);
83 | #63=LINE('',#297,#80);
84 | #64=LINE('',#300,#81);
85 | #65=LINE('',#305,#82);
86 | #66=LINE('',#306,#83);
87 | #67=LINE('',#309,#84);
88 | #68=LINE('',#310,#85);
89 | #69=VECTOR('',#214,1.);
90 | #70=VECTOR('',#217,1.);
91 | #71=VECTOR('',#218,1.);
92 | #72=VECTOR('',#221,1.);
93 | #73=VECTOR('',#222,1.);
94 | #74=VECTOR('',#223,1.);
95 | #75=VECTOR('',#224,1.);
96 | #76=VECTOR('',#225,1.);
97 | #77=VECTOR('',#228,1.);
98 | #78=VECTOR('',#229,1.);
99 | #79=VECTOR('',#232,1.);
100 | #80=VECTOR('',#241,1.);
101 | #81=VECTOR('',#244,1.);
102 | #82=VECTOR('',#251,1.);
103 | #83=VECTOR('',#252,1.);
104 | #84=VECTOR('',#255,1.);
105 | #85=VECTOR('',#256,1.);
106 | #86=VERTEX_POINT('',#265);
107 | #87=VERTEX_POINT('',#266);
108 | #88=VERTEX_POINT('',#268);
109 | #89=VERTEX_POINT('',#270);
110 | #90=VERTEX_POINT('',#274);
111 | #91=VERTEX_POINT('',#276);
112 | #92=VERTEX_POINT('',#278);
113 | #93=VERTEX_POINT('',#280);
114 | #94=VERTEX_POINT('',#284);
115 | #95=VERTEX_POINT('',#288);
116 | #96=VERTEX_POINT('',#291);
117 | #97=VERTEX_POINT('',#292);
118 | #98=VERTEX_POINT('',#296);
119 | #99=VERTEX_POINT('',#298);
120 | #100=VERTEX_POINT('',#304);
121 | #101=VERTEX_POINT('',#308);
122 | #102=EDGE_CURVE('',#86,#87,#52,.T.);
123 | #103=EDGE_CURVE('',#86,#88,#45,.T.);
124 | #104=EDGE_CURVE('',#88,#89,#53,.T.);
125 | #105=EDGE_CURVE('',#89,#87,#54,.T.);
126 | #106=EDGE_CURVE('',#90,#87,#55,.T.);
127 | #107=EDGE_CURVE('',#91,#89,#56,.T.);
128 | #108=EDGE_CURVE('',#91,#92,#57,.T.);
129 | #109=EDGE_CURVE('',#92,#93,#58,.T.);
130 | #110=EDGE_CURVE('',#93,#90,#59,.T.);
131 | #111=EDGE_CURVE('',#94,#90,#60,.T.);
132 | #112=EDGE_CURVE('',#86,#94,#61,.T.);
133 | #113=EDGE_CURVE('',#95,#93,#62,.T.);
134 | #114=EDGE_CURVE('',#94,#95,#46,.T.);
135 | #115=EDGE_CURVE('',#96,#97,#47,.T.);
136 | #116=EDGE_CURVE('',#97,#96,#48,.T.);
137 | #117=EDGE_CURVE('',#96,#98,#63,.T.);
138 | #118=EDGE_CURVE('',#99,#98,#49,.T.);
139 | #119=EDGE_CURVE('',#97,#99,#64,.T.);
140 | #120=EDGE_CURVE('',#98,#99,#50,.T.);
141 | #121=EDGE_CURVE('',#88,#100,#65,.T.);
142 | #122=EDGE_CURVE('',#100,#91,#66,.T.);
143 | #123=EDGE_CURVE('',#101,#92,#67,.T.);
144 | #124=EDGE_CURVE('',#95,#101,#68,.T.);
145 | #125=EDGE_CURVE('',#100,#101,#51,.T.);
146 | #126=ORIENTED_EDGE('',*,*,#102,.F.);
147 | #127=ORIENTED_EDGE('',*,*,#103,.T.);
148 | #128=ORIENTED_EDGE('',*,*,#104,.T.);
149 | #129=ORIENTED_EDGE('',*,*,#105,.T.);
150 | #130=ORIENTED_EDGE('',*,*,#106,.T.);
151 | #131=ORIENTED_EDGE('',*,*,#105,.F.);
152 | #132=ORIENTED_EDGE('',*,*,#107,.F.);
153 | #133=ORIENTED_EDGE('',*,*,#108,.T.);
154 | #134=ORIENTED_EDGE('',*,*,#109,.T.);
155 | #135=ORIENTED_EDGE('',*,*,#110,.T.);
156 | #136=ORIENTED_EDGE('',*,*,#102,.T.);
157 | #137=ORIENTED_EDGE('',*,*,#106,.F.);
158 | #138=ORIENTED_EDGE('',*,*,#111,.F.);
159 | #139=ORIENTED_EDGE('',*,*,#112,.F.);
160 | #140=ORIENTED_EDGE('',*,*,#111,.T.);
161 | #141=ORIENTED_EDGE('',*,*,#110,.F.);
162 | #142=ORIENTED_EDGE('',*,*,#113,.F.);
163 | #143=ORIENTED_EDGE('',*,*,#114,.F.);
164 | #144=ORIENTED_EDGE('',*,*,#115,.F.);
165 | #145=ORIENTED_EDGE('',*,*,#116,.F.);
166 | #146=ORIENTED_EDGE('',*,*,#116,.T.);
167 | #147=ORIENTED_EDGE('',*,*,#117,.T.);
168 | #148=ORIENTED_EDGE('',*,*,#118,.F.);
169 | #149=ORIENTED_EDGE('',*,*,#119,.F.);
170 | #150=ORIENTED_EDGE('',*,*,#115,.T.);
171 | #151=ORIENTED_EDGE('',*,*,#119,.T.);
172 | #152=ORIENTED_EDGE('',*,*,#120,.F.);
173 | #153=ORIENTED_EDGE('',*,*,#117,.F.);
174 | #154=ORIENTED_EDGE('',*,*,#121,.T.);
175 | #155=ORIENTED_EDGE('',*,*,#122,.T.);
176 | #156=ORIENTED_EDGE('',*,*,#107,.T.);
177 | #157=ORIENTED_EDGE('',*,*,#104,.F.);
178 | #158=ORIENTED_EDGE('',*,*,#113,.T.);
179 | #159=ORIENTED_EDGE('',*,*,#109,.F.);
180 | #160=ORIENTED_EDGE('',*,*,#123,.F.);
181 | #161=ORIENTED_EDGE('',*,*,#124,.F.);
182 | #162=ORIENTED_EDGE('',*,*,#112,.T.);
183 | #163=ORIENTED_EDGE('',*,*,#114,.T.);
184 | #164=ORIENTED_EDGE('',*,*,#124,.T.);
185 | #165=ORIENTED_EDGE('',*,*,#125,.F.);
186 | #166=ORIENTED_EDGE('',*,*,#121,.F.);
187 | #167=ORIENTED_EDGE('',*,*,#103,.F.);
188 | #168=ORIENTED_EDGE('',*,*,#125,.T.);
189 | #169=ORIENTED_EDGE('',*,*,#123,.T.);
190 | #170=ORIENTED_EDGE('',*,*,#108,.F.);
191 | #171=ORIENTED_EDGE('',*,*,#122,.F.);
192 | #172=ORIENTED_EDGE('',*,*,#120,.T.);
193 | #173=ORIENTED_EDGE('',*,*,#118,.T.);
194 | #174=PLANE('',#193);
195 | #175=PLANE('',#195);
196 | #176=PLANE('',#196);
197 | #177=PLANE('',#197);
198 | #178=PLANE('',#205);
199 | #179=PLANE('',#206);
200 | #180=PLANE('',#209);
201 | #181=ADVANCED_FACE('',(#23),#174,.F.);
202 | #182=ADVANCED_FACE('',(#24),#175,.T.);
203 | #183=ADVANCED_FACE('',(#25),#176,.F.);
204 | #184=ADVANCED_FACE('',(#26,#21),#177,.F.);
205 | #185=ADVANCED_FACE('',(#27),#18,.F.);
206 | #186=ADVANCED_FACE('',(#28),#19,.F.);
207 | #187=ADVANCED_FACE('',(#29),#178,.T.);
208 | #188=ADVANCED_FACE('',(#30),#179,.T.);
209 | #189=ADVANCED_FACE('',(#31),#20,.T.);
210 | #190=ADVANCED_FACE('',(#32,#22),#180,.T.);
211 | #191=CLOSED_SHELL('',(#181,#182,#183,#184,#185,#186,#187,#188,#189,#190));
212 | #192=AXIS2_PLACEMENT_3D('placement',#263,#210,#211);
213 | #193=AXIS2_PLACEMENT_3D('',#264,#212,#213);
214 | #194=AXIS2_PLACEMENT_3D('',#269,#215,#216);
215 | #195=AXIS2_PLACEMENT_3D('',#273,#219,#220);
216 | #196=AXIS2_PLACEMENT_3D('',#283,#226,#227);
217 | #197=AXIS2_PLACEMENT_3D('',#287,#230,#231);
218 | #198=AXIS2_PLACEMENT_3D('',#290,#233,#234);
219 | #199=AXIS2_PLACEMENT_3D('',#293,#235,#236);
220 | #200=AXIS2_PLACEMENT_3D('',#294,#237,#238);
221 | #201=AXIS2_PLACEMENT_3D('',#295,#239,#240);
222 | #202=AXIS2_PLACEMENT_3D('',#299,#242,#243);
223 | #203=AXIS2_PLACEMENT_3D('',#301,#245,#246);
224 | #204=AXIS2_PLACEMENT_3D('',#302,#247,#248);
225 | #205=AXIS2_PLACEMENT_3D('',#303,#249,#250);
226 | #206=AXIS2_PLACEMENT_3D('',#307,#253,#254);
227 | #207=AXIS2_PLACEMENT_3D('',#311,#257,#258);
228 | #208=AXIS2_PLACEMENT_3D('',#312,#259,#260);
229 | #209=AXIS2_PLACEMENT_3D('',#313,#261,#262);
230 | #210=DIRECTION('axis',(0.,0.,1.));
231 | #211=DIRECTION('refdir',(1.,0.,0.));
232 | #212=DIRECTION('center_axis',(0.,1.,0.));
233 | #213=DIRECTION('ref_axis',(-1.,0.,0.));
234 | #214=DIRECTION('',(-9.34591506014666E-17,0.,1.));
235 | #215=DIRECTION('center_axis',(0.,-1.,0.));
236 | #216=DIRECTION('ref_axis',(0.394138496773882,0.,-0.919051056993476));
237 | #217=DIRECTION('',(0.,0.,1.));
238 | #218=DIRECTION('',(-1.,0.,0.));
239 | #219=DIRECTION('center_axis',(0.,0.,1.));
240 | #220=DIRECTION('ref_axis',(1.,0.,0.));
241 | #221=DIRECTION('',(0.,1.,0.));
242 | #222=DIRECTION('',(0.,-1.,0.));
243 | #223=DIRECTION('',(-1.,0.,0.));
244 | #224=DIRECTION('',(0.,-1.,0.));
245 | #225=DIRECTION('',(1.,0.,0.));
246 | #226=DIRECTION('center_axis',(-1.,0.,-9.34591506014666E-17));
247 | #227=DIRECTION('ref_axis',(-1.11022302462516E-16,0.,1.));
248 | #228=DIRECTION('',(-9.34591506014666E-17,0.,1.));
249 | #229=DIRECTION('',(0.,-1.,0.));
250 | #230=DIRECTION('center_axis',(0.,1.,0.));
251 | #231=DIRECTION('ref_axis',(-1.,0.,0.));
252 | #232=DIRECTION('',(0.,0.,1.));
253 | #233=DIRECTION('center_axis',(0.,1.,0.));
254 | #234=DIRECTION('ref_axis',(0.394138496773882,0.,-0.919051056993476));
255 | #235=DIRECTION('center_axis',(0.,-1.,0.));
256 | #236=DIRECTION('ref_axis',(0.0188673383810925,0.,-0.999821995928482));
257 | #237=DIRECTION('center_axis',(0.,-1.,0.));
258 | #238=DIRECTION('ref_axis',(-0.244732992411563,0.,-0.969590512755401));
259 | #239=DIRECTION('center_axis',(0.,1.,0.));
260 | #240=DIRECTION('ref_axis',(-0.244732992411563,0.,-0.969590512755401));
261 | #241=DIRECTION('',(0.,1.,0.));
262 | #242=DIRECTION('center_axis',(0.,-1.,0.));
263 | #243=DIRECTION('ref_axis',(-0.244732992411563,0.,-0.969590512755401));
264 | #244=DIRECTION('',(0.,1.,0.));
265 | #245=DIRECTION('center_axis',(0.,1.,0.));
266 | #246=DIRECTION('ref_axis',(0.0188673383810925,0.,-0.999821995928482));
267 | #247=DIRECTION('center_axis',(0.,-1.,0.));
268 | #248=DIRECTION('ref_axis',(0.0188673383810925,0.,-0.999821995928482));
269 | #249=DIRECTION('center_axis',(1.,0.,0.));
270 | #250=DIRECTION('ref_axis',(0.,0.,-1.));
271 | #251=DIRECTION('',(0.,1.,0.));
272 | #252=DIRECTION('',(0.,0.,1.));
273 | #253=DIRECTION('center_axis',(-1.,0.,0.));
274 | #254=DIRECTION('ref_axis',(0.,0.,1.));
275 | #255=DIRECTION('',(0.,0.,1.));
276 | #256=DIRECTION('',(0.,1.,0.));
277 | #257=DIRECTION('center_axis',(0.,1.,0.));
278 | #258=DIRECTION('ref_axis',(0.394138496773882,0.,-0.919051056993476));
279 | #259=DIRECTION('center_axis',(0.,1.,0.));
280 | #260=DIRECTION('ref_axis',(0.394138496773882,0.,-0.919051056993476));
281 | #261=DIRECTION('center_axis',(0.,1.,0.));
282 | #262=DIRECTION('ref_axis',(-1.,0.,0.));
283 | #263=CARTESIAN_POINT('',(0.,0.,0.));
284 | #264=CARTESIAN_POINT('Origin',(1.07669246413159,4.9,-2.59396167907914));
285 | #265=CARTESIAN_POINT('',(0.852727888909375,4.9,-3.18792332835596));
286 | #266=CARTESIAN_POINT('',(0.852727888909379,4.9,-1.70000002980232));
287 | #267=CARTESIAN_POINT('',(0.852727888909379,4.9,-2.89094250371755));
288 | #268=CARTESIAN_POINT('',(1.30065703935381,4.9,-3.03286848807847));
289 | #269=CARTESIAN_POINT('Origin',(0.,4.9,0.));
290 | #270=CARTESIAN_POINT('',(1.30065703935381,4.9,-1.70000002980232));
291 | #271=CARTESIAN_POINT('',(1.30065703935381,4.9,-2.29698085444073));
292 | #272=CARTESIAN_POINT('',(0.309378143809482,4.9,-1.70000002980232));
293 | #273=CARTESIAN_POINT('Origin',(-0.457936176512628,4.4,-1.70000002980232));
294 | #274=CARTESIAN_POINT('',(0.852727888909379,4.4,-1.70000002980232));
295 | #275=CARTESIAN_POINT('',(0.852727888909379,4.4,-1.70000002980232));
296 | #276=CARTESIAN_POINT('',(1.30065703935381,5.9,-1.70000002980232));
297 | #277=CARTESIAN_POINT('',(1.30065703935381,5.,-1.70000002980232));
298 | #278=CARTESIAN_POINT('',(-0.457936176512628,5.9,-1.70000002980232));
299 | #279=CARTESIAN_POINT('',(-0.457936176512628,5.9,-1.70000002980232));
300 | #280=CARTESIAN_POINT('',(-0.457936176512628,4.4,-1.70000002980232));
301 | #281=CARTESIAN_POINT('',(-0.457936176512628,4.4,-1.70000002980232));
302 | #282=CARTESIAN_POINT('',(-0.457936176512628,4.4,-1.70000002980232));
303 | #283=CARTESIAN_POINT('Origin',(0.852727888909379,4.4,-3.18792332835596));
304 | #284=CARTESIAN_POINT('',(0.852727888909375,4.4,-3.18792332835596));
305 | #285=CARTESIAN_POINT('',(0.852727888909379,4.4,-2.91896167162856));
306 | #286=CARTESIAN_POINT('',(0.852727888909379,4.4,-3.18792332835596));
307 | #287=CARTESIAN_POINT('Origin',(0.421360431420591,4.4,-2.65000001490116));
308 | #288=CARTESIAN_POINT('',(-0.457936176512628,4.4,-3.26807197874236));
309 | #289=CARTESIAN_POINT('',(-0.457936176512628,4.4,-3.26807197874236));
310 | #290=CARTESIAN_POINT('Origin',(0.,4.4,0.));
311 | #291=CARTESIAN_POINT('',(-0.0535606993452558,4.4,-3.14954461017552));
312 | #292=CARTESIAN_POINT('',(0.059432115900386,4.4,-3.14943928717472));
313 | #293=CARTESIAN_POINT('Origin',(-1.66880398388969E-15,4.4,-2.8457236567192E-12));
314 | #294=CARTESIAN_POINT('Origin',(0.00272788890938138,4.4,-2.92653879224177));
315 | #295=CARTESIAN_POINT('Origin',(0.00272788890938138,4.4,-2.92653879224177));
316 | #296=CARTESIAN_POINT('',(-0.0535606993452558,5.9,-3.14954461017552));
317 | #297=CARTESIAN_POINT('',(-0.0535606993452558,4.4,-3.14954461017552));
318 | #298=CARTESIAN_POINT('',(0.059432115900386,5.9,-3.14943928717472));
319 | #299=CARTESIAN_POINT('Origin',(0.00272788890938138,5.9,-2.92653879224177));
320 | #300=CARTESIAN_POINT('',(0.059432115900386,4.4,-3.14943928717472));
321 | #301=CARTESIAN_POINT('Origin',(-1.66880398388969E-15,4.4,-2.8457236567192E-12));
322 | #302=CARTESIAN_POINT('Origin',(-1.66880398388969E-15,5.9,-2.8457236567192E-12));
323 | #303=CARTESIAN_POINT('Origin',(1.30065703935381,4.4,-2.00000002980232));
324 | #304=CARTESIAN_POINT('',(1.30065703935381,5.9,-3.03286848807847));
325 | #305=CARTESIAN_POINT('',(1.30065703935381,4.4,-3.03286848807847));
326 | #306=CARTESIAN_POINT('',(1.30065703935381,5.9,-2.00000002980232));
327 | #307=CARTESIAN_POINT('Origin',(-0.457936176512628,4.4,-3.26807197874236));
328 | #308=CARTESIAN_POINT('',(-0.457936176512628,5.9,-3.26807197874236));
329 | #309=CARTESIAN_POINT('',(-0.457936176512628,5.9,-3.26807197874236));
330 | #310=CARTESIAN_POINT('',(-0.457936176512628,4.4,-3.26807197874236));
331 | #311=CARTESIAN_POINT('Origin',(0.,4.4,0.));
332 | #312=CARTESIAN_POINT('Origin',(0.,5.9,0.));
333 | #313=CARTESIAN_POINT('Origin',(0.421360431420591,5.9,-2.65000001490116));
334 | #314=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.001),#320,
335 | 'DISTANCE_ACCURACY_VALUE',
336 | 'Maximum model space distance between geometric entities at asserted c
337 | onnectivities');
338 | #315=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-6),#321,
339 | 'DISTANCE_ACCURACY_VALUE',
340 | 'Maximum model space distance between geometric entities at asserted c
341 | onnectivities');
342 | #316=(
343 | GEOMETRIC_REPRESENTATION_CONTEXT(3)
344 | GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#314))
345 | GLOBAL_UNIT_ASSIGNED_CONTEXT((#320,#319,#318))
346 | REPRESENTATION_CONTEXT('','3D')
347 | );
348 | #317=(
349 | GEOMETRIC_REPRESENTATION_CONTEXT(3)
350 | GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#315))
351 | GLOBAL_UNIT_ASSIGNED_CONTEXT((#321,#12,#318))
352 | REPRESENTATION_CONTEXT('','3D')
353 | );
354 | #318=(
355 | NAMED_UNIT(*)
356 | SI_UNIT($,.STERADIAN.)
357 | SOLID_ANGLE_UNIT()
358 | );
359 | #319=(
360 | NAMED_UNIT(*)
361 | PLANE_ANGLE_UNIT()
362 | SI_UNIT($,.RADIAN.)
363 | );
364 | #320=(
365 | LENGTH_UNIT()
366 | NAMED_UNIT(*)
367 | SI_UNIT(.CENTI.,.METRE.)
368 | );
369 | #321=(
370 | LENGTH_UNIT()
371 | NAMED_UNIT(*)
372 | SI_UNIT(.MILLI.,.METRE.)
373 | );
374 | #322=SHAPE_DEFINITION_REPRESENTATION(#323,#324);
375 | #323=PRODUCT_DEFINITION_SHAPE('',$,#326);
376 | #324=SHAPE_REPRESENTATION('',(#192),#316);
377 | #325=PRODUCT_DEFINITION_CONTEXT('part definition',#330,'design');
378 | #326=PRODUCT_DEFINITION('Anemometre + girouette v15',
379 | 'Anemometre + girouette v15',#327,#325);
380 | #327=PRODUCT_DEFINITION_FORMATION('',$,#332);
381 | #328=PRODUCT_RELATED_PRODUCT_CATEGORY('Anemometre + girouette v15',
382 | 'Anemometre + girouette v15',(#332));
383 | #329=APPLICATION_PROTOCOL_DEFINITION('international standard',
384 | 'automotive_design',2009,#330);
385 | #330=APPLICATION_CONTEXT(
386 | 'Core Data for Automotive Mechanical Design Process');
387 | #331=PRODUCT_CONTEXT('part definition',#330,'mechanical');
388 | #332=PRODUCT('Anemometre + girouette v15','Anemometre + girouette v15',
389 | $,(#331));
390 | #333=PRESENTATION_STYLE_ASSIGNMENT((#335));
391 | #334=PRESENTATION_STYLE_ASSIGNMENT((#336));
392 | #335=SURFACE_STYLE_USAGE(.BOTH.,#337);
393 | #336=SURFACE_STYLE_USAGE(.BOTH.,#338);
394 | #337=SURFACE_SIDE_STYLE('',(#339));
395 | #338=SURFACE_SIDE_STYLE('',(#340));
396 | #339=SURFACE_STYLE_FILL_AREA(#341);
397 | #340=SURFACE_STYLE_FILL_AREA(#342);
398 | #341=FILL_AREA_STYLE('Steel - Satin',(#343));
399 | #342=FILL_AREA_STYLE('Plastic - Matte (Red)',(#344));
400 | #343=FILL_AREA_STYLE_COLOUR('Steel - Satin',#345);
401 | #344=FILL_AREA_STYLE_COLOUR('Plastic - Matte (Red)',#346);
402 | #345=COLOUR_RGB('Steel - Satin',0.627450980392157,0.627450980392157,0.627450980392157);
403 | #346=COLOUR_RGB('Plastic - Matte (Red)',0.768627450980392,0.207843137254902,
404 | 0.152941176470588);
405 | ENDSEC;
406 | END-ISO-10303-21;
407 |
--------------------------------------------------------------------------------