{"id":23021601,"url":"https://github.com/raupulus/raspberry-sensor-anemometer","last_synced_at":"2025-08-14T09:32:59.942Z","repository":{"id":95712831,"uuid":"205666627","full_name":"raupulus/raspberry-sensor-anemometer","owner":"raupulus","description":"Control de anemómetro con la raspberry pi 4 utilizando GND+GPIO para contar los pulsos y sacar la velocidad del viento a partir de ello. Mirror from: https://gitlab.com/raupulus/raspberry-sensor-anemometer","archived":false,"fork":false,"pushed_at":"2023-03-19T04:46:23.000Z","size":26,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-01-29T07:37:17.265Z","etag":null,"topics":["anemometer","clima","climate","python","python3","raspberry","raspberry-pi","sensor","weather","weatherstation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raupulus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-09-01T11:24:57.000Z","updated_at":"2023-03-14T00:21:28.000Z","dependencies_parsed_at":"2023-05-21T16:00:35.820Z","dependency_job_id":null,"html_url":"https://github.com/raupulus/raspberry-sensor-anemometer","commit_stats":{"total_commits":19,"total_committers":2,"mean_commits":9.5,"dds":"0.10526315789473684","last_synced_commit":"3ede7b5ea85b5b2884c38c48c735b7f32ba783cf"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-sensor-anemometer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-sensor-anemometer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-sensor-anemometer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-sensor-anemometer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raupulus","download_url":"https://codeload.github.com/raupulus/raspberry-sensor-anemometer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229816387,"owners_count":18128568,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anemometer","clima","climate","python","python3","raspberry","raspberry-pi","sensor","weather","weatherstation"],"created_at":"2024-12-15T12:18:41.755Z","updated_at":"2024-12-15T12:18:42.176Z","avatar_url":"https://github.com/raupulus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# raspberry-sensor-anemometer\n\nControl de anemómetro con la raspberry pi 4 utilizando GND+GPIO para contar los pulsos y sacar la velocidad del viento a partir de ello.\n\nBasado en un principio sobre el script de **Patrick Rudolph** dándole un enfoque\npersonalizado más moderno con python3, modular, adaptable a varios tipos de\nanemómetros por configuración y con un estilo de programación orientado a\nobjetos que trata el sensor bajo una clase/modelo.\n\n## Esquema de conexión\n\n| Module | PCB Desc | GPIO | Pin |\n| ------- | ------- | ------- | ------- |\n| GND | Ground | - | 9 |\n| GPIO4 | Digital Input | 4 | 7 |\n\n## Modo de medición\n\nA través de las vueltas se envían pulsos al pin digital, cuanto más pulsos son\nenviados durante un periodo de tiempo sacamos la velocidad.\n\nEl resultado será devuelto en metros por segundos (m/s).\n\nPara el anemómetro será necesario colocarle un condensador y así evitar \nrebotes/picos generados por el contacto y el imán del anemómetro. Esto genera\nfalsas lecturas.\n\n## Funcionamiento del modelo\n\nEl modelo \"Anemometer\" está construido intentando facilitar el uso de distintos\ntipos de anemómetros y sobre diferentes pines simplemente pasando esta \nconfiguración al constructor de la clase:\n\n```python\nfrom Anemometer import Anemometer\nanemometer = Anemometer(pin=23, RADIO=6)\n``` \n\nAutomáticamente, mediante un proceso/hilo en segundo plano, se escucha un evento\nen el pin GPIO con el que se inicializa la clase detectando los pulsos de\nentrada indicando las vueltas completas (normalmente 2 pulsos por vuelta).\n\nAdemás se crea otro hilo/proceso con la función **start_read()** para cada un\nperiodo de tiempo actualizar los valores y que al pedir datos desde la \naplicación donde usemos este modelo, sea mucho más rápida la lectura.\n\nLa función **generate_wind()** es la encargada de realizar los cálculos\ny resetear variables de control. Además rellena variables auxiliares para \nmantener los valores anteriores inmediatos a los actuales.\n\nDesde la función **get_all_data()** obtenemos la lectura actual con sus \nestadísticas calculadas anterioremente.\n\nPara insertar en base de datos planteo la función **tablemodel()** con los \ncampos necesarios de forma que al tener varios sensores pueda quedar\ndinamizado. \n\nPara comprobar las mediciones existe la función **debug()** que pintará por \nconsola los datos recopilados en ese momento.\n\n## Calcular velocidad del viento\n\nCada giro completo del anemómetro cerrará dos veces el circuito por lo que\ndetectará dos pulsos (Puede ser mayor). Esto nos servirá para los siguientes c\nálculos.\n\nEl número de rotaciones completa será el total de pulsos dividido entre dos, de\nforma que para calcular la velocidad del viento tendremos:\n\nvelocidad = distancia / tiempo\n\nvelocidad = (rotaciones * circunferencia) / tiempo\n\nEn el caso de la circunferencia la calcularemos conociendo el radio del \nanemómetro:\n\nvelocidad = ( (pulsos/2) * (2 * pi * radio) ) / tiempo\n\nLos anemómetros de tres palas son originales de oracle, estos tenían 9cm de \ndiámetro pero puede variar según marca y modelo.\n\nAproximadamente y como referencia en muchas hojas de productos he leído que\npara calibrar un anemómetro se puede equivaler 1 rotación por segundo (2 pulsos)\na 2,4km/h de forma que tomando datos de 5 segundos y girando 5 vueltas \ncompletas debería darnos esa aproximación. Claro que esto debe leerse de la \nespecificación para tu anemómetro por si fuera distinto.\n\nTal vez lo obtenido no se corresponda a la realidad, hay una pérdida de energía\neólica al girar las palas y esto normalmente se compensa multiplicando la\nvelocidad final en km/h por 1,18 (aumentar un 18% el resultado obtenido).\n\n\n## Otras Formulas y Cálculos\n\n### Pasar velocidad del viento en m/s a km/h\n\nMultiplicar los metros por segundo por 3,6 para obtener los kilómetros por hora.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fraspberry-sensor-anemometer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraupulus%2Fraspberry-sensor-anemometer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fraspberry-sensor-anemometer/lists"}