{"id":29629994,"url":"https://github.com/dps/picowx","last_synced_at":"2026-03-06T20:02:08.663Z","repository":{"id":253180127,"uuid":"841258401","full_name":"dps/picowx","owner":"dps","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-21T06:25:32.000Z","size":913,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-21T10:19:29.567Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dps.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-12T03:32:25.000Z","updated_at":"2025-03-19T00:08:11.000Z","dependencies_parsed_at":"2025-01-21T07:22:24.782Z","dependency_job_id":"f50fa1e8-1693-4977-9e1a-0a2ef911c46d","html_url":"https://github.com/dps/picowx","commit_stats":null,"previous_names":["dps/picowx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dps/picowx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dps%2Fpicowx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dps%2Fpicowx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dps%2Fpicowx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dps%2Fpicowx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dps","download_url":"https://codeload.github.com/dps/picowx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dps%2Fpicowx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30195532,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-07-21T10:07:59.037Z","updated_at":"2026-03-06T20:02:08.627Z","avatar_url":"https://github.com/dps.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# picowx\n_An APRS radio powered raspberry pi pico-w weather station_.\nUses the aprs.fi API via your WiFi network to display weather reports transmitted via the [Automatic Packet Reporting System](https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System) – local weather that's often not available via popular weather APIs. Simple captive-portal configuration UI and tuned for low power standby.\n\n![image](https://github.com/user-attachments/assets/5d429ddd-7e61-4307-9d12-4549a66b179d)\n\n## Hardware\n- Raspberry Pi Pico-W\n- Pimoroni Inky Pack\n- Pimoroni LiPo shim and battery (optional)\n- 0.1\" headers for pico-w, you'll need to solder these on (or buy a pico-wh with pre-soldered headers)\n  \n[digikey parts list, minus battery](https://www.digikey.com/en/mylists/list/2R079622OC)\n\n## Software\nMost of the logic is implemented in micropython, but the dormant sleep mode requires custom C code. I've built a special version of pimoroni flavor micropython to add this functionality. You can find a flashable .uf2 file in this repo and look or tiner with the micropython changes directly in https://github.com/dps/micropython. https://github.com/dps/pimoroni-pico is a fork of pimoroni's micropython (with support for Inky pack) which pulls in my custom micropython and has a Github action / continuous build which produced that .uf2 file should you wish to reproduce it yourself.\n\n## User guide\n\n### Installation\n- Clone the repo\n- Flash the .uf2 file (hold down the bootsel button while plugging your pico-w into your computer, then copy the .uf2 file to the mass storage volume that appears).\n- Copy the py and html files in this repo to the board using Thonny\n- Install the following dependencies via Thonny's Tools -\u003e Manage packages... menu\n  - microython_phew [project page](https://github.com/pimoroni/phew) micropython_phew-0.0.3\n  - urlib.urequest [project page](https://github.com/pfalcon/micropython-lib) micropython_urllib.urequest-0.6.3\n    - edit `urequest.py` to `import ssl` instead of `import ussl`\n- Reboot, configuration mode will start\n\n### Configuration mode\nYour device will render a UI like this:\n\u003cimg width=\"610\" alt=\"Screenshot 2024-08-14 at 6 09 47 PM\" src=\"https://github.com/user-attachments/assets/4019f52e-37d3-422e-8fa0-44b3cbd1929b\"\u003e\nUse your phone or computer to connect to the `picowx` wifi network. A captive portal config UI should appear. If it doesn't, open your web browser and navigate to `http://neverssl.com` (always a good trick!).\n\nYou'll see a screen like this:\n\u003cimg width=\"610\" alt=\"Screenshot 2024-08-14 at 6 27 49 PM\" src=\"https://github.com/user-attachments/assets/9604ecde-8076-4514-92b6-ea8f6bde2b87\"\u003e\n\nEnter the wifi network name and password that you'd like your device to connect to. The station callsign for the weather station you'd like to track can be found via https://aprs.fi/.\n\n\u003cimg width=\"1238\" alt=\"Screenshot 2024-08-14 at 6 29 45 PM\" src=\"https://github.com/user-attachments/assets/197f57cf-b399-40d3-8a88-3bf5ce674dd9\"\u003e\naprs.fi shows, by default, the stations near your current location - choose any one marked as a `WX` (weather reporting) station and enter its callsign in the config ui.\n\n\nNext, you'll need an aprs.fi API key. Create an account on `aprs.fi` and then you'll find this at https://aprs.fi/account/ \n\u003cimg width=\"412\" alt=\"Screenshot 2024-08-14 at 7 33 18 PM\" src=\"https://github.com/user-attachments/assets/13d22d84-9f5f-4bf7-96aa-79cb75caf867\"\u003e\n\nThe aprs.fi API has a number of [terms](https://aprs.fi/page/api), which this project complies with, but do keep them in mind if you're making any modifications.\n\nOptionally, you can add a station nickname, which will be displayed in the UI instead of the callsign and your timezone offset in hours to UTC (e.g. `-7` for PST) if you'd like to see updated times in your local timezone. If you leave this empty, you'll see updated times in UTC.\n\nFinally, save your config and you'll see a page a bit like this:\n\n\u003cimg width=\"473\" alt=\"Screenshot 2024-08-14 at 7 39 11 PM\" src=\"https://github.com/user-attachments/assets/06074203-49e0-4d41-86d4-21e6f6fa9488\"\u003e\n\n\u003cimg width=\"414\" alt=\"Screenshot 2024-08-14 at 7 39 48 PM\" src=\"https://github.com/user-attachments/assets/36be99cf-3a75-440d-8f3e-3a9898419507\"\u003e\n\n### Application mode\nOnce configured, picowx will connect to the configured network, download the latest weather report for the station you set up, display it on the eInk screen and then go to sleep.\n\nYou can refresh the display at any time by pressing button A on the Inky Pack.\n\n\n\nhttps://github.com/user-attachments/assets/94a6b6dc-041e-45d1-a4c0-5800111ca9b5\n\n## Power consumption\n\nBy using `sleep_goto_dormant_until_pin` from `pico-extras`, this project consumes about 1.4mA when asleep.\n\n![IMG_9603](https://github.com/user-attachments/assets/80096b62-8fb8-4fd5-bd53-1b19cc422e17)\n\nPower consumption verified via my very low-fi multimeter setup.\n\n## Standing on the shoulders of giants\nLarge parts of this project were heavily inspired by ghubcoder and Simon Prickett – I'm very grateful to them for writing up and open sourcing their work!\n\nCheck out:\nhttps://simonprickett.dev/wifi-setup-with-raspberry-pi-pico-w/\nand\nhttps://ghubcoder.github.io/posts/deep-sleeping-the-pico-micropython/\n\nI'm also very grateful to the [maintainers of aprs.fi](https://aprs.fi/page/credits) - it's a great service with a very intuitive API.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdps%2Fpicowx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdps%2Fpicowx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdps%2Fpicowx/lists"}