树莓派玩耍记

这篇文章是自己入手树莓派之后的一些使用记录 前些天看 v2ex 上有人讨论树莓派,于是出于好奇在淘宝上淘了一只树莓派来玩玩 体积超级小… 一个板子,一个塑料盒子装上完工 刚开始的时候尝试了一下官方的NOOBS工具安装raspbian系统,这个系统是为树莓派定制的基于Debian的 linux 系统,但不知什么原因总是间歇性卡死,加之个人偏好 ubuntu 一点,于是安装了Ubuntu_MATE 系统安装基本步骤: 下载系统镜像 将下载的ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img镜像解压后使用dd命令将镜像写入到 sd 卡中(我的环境为 macOS),注意写入完成后一定要使用unmount将 sd 卡推出,然后拔出 sd 卡 将 sd 卡插入树莓派,并连接好所有外设后开机,然后像安装 QQ 一样完成了Ubuntu_MATE的安装过程 简易播报系统: 当时冒出一个想法:写一个每天定时播放未来两天天气预报的小程序(非彼小程序),涉及的功能点:天气预报接口;一个基于轻量级的 api 框架实现的 api;一个定时任务;一个文字转语音脚本;一个音频文件播放器;当然还需要一个外接小音箱… 于是安装了 lnmp 环境(当下没有用到 mysql),mplayer,git,文字转音频使用的百度sdk(php),通过 git 安装了lumen 接口开发 路由 $router->get('/get_weather','WeatherController@getWeather'); 控制器WeatherController.php <?php namespace App\Http\Controllers; use GuzzleHttp\Client; use Illuminate\Support\Facades\Cache; class WeatherController extends Controller { /** * Create a new controller instance. * * @return void */ public function __construct() { // } //基于树莓派的简易天气预报系统 public function getWeather() { //获取天气信息 $client = new Client(); // 实例化 $city = '成都'; $city_code = urlencode($city); $aqi = [ '好', '中等', '不适于敏感人群', '不健康', '非常不健康', '危险', ]; if (Cache::has('report') === false) { $url = 'https://www.sojson.com/open/api/weather/json.shtml?city=' . $city_code; // 设置一个可访问的 url $http = $client->request('GET', $url); // 执行 // 判断 http 状态码为 200 的时候,执行成功 $aqi_content = '未知'; if ($http->getStatusCode() == 200) { $weather = json_decode($http->getBody()->getContents(), true); if ($weather['data']['forecast'][0]['aqi'] <= 50) { $aqi_content = $aqi[0]; } else if ($weather['data']['forecast'][0]['aqi'] <= 100) { $aqi_content = $aqi[1]; } else if ($weather['data']['forecast'][0]['aqi'] <= 150) { $aqi_content = $aqi[2]; } else if ($weather['data']['forecast'][0]['aqi'] <= 200) { $aqi_content = $aqi[3]; } else if ($weather['data']['forecast'][0]['aqi'] <= 300) { $aqi_content = $aqi[4]; } else if ($weather['data']['forecast'][0]['aqi'] <= 500) { $aqi_content = $aqi[5]; } else { } //拼装字符串 $report = '现在预报,' . $city . '未来两天天气情况,' . $city . ',' . date('Y年m月', time()) . $weather['data']['forecast'][1]['date'] . ',天气情况,' . $weather['data']['forecast'][1]['high'] . ',' . $weather['data']['forecast'][1]['low'] . ',' . $weather['data']['forecast'][1]['type'] . ',' . $weather['data']['forecast'][1]['fx'] . ',风力,' . $weather['data']['forecast'][1]['fl'] . ',日出时间,' . $weather['data']['forecast'][1]['sunrise'] . ',日落时间,' . $weather['data']['forecast'][1]['sunset'] . ',空气污染指数,' . $aqi_content; $report .= ',' . $city . ',' . date('Y年m月', time()) . $weather['data']['forecast'][2]['date'] . ',天气情况,' . $weather['data']['forecast'][2]['high'] . ',' . $weather['data']['forecast'][2]['low'] . ',' . $weather['data']['forecast'][2]['type'] . ',' . $weather['data']['forecast'][2]['fx'] . ',风力,' . $weather['data']['forecast'][2]['fl'] . ',日出时间,' . $weather['data']['forecast'][2]['sunrise'] . ',日落时间,' . $weather['data']['forecast'][2]['sunset'] . ',空气污染指数,' . $aqi_content; Cache::add('report', $report, 60); } } $report = Cache::get('report'); generate_audio($report); } } 以上的generate_audio()即是自行封装后的百度的文字转语音sdk ...

April 14, 2018 · 2 min · 392 words