自己编译NodeMCU固件
之前这篇文章nodeMCU使用小记里用到的固件是比较老的固件,不带http模块,所以无法实现http的post请求。所以……在云构建固件没法用的情况下,还得自己编译固件啊。。
编译固件的系统环境是ubuntu-14.04.4-desktop-i386,步骤如下:
先安装编译工具链esp-open-sdk:
sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial sed git unzip bash help2man wget bzip2
git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
cd esp-open-sdk
make
最后按照提示把环境变量加到/etc/profile里,再source一下
再克隆nodemcu项目进行编译:
git clone https://github.com/nodemcu/nodemcu-firmware.git
cd nodemcu-firmware
(有很多modules是可选项,可在app/include/user_modules.h将其注释掉)
(波特率在app/include/user_config.h里定义)
(Integer build选项也在app/include/user_config.h里定义)
(在app/include/user_version.h里自定义个人签名)
make
最后刷固件:
# 首选把自己加入对话群,不然没法访问串口
sudo adduser ph dialout
# 把固件上载到nodemcu里
make flash #这里提示是512kb还是4m,自己选
到这里固件就刷好了,效果如图:
参考:
esp-open-sdk
物联网应用——从源代码为ESP8266创建NodeMCU
NodeMCU Build Options
ubuntu 将当前用户加入到串口所在组
NodeMCU提交数据到服务器
NodeMCU端init.lua:
-- init.lua
print(wifi.sta.getip())
print('Setting up WIFI...')
wifi.setmode(wifi.STATION)
wifi.sta.config('test', '11223344')
wifi.sta.connect() -- 要想提交数据到远程服务器,首先得连上互联网啊2333
tmr.alarm(1, 1000, tmr.ALARM_AUTO, function()
if wifi.sta.getip() == nil then
print('Waiting for IP ...')
else
print('IP is ' .. wifi.sta.getip())
http.post('http://192.168.223.193/nodemcu_data_process.php', -- 服务器ip是192.168.223.193
'Content-Type: application/json\r\n',
'{"name":"hello"}',
function(code, data)
if (code < 0) then
print("HTTP request failed")
else
print(code, data)
end
end)
tmr.stop(1)
end
end)
PHP服务端代码:
<?php
$str = file_get_contents ( "php://input" );
$args = (json_decode ( $str ));
$user_name = isset ( $args->name ) ? $args->name : null;
$message = array (
"type" => 0,
"name" => $user_name
);
$json_string=json_encode($message);
error_log($json_string,3,'/opt/lampp/logs/nodemcu.log');
echo $json_string;
?>
效果如图:
nodemcu端:
xampp端: